diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..a139f846 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,32 @@ +name: CLEO 5 Release Build + +on: + push: + branch: + - gh + +jobs: + build: + runs-on: windows-2019 + + steps: + - uses: actions/checkout@v4 + with: + submodules: "recursive" + + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v1 + + - name: Build Projects + shell: cmd + run: | + set PLUGIN_SDK_DIR=%GITHUB_WORKSPACE%\third-party\plugin-sdk + msbuild -m CLEO4.sln /property:Configuration=Release /property:Platform=GTASA + + - name: VirusTotal Scan + uses: crazy-max/ghaction-virustotal@v4 + with: + vt_api_key: ${{ secrets.VT_KEY }} + files: | + ./.output/Release/CLEO.asi + ./output/Release/CLEO.asi diff --git a/CLEO4.vcxproj b/CLEO4.vcxproj index b1bad3be..49177435 100644 --- a/CLEO4.vcxproj +++ b/CLEO4.vcxproj @@ -91,14 +91,14 @@ DynamicLibrary false MultiByte - v143 + v142 true DynamicLibrary true MultiByte - v143 + v142 diff --git a/source/CDebug.h b/source/CDebug.h index 4aafa23f..4f64a3c6 100644 --- a/source/CDebug.h +++ b/source/CDebug.h @@ -27,7 +27,7 @@ class CDebug #ifdef _DEBUG Trace("CLEO v%s DEBUG", CLEO_VERSION_DOT_STR); -#elif +#else Trace("CLEO v%s", CLEO_VERSION_DOT_STR); #endif } diff --git a/third-party/plugin-sdk/injector/assembly.hpp b/third-party/plugin-sdk/injector/assembly.hpp new file mode 100644 index 00000000..69d418a3 --- /dev/null +++ b/third-party/plugin-sdk/injector/assembly.hpp @@ -0,0 +1,178 @@ +/* + * Injectors - Useful Assembly Stuff + * + * Copyright (C) 2012-2014 LINK/2012 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + */ +#pragma once + +// This header is very restrict about compiler and architecture +#ifndef _MSC_VER // MSVC is much more flexible when we're talking about inline assembly +#error Cannot use this header in another compiler other than MSVC +#endif +#ifndef _M_IX86 +#error Supported only in x86 +#endif + +// +#include "injector.hpp" + +namespace injector +{ + struct reg_pack + { + // The ordering is very important, don't change + // The first field is the last to be pushed and first to be poped + + // PUSHFD / POPFD + uint32_t ef; + + // PUSHAD/POPAD -- must be the lastest fields (because of esp) + union + { + uint32_t arr[8]; + struct { uint32_t edi, esi, ebp, esp, ebx, edx, ecx, eax; }; + }; + + enum reg_name { + reg_edi, reg_esi, reg_ebp, reg_esp, reg_ebx, reg_edx, reg_ecx, reg_eax + }; + + enum ef_flag { + carry_flag = 0, parity_flag = 2, adjust_flag = 4, zero_flag = 6, sign_flag = 7, + direction_flag = 10, overflow_flag = 11 + }; + + uint32_t& operator[](size_t i) + { return this->arr[i]; } + const uint32_t& operator[](size_t i) const + { return this->arr[i]; } + + template // bit starts from 0, use ef_flag enum + bool flag() + { + return (this->ef & (1 << bit)) != 0; + } + + bool jnb() + { + return flag() == false; + } + }; + + // Lowest level stuff (actual assembly) goes on the following namespace + // PRIVATE! Skip this, not interesting for you. + namespace injector_asm + { + // Wrapper functor, so the assembly can use some templating + template + struct wrapper + { + static void call(reg_pack* regs) + { + T fun; fun(*regs); + } + }; + + // Constructs a reg_pack and calls the wrapper functor + template // where W is of type wrapper + inline void __declspec(naked) make_reg_pack_and_call() + { + _asm + { + // Construct the reg_pack structure on the stack + pushad // Pushes general purposes registers to reg_pack + add [esp+12], 4 // Add 4 to reg_pack::esp 'cuz of our return pointer, let it be as before this func is called + pushfd // Pushes EFLAGS to reg_pack + + // Call wrapper sending reg_pack as parameter + push esp + call W::call + add esp, 4 + + // Destructs the reg_pack from the stack + sub [esp+12+4], 4 // Fix reg_pack::esp before popping it (doesn't make a difference though) (+4 because eflags) + popfd // Warning: Do not use any instruction that changes EFLAGS after this (-> sub affects EF!! <-) + popad + + // Back to normal flow + ret + } + } + }; + + + /* + * MakeInline + * Makes inline assembly (but not assembly, an actual functor of type FuncT) at address + */ + template + void MakeInline(memory_pointer_tr at) + { + typedef injector_asm::wrapper functor; + if(false) functor::call(nullptr); // To instantiate the template, if not done _asm will fail + MakeCALL(at, injector_asm::make_reg_pack_and_call); + } + + /* + * MakeInline + * Same as above, but it NOPs everything between at and end (exclusive), then performs MakeInline + */ + template + void MakeInline(memory_pointer_tr at, memory_pointer_tr end) + { + MakeRangedNOP(at, end); + MakeInline(at); + } + + /* + * MakeInline + * Same as above, but (at,end) are template parameters. + * On this case the functor can be passed as argument since there will be one func instance for each at,end not just for each FuncT + */ + template + void MakeInline(FuncT func) + { + static std::unique_ptr static_func; + static_func.reset(new FuncT(std::move(func))); + + // Encapsulates the call to static_func + struct Caps + { + void operator()(reg_pack& regs) + { (*static_func)(regs); } + }; + + // Does the actual MakeInline + return MakeInline(lazy_pointer::get(), lazy_pointer::get()); + } + + /* + * MakeInline + * Same as above, but (end) is calculated by the length of a call instruction + */ + template + void MakeInline(FuncT func) + { + return MakeInline(func); + } +}; diff --git a/third-party/plugin-sdk/injector/calling.hpp b/third-party/plugin-sdk/injector/calling.hpp new file mode 100644 index 00000000..0a1dd624 --- /dev/null +++ b/third-party/plugin-sdk/injector/calling.hpp @@ -0,0 +1,127 @@ +/* + * Injectors - Function Calls Using Variadic Templates + * + * Copyright (C) 2014 LINK/2012 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + */ +#pragma once +#include "injector.hpp" +#include +#include + +#if __cplusplus >= 201103L || _MSC_VER >= 1800 // MSVC 2013 +#else +#error "This feature is not supported on this compiler" +#endif + +namespace injector +{ + template + struct cstd; + + template + struct cstd + { + // Call function at @p returning @Ret with args @Args + static Ret call(memory_pointer_tr p, Args... a) + { + auto fn = (Ret(*)(Args...)) p.get(); + return fn(std::forward(a)...); + } + + template // Uses lazy pointer + static Ret call(Args... a) + { + return call(lazy_pointer::get(), std::forward(a)...); + } + }; + + template + struct stdcall; + + template + struct stdcall + { + // Call function at @p returning @Ret with args @Args + static Ret call(memory_pointer_tr p, Args... a) + { + auto fn = (Ret(__stdcall *)(Args...)) p.get(); + return fn(std::forward(a)...); + } + + template // Uses lazy pointer + static Ret call(Args... a) + { + return call(lazy_pointer::get(), std::forward(a)...); + } + }; + + template + struct fastcall; + + template + struct fastcall + { + // Call function at @p returning @Ret with args @Args + static Ret call(memory_pointer_tr p, Args... a) + { + auto fn = (Ret(__fastcall *)(Args...)) p.get();; + return fn(std::forward(a)...); + } + + template // Uses lazy pointer + static Ret call(Args... a) + { + return call(lazy_pointer::get(), std::forward(a)...); + } + }; + + template + struct thiscall; + + template + struct thiscall + { + // Call function at @p returning @Ret with args @Args + static Ret call(memory_pointer_tr p, Args... a) + { + auto fn = (Ret(__thiscall *)(Args...)) p.get(); + return fn(std::forward(a)...); + } + + // Call function at the index @i from the vtable of the object @a[0] + template + static Ret vtbl(Args... a) + { + auto obj = raw_ptr(std::get<0>(std::forward_as_tuple(a...))); + auto p = raw_ptr( (*obj.template get()) [i] ); + return call(p, std::forward(a)...); + } + + template // Uses lazy pointer + static Ret call(Args... a) + { + return call(lazy_pointer::get(), std::forward(a)...); + } + }; +} + diff --git a/third-party/plugin-sdk/injector/gvm/gvm.hpp b/third-party/plugin-sdk/injector/gvm/gvm.hpp new file mode 100644 index 00000000..e47d4dd5 --- /dev/null +++ b/third-party/plugin-sdk/injector/gvm/gvm.hpp @@ -0,0 +1,229 @@ +/* + * Injectors - Base Header + * + * Copyright (C) 2012-2014 LINK/2012 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + */ +#pragma once +#include +#include +#include + +namespace injector +{ + +#if 1 // GVM and Address Translator, Not very interesting for the users, so skip reading those... + +/* + * game_version_manager + * Detects the game, the game version and the game region + * This assumes the executable is decrypted, so, Silent's ASI Loader is recommended. + */ +#ifndef INJECTOR_OWN_GVM +#ifndef INJECTOR_GVM_DUMMY +class game_version_manager +{ + public: + // Set this if you would like that MessagesBox contain PluginName as caption + const char* PluginName; + + private: + char game, region, major, minor, majorRevision, minorRevision, cracker, steam; + + public: + game_version_manager() + { + #ifdef INJECTOR_GVM_PLUGIN_NAME + PluginName = INJECTOR_GVM_PLUGIN_NAME; + #else + PluginName = "Plugin-SDK Plugin"; + #endif + + this->Clear(); + } + + + // Clear any information about game version + void Clear() + { + game = region = major = minor = majorRevision = minorRevision = cracker = steam = 0; + } + + // Checks if I don't know the game we are attached to + bool IsUnknown() { return game == 0; } + // Checks if this is the steam version + bool IsSteam() { return steam != 0; } + // Gets the game we are attached to (0, '3', 'V', 'S', 'I', 'E') + char GetGame() { return game; } + // Gets the region from the game we are attached to (0, 'U', 'E'); + char GetRegion() { return region; } + // Get major and minor version of the game (e.g. [major = 1, minor = 0] = 1.0) + int GetMajorVersion() { return major; } + int GetMinorVersion() { return minor; } + int GetMajorRevisionVersion() { return majorRevision; } + int GetMinorRevisionVersion() { return minorRevision; } + + bool IsHoodlum() { return cracker == 'H'; } + + // Region conditions + bool IsUS() { return region == 'U'; } + bool IsEU() { return region == 'E'; } + + // Game Conditions + bool IsIII() { return game == '3'; } + bool IsVC () { return game == 'V'; } + bool IsSA () { return game == 'S'; } + bool IsIV () { return game == 'I'; } + bool IsEFLC(){ return game == 'E'; } + + // Detects game, region and version; returns false if could not detect it + bool Detect(); + + // Gets the game version as text, the buffer must contain at least 32 bytes of space. + char* GetVersionText(char* buffer) + { + if(this->IsUnknown()) + { + strcpy(buffer, "UNKNOWN GAME"); + return buffer; + } + + const char* g = this->IsIII() ? "III" : this->IsVC() ? "VC" : this->IsSA() ? "SA" : this->IsIV() ? "IV" : this->IsEFLC() ? "EFLC" : "UNK"; + const char* r = this->IsUS()? "US" : this->IsEU()? "EURO" : "UNK_REGION"; + const char* s = this->IsSteam()? "Steam" : ""; + sprintf(buffer, "GTA %s %d.%d.%d.%d %s%s", g, major, minor, majorRevision, minorRevision, r, s); + return buffer; + } + + + public: + // Raises a error saying that you could not detect the game version + void RaiseCouldNotDetect() + { + MessageBoxA(0, + "Could not detect the game version\nContact the mod creator!", + PluginName, MB_ICONERROR + ); + } + + // Raises a error saying that the exe version is incompatible (and output the exe name) + void RaiseIncompatibleVersion() + { + char buf[128], v[32]; + sprintf(buf, + "An incompatible exe version has been detected! (%s)\nContact the mod creator!", + GetVersionText(v) + ); + MessageBoxA(0, buf, PluginName, MB_ICONERROR); + } +}; +#else // INJECTOR_GVM_DUMMY +class game_version_manager +{ + public: + bool Detect() { return true; } +}; +#endif // INJECTOR_GVM_DUMMY +#endif // INJECTOR_OWN_GVM + + +/* + * address_manager + * Address translator from 1.0 executables to other executables offsets + * Inherits from game_version_manager ;) + */ +class address_manager : public game_version_manager +{ + private: + address_manager() + { + this->Detect(); + } + + // You could implement your translator for the address your plugin uses + // If not implemented, the translator won't translate anything, just return the samething as before + #ifdef INJECTOR_GVM_HAS_TRANSLATOR + void* translator(void* p); + #else + void* translator(void* p) { return p; } + #endif + + public: + // Translates address p to the running executable pointer + void* translate(void* p) + { + return translator(p); + } + + + public: + // Address manager singleton + static address_manager& singleton() + { + static address_manager m; + return m; + } + + // Static version of translate() + static void* translate_address(void* p) + { + return singleton().translate(p); + } + + // + static void set_name(const char* modname) + { + singleton().PluginName = modname; + } + + public: + // Functors for memory translation: + + // Translates aslr translator + struct fn_mem_translator_aslr + { + void* operator()(void* p) const + { + static uintptr_t module = (uintptr_t)GetModuleHandle(NULL); + return (void*)((uintptr_t)(p)-(0x400000 - module)); + } + }; + + // Translates nothing translator + struct fn_mem_translator_nop + { + void* operator()(void* p) const + { return p; } + }; + + // Real translator + struct fn_mem_translator + { + void* operator()(void* p) const + { return translate_address(p); } + }; +}; + +#endif // #if 1 + + +} \ No newline at end of file diff --git a/third-party/plugin-sdk/injector/gvm/translator.hpp b/third-party/plugin-sdk/injector/gvm/translator.hpp new file mode 100644 index 00000000..c6ac4303 --- /dev/null +++ b/third-party/plugin-sdk/injector/gvm/translator.hpp @@ -0,0 +1,203 @@ +/* + * Injectors - Address Translation Management + * + * Copyright (C) 2014 LINK/2012 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + */ +#pragma once + +#if !defined(INJECTOR_GVM_HAS_TRANSLATOR) +#error Missing INJECTOR_GVM_HAS_TRANSLATOR on compiler definitions +#endif + +/* + * This is a quick solution for address translations if you're too lazy to implement a proper address_manager::translator by yourself + * So, just call address_translator_manager::singleton().translate(p) from your address_manager::translator and that's it. + * It'll translate addresses based on 'address_translator' objects, when one gets constructed it turns into a possible translator. + * At the constructor of your derived 'address_translator' make the map object to have [addr_to_translate] = translated_addr; + * There's also the virtual method 'fallback' that will get called when the translation wasn't possible, you can do some fallback stuff here + * (such as return the pointer as is or output a error message) + */ + +#include "../injector.hpp" +#include +#include +#include + +namespace injector +{ + /* + * address_translator + * Base for an address translator + */ + class address_translator + { + private: + bool enabled; + void add(); + void remove(); + + protected: + friend class address_translator_manager; + std::map map; + + public: + address_translator() : enabled(true) + { + // Must have bounds filled with min ptr and max ptr to have search working properly + map.insert(std::make_pair(raw_ptr(0x00000000u), raw_ptr(0x00000000u))); + map.insert(std::make_pair(raw_ptr(0xffffffffu), raw_ptr(0xffffffffu))); + add(); + } + + ~address_translator() + { + remove(); + } + + virtual void* fallback(void*) const + { + return nullptr; + } + + + // Enables or disables this translator + void enable(bool enable_it) + { + if(enable_it) this->enable(); + else this->disable(); + } + + // Enables this translator + void enable() + { + this->enabled = true; + } + + // Disables this translator + void disable() + { + this->enabled = false; + } + + // Checks if this translator is enabled + bool is_enabled() const + { + return enabled; + } + }; + + /* + * address_translator_manager + * Manages the address_translator objects + */ + class address_translator_manager + { + protected: + friend class address_manager; + friend class address_translator; + + std::list translators; + + void add(const address_translator& t) + { + translators.push_front(&t); + } + + void remove(const address_translator& t) + { + translators.remove(&t); + } + + public: + // Translates the address p + void* translator(void* p); + + // Singleton object + static address_translator_manager& singleton() + { + static address_translator_manager mgr; + return mgr; + } + }; + + + + inline void* address_translator_manager::translator(void* p_) + { + static const size_t max_ptr_dist = 7; + + // Tries to find an address in a translator map + auto try_map = [](const std::map& map, memory_pointer_raw p) -> memory_pointer_raw + { + memory_pointer_raw result = nullptr; + + // Find first element in the map that is greater than or equal to p + auto it = map.lower_bound(p); + if(it != map.end()) + { + // If it's not exactly the address, get back one position on the table + if(it->first != p) --it; + + auto diff = (p - it->first).as_int(); // What's the difference between p and that address? + if(diff <= max_ptr_dist) // Could we live with this difference in hands? + result = it->second + raw_ptr(diff); // Yes, we can! + } + + return result; + }; + + + // + memory_pointer_raw result = nullptr; + + // Try to find translation for this pointer + auto& mgr = address_translator_manager::singleton().translators; + for(auto it = mgr.begin(); result == nullptr && it != mgr.end(); ++it) + { + auto& t = **it; + if(t.is_enabled()) result = try_map(t.map, p_); + } + + // If we couldn't translate the address, notify and try to fallback + if(result.is_null()) + { + for(auto it = mgr.begin(); result == nullptr && it != mgr.end(); ++it) + { + auto& t = **it; + if(t.is_enabled()) result = t.fallback(p_); + } + } + + return result.get(); + } + + inline void address_translator::add() + { + address_translator_manager::singleton().add(*this); + } + + inline void address_translator::remove() + { + address_translator_manager::singleton().remove(*this); + } +} diff --git a/third-party/plugin-sdk/injector/hooking.hpp b/third-party/plugin-sdk/injector/hooking.hpp new file mode 100644 index 00000000..c37c44ad --- /dev/null +++ b/third-party/plugin-sdk/injector/hooking.hpp @@ -0,0 +1,729 @@ +/* + * Injectors - Classes for making your hooking life easy + * + * Copyright (C) 2013-2014 LINK/2012 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + */ +#pragma once +#include "injector.hpp" +#include +#include +#include // for std::shared_ptr +#include +#include "../shared/DynAddress.h" + +namespace injector +{ + /* + * scoped_base + * Base for any scoped hooking type + * !!!! NOTICE !!!! --> Any derived which implements/reimplements restore() should implement a destructor calling it + */ + class scoped_base + { + public: + virtual ~scoped_base() {} + virtual void restore() = 0; + }; + + /* + * scoped_basic + * Base for scoped types which will need a buffer to save/restore stuff + */ + template // TODO specialize bufsize=0 to be dynamic + class scoped_basic : public scoped_base + { + private: + uint8_t buf[bufsize];// Saved content + memory_pointer_raw addr; // Data saved from this address + size_t size; // Size saved + bool saved; // Something saved? + bool vp; // Virtual protect? + + public: + + static const bool is_dynamic = false; + + // Restore the previosly saved data + // Problems may arise if someone else hooked the same place using the same method + virtual void restore() + { + #ifndef INJECTOR_SCOPED_NOSAVE_NORESTORE + if(this->saved) + { + WriteMemoryRaw(this->addr, this->buf, this->size, this->vp); + this->saved = false; + } + #endif + } + + // Save buffer at @addr with @size and virtual protect @vp + virtual void save(memory_pointer_tr addr, size_t size, bool vp) + { + #ifndef INJECTOR_SCOPED_NOSAVE_NORESTORE + assert(size <= bufsize); // Debug Safeness + this->restore(); // Restore anything we have saved + this->saved = true; // Mark that we have data save + this->addr = addr.get(); // Save address + this->size = size; // Save size + this->vp = vp; // Save virtual protect + ReadMemoryRaw(addr, buf, size, vp); // Save buffer + #endif + } + + public: + // Constructor, initialises + scoped_basic() : saved(false) + {} + + ~scoped_basic() + { + this->restore(); + } + + // No copy construction, we can't do this! Sure we can move construct :) + scoped_basic(const scoped_basic&) = delete; + scoped_basic(scoped_basic&& rhs) + { + *this = std::move(rhs); + } + + scoped_basic& operator=(const scoped_basic& rhs) = delete; + scoped_basic& operator=(scoped_basic&& rhs) + { + if((this->saved = rhs.saved)) + { + assert(bufsize >= rhs.size); + + this->addr = rhs.addr; + this->size = rhs.size; + this->vp = rhs.vp; + memcpy(buf, rhs.buf, rhs.size); + + rhs.saved = false; + } + return *this; + } + }; + + /* + * RAII wrapper for memory writes + * Can save only basic and POD types + */ + template + class scoped_write : public scoped_basic + { + public: + // Save buffer at @addr with @size and virtual protect @vp and then overwrite it with @value + void write(memory_pointer_tr addr, void* value, size_t size, bool vp) + { + this->save(addr, size, vp); + WriteMemoryRaw(addr, value, size, vp); + } + + // Save buffer at @addr with size sizeof(@value) and virtual protect @vp and then overwrite it with @value + template + void write(memory_pointer_tr addr, T value, bool vp = false) + { + this->save(addr, sizeof(T), vp); + WriteMemory(addr, value, vp); + } + + // Constructors, move constructors, assigment operators........ + scoped_write() = default; + scoped_write(const scoped_write&) = delete; + scoped_write(scoped_write&& rhs) : scoped_basic(std::move(rhs)) {} + scoped_write& operator=(const scoped_write& rhs) = delete; + scoped_write& operator=(scoped_write&& rhs) + { scoped_basic::operator=(std::move(rhs)); return *this; } + }; + + /* + * RAII wrapper for filling + */ + template + class scoped_fill : public scoped_basic + { + public: + // Fills memory at @addr with value @value and size @size and virtual protect @vp + void fill(memory_pointer_tr addr, uint8_t value, size_t size, bool vp) + { + this->save(addr, size, vp); + MemoryFill(addr, value, size, vp); + } + + // Constructors, move constructors, assigment operators........ + scoped_fill() = default; + scoped_fill(const scoped_fill&) = delete; + scoped_fill(scoped_fill&& rhs) : scoped_basic(std::move(rhs)) {} + scoped_fill& operator=(const scoped_fill& rhs) = delete; + scoped_fill& operator=(scoped_fill&& rhs) + { scoped_basic::operator=(std::move(rhs)); return *this; } + + scoped_fill(memory_pointer_tr addr, uint8_t value, size_t size, bool vp) + { fill(addr, value, vp); } + }; + + /* + * RAII wrapper for nopping + */ + template + class scoped_nop : public scoped_basic + { + public: + // Makes NOP at @addr with value @value and size @size and virtual protect @vp + void make_nop(memory_pointer_tr addr, size_t size = 1, bool vp = true) + { + this->save(addr, size, vp); + MakeNOP(addr, size, vp); + } + + // Constructors, move constructors, assigment operators........ + scoped_nop() = default; + scoped_nop(const scoped_nop&) = delete; + scoped_nop(scoped_nop&& rhs) : scoped_basic(std::move(rhs)) {} + scoped_nop& operator=(const scoped_nop& rhs) = delete; + scoped_nop& operator=(scoped_nop&& rhs) + { scoped_basic::operator=(std::move(rhs)); return *this; } + + scoped_nop(memory_pointer_tr addr, size_t size = 1, bool vp = true) + { make_nop(addr, size, vp); } + }; + + /* + * RAII wrapper for MakeJMP + */ + class scoped_jmp : public scoped_basic<5> + { + public: + // Makes a jump at @addr to @dest and virtual protect @vp + memory_pointer_raw make_jmp(memory_pointer_tr at, memory_pointer_raw dest, bool vp = true) + { + this->save(at, 5, vp); + return MakeJMP(at, dest, vp); + } + + memory_pointer_raw install(memory_pointer_tr at, memory_pointer_raw dest, bool vp = true) + { + return make_jmp(at, dest, vp); + } + + // Constructors, move constructors, assigment operators........ + scoped_jmp() = default; + scoped_jmp(const scoped_jmp&) = delete; + scoped_jmp(scoped_jmp&& rhs) : scoped_basic<5>(std::move(rhs)) {} + scoped_jmp& operator=(const scoped_jmp& rhs) = delete; + scoped_jmp& operator=(scoped_jmp&& rhs) + { scoped_basic<5>::operator=(std::move(rhs)); return *this; } + + scoped_jmp(memory_pointer_tr at, memory_pointer_raw dest, bool vp = true) + { make_jmp(at, dest, vp); } + }; + + /* + * RAII wrapper for MakeCALL + */ + class scoped_call : public scoped_basic<5> + { + public: + // Makes a call at @addr to @dest and virtual protect @vp + memory_pointer_raw make_call(memory_pointer_tr at, memory_pointer_raw dest, bool vp = true) + { + this->save(at, 5, vp); + return MakeCALL(at, dest, vp); + } + + memory_pointer_raw install(memory_pointer_tr at, memory_pointer_raw dest, bool vp = true) + { + return make_call(at, dest, vp); + } + + // Constructors, move constructors, assigment operators........ + scoped_call() = default; + scoped_call(const scoped_call&) = delete; + scoped_call(scoped_call&& rhs) : scoped_basic<5>(std::move(rhs)) {} + scoped_call& operator=(const scoped_call& rhs) = delete; + scoped_call& operator=(scoped_call&& rhs) + { scoped_basic<5>::operator=(std::move(rhs)); return *this; } + + scoped_call(memory_pointer_tr at, memory_pointer_raw dest, bool vp = true) + { make_call(at, dest, vp); } + }; + + /* + * RAII wrapper for callback (address) replacement + */ + class scoped_callback : public scoped_basic<4> + { + public: + // Writes an address of @cb at @addr and virtual protect @vp + memory_pointer_raw make_callback(memory_pointer_tr at, memory_pointer_raw cb, bool vp = true) + { + this->save(at, 4, vp); + uintptr_t original = ReadMemory(at, vp); + WriteMemory(at, cb.as_int(), vp); + return original; + } + + memory_pointer_raw install(memory_pointer_tr at, memory_pointer_raw cb, bool vp = true) + { + return make_callback(at, cb, vp); + } + + // Constructors, move constructors, assigment operators........ + scoped_callback() = default; + scoped_callback(const scoped_callback&) = delete; + scoped_callback(scoped_callback&& rhs) : scoped_basic<4>(std::move(rhs)) {} + scoped_callback& operator=(const scoped_callback& rhs) = delete; + scoped_callback& operator=(scoped_callback&& rhs) + { scoped_basic<4>::operator=(std::move(rhs)); return *this; } + + scoped_callback(memory_pointer_tr at, memory_pointer_raw cb, bool vp = true) + { make_callback(at, cb, vp); } + }; + +#if __cplusplus >= 201103L || _MSC_VER >= 1800 // C++11 or MSVC 2013 required for variadic templates + + /* + * function_hooker_manager + * Manages many function_hookers that points to the same address + * The need for this function arises because otherwise we would only be able to allow one hook per address using function_hookers + * This manager takes care of the amount of hooks placed in a particular address, calls the hooks and unhooks when necessary. + */ + template + class function_hooker_manager : protected CallType + { + private: + using func_type_raw = typename ToManage::func_type_raw; + using func_type = typename ToManage::func_type; + using functor_type = typename ToManage::functor_type; + using assoc_type = std::list>; + + // Only construction is allowed... by myself ofcourse... + function_hooker_manager() = default; + function_hooker_manager(const function_hooker_manager&) = delete; + function_hooker_manager(function_hooker_manager&&) = delete; + + // + func_type_raw original; // Pointer to the original function we've replaced + assoc_type assoc; // Association between owners of a hook and the hook (map) + bool has_hooked = false; // Is the hook already in place? + + // Find assoc iterator for the content owned by 'owned' + typename assoc_type::iterator find_assoc(const ToManage& owner) + { + for(auto it = assoc.begin(); it != assoc.end(); ++it) + if(it->first == &owner) return it; + return assoc.end(); + } + + // Adds a new item to the association map (or override if already in the map) + void add(const ToManage& hooker, functor_type functor) + { + auto it = find_assoc(hooker); + if(it != assoc.end()) + it->second = std::move(functor); + else + assoc.emplace_back(&hooker, std::move(functor)); + } + + public: + // Forwards the call to all the installed hooks + static Ret call_hooks(Args&... args) + { + auto& manager = *instance(); + + if(manager.assoc.size() == 0) // This may be uncommon but may happen (?), no hook installed + return manager.original(args...); + + // Functor for the original call + func_type original = [&manager](Args... args) -> Ret { + return manager.original(args...); + }; + + if(manager.assoc.size() == 1) + { + // We have only one hook, just use it directly no need to go further in complexity + auto& functor = manager.assoc.begin()->second; + return functor(std::move(original), args...); + } + else + { + // Build a serie of functors which captures the previous functor sending it to the next functor, + // that's what would happen if the hooks took place independent of the template staticness (AAAAAAA) + func_type next = std::move(original); + for(auto it = manager.assoc.begin(); it != manager.assoc.end(); ++it) + { + auto& functor = it->second; + next = [functor, next](Args... args) -> Ret + { + return functor(next, args...); + }; + } + return next(args...); + } + } + + public: + + // Installs a hook associated with the function_hooker 'hooker' which would call the specified 'functor' + // We need an auxiliar function pointer 'ptr' (to abstract calling conventions) which should forward itself to ^call_hooks + void install(const ToManage& hooker, functor_type functor, memory_pointer_raw ptr) + { + this->add(hooker, std::move(functor)); + + // Make sure we only hook this address for the manager once + if(!this->has_hooked) + { + // (the following cast is needed for __thiscall functions) + this->original = (func_type_raw) (void*)CallType::install(plugin::GetGlobalAddress(hooker.addr), ptr).get(); + this->has_hooked = true; + } + } + + // Restores the state of the call we've replaced in the game code + // All installed hooks gets uninstalled after this + void restore() + { + if(this->has_hooked) + { + this->has_hooked = false; + this->assoc.clear(); + return CallType::restore(); + } + } + + // Replaces the hook associated with 'from' to be associated with 'to' + // After this call the 'from' object has no association in this manager + void replace(const ToManage& from, const ToManage& to) + { + auto it = find_assoc(from); + if(it != assoc.end()) + { + auto functor = std::move(it->second); + assoc.erase(it); + this->add(to, std::move(functor)); + } + } + + // Removes the hook associated with the specified 'hooker' + // If the number of hooks reaches zero after the remotion, a restore will take place + void remove(const ToManage& hooker) + { + auto it = find_assoc(hooker); + if(it != assoc.end()) + { + assoc.erase(it); + if(assoc.size() == 0) this->restore(); + } + } + + // The instance of this specific manager + // This work as a shared pointer to avoid the static destruction of the manager even when a static function_hooker + // still wants to use it. + static std::shared_ptr instance() + { + static auto fm_ptr = std::shared_ptr(new function_hooker_manager()); + return fm_ptr; + } + + }; + + + /* + * function_hooker_base + * Base for any function_hooker, this class manages the relationship with the function hooker manager + */ + template + class function_hooker_base : public scoped_base + { + public: + static const uintptr_t addr = addr1; + + using func_type_raw = FuncType; + using func_type = std::function; + using functor_type = std::function; + using manager_type = function_hooker_manager; + + public: + // Constructors, move constructors, assigment operators........ + function_hooker_base(const function_hooker_base&) = delete; + function_hooker_base& operator=(const function_hooker_base& rhs) = delete; + + function_hooker_base() : manager(manager_type::instance()) + {} + + // + virtual ~function_hooker_base() + { + this->restore(); + } + + // The move constructor should do a replace in the manager + function_hooker_base(function_hooker_base&& rhs) + : scoped_base(std::move(rhs)), installed(rhs.installed), + manager(rhs.manager) // (don't move the manager!, every function_hooker should own one) + { + manager->replace(rhs, *this); + } + + // The move assignment operator should also do a replace in the manager + function_hooker_base& operator=(function_hooker_base&& rhs) + { + scoped_base::operator=(std::move(rhs)); + manager->replace(rhs, *this); + this->installed = rhs.installed; + this->manager = rhs.manager; // (don't move the manager! every function_hooker should own one) + return *this; + } + + // Deriveds should implement a proper install (yeah it's virtual so derived-deriveds can do some fest) + virtual void install(functor_type functor) = 0; + + // Restores the state of the call we've replaced in the game code + virtual void restore() + { + this->installed = false; + manager->remove(*this); + } + + // Checkers whether a hook is installed + bool has_hooked() + { + return this->installed; + } + + private: + bool installed = false; // Has a hook installed? + std::shared_ptr manager; // **EVERY** function_hooker should have a ownership over it's manager_type + // this prevents the static destruction of the manager_type while it may be still needed. + + protected: // Forwarders to the function hooker manager + + void install(functor_type functor, memory_pointer_raw ptr) + { + this->installed = true; + manager->install(*this, std::move(functor), ptr); + } + + static Ret call_hooks(Args&... a) + { + return manager_type::call_hooks(a...); + } + }; + + + + + /* + * function_hooker + * For standard conventions (usually __cdecl) + */ + template + class function_hooker; + + template + class function_hooker + : public function_hooker_base + { + private: + using base = function_hooker_base; + + // The hook caller + static Ret call(Args... a) + { + return base::call_hooks(a...); + } + + public: + // Constructors, move constructors, assigment operators........ + function_hooker() = default; + function_hooker(const function_hooker&) = delete; + function_hooker(function_hooker&& rhs) : base(std::move(rhs)) {} + function_hooker& operator=(const function_hooker& rhs) = delete; + function_hooker& operator=(function_hooker&& rhs) + { base::operator=(std::move(rhs)); return *this; } + + // Makes the hook + void install(typename base::functor_type functor) + { + return base::install(std::move(functor), raw_ptr(call)); + } + }; + + + /* + * function_hooker_stdcall + * For stdcall conventions (__stdcall) + */ + template + struct function_hooker_stdcall; + + template + struct function_hooker_stdcall + : public function_hooker_base + { + private: + using base = function_hooker_base; + + // The hook caller + static Ret __stdcall call(Args... a) + { + return base::call_hooks(a...); + } + + public: + // Constructors, move constructors, assigment operators........ + function_hooker_stdcall() = default; + function_hooker_stdcall(const function_hooker_stdcall&) = delete; + function_hooker_stdcall(function_hooker_stdcall&& rhs) : base(std::move(rhs)) {} + function_hooker_stdcall& operator=(const function_hooker_stdcall& rhs) = delete; + function_hooker_stdcall& operator=(function_hooker_stdcall&& rhs) + { base::operator=(std::move(rhs)); return *this; } + + // Makes the hook + void install(typename base::functor_type functor) + { + return base::install(std::move(functor), raw_ptr(call)); + } + }; + + + /* + * function_hooker_fastcall + * For fastcall conventions (__fastcall) + */ + template + struct function_hooker_fastcall; + + template + struct function_hooker_fastcall + : public function_hooker_base + { + private: + using base = function_hooker_base; + + // The hook caller + static Ret __fastcall call(Args... a) + { + return base::call_hooks(a...); + } + + public: + // Constructors, move constructors, assigment operators........ + function_hooker_fastcall() = default; + function_hooker_fastcall(const function_hooker_fastcall&) = delete; + function_hooker_fastcall(function_hooker_fastcall&& rhs) : base(std::move(rhs)) {} + function_hooker_fastcall& operator=(const function_hooker_fastcall& rhs) = delete; + function_hooker_fastcall& operator=(function_hooker_fastcall&& rhs) + { base::operator=(std::move(rhs)); return *this; } + + // Makes the hook + void install(typename base::functor_type functor) + { + return base::install(std::move(functor), raw_ptr(call)); + } + }; + + + /* + * function_hooker_thiscall + * For thiscall conventions (__thiscall, class methods) + */ + template + struct function_hooker_thiscall; + + template + struct function_hooker_thiscall + : public function_hooker_base + { + private: + using base = function_hooker_base; + + // The hook caller + static Ret __thiscall call(Args... a) + { + return base::call_hooks(a...); + } + + public: + // Constructors, move constructors, assigment operators........ + function_hooker_thiscall() = default; + function_hooker_thiscall(const function_hooker_thiscall&) = delete; + function_hooker_thiscall(function_hooker_thiscall&& rhs) : base(std::move(rhs)) {} + function_hooker_thiscall& operator=(const function_hooker_thiscall& rhs) = delete; + function_hooker_thiscall& operator=(function_hooker_thiscall&& rhs) + { base::operator=(std::move(rhs)); return *this; } + + // Makes the hook + void install(typename base::functor_type functor) + { + return base::install(std::move(functor), raw_ptr(call)); + } + }; + + + + /******************* HELPERS ******************/ + + /* + * Adds a hook to be alive for the entire program lifetime + * That means the hook received will be alive until the program dies. + * Note: Parameter must be a rvalue + */ + template inline + T& add_static_hook(T&& hooker) + { + static std::list a; + return *a.emplace(a.end(), std::move(hooker)); + } + + /* + * Makes a hook which is alive until it gets out of scope + * 'T' must be any function_hooker object + */ + template inline + T make_function_hook(F functor) + { + T a; + a.install(std::move(functor)); + return a; + } + + /* + * Makes a hook which is alive for the entire lifetime of this program + * 'T' must be any function_hooker object + */ + template inline + T& make_static_hook(F functor) + { + return add_static_hook(make_function_hook(std::move(functor))); + } + + + // TODO when we have access to C++14 add a make_function_hook, make_stdcall_function_hook, and so on + // the problem behind implement it with C++11 is that lambdas cannot be generic and the first param of a hook is a functor pointing + // to the previous call pointer + +#endif + +} diff --git a/third-party/plugin-sdk/injector/injector.hpp b/third-party/plugin-sdk/injector/injector.hpp new file mode 100644 index 00000000..8e5d9906 --- /dev/null +++ b/third-party/plugin-sdk/injector/injector.hpp @@ -0,0 +1,749 @@ +/* + * Injectors - Base Header + * + * Copyright (C) 2012-2014 LINK/2012 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + */ +#pragma once +#define INJECTOR_HAS_INJECTOR_HPP +#include +#include +#include +#include "gvm/gvm.hpp" +/* + The following macros (#define) are relevant on this header: + + INJECTOR_GVM_HAS_TRANSLATOR + If defined, the user should provide their own address_manager::translator function. + That function is responssible for translating a void pointer (that mayn't be an actual pointer) into an actual address. + The meaning of that void pointer will be made by YOU when you send it to the functions that receive pointers on this library. + The default translator does nothing but returns that void pointer as the address. + + INJECTOR_GVM_OWN_DETECT + If defined, the user should provide it's own game detection function thought game_version_manager::Detect + By default it provide an good detection for the Grand Theft Auto series. + + INJECTOR_GVM_PLUGIN_NAME + If this is defined, it will be used as the plugin name used at error messages. + By default it will use ""Unknown Plugin Name" + + INJECTOR_GVM_DUMMY + If defined, the game_version_manager will be a dummy object + By default it provides a nice gvm for Grand Theft Auto series + + INJECTOR_OWN_GVM + If defined, the game_version_manager should be implemented by the user before including this library. + By default it provides a nice gvm for Grand Theft Auto series +*/ + +#include "gvm/gvm.hpp" + + +namespace injector +{ + + +/* + * auto_pointer + * Casts itself to another pointer type in the lhs + */ +union auto_pointer +{ + protected: + friend union memory_pointer_tr; + template friend union basic_memory_pointer; + + void* p; + uintptr_t a; + + public: + auto_pointer() : p(0) {} + auto_pointer(const auto_pointer& x) : p(x.p) {} + explicit auto_pointer(void* x) : p(x) {} + explicit auto_pointer(uint32_t x) : a(x) {} + + bool is_null() const { return this->p != nullptr; } + + #if __cplusplus >= 201103L || _MSC_VER >= 1800 + explicit operator bool() const { return is_null(); } + #endif + + auto_pointer get() const { return *this; } + template T* get() const { return (T*) this->p; } + template T* get_raw() const { return (T*) this->p; } + + template + operator T*() const { return reinterpret_cast(p); } +}; + +/* + * basic_memory_pointer + * A memory pointer class that is capable of many operations, including address translation + * MemTranslator is the translator functor + */ +template +union basic_memory_pointer +{ + protected: + void* p; + uintptr_t a; + + // Translates address p to the running executable pointer + static auto_pointer memory_translate(void* p) + { + return auto_pointer(MemTranslator()(p)); + } + + public: + basic_memory_pointer() : p(nullptr) {} + basic_memory_pointer(std::nullptr_t) : p(nullptr) {} + basic_memory_pointer(uintptr_t x) : a(x) {} + basic_memory_pointer(const auto_pointer& x) : p(x.p) {} + basic_memory_pointer(const basic_memory_pointer& rhs) : p(rhs.p) {} + + template + basic_memory_pointer(T* x) : p((void*)x) {} + + + + + // Gets the translated pointer (plus automatic casting to lhs) + auto_pointer get() const { return memory_translate(p); } + + // Gets the translated pointer (casted to T*) + template T* get() const { return get(); } + + // Gets the raw pointer, without translation (casted to T*) + template T* get_raw() const { return auto_pointer(p); } + + // This type can get assigned from void* and uintptr_t + basic_memory_pointer& operator=(void* x) { return p = x, *this; } + basic_memory_pointer& operator=(uintptr_t x) { return a = x, *this; } + + /* Arithmetic */ + basic_memory_pointer operator+(const basic_memory_pointer& rhs) const + { return basic_memory_pointer(this->a + rhs.a); } + + basic_memory_pointer operator-(const basic_memory_pointer& rhs) const + { return basic_memory_pointer(this->a - rhs.a); } + + basic_memory_pointer operator*(const basic_memory_pointer& rhs) const + { return basic_memory_pointer(this->a * rhs.a); } + + basic_memory_pointer operator/(const basic_memory_pointer& rhs) const + { return basic_memory_pointer(this->a / rhs.a); } + + + /* Comparision */ + bool operator==(const basic_memory_pointer& rhs) const + { return this->a == rhs.a; } + + bool operator!=(const basic_memory_pointer& rhs) const + { return this->a != rhs.a; } + + bool operator<(const basic_memory_pointer& rhs) const + { return this->a < rhs.a; } + + bool operator<=(const basic_memory_pointer& rhs) const + { return this->a <= rhs.a; } + + bool operator>(const basic_memory_pointer& rhs) const + { return this->a > rhs.a; } + + bool operator>=(const basic_memory_pointer& rhs) const + { return this->a >=rhs.a; } + + bool is_null() const { return this->p == nullptr; } + uintptr_t as_int() const { return this->a; } // does not perform translation + + + +#if __cplusplus >= 201103L || _MSC_VER >= 1800 // MSVC 2013 + /* Conversion to other types */ + explicit operator uintptr_t() const + { return this->a; } // does not perform translation + explicit operator bool() const + { return this->p != nullptr; } +#else + //operator bool() -------------- Causes casting problems because of implicitness, use !is_null() + //{ return this->p != nullptr; } +#endif + +}; + + // Typedefs including memory translator for the above type +typedef basic_memory_pointer memory_pointer; +typedef basic_memory_pointer memory_pointer_raw; +typedef basic_memory_pointer memory_pointer_aslr; + + + +/* + * memory_pointer_tr + * Stores a basic_memory_pointer as a raw pointer from translated pointer + */ +union memory_pointer_tr +{ + protected: + void* p; + uintptr_t a; + + public: + template + memory_pointer_tr(const basic_memory_pointer& ptr) + : p(ptr.get()) + {} // Constructs from a basic_memory_pointer + + memory_pointer_tr(const auto_pointer& ptr) + : p(ptr.p) + {} // Constructs from a auto_pointer, probably comming from basic_memory_pointer::get + + memory_pointer_tr(const memory_pointer_tr& rhs) + : p(rhs.p) + {} // Constructs from my own type, copy constructor + + memory_pointer_tr(uintptr_t x) + : p(memory_pointer(x).get()) + {} // Constructs from a integer, translating the address + + memory_pointer_tr(void* x) + : p(memory_pointer(x).get()) + {} // Constructs from a void pointer, translating the address + + // Just to be method-compatible with basic_memory_pointer ... + auto_pointer get() { return auto_pointer(p); } + template T* get() { return get(); } + template T* get_raw() { return get(); } + + memory_pointer_tr operator+(const uintptr_t& rhs) const + { return memory_pointer_raw(this->a + rhs); } + + memory_pointer_tr operator-(const uintptr_t& rhs) const + { return memory_pointer_raw(this->a - rhs); } + + memory_pointer_tr operator*(const uintptr_t& rhs) const + { return memory_pointer_raw(this->a * rhs); } + + memory_pointer_tr operator/(const uintptr_t& rhs) const + { return memory_pointer_raw(this->a / rhs); } + + bool is_null() const { return this->p == nullptr; } + uintptr_t as_int() const { return this->a; } + +#if __cplusplus >= 201103L + explicit operator uintptr_t() const + { return this->a; } +#else +#endif + +}; + + + + + + + +/* + * ProtectMemory + * Makes the address @addr have a protection of @protection + */ +inline bool ProtectMemory(memory_pointer_tr addr, size_t size, DWORD protection) +{ + return VirtualProtect(addr.get(), size, protection, &protection) != 0; +} + +/* + * UnprotectMemory + * Unprotect the memory at @addr with size @size so it have all accesses (execute, read and write) + * Returns the old protection to out_oldprotect + */ +inline bool UnprotectMemory(memory_pointer_tr addr, size_t size, DWORD& out_oldprotect) +{ + return VirtualProtect(addr.get(), size, PAGE_EXECUTE_READWRITE, &out_oldprotect) != 0; +} + +/* + * scoped_unprotect + * RAII wrapper for UnprotectMemory + * On construction unprotects the memory, on destruction reprotects the memory + */ +struct scoped_unprotect +{ + memory_pointer_raw addr; + size_t size; + DWORD dwOldProtect; + bool bUnprotected; + + scoped_unprotect(memory_pointer_tr addr, size_t size) + { + if(size == 0) bUnprotected = false; + else bUnprotected = UnprotectMemory(this->addr = addr.get(), this->size = size, dwOldProtect); + } + + ~scoped_unprotect() + { + if(bUnprotected) ProtectMemory(this->addr.get(), this->size, this->dwOldProtect); + } +}; + + + + + + + + +/* + * WriteMemoryRaw + * Writes into memory @addr the content of @value with a sizeof @size + * Does memory unprotection if @vp is true + */ +inline void WriteMemoryRaw(memory_pointer_tr addr, void* value, size_t size, bool vp) +{ + scoped_unprotect xprotect(addr, vp? size : 0); + memcpy(addr.get(), value, size); +} + +/* + * ReadMemoryRaw + * Reads the memory at @addr with a sizeof @size into address @ret + * Does memory unprotection if @vp is true + */ +inline void ReadMemoryRaw(memory_pointer_tr addr, void* ret, size_t size, bool vp) +{ + scoped_unprotect xprotect(addr, vp? size : 0); + memcpy(ret, addr.get(), size); +} + +/* + * MemoryFill + * Fills the memory at @addr with the byte @value doing it @size times + * Does memory unprotection if @vp is true + */ +inline void MemoryFill(memory_pointer_tr addr, uint8_t value, size_t size, bool vp) +{ + scoped_unprotect xprotect(addr, vp? size : 0); + memset(addr.get(), value, size); +} + +/* + * WriteObject + * Assigns the object @value into the same object type at @addr + * Does memory unprotection if @vp is true + */ +template +inline T& WriteObject(memory_pointer_tr addr, const T& value, bool vp = false) +{ + scoped_unprotect xprotect(addr, vp? sizeof(value) : 0); + return (*addr.get() = value); +} + +/* + * ReadObject + * Assigns the object @value with the value of the same object type at @addr + * Does memory unprotection if @vp is true + */ +template +inline T& ReadObject(memory_pointer_tr addr, T& value, bool vp = false) +{ + scoped_unprotect xprotect(addr, vp? sizeof(value) : 0); + return (value = *addr.get()); +} + + +/* + * WriteMemory + * Writes the object of type T into the address @addr + * Does memory unprotection if @vp is true + */ +template +inline void WriteMemory(memory_pointer_tr addr, T value, bool vp = false) +{ + WriteObject(addr, value, vp); +} + +/* + * ReadMemory + * Reads the object type T at address @addr + * Does memory unprotection if @vp is true + */ +template +inline T ReadMemory(memory_pointer_tr addr, bool vp = false) +{ + T value; + return ReadObject(addr, value, vp); +} + +/* + * AdjustPointer + * Searches in the range [@addr, @addr + @max_search] for a pointer in the range [@default_base, @default_end] and replaces + * it with the proper offset in the pointer @replacement_base. + * Does memory unprotection if @vp is true. + */ + inline memory_pointer_raw AdjustPointer(memory_pointer_tr addr, + memory_pointer_raw replacement_base, memory_pointer_tr default_base, memory_pointer_tr default_end, + size_t max_search = 8, bool vp = true) + { + scoped_unprotect xprotect(addr, vp? max_search + sizeof(void*) : 0); + for(size_t i = 0; i < max_search; ++i) + { + memory_pointer_raw ptr = ReadMemory(addr + i); + if(ptr >= default_base.get() && ptr <= default_end.get()) + { + auto result = replacement_base + (ptr - default_base.get()); + WriteMemory(addr + i, result.get()); + return result; + } + } + return nullptr; + } + + + + + + +/* + * GetAbsoluteOffset + * Gets absolute address based on relative offset @rel_value from instruction that ends at @end_of_instruction + */ +inline memory_pointer_raw GetAbsoluteOffset(int rel_value, memory_pointer_tr end_of_instruction) +{ + return end_of_instruction.get() + rel_value; +} + +/* + * GetRelativeOffset + * Gets relative offset based on absolute address @abs_value for instruction that ends at @end_of_instruction + */ +inline int GetRelativeOffset(memory_pointer_tr abs_value, memory_pointer_tr end_of_instruction) +{ + return uintptr_t(abs_value.get() - end_of_instruction.get()); +} + +/* + * ReadRelativeOffset + * Reads relative offset from address @at + */ +inline memory_pointer_raw ReadRelativeOffset(memory_pointer_tr at, size_t sizeof_addr = 4, bool vp = true) +{ + switch(sizeof_addr) + { + case 1: return (GetAbsoluteOffset(ReadMemory (at, vp), at+sizeof_addr)); + case 2: return (GetAbsoluteOffset(ReadMemory(at, vp), at+sizeof_addr)); + case 4: return (GetAbsoluteOffset(ReadMemory(at, vp), at+sizeof_addr)); + } + return nullptr; +} + +/* + * MakeRelativeOffset + * Writes relative offset into @at based on absolute destination @dest + */ +inline void MakeRelativeOffset(memory_pointer_tr at, memory_pointer_tr dest, size_t sizeof_addr = 4, bool vp = true) +{ + switch(sizeof_addr) + { + case 1: WriteMemory (at, static_cast (GetRelativeOffset(dest, at+sizeof_addr)), vp); + case 2: WriteMemory(at, static_cast(GetRelativeOffset(dest, at+sizeof_addr)), vp); + case 4: WriteMemory(at, static_cast(GetRelativeOffset(dest, at+sizeof_addr)), vp); + } +} + +/* + * GetBranchDestination + * Gets the destination of a branch instruction at address @at + * *** Works only with JMP and CALL for now *** + */ +inline memory_pointer_raw GetBranchDestination(memory_pointer_tr at, bool vp = true) +{ + switch(ReadMemory(at, vp)) + { + // We need to handle other instructions (and prefixes) later... + case 0xE8: // call rel + case 0xE9: // jmp rel + return ReadRelativeOffset(at + 1, 4, vp); + + case 0xFF: + switch(ReadMemory(at + 1, vp)) + { + case 0x15: // call dword ptr [addr] + case 0x25: // jmp dword ptr [addr] + return *(ReadMemory(at + 2, vp)); + } + break; + } + return nullptr; +} + +/* + * MakeJMP + * Creates a JMP instruction at address @at that jumps into address @dest + * If there was already a branch instruction there, returns the previosly destination of the branch + */ +inline memory_pointer_raw MakeJMP(memory_pointer_tr at, memory_pointer_raw dest, bool vp = true) +{ + auto p = GetBranchDestination(at, vp); + WriteMemory(at, 0xE9, vp); + MakeRelativeOffset(at+1, dest, 4, vp); + return p; +} + +/* + * MakeCALL + * Creates a CALL instruction at address @at that jumps into address @dest + * If there was already a branch instruction there, returns the previosly destination of the branch + */ +inline memory_pointer_raw MakeCALL(memory_pointer_tr at, memory_pointer_raw dest, bool vp = true) +{ + auto p = GetBranchDestination(at, vp); + WriteMemory(at, 0xE8, vp); + MakeRelativeOffset(at+1, dest, 4, vp); + return p; +} + +/* + * MakeJA + * Creates a JA instruction at address @at that jumps if above into address @dest + * If there was already a branch instruction there, returns the previosly destination of the branch + */ +inline void MakeJA(memory_pointer_tr at, memory_pointer_raw dest, bool vp = true) +{ + WriteMemory(at, 0x87F0, vp); + MakeRelativeOffset(at+2, dest, 4, vp); +} + +/* + * MakeNOP + * Creates a bunch of NOP instructions at address @at + */ +inline void MakeNOP(memory_pointer_tr at, size_t count = 1, bool vp = true) +{ + MemoryFill(at, 0x90, count, vp); +} + +/* + * MakeRangedNOP + * Creates a bunch of NOP instructions at address @at until address @until + */ +inline void MakeRangedNOP(memory_pointer_tr at, memory_pointer_tr until, bool vp = true) +{ + return MakeNOP(at, size_t(until.get_raw() - at.get_raw()), vp); +} + + +/* + * MakeRET + * Creates a RET instruction at address @at popping @pop values from the stack + * If @pop is equal to 0 it will use the 1 byte form of the instruction + */ +inline void MakeRET(memory_pointer_tr at, uint16_t pop = 0, bool vp = true) +{ + WriteMemory(at, pop? 0xC2 : 0xC3, vp); + if(pop) WriteMemory(at+1, pop, vp); +} + + + + + +/* + * lazy_pointer + * Lazy pointer, where it's final value will get evaluated only once when finally needed. + */ + template + struct lazy_pointer + { + public: + // Returns the final raw pointer + static auto_pointer get() + { + return xget().get(); + } + + template + static T* get() + { + return get().get(); + } + + private: + // Returns the final pointer + static memory_pointer_raw xget() + { + static void* ptr = nullptr; + if(!ptr) ptr = memory_pointer(addr).get(); + return memory_pointer_raw(ptr); + } +}; + + /* + * lazy_object + * Lazy object, where it's final object will get evaluated only once when finally needed. + */ + template + struct lazy_object + { + static T& get() + { + static T data; + static bool has_data = false; + if(!has_data) + { + ReadObject(addr, data, true); + has_data = true; + } + return data; + } + }; + + + /* + Helpers + */ + + template +inline memory_pointer mem_ptr(T p) +{ + return memory_pointer(p); +} + +template +inline memory_pointer_raw raw_ptr(T p) +{ + return memory_pointer_raw(p); +} + +template +inline memory_pointer_raw raw_ptr(basic_memory_pointer p) +{ + return raw_ptr(p.get()); +} + +template +inline memory_pointer_raw lazy_ptr() +{ + return lazy_pointer::get(); +} + +template +inline memory_pointer_aslr aslr_ptr(T p) +{ + return memory_pointer_aslr(p); +} + + + + + + +#ifndef INJECTOR_GVM_OWN_DETECT // Should we implement our detection method? + +// Detects game, region and version; returns false if could not detect it +inline bool game_version_manager::Detect() +{ + // Cleanup data + this->Clear(); + + // Find NT header + uintptr_t base = (uintptr_t) GetModuleHandleA(NULL); + IMAGE_DOS_HEADER* dos = (IMAGE_DOS_HEADER*)(base); + IMAGE_NT_HEADERS* nt = (IMAGE_NT_HEADERS*)(base + dos->e_lfanew); + + // Look for game and version thought the entry-point + // Thanks to Silent for many of the entry point offsets + switch (base + nt->OptionalHeader.AddressOfEntryPoint + (0x400000 - base)) + { + case 0x5C1E70: // GTA III 1.0 + game = '3', major = 1, minor = 0, region = 0, steam = false; + return true; + + case 0x5C2130: // GTA III 1.1 + game = '3', major = 1, minor = 1, region = 0, steam = false; + return true; + + case 0x5C6FD0: // GTA III 1.1 (Cracked Steam Version) + case 0x9912ED: // GTA III 1.1 (Encrypted Steam Version) + game = '3', major = 1, minor = 1, region = 0, steam = true; + return true; + + case 0x667BF0: // GTA VC 1.0 + game = 'V', major = 1, minor = 0, region = 0, steam = false; + return true; + + case 0x667C40: // GTA VC 1.1 + game = 'V', major = 1, minor = 1, region = 0, steam = false; + return true; + + case 0x666BA0: // GTA VC 1.1 (Cracked Steam Version) + case 0xA402ED: // GTA VC 1.1 (Encrypted Steam Version) + game = 'V', major = 1, minor = 1, region = 0, steam = true; + return true; + + case 0x82457C: // GTA SA 1.0 US Cracked + case 0x824570: // GTA SA 1.0 US Compact + game = 'S', major = 1, minor = 0, region = 'U', steam = false; + cracker = injector::ReadMemory(raw_ptr(0x406A20), true) == 0xE9? 'H' : 0; + return true; + + case 0x8245BC: // GTA SA 1.0 EU Cracked (??????) + case 0x8245B0: // GTA SA 1.0 EU Cracked + game = 'S', major = 1, minor = 0, region = 'E', steam = false; + cracker = injector::ReadMemory(raw_ptr(0x406A20), true) == 0xE9? 'H' : 0; // just to say 'securom' + return true; + + case 0x8252FC: // GTA SA 1.1 US Cracked + game = 'S', major = 1, minor = 1, region = 'U', steam = false; + return true; + + case 0x82533C: // GTA SA 1.1 EU Cracked + game = 'S', major = 1, minor = 1, region = 'E', steam = false; + return true; + + case 0x85EC4A: // GTA SA 3.0 (Cracked Steam Version) + case 0xD3C3DB: // GTA SA 3.0 (Encrypted Steam Version) + game = 'S', major = 3, minor = 0, region = 0, steam = true; + return true; + + case 0xC965AD: // GTA IV 1.0.0.4 US + game = 'I', major = 1, minor = 0, majorRevision = 0, minorRevision = 4, region = 'U', steam = false; + return true; + + case 0xD0D011: // GTA IV 1.0.0.7 US + game = 'I', major = 1, minor = 0, majorRevision = 0, minorRevision = 7, region = 'U', steam = false; + return true; + + case 0xD0AF06: // GTA EFLC 1.1.2.0 US + game = 'E', major = 1, minor = 1, majorRevision = 2, minorRevision = 0, region = 'U', steam = false; + return true; + + default: + return false; + } +} + +#endif + + +} // namespace + diff --git a/third-party/plugin-sdk/injector/utility.hpp b/third-party/plugin-sdk/injector/utility.hpp new file mode 100644 index 00000000..0a5eafc9 --- /dev/null +++ b/third-party/plugin-sdk/injector/utility.hpp @@ -0,0 +1,56 @@ +/* + * Injectors - Utility / Helpers + * + * Copyright (C) 2014 LINK/2012 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + */ +#pragma once + +namespace injector +{ + template + T return_value() + { + return value; + } + + template + void* force_ptr(const T& fun) + { + auto ptr = fun; + return *(void**)&ptr; + } + + + // Helper structure to help calling back what was there before a hook + // e.g. hb.fun = MakeCALL(0x0, raw_ptr(my_hook)); + template + struct hook_back + { + typedef FuncType func_type; + + func_type fun; + + hook_back() : fun(nullptr) + {} + }; +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/AnimAssociationData.h b/third-party/plugin-sdk/plugin_sa/game_sa/AnimAssociationData.h new file mode 100644 index 00000000..85e4cccd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/AnimAssociationData.h @@ -0,0 +1,31 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" + +class CAnimBlendNode; +class CAnimBlendHierarchy; + +class PLUGIN_API AnimAssociationData { +public: + RwLLLink m_link; + unsigned short m_nNumBlendNodes; + unsigned short m_nAnimGroup; + CAnimBlendNode *m_pNodeArray; + CAnimBlendHierarchy *m_pHierarchy; + float m_fBlendAmount; + float m_fBlendDelta; + float m_fCurrentTime; + float m_fSpeed; + float fTimeStep; + short m_nAnimId; + unsigned short m_nFlags; +}; + +VALIDATE_SIZE(AnimAssociationData, 0x2C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/AnimBlendFrameData.h b/third-party/plugin-sdk/plugin_sa/game_sa/AnimBlendFrameData.h new file mode 100644 index 00000000..e216aac8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/AnimBlendFrameData.h @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class PLUGIN_API AnimBlendFrameData { +public: + unsigned int m_nFlags; + CVector m_vecOffset; + class IFrame *m_pIFrame; + unsigned int m_nNodeId; +}; + +VALIDATE_SIZE(AnimBlendFrameData, 0x18); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/C2dEffect.h b/third-party/plugin-sdk/plugin_sa/game_sa/C2dEffect.h new file mode 100644 index 00000000..f5023fa1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/C2dEffect.h @@ -0,0 +1,136 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVector.h" +#include "CRGBA.h" + +enum e2dEffectType { + EFFECT_LIGHT, + EFFECT_PARTICLE, + EFFECT_ATTRACTOR = 3, + EFFECT_SUN_GLARE, + EFFECT_FURNITUR, + EFFECT_ENEX, + EFFECT_ROADSIGN, + EFFECT_SLOTMACHINE_WHEEL, + EFFECT_COVER_POINT, + EFFECT_ESCALATOR, +}; + +enum ePedAttractorType { + PED_ATTRACTOR_ATM = 0, // Ped uses ATM(at day time only) + PED_ATTRACTOR_SEAT = 1, // Ped sits(at day time only) + PED_ATTRACTOR_STOP = 2, // Ped stands(at day time only) + PED_ATTRACTOR_PIZZA = 3, // Ped stands for few seconds + PED_ATTRACTOR_SHELTER = 4, // Ped goes away after spawning, but stands if weather is rainy + PED_ATTRACTOR_TRIGGER_SCRIPT = 5, // Launches an external script + PED_ATTRACTOR_LOOK_AT = 6, // Ped looks at object, then goes away + PED_ATTRACTOR_SCRIPTED = 7, // This type is not valid + PED_ATTRACTOR_PARK = 8, // Ped lays(at day time only, ped goes away after 6 PM) + PED_ATTRACTOR_STEP = 9 // Ped sits on steps +}; + +struct tEffectLight { + RwRGBA m_color; + float m_fCoronaFarClip; + float m_fPointlightRange; + float m_fCoronaSize; + float m_fShadowSize; + unsigned short m_nFlags; + unsigned char m_nCoronaFlashType; + bool m_bCoronaEnableReflection; + unsigned char m_nCoronaFlareType; + unsigned char m_nShadowColorMultiplier; + char m_nShadowZDistance; + char offsetX; + char offsetY; + char offsetZ; +private: + char _pad2E[2]; +public: + RwTexture *m_pCoronaTex; + RwTexture *m_pShadowTex; + int field_38; + int field_3C; +}; + +struct tEffectParticle { + char m_szName[24]; +}; + +struct tEffectPedAttractor { + RwV3d m_vecQueueDir; + RwV3d m_vecUseDir; + RwV3d m_vecForwardDir; + unsigned char m_nAttractorType; // see ePedAttractorType + unsigned char m_nPedExistingProbability; + char field_36; + unsigned char m_nFlags; + char m_szScriptName[8]; +}; + +struct tEffectEnEx { + float m_fEnterAngle; + RwV3d m_vecSize; + RwV3d m_vecExitPosn; + float m_fExitAngle; + short m_nInteriorId; + unsigned char m_nFlags1; + unsigned char m_nSkyColor; + char m_szInteriorName[8]; + unsigned char m_nTimeOn; + unsigned char m_nTimeOff; + unsigned char m_nFlags2; +}; + +struct tEffectRoadsign { + RwV2d m_vecSize; + float m_afRotation[3]; + unsigned short m_nFlags; +private: + char _pad26[2]; +public: + char *m_pText; + RpAtomic *m_pAtomic; +}; + +struct tEffectCoverPoint { + RwV2d m_vecDirection; + unsigned char m_nType; +private: + char _pad19[3]; +public: +}; + +struct tEffectEscalator { + RwV3d m_vecBottom; + RwV3d m_vecTop; + RwV3d m_vecEnd; + unsigned char m_nDirection; +private: + char _pad35[3]; +public: +}; + +class PLUGIN_API C2dEffect { +public: + CVector m_vecPosn; + unsigned int m_nType; // see e2dEffectType + + union { + tEffectLight light; + tEffectParticle particle; + tEffectPedAttractor pedAttractor; + tEffectEnEx enEx; + tEffectRoadsign roadsign; + tEffectCoverPoint coverPoint; + tEffectEscalator escalator; + }; +}; + +VALIDATE_SIZE(C2dEffect, 0x40); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/C3dMarker.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/C3dMarker.cpp new file mode 100644 index 00000000..e987a381 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/C3dMarker.cpp @@ -0,0 +1,37 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "C3dMarker.h" + +// Converted from thiscall bool C3dMarker::AddMarker(uint id,ushort type,float size,uchar red,uchar green,uchar blue,uchar alpha,ushort pulsePeriod,float pulseFraction,short rotateRate) 0x722230 +bool C3dMarker::AddMarker(unsigned int id, unsigned short type, float size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, unsigned short pulsePeriod, float pulseFraction, short rotateRate) { + return plugin::CallMethodAndReturn(this, id, type, size, red, green, blue, alpha, pulsePeriod, pulseFraction, rotateRate); +} + +// Converted from thiscall void C3dMarker::DeleteMarkerObject(void) 0x722390 +void C3dMarker::DeleteMarkerObject() { + plugin::CallMethod<0x722390, C3dMarker *>(this); +} + +// Converted from thiscall bool C3dMarker::IsZCoordinateUpToDate(void) 0x7226A0 +bool C3dMarker::IsZCoordinateUpToDate() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void C3dMarker::Render(void) 0x7223D0 +void C3dMarker::Render() { + plugin::CallMethod<0x7223D0, C3dMarker *>(this); +} + +// Converted from thiscall void C3dMarker::SetZCoordinateIfNotUpToDate(float coordinate) 0x724E10 +void C3dMarker::SetZCoordinateIfNotUpToDate(float coordinate) { + plugin::CallMethod<0x724E10, C3dMarker *, float>(this, coordinate); +} + +// Converted from thiscall void C3dMarker::UpdateZCoordinate(CVector,float) 0x724D40 +void C3dMarker::UpdateZCoordinate(CVector arg0, float arg1) { + plugin::CallMethod<0x724D40, C3dMarker *, CVector, float>(this, arg0, arg1); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/C3dMarker.h b/third-party/plugin-sdk/plugin_sa/game_sa/C3dMarker.h new file mode 100644 index 00000000..3d112cf4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/C3dMarker.h @@ -0,0 +1,58 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CRGBA.h" +#include "CVector.h" +#include "CMatrix.h" + +enum e3dMarkerType { + MARKER3D_ARROW = 0, + MARKER3D_CYLINDER = 1, + MARKER3D_TUBE = 2, + MARKER3D_ARROW2 = 3, + MARKER3D_TORUS = 4, + MARKER3D_CONE = 5, + MARKER3D_CONE_NO_COLLISION = 6, + MARKER3D_NA = 257 +}; + +class PLUGIN_API C3dMarker { +public: + CMatrix m_mat; + RpAtomic *m_pAtomic; + RpMaterial *m_pMaterial; + unsigned short m_nType; // see e3dMarkerType + bool m_bIsUsed; + bool m_bMustBeRenderedThisFrame; + int m_nIdentifier; + CRGBA m_colour; + short m_nPulsePeriod; + short m_nRotateRate; + int m_nStartTime; + float m_fPulseFraction; + float m_fStdSize; + float m_fSize; + float m_fBrightness; + float m_fCameraRange; + CVector m_vecNormal; + short m_nLastMapReadX; // float casted to short + short m_nLastMapReadY; // float casted to short + float m_fLastMapReadResultZ; + float m_fRoofHeight; + CVector m_vecLastPosition; + int m_nOnScreenTestTime; + + bool AddMarker(unsigned int id, unsigned short type, float size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, unsigned short pulsePeriod, float pulseFraction, short rotateRate); + void DeleteMarkerObject(); + bool IsZCoordinateUpToDate(); + void Render(); + void SetZCoordinateIfNotUpToDate(float coordinate); + void UpdateZCoordinate(CVector arg0, float arg1); +}; + +VALIDATE_SIZE(C3dMarker, 0xA0); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/C3dMarkers.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/C3dMarkers.cpp new file mode 100644 index 00000000..6f63cc55 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/C3dMarkers.cpp @@ -0,0 +1,131 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "C3dMarkers.h" + +unsigned int MAX_NUM_3DMARKERS = 32; +unsigned int MAX_NUM_USER_3DMARKERS = 5; +unsigned int MAX_NUM_DIRECTION_ARROWS = 5; + +unsigned char &C3dMarkers::m_colDiamond = *(unsigned char *)0x8D5D8B; +tDirectionArrow *C3dMarkers::ms_directionArrows = (tDirectionArrow *)0xC802E8; +CRGBA &C3dMarkers::m_user3dMarkerColor = *(CRGBA *)0xC7C620; +tUser3dMarker *C3dMarkers::ms_user3dMarkers = (tUser3dMarker *)0xC80258; +bool &C3dMarkers::IgnoreRenderLimit = *(bool *)0xC7C704; +float &C3dMarkers::m_angleDiamond = *(float *)0xC7C700; +unsigned int &C3dMarkers::NumActiveMarkers = *(unsigned int *)0xC7C6D8; +C3dMarker *C3dMarkers::m_aMarkerArray = (C3dMarker *)0xC7DD58; +RpClump **C3dMarkers::m_pRpClumpArray = (RpClump **)0xC7C6DC; + +// Converted from cdecl int C3dMarkers::DirectionArrowFindFirstFreeSlot(void) 0x721120 +int C3dMarkers::DirectionArrowFindFirstFreeSlot() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void C3dMarkers::DirectionArrowSet(CVector posn,float size,int red,int green,int blue,int alpha,float dir_x,float dir_y,float dir_z) 0x721140 +void C3dMarkers::DirectionArrowSet(CVector posn, float size, int red, int green, int blue, int alpha, float dir_x, float dir_y, float dir_z) { + plugin::Call<0x721140, CVector, float, int, int, int, int, float, float, float>(posn, size, red, green, blue, alpha, dir_x, dir_y, dir_z); +} + +// Converted from cdecl void C3dMarkers::DirectionArrowsDraw(void) 0x7211F0 +void C3dMarkers::DirectionArrowsDraw() { + plugin::Call<0x7211F0>(); +} + +// Converted from cdecl void C3dMarkers::DirectionArrowsInit(void) 0x721100 +void C3dMarkers::DirectionArrowsInit() { + plugin::Call<0x721100>(); +} + +// Converted from cdecl void C3dMarkers::ForceRender(uchar bEnable) 0x722870 +void C3dMarkers::ForceRender(unsigned char bEnable) { + plugin::Call<0x722870, unsigned char>(bEnable); +} + +// Converted from cdecl void C3dMarkers::Init(void) 0x724E40 +void C3dMarkers::Init() { + plugin::Call<0x724E40>(); +} + +// Converted from cdecl RpClump* C3dMarkers::LoadMarker(char const*modelName) 0x722810 +RpClump* C3dMarkers::LoadMarker(char const* modelName) { + return plugin::CallAndReturn(modelName); +} + +// Converted from cdecl bool C3dMarkers::LoadUser3dMarkers(void) 0x5D42E0 +bool C3dMarkers::LoadUser3dMarkers() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl C3dMarker* C3dMarkers::PlaceMarker(uint id,ushort type,CVector &posn,float size,uchar red,uchar green,uchar blue,uchar alpha,ushort pulsePeriod,float pulseFraction,short rotateRate,float nrm_x,float nrm_y,float nrm_z,bool zCheck) 0x725120 +C3dMarker* C3dMarkers::PlaceMarker(unsigned int id, unsigned short type, CVector& posn, float size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, unsigned short pulsePeriod, float pulseFraction, short rotateRate, float nrm_x, float nrm_y, float nrm_z, bool zCheck) { + return plugin::CallAndReturn(id, type, posn, size, red, green, blue, alpha, pulsePeriod, pulseFraction, rotateRate, nrm_x, nrm_y, nrm_z, zCheck); +} + +// Converted from cdecl void C3dMarkers::PlaceMarkerCone(uint id,CVector &posn,float size,uchar red,uchar green,uchar blue,uchar alpha,ushort pulsePeriod,float pulseFraction,short rotateRate,uchar bEnableCollision) 0x726D40 +void C3dMarkers::PlaceMarkerCone(unsigned int id, CVector& posn, float size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, unsigned short pulsePeriod, float pulseFraction, short rotateRate, unsigned char bEnableCollision) { + plugin::Call<0x726D40, unsigned int, CVector&, float, unsigned char, unsigned char, unsigned char, unsigned char, unsigned short, float, short, unsigned char>(id, posn, size, red, green, blue, alpha, pulsePeriod, pulseFraction, rotateRate, bEnableCollision); +} + +// Converted from cdecl void C3dMarkers::PlaceMarkerSet(uint id,ushort type,CVector &posn,float size,uchar red,uchar green,uchar blue,uchar alpha,ushort pulsePeriod,float pulseFraction,short rotateRate) 0x725BA0 +void C3dMarkers::PlaceMarkerSet(unsigned int id, unsigned short type, CVector& posn, float size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, unsigned short pulsePeriod, float pulseFraction, short rotateRate) { + plugin::Call<0x725BA0, unsigned int, unsigned short, CVector&, float, unsigned char, unsigned char, unsigned char, unsigned char, unsigned short, float, short>(id, type, posn, size, red, green, blue, alpha, pulsePeriod, pulseFraction, rotateRate); +} + +// Converted from cdecl void C3dMarkers::Render(void) 0x725040 +void C3dMarkers::Render() { + plugin::Call<0x725040>(); +} + +// Converted from cdecl void C3dMarkers::SaveUser3dMarkers(void) 0x5D4300 +void C3dMarkers::SaveUser3dMarkers() { + plugin::Call<0x5D4300>(); +} + +// Converted from cdecl void C3dMarkers::Shutdown(void) 0x722710 +void C3dMarkers::Shutdown() { + plugin::Call<0x722710>(); +} + +// Converted from cdecl void C3dMarkers::Update(void) 0x7227B0 +void C3dMarkers::Update() { + plugin::Call<0x7227B0>(); +} + +// Converted from cdecl RpAtomic* C3dMarkers::User3dMarkerAtomicCB(RpAtomic *atomic,void *data) 0x7210D0 +RpAtomic* C3dMarkers::User3dMarkerAtomicCB(RpAtomic* atomic, void* _IGNORED_ data) { + return plugin::CallAndReturn(atomic, data); +} + +// Converted from cdecl void C3dMarkers::User3dMarkerDelete(int slotIndex) 0x721090 +void C3dMarkers::User3dMarkerDelete(int slotIndex) { + plugin::Call<0x721090, int>(slotIndex); +} + +// Converted from cdecl void C3dMarkers::User3dMarkerDeleteAll(void) 0x7210B0 +void C3dMarkers::User3dMarkerDeleteAll() { + plugin::Call<0x7210B0>(); +} + +// Converted from cdecl int C3dMarkers::User3dMarkerFindFirstFreeSlot(void) 0x720FB0 +int C3dMarkers::User3dMarkerFindFirstFreeSlot() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl int C3dMarkers::User3dMarkerSet(float x,float y,float z,int colour) 0x720FD0 +int C3dMarkers::User3dMarkerSet(float x, float y, float z, int colour) { + return plugin::CallAndReturn(x, y, z, colour); +} + +// Converted from cdecl void C3dMarkers::User3dMarkersDraw(void) 0x723240 +void C3dMarkers::User3dMarkersDraw() { + plugin::Call<0x723240>(); +} + +// Converted from cdecl RpAtomic* MarkerAtomicCB(RpAtomic *atomic,void *data) 0x722220 +RpAtomic* MarkerAtomicCB(RpAtomic* atomic, void* data) { + return plugin::CallAndReturn(atomic, data); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/C3dMarkers.h b/third-party/plugin-sdk/plugin_sa/game_sa/C3dMarkers.h new file mode 100644 index 00000000..fdbcb781 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/C3dMarkers.h @@ -0,0 +1,86 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "C3dMarker.h" + +struct tUser3dMarker { + bool m_bIsUsed; +private: + char _pad1[3]; +public: + CVector m_vecPosition; + unsigned int m_nRed; + unsigned int m_nGreen; + unsigned int m_nBlue; +}; + +VALIDATE_SIZE(tUser3dMarker, 0x1C); + +struct tDirectionArrow { + bool m_bIsUsed; +private: + char _pad1[3]; +public: + CVector m_vecPosition; + float m_fSize; + CVector m_vecDirection; + unsigned int m_nRed; + unsigned int m_nGreen; + unsigned int m_nBlue; + unsigned int m_nAlpha; +}; + +VALIDATE_SIZE(tDirectionArrow, 0x30); + +extern unsigned int MAX_NUM_3DMARKERS; // default 32 +extern unsigned int MAX_NUM_USER_3DMARKERS; // default 5 +extern unsigned int MAX_NUM_DIRECTION_ARROWS; // default 5 + +class PLUGIN_API C3dMarkers { +public: + static unsigned char &m_colDiamond; // default 255 + static tDirectionArrow *ms_directionArrows; + static CRGBA &m_user3dMarkerColor; + static tUser3dMarker *ms_user3dMarkers; + static bool &IgnoreRenderLimit; + static float &m_angleDiamond; + static unsigned int &NumActiveMarkers; + static C3dMarker *m_aMarkerArray; + static RpClump **m_pRpClumpArray; + + // returns slot index; -1 if not found + static int DirectionArrowFindFirstFreeSlot(); + static void DirectionArrowSet(CVector posn, float size, int red, int green, int blue, int alpha, float dir_x, float dir_y, float dir_z); + static void DirectionArrowsDraw(); + static void DirectionArrowsInit(); + static void ForceRender(unsigned char bEnable); + static void Init(); + static RpClump* LoadMarker(char const* modelName); + // load user 3d markers from save file; always return true + static bool LoadUser3dMarkers(); + static C3dMarker* PlaceMarker(unsigned int id, unsigned short type, CVector& posn, float size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, unsigned short pulsePeriod, float pulseFraction, short rotateRate, float nrm_x, float nrm_y, float nrm_z, bool zCheck); + static void PlaceMarkerCone(unsigned int id, CVector& posn, float size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, unsigned short pulsePeriod, float pulseFraction, short rotateRate, unsigned char bEnableCollision); + static void PlaceMarkerSet(unsigned int id, unsigned short type, CVector& posn, float size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, unsigned short pulsePeriod, float pulseFraction, short rotateRate); + static void Render(); + // save user 3d markers to save file; always return true + static void SaveUser3dMarkers(); + static void Shutdown(); + static void Update(); + // only set material color (m_user3dMarkerColor) for first material in first atomic; 'data' is unused + static RpAtomic* User3dMarkerAtomicCB(RpAtomic* atomic, void* _IGNORED_ data); + static void User3dMarkerDelete(int slotIndex); + static void User3dMarkerDeleteAll(); + // returns slot index; -1 if not found + static int User3dMarkerFindFirstFreeSlot(); + // returns slot index; -1 if not created; for 'colour', see eHudColours + static int User3dMarkerSet(float x, float y, float z, int colour); + static void User3dMarkersDraw(); +}; + +// 'data' is a pointer to store atomic (RpAtomic **) +RpAtomic* MarkerAtomicCB(RpAtomic* atomic, void* data); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioChannel.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioChannel.h new file mode 100644 index 00000000..92377d0f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioChannel.h @@ -0,0 +1,40 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +class PLUGIN_API CAEAudioChannel { +public: + void* vtable; + void* m_pDirectSound; // IDirectSound + void* m_pDirectSoundBuffer; // IDirectSoundBuffer8 + void* m_pDirectSound3DBuffer; // IDirectSound3DBuffer + unsigned char gap10[24]; + unsigned long m_nFlags; + int m_nLengthInBytes; + int field_30; + float m_fVolume; + unsigned char field_38; + char field_39; + short field_3A; + unsigned long m_nFrequency; + unsigned long m_nOriginalFrequency; + bool m_bLooped; + unsigned char field_45; + unsigned char field_46[1]; + unsigned short field_47; + unsigned short field_49; + unsigned long field_4B; + unsigned long field_4F; + unsigned short field_53; + unsigned char m_nBitsPerSample; + unsigned char field_57; + char field_59[3]; + unsigned long m_nBufferStatus; +}; + +VALIDATE_SIZE(CAEAudioChannel, 0x60); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioEntity.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioEntity.cpp new file mode 100644 index 00000000..84048cdd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioEntity.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAEAudioEntity.h" + +void CAEAudioEntity::UpdateParameters(CAESound *sound, short arg2) +{ + ((void (__thiscall *)(CAEAudioEntity *, CAESound *, short))vtable[0])(this, sound, arg2); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioEntity.h new file mode 100644 index 00000000..7b654cae --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioEntity.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAESound.h" + +class CEntity; + +class PLUGIN_API CAEAudioEntity { +protected: + void **vtable; // TODO take care of this vtable +public: + CEntity *m_pEntity; + CAESound m_tempSound; + + // vtable + void UpdateParameters(CAESound *sound, short arg2); +}; + +VALIDATE_SIZE(CAEAudioEntity, 0x7C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioHardware.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioHardware.cpp new file mode 100644 index 00000000..49c4fd6d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioHardware.cpp @@ -0,0 +1,13 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAEAudioHardware.h" + +CAEAudioHardware& AEAudioHardware = *(CAEAudioHardware*)0xB5F8B8; + +int CAEAudioHardware::GetActiveTrackID() { + return plugin::CallMethodAndReturn(this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioHardware.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioHardware.h new file mode 100644 index 00000000..b188d2f0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEAudioHardware.h @@ -0,0 +1,70 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CAEMP3BankLoader.h" +#include "CAEStreamingChannel.h" +#include "CAEStreamThread.h" +#include "CAEAudioChannel.h" + +class PLUGIN_API CAEAudioHardware { +public: + unsigned char field_0; + char m_bDisableEffectsLoading; + char field_2; + char field_3; + char field_4; + char m_nReverbEnvironment; + short m_awChannelFlags[64]; + short field_86; + int m_nReverbDepth; + unsigned short m_wNumAvailableChannels; + unsigned short m_nNumChannels; + short m_anNumSoundsInSlot[64]; + float m_afChannelVolumes[64]; + int field_210[64]; + float m_afChannelsFrqScalingFactor[64]; + float m_fMusicMasterScalingFactor; + float m_fEffectMasterScalingFactor; + float m_fMusicFaderScalingFactor; + float m_fEffectsFaderScalingFactor; + float m_fStreamFaderScalingFactor; + float m_fNonStreamFaderScalingFactor; + float field_428; + float field_42C; + short m_aBankSlotIds[300]; + short m_aSoundTypes[300]; + short m_anVirtualChannelSoundLoopStartTimes[300]; + short m_anVirtualChannelSoundLengths[300]; + char m_nBassSet; + char __pad1__[3]; + float m_fBassEqGain; + CAEMP3BankLoader* m_pMP3BankLoader; + unsigned long m_pMP3TrackLoader; + void* m_pDirectSound; // IDirectSound8 + int m_nSpeakerConfig; + char m_n3dEffectsQueryResult; + void* m_dsCaps; // DSCAPS + char gap[92]; + void* m_pDirectSound3dListener; // IDirectSound3DListener + CAEStreamingChannel* m_pStreamingChannel; + CAEStreamThread m_streamThread; + CAEAudioChannel* m_aChannels[64]; + char field_F64[160]; + int field_1004; + int field_1008; + int field_100C; + char field_1010; + int field_1014; + +public: + int GetActiveTrackID(); +}; + +VALIDATE_SIZE(CAEAudioHardware, 0x1018); + +extern CAEAudioHardware& AEAudioHardware; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAECollisionAudioEntity.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAECollisionAudioEntity.cpp new file mode 100644 index 00000000..4e802294 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAECollisionAudioEntity.cpp @@ -0,0 +1,9 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CAECollisionAudioEntity.h" + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAECollisionAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAECollisionAudioEntity.h new file mode 100644 index 00000000..4ea857f7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAECollisionAudioEntity.h @@ -0,0 +1,32 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#pragma once +#include "PluginBase.h" +#include "CAEAudioEntity.h" + +struct tCollisionAudioEntry { + int field_0; + int field_4; + int field_8; + int field_C; + int field_10; +}; + +VALIDATE_SIZE(tCollisionAudioEntry, 0x14); + +class PLUGIN_API CAECollisionAudioEntity { +public: + CAEAudioEntity audio; + char field_7C[388]; + WORD field_200; + WORD field_202; + DWORD field_204; + tCollisionAudioEntry field_208[300]; +}; + +VALIDATE_SIZE(CAECollisionAudioEntity, 0x1978); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAECutsceneTrackManager.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAECutsceneTrackManager.cpp new file mode 100644 index 00000000..5bec109d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAECutsceneTrackManager.cpp @@ -0,0 +1,38 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CAECutsceneTrackManager.h" + +CAECutsceneTrackManager& AECutsceneTrackManager = *(CAECutsceneTrackManager*)0x8AE554; + +void CAECutsceneTrackManager::StopCutsceneTrack() { + plugin::CallMethod<0x4DBE80, CAECutsceneTrackManager*>(this); +} + +void CAECutsceneTrackManager::StartTrackPlayback() { + plugin::CallMethod<0x4DBF10, CAECutsceneTrackManager*>(this); +} + +void CAECutsceneTrackManager::Service(int time) { + plugin::CallMethod<0x4DBFB0, CAECutsceneTrackManager*, int>(this, time); +} + +void CAECutsceneTrackManager::PreloadBeatTrack(char arg1, bool arg2) { + plugin::CallMethod<0x4DC130, CAECutsceneTrackManager*, char, bool>(this, arg1, arg2); +} + +void CAECutsceneTrackManager::PlayPreloadedCutsceneTrack() { + plugin::CallMethod<0x4DBE70, CAECutsceneTrackManager*>(this); +} + +bool CAECutsceneTrackManager::IsCutsceneTrackActive() { + return plugin::CallMethodAndReturn(this); +} + +char CAECutsceneTrackManager::GetCutsceneTrackStatus() { + return plugin::CallMethodAndReturn(this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAECutsceneTrackManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAECutsceneTrackManager.h new file mode 100644 index 00000000..6e12952b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAECutsceneTrackManager.h @@ -0,0 +1,28 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#pragma once +#include "PluginBase.h" + +class PLUGIN_API CAECutsceneTrackManager { +public: + unsigned char gap0[8]; + unsigned long m_nStatus; + +public: + void StopCutsceneTrack(); + void StartTrackPlayback(); + void Service(int time); + void PreloadBeatTrack(char arg1, bool arg2); + void PlayPreloadedCutsceneTrack(); + bool IsCutsceneTrackActive(); + char GetCutsceneTrackStatus(); +}; + +VALIDATE_SIZE(CAECutsceneTrackManager, 0xC); + +extern CAECutsceneTrackManager& AECutsceneTrackManager; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEDoorAudioEntity.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAEDoorAudioEntity.cpp new file mode 100644 index 00000000..7eb7a8f6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEDoorAudioEntity.cpp @@ -0,0 +1,8 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CAEDoorAudioEntity.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEDoorAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEDoorAudioEntity.h new file mode 100644 index 00000000..46aa848d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEDoorAudioEntity.h @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#pragma once +#include "PluginBase.h" +#include "CAEAudioEntity.h" + +class PLUGIN_API CAEDoorAudioEntity { +public: + CAEAudioEntity audio; + unsigned long m_nTime; + unsigned long field_80; + unsigned long field_84; +}; + +VALIDATE_SIZE(CAEDoorAudioEntity, 0x88); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEExplosionAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEExplosionAudioEntity.h new file mode 100644 index 00000000..20b3bffd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEExplosionAudioEntity.h @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAEAudioEntity.h" + +class PLUGIN_API CAEExplosionAudioEntity : public CAEAudioEntity { +public: + char field_7C; +private: + char _pad7D[3]; +public: +}; + +VALIDATE_SIZE(CAEExplosionAudioEntity, 0x80); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEFireAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEFireAudioEntity.h new file mode 100644 index 00000000..b1d40eb3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEFireAudioEntity.h @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAEAudioEntity.h" + +class CAEFireAudioEntity : public CAEAudioEntity { +public: + CAESound *field_7C; + CAESound *field_80; + class FxSystem_c *field_84; +}; + +VALIDATE_SIZE(CAEFireAudioEntity, 0x88); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEFrontendAudioEntity.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAEFrontendAudioEntity.cpp new file mode 100644 index 00000000..20e45062 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEFrontendAudioEntity.cpp @@ -0,0 +1,8 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CAEFrontendAudioEntity.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEFrontendAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEFrontendAudioEntity.h new file mode 100644 index 00000000..503a175f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEFrontendAudioEntity.h @@ -0,0 +1,28 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#pragma once +#include "PluginBase.h" +#include "CAEAudioEntity.h" + +class PLUGIN_API CAEFrontendAudioEntity { +public: + CAEAudioEntity audio; + unsigned char byte7C; + unsigned char byte7D; + unsigned char f7E[2]; + unsigned short m_nNumBulletSounds; + unsigned short bankId; + unsigned long m_dwLastFrameGeneral; + unsigned long m_dwLastFrameMissionComplete; + unsigned long m_dwLastFrameBulletPass; + unsigned long m_dwLastTimeCarRespray; + unsigned long dword94; + unsigned long dword98; +}; + +VALIDATE_SIZE(CAEFrontendAudioEntity, 0x9C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEMP3BankLoader.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAEMP3BankLoader.cpp new file mode 100644 index 00000000..02b3de5f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEMP3BankLoader.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAEMP3BankLoader.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEMP3BankLoader.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEMP3BankLoader.h new file mode 100644 index 00000000..010248d1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEMP3BankLoader.h @@ -0,0 +1,89 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +class PLUGIN_API CBankHeader { +public: + short m_nOffset; + short field_2; + int field_4; + int m_nSoundHeadroom; +}; + +VALIDATE_SIZE(CBankHeader, 0xC); + +class PLUGIN_API CBankSlotInfo { +public: + int m_nOffset; + int m_nLength; + int field_8; + int field_C; + short m_nBankId; + short m_nNumSoundInfo; + CBankHeader m_aSoundsHeader[400]; +}; + +VALIDATE_SIZE(CBankSlotInfo, 0x12D4); + +class PLUGIN_API CBankLkup { +public: + char m_nPakFileNumber; + char __pad0[3]; + int m_nOffset; + int m_nLength; +}; + +VALIDATE_SIZE(CBankLkup, 0xC); + +class PLUGIN_API CBankSlotsInfos { +public: + CBankSlotInfo m_aInfos[45]; +}; + +VALIDATE_SIZE(CBankSlotsInfos, 0x34F44); + +class PLUGIN_API CBankSlotBankAssignment { +public: + CBankSlotsInfos* m_pBankSlotInfo; + int m_nBankOffset; + int m_nBankLength; + int m_pStreamOffset; + int m_pStreamBuffer; + int m_dwState; + short m_nBankId; + short m_nBankSlotId; + short m_nNumSounds; + char m_nPakFileNumber; + char __pad; +}; + +VALIDATE_SIZE(CBankSlotBankAssignment, 0x20); + +class PLUGIN_API CAEMP3BankLoader { +public: + CBankSlotInfo* m_pBankSlotsInfos; + CBankLkup* m_pBankLkups; + void* m_pPakFileName; + short m_nNumBankSlotsInfos; + short m_nNumBankLkup; + short m_nNumPakFiles; + short __pad1; + unsigned char m_bAudioFileInfoInitialized; + char __pad2[3]; + int m_nBankSlotsSize; + int m_pBankSlots; + int* m_pPakFilesStreamHandles; + CBankSlotBankAssignment m_aBankSlotBankAssignment[50]; + short field_664; + short field_666; + short m_nNumBanksAssigned; + unsigned short m_nStreamNum; + short m_nCurrentSfxInBankSlot[60]; +}; + +VALIDATE_SIZE(CAEMP3BankLoader, 0x6E4); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEPedAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEPedAudioEntity.h new file mode 100644 index 00000000..eb00d35d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEPedAudioEntity.h @@ -0,0 +1,37 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAEAudioEntity.h" +#include "CAESound.h" +#include "CAETwinLoopSoundEntity.h" + +class CPed; + +class PLUGIN_API CAEPedAudioEntity : public CAEAudioEntity { +public: + char field_7C; + char field_7D; + short field_7E; + int field_80; + float field_84; + float field_88; + char field_8C[8]; + CPed *m_pPed; + char field_98; + char field_99[3]; + CAESound *field_9C; + int field_A0; + CAESound *field_A4; + CAETwinLoopSoundEntity TwinLoopSoundEntity; + CAESound *field_150; + float field_154; + float field_158; +}; + +VALIDATE_SIZE(CAEPedAudioEntity, 0x15C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEPedSpeechAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEPedSpeechAudioEntity.h new file mode 100644 index 00000000..00da348b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEPedSpeechAudioEntity.h @@ -0,0 +1,50 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAEAudioEntity.h" +#include "CAESound.h" + +enum eAudioPedType { + PED_TYPE_GEN = 0, + PED_TYPE_EMG = 1, + PED_TYPE_PLAYER = 2, + PED_TYPE_GANG = 3, + PED_TYPE_GFD = 4, + PED_TYPE_SPC = 5 +}; + + +class CAEPedSpeechAudioEntity : public CAEAudioEntity { +public: + char field_7C[20]; + char field_90; + char field_91; + short m_nVoiceType; // see eAudioPedType + short m_nVoiceID; + short m_nVoiceGender; + char field_98; + bool m_bEnableVocalType; + bool m_bMuted; + char m_nVocalEnableFlag; + char field_9C; + char field_9D; + char field_9E; + char field_9F; + CAESound *m_pSound; + short field_A4; + short field_A6; + short field_A8; + short field_AA; + float m_fVoiceVolume; + short m_nCurrentPhraseId; + short field_B2; + int field_B4[19]; +}; + +VALIDATE_SIZE(CAEPedSpeechAudioEntity, 0x100); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEPedlessSpeechAudioEntity.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAEPedlessSpeechAudioEntity.cpp new file mode 100644 index 00000000..36fc3d02 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEPedlessSpeechAudioEntity.cpp @@ -0,0 +1,8 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CAEPedSpeechAudioEntity.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEPedlessSpeechAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEPedlessSpeechAudioEntity.h new file mode 100644 index 00000000..9a21b283 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEPedlessSpeechAudioEntity.h @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#pragma once +#include "PluginBase.h" +#include "CAEPedSpeechAudioEntity.h" + +class PLUGIN_API CAEPedlessSpeechAudioEntity { +public: + CAEPedSpeechAudioEntity pedSpeech; +}; + +VALIDATE_SIZE(CAEPedlessSpeechAudioEntity, 0x100); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEPoliceScannerAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEPoliceScannerAudioEntity.h new file mode 100644 index 00000000..b66b0901 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEPoliceScannerAudioEntity.h @@ -0,0 +1,16 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAEAudioEntity.h" + +class PLUGIN_API CAEPoliceScannerAudioEntity : public CAEAudioEntity { +public: +}; + +VALIDATE_SIZE(CAEPoliceScannerAudioEntity, 0x7C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAERadioTrackManager.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAERadioTrackManager.cpp new file mode 100644 index 00000000..983090a9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAERadioTrackManager.cpp @@ -0,0 +1,29 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAERadioTrackManager.h" + +CAERadioTrackManager &AERadioTrackManager = *(CAERadioTrackManager*)0x8CB6F8; + +bool CAERadioTrackManager::IsVehicleRadioActive() +{ + return ((bool (__thiscall *)(CAERadioTrackManager *))0x4E9800)(this); +} + +char *CAERadioTrackManager::GetRadioStationName(signed char id) +{ + return ((char *(__thiscall *)(CAERadioTrackManager *, signed char))0x4E9E10)(this, id); +} + +void CAERadioTrackManager::StartRadio(int stationId, float bass, int arg, char unused) { + plugin::CallMethod<0x4EB3C0, CAERadioTrackManager*, int, float, int, char>(this, stationId, bass, arg, unused); +} + +void CAERadioTrackManager::StopRadio(tVehicleAudioSettings* settings, char arg) { + plugin::CallMethod<0x4E9820, CAERadioTrackManager*, tVehicleAudioSettings*, char>(this, settings, arg); +} + +tMusicTrackHistory *CAERadioTrackManager::m_nMusicTrackIndexHistory = (tMusicTrackHistory *)0xB62B40; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAERadioTrackManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAERadioTrackManager.h new file mode 100644 index 00000000..a64598c9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAERadioTrackManager.h @@ -0,0 +1,104 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAEVehicleAudioEntity.h" + +struct PLUGIN_API tRadioSettings { + int m_djIndex[4]; + int field_10; + int trackId; + int field_18; + int trackPlayTime; + int trackLength; + char field_24; + char m_nCurrentRadioStation; + char m_nBassSet; + char _pad; + float m_fBassGain; + char currRadioBC_[4]; + char field_30; + char field_31; + char m_musicTrackIndices[10]; +}; + +VALIDATE_SIZE(tRadioSettings, 0x3C); + +struct PLUGIN_API tRadioStationData { + int field_0; + int field_4; + int field_8; + int m_nTimeRetuneStopped; + int lastPlayingTime; + int trackPlayTime; + int field_18; + int field_1C; + int field_20; + char field_24; + char field_25; + char field_26; + char lastGameClockDays; + int lastGameClockHours; +}; + +VALIDATE_SIZE(tRadioStationData, 0x2C); + +struct PLUGIN_API tMusicTrackHistory { + char m_indices[20]; +}; + +class PLUGIN_API CAERadioTrackManager { +public: + unsigned char field_0; + unsigned char field_1; + unsigned char field_2; + unsigned char field_3; + unsigned char field_4; + unsigned char field_5; + bool m_bRetuneJustStarted; + bool m_bRadioAutoSelect; + char field_8[14]; + unsigned char m_nMonthDay; + unsigned char m_nClockHours; + int m_anPlayerStats[14]; + unsigned int m_nTimeRadioStationRetuned; + unsigned int m_nTimeToDisplayRadioName; + int field_58; + int field_5C; + int field_60; + int field_64; + int field_68; + int m_nStationsListed; + int m_nStationsListDown; + unsigned long field_74; + unsigned long field_78; + unsigned long field_7C; + unsigned long field_80; + unsigned long field_84; + tRadioSettings m_TempSettings; + tRadioSettings m_Settings; + tRadioStationData m_RadioStationsData[13]; + unsigned char gap33C[12]; + char field_348[32]; + unsigned long field_368; + unsigned char field_36C; + char field_36D[3]; + +public: + bool IsVehicleRadioActive(); + char *GetRadioStationName(signed char id); + void StartRadio(int stationId, float bass, int arg, char unused); + void StopRadio(tVehicleAudioSettings* settings, char arg); + + // 11 structures + static tMusicTrackHistory *m_nMusicTrackIndexHistory; +}; + +extern CAERadioTrackManager &AERadioTrackManager; + +VALIDATE_SIZE(CAERadioTrackManager, 0x370); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEScriptAudioEntity.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAEScriptAudioEntity.cpp new file mode 100644 index 00000000..99054b52 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEScriptAudioEntity.cpp @@ -0,0 +1,8 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CAEScriptAudioEntity.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEScriptAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEScriptAudioEntity.h new file mode 100644 index 00000000..543ebf18 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEScriptAudioEntity.h @@ -0,0 +1,31 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#pragma once +#include "PluginBase.h" +#include "CAEAudioEntity.h" +#include "CAudioLink.h" +#include "CAEDoorAudioEntity.h" +#include "CAEExplosionAudioEntity.h" + +class PLUGIN_API CAEScriptAudioEntity { +public: + CAEAudioEntity audio; + char field_7C; + char field_7D; + char field_7E; + int m_dwLastTimeHornPlayed; + int field_84; + float field_88; + float field_8C; + CAudioLink wavLinks[4]; + int field_110; + CAEDoorAudioEntity field_114; + CAEExplosionAudioEntity m_explosionAudio; +}; + +VALIDATE_SIZE(CAEScriptAudioEntity, 0x21C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAESound.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAESound.cpp new file mode 100644 index 00000000..7cc4ed86 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAESound.cpp @@ -0,0 +1,188 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAESound.h" + +CAESound::CAESound() +{ + +} + +CAESound::CAESound(CAESound& sound) +{ + ((void (__thiscall *)(CAESound *, CAESound&))0x4EF0A0)(this, sound); +} + +CAESound::CAESound(short bankSlotId, short sfxId, CAEAudioEntity *baseAudio, CVector posn, + float volume, float maxDistance, float speed, float timeScale, unsigned char arg9, + unsigned short environmentFlags, float arg11) +{ + ((void (__thiscall *)(CAESound *, short, short, CAEAudioEntity *, CVector, float, float, float, + float, unsigned char, unsigned short, float))0x4EFD80)(this, bankSlotId, sfxId, baseAudio, + posn, volume, maxDistance, speed, timeScale, arg9, environmentFlags, arg11); +} + +CAESound::~CAESound() +{ + ((void (__thiscall *)(CAESound *))0x4EF660)(this); +} + +void CAESound::operator=(CAESound& sound) +{ + ((void (__thiscall *)(CAESound *, CAESound&))0x4EF680)(this, sound); +} + +void CAESound::UnregisterWithPhysicalEntity() +{ + ((void (__thiscall *)(CAESound *))0x4EF1A0)(this); +} + +void CAESound::StopSound() +{ + ((void (__thiscall *)(CAESound *))0x4EF1C0)(this); +} + +bool CAESound::GetUncancellable() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF1E0)(this); +} + +bool CAESound::GetFrontEnd() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF1F0)(this); +} + +bool CAESound::GetRequestUpdates() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF200)(this); +} + +bool CAESound::GetUnpausable() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF210)(this); +} + +bool CAESound::GetPlayPhysically() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF220)(this); +} + +bool CAESound::GetStartPercentage() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF230)(this); +} + +bool CAESound::GetMusicMastered() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF240)(this); +} + +bool CAESound::GetLifespanTiedToPhysicalEntity() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF250)(this); +} + +bool CAESound::GetUnduckable() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF260)(this); +} + +bool CAESound::GetUncompressable() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF270)(this); +} + +bool CAESound::GetRolledOff() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF280)(this); +} + +bool CAESound::GetSmoothDucking() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF290)(this); +} + +bool CAESound::GetForcedFront() +{ + return ((bool (__thiscall *)(CAESound *))0x4EF2A0)(this); +} + +void CAESound::SetIndividualEnvironment(unsigned short environment, unsigned short state) +{ + ((void (__thiscall *)(CAESound *, unsigned short, unsigned short))0x4EF2B0)(this, environment, + state); +} + +void CAESound::UpdatePlayTime(short arg1, short arg2, short arg3) +{ + ((void (__thiscall *)(CAESound *, short, short, short))0x4EF2E0)(this, arg1, arg2, arg3); +} + +void CAESound::GetRelativePosition(CVector *outPosn) +{ + ((void (__thiscall *)(CAESound *, CVector *))0x4EF350)(this, outPosn); +} + +void CAESound::CalculateFrequency() +{ + ((void (__thiscall *)(CAESound *))0x4EF390)(this); +} + +void CAESound::UpdateFrequency() +{ + ((void (__thiscall *)(CAESound *))0x4EF3E0)(this); +} + +float CAESound::GetRelativePlaybackFrequencyWithDoppler() +{ + return ((float (__thiscall *)(CAESound *))0x4EF400)(this); +} + +float CAESound::GetSlowMoFrequencyScalingFactor() +{ + return ((float (__thiscall *)(CAESound *))0x4EF440)(this); +} + +void CAESound::NewVPSLentry() +{ + ((void (__thiscall *)(CAESound *))0x4EF7A0)(this); +} + +void CAESound::RegisterWithPhysicalEntity(CEntity *entity) +{ + ((void (__thiscall *)(CAESound *, CEntity *))0x4EF820)(this, entity); +} + +void CAESound::StopSoundAndForget() +{ + ((void (__thiscall *)(CAESound *))0x4EF850)(this); +} + +void CAESound::SetPosition(CVector posn) +{ + ((void (__thiscall *)(CAESound *, CVector))0x4EF880)(this, posn); +} + +void CAESound::CalculateVolume() +{ + ((void (__thiscall *)(CAESound *))0x4EFA10)(this); +} + +void CAESound::Initialise(short bankSlotId, short sfxId, CAEAudioEntity *baseAudio, CVector posn, + float volume, float maxDistance, float speed, float timeScale, + unsigned char arg9, unsigned short environmentFlags, float arg11, + short currPlayPosn) +{ + ((void (__thiscall *)(CAESound *, short, short, CAEAudioEntity *, CVector, float, float, float, + float, unsigned char, unsigned short, float, short))0x4EFE50)(this, bankSlotId, sfxId, + baseAudio, posn, volume, maxDistance, speed, timeScale, arg9, environmentFlags, arg11, + currPlayPosn); +} + +void CAESound::UpdateParameters(short arg1) +{ + ((void (__thiscall *)(CAESound *, short))0x4EFF50)(this, arg1); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAESound.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAESound.h new file mode 100644 index 00000000..567e031a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAESound.h @@ -0,0 +1,120 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +enum PLUGIN_API eSoundEnvironment : unsigned short { + SOUND_FRONT_END = 1, + SOUND_UNCANCELLABLE = 2, + SOUND_REQUEST_UPDATES = 4, + SOUND_PLAY_PHYSICALLY = 8, + SOUND_UNPAUSABLE = 16, + SOUND_START_PERCENTAGE = 32, + SOUND_MUSIC_MASTERED = 64, + SOUND_LIFESPAN_TIED_TO_PHYSICAL_ENTITY = 128, + SOUND_UNDUCKABLE = 256, + SOUND_UNCOMPRESSABLE = 512, + SOUND_ROLLED_OFF = 1024, + SOUND_SMOOTH_DUCKING = 2048, + SOUND_FORCED_FRONT = 4096 +}; + +class PLUGIN_API CAESound { +public: + short m_nBankSlotId; + short m_nSoundIdInSlot; + class CAEAudioEntity *m_pBaseAudio; + class CEntity *m_pPhysicalEntity; + unsigned int m_nEvent; + float m_fMaxVolume; + float m_fVolume; + float m_fSoundDistance; + float m_fSpeed; + float field_20; + CVector m_vecCurrPosn; + CVector m_vecPrevPosn; + int m_nLastFrameUpdate; + int m_nCurrTimeUpdate; + int m_nPrevTimeUpdate; + float m_fCurrCamDist; + float m_fPrevCamDist; + float m_fTimeScale; + char field_54; + char field_55; + union { + unsigned short m_nEnvironmentFlags; + struct { + unsigned short m_bFrontEnd : 1; + unsigned short m_bUncancellable : 1; + unsigned short m_bRequestUpdates : 1; + unsigned short m_bPlayPhysically : 1; + unsigned short m_bUnpausable : 1; + unsigned short m_bStartPercentage : 1; + unsigned short m_bMusicMastered : 1; + unsigned short m_bLifespanTiedToPhysicalEntity : 1; + unsigned short m_bUndackable : 1; + unsigned short m_bUncompressable : 1; + unsigned short m_bRolledOff : 1; + unsigned short m_bSmoothDucking : 1; + unsigned short m_bForcedFront : 1; + }; + }; + unsigned short m_nIsUsed; + short field_5A; + short m_nCurrentPlayPosition; + short field_5E; + float m_fFinalVolume; + float m_fFrequency; + short m_nPlayingState; + char field_6A[2]; + float m_fSoundHeadRoom; + short m_nSoundLength; + short field_72; + + CAESound(); + CAESound(CAESound& sound); + CAESound(short bankSlotId, short sfxId, CAEAudioEntity *baseAudio, CVector posn, float volume, + float maxDistance, float speed, float timeScale, unsigned char arg9, + unsigned short environmentFlags, float arg11); + ~CAESound(); + void operator=(CAESound& sound); + void UnregisterWithPhysicalEntity(); + void StopSound(); + bool GetUncancellable(); + bool GetFrontEnd(); + bool GetRequestUpdates(); + bool GetUnpausable(); + bool GetPlayPhysically(); + bool GetStartPercentage(); + bool GetMusicMastered(); + bool GetLifespanTiedToPhysicalEntity(); + bool GetUnduckable(); + bool GetUncompressable(); + bool GetRolledOff(); + bool GetSmoothDucking(); + bool GetForcedFront(); + void SetIndividualEnvironment(unsigned short environment, unsigned short state); + void UpdatePlayTime(short arg1, short arg2, short arg3); + void GetRelativePosition(CVector *outPosn); + void CalculateFrequency(); + void UpdateFrequency(); + float GetRelativePlaybackFrequencyWithDoppler(); + float GetSlowMoFrequencyScalingFactor(); + void NewVPSLentry(); + void RegisterWithPhysicalEntity(CEntity *entity); + void StopSoundAndForget(); + void SetPosition(CVector posn); + void CalculateVolume(); + void Initialise(short bankSlotId, short sfxId, CAEAudioEntity *baseAudio, CVector posn, + float volume, float maxDistance, float speed, float timeScale, unsigned char arg9, + unsigned short environmentFlags, float arg11, short currPlayPosn); + void UpdateParameters(short arg1); +}; + +VALIDATE_SIZE(CAESound, 0x74); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEStreamThread.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAEStreamThread.cpp new file mode 100644 index 00000000..5a31e4e8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEStreamThread.cpp @@ -0,0 +1,15 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAEStreamThread.h" + +bool CAEStreamThread::Initialise(void* channel) { + return plugin::CallMethodAndReturn(this); +} + +int CAEStreamThread::GetActiveTrackID() { + return plugin::CallMethodAndReturn(this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEStreamThread.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEStreamThread.h new file mode 100644 index 00000000..f69a70bc --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEStreamThread.h @@ -0,0 +1,43 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +class PLUGIN_API CAEStreamThread { +public: + void* hHandle; + int field_4; + void* m_pStreamingChannel; + int m_pMp3TrackLoader; + char m_bActive; + char field_11; + unsigned char field_12; + unsigned char field_13; + unsigned char field_14; + char field_15; + char m_bTrackStopped; + char field_17; + int field_18; + unsigned long field_1C; + unsigned long field_20; + unsigned char field_24; + char field_25; + char field_26; + char field_27; + int field_28; + int m_nTrackLenghtMs; + int m_nActiveTrackID; + int m_nPlayingTrackID; + RTL_CRITICAL_SECTION m_criticalSection; + +public: + bool Initialise(void* channel); + int GetActiveTrackID(); + +}; + +VALIDATE_SIZE(CAEStreamThread, 0x50); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEStreamingChannel.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAEStreamingChannel.cpp new file mode 100644 index 00000000..d07fc564 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEStreamingChannel.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAEStreamingChannel.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEStreamingChannel.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEStreamingChannel.h new file mode 100644 index 00000000..0c488a99 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEStreamingChannel.h @@ -0,0 +1,36 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CAEAudioChannel.h" + +class PLUGIN_API CAEStreamingChannel { +public: + CAEAudioChannel base; + unsigned char field_60; + unsigned char field_61; + unsigned char field_62; + unsigned char field_63; + unsigned char field_64; + unsigned char m_bFxEnabled; + unsigned char field_66; + unsigned char field_67; + unsigned long field_68; + unsigned char field_6C[393216]; + unsigned long field_6006C; + unsigned long m_pStreamingDecoder; + unsigned long field_60074; + unsigned long field_60078; + unsigned char field_6007C[8]; + unsigned long field_60084; + int field_60088; + int field_6008C; + void* m_pSoundBuffer; // IDirectSoundBuffer + unsigned long field_60094; +}; + +VALIDATE_SIZE(CAEStreamingChannel, 0x60098); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAETwinLoopSoundEntity.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAETwinLoopSoundEntity.cpp new file mode 100644 index 00000000..3d7eef4a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAETwinLoopSoundEntity.cpp @@ -0,0 +1,8 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CAETwinLoopSoundEntity.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAETwinLoopSoundEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAETwinLoopSoundEntity.h new file mode 100644 index 00000000..037cdaff --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAETwinLoopSoundEntity.h @@ -0,0 +1,48 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +/* This class is used to control 2 sounds as one. There are 2 sounds + created with PlayTwinLoopSound(), and one of them is playing when second + is simply muted. When time m_dwTimeToSwapSounds is reached, these sounds + are switched: second starts playing, first begins being muted. + The time m_dwTimeToSwapSounds is calcualated as: + CAEAudioUtility::GetRandomNumberInRange(m_wPlayTimeMin, m_wPlayTimeMax); + Notice these sounds must be situated in same bank slot. + m_pBaseAudio is a pointer to audio which created twin sound. For example, + this could be CAEVehicleAudioEntity for playing skid sounds. */ + +#include "PluginBase.h" +#include "CAEAudioEntity.h" + +class PLUGIN_API CAETwinLoopSoundEntity : public CAEAudioEntity { +public: + short m_nBankSlotId; + short m_nSoundType[2]; +private: + char _pad1[2]; +public: + CAEAudioEntity *m_pBaseAudio; + short field_88; + short field_8A; + short field_8C; + short m_nPlayTimeMin; + short m_nPlayTimeMax; +private: + char _pad2[2]; +public: + unsigned int m_nTimeToSwapSounds; + bool m_bPlayingFirstSound; +private: + char _pad3; +public: + short m_anStartingPlayPercentage[2]; // 0 - 99 percentage + short field_9E; + CAESound *m_apSounds[2]; +}; + +VALIDATE_SIZE(CAETwinLoopSoundEntity, 0xA8); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEVehicleAudioEntity.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAEVehicleAudioEntity.cpp new file mode 100644 index 00000000..dafe999a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEVehicleAudioEntity.cpp @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAEVehicleAudioEntity.h" + +PLUGIN_SOURCE_FILE + +CPed *&CAEVehicleAudioEntity::s_pPlayerAttachedForRadio = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB6B98C, 0, 0, 0, 0, 0)); +CPed *&CAEVehicleAudioEntity::s_pPlayerDriver = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB6B990, 0, 0, 0, 0, 0)); +bool &CAEVehicleAudioEntity::s_HelicoptorsDisabled = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB6B994, 0, 0, 0, 0, 0)); +short &CAEVehicleAudioEntity::s_NextDummyEngineSlot = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB6B998, 0, 0, 0, 0, 0)); +tVehicleAudioSettings *&CAEVehicleAudioEntity::s_pVehicleAudioSettingsForRadio = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB6B99C, 0, 0, 0, 0, 0)); +tEngineDummySlot(&CAEVehicleAudioEntity::s_DummyEngineSlots)[10] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB6B9A0, 0, 0, 0, 0, 0)); +tVehicleAudioSettings const(&gVehicleAudioSettings)[232] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x860AF0, 0, 0, 0, 0, 0)); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEVehicleAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEVehicleAudioEntity.h new file mode 100644 index 00000000..6a35ef06 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEVehicleAudioEntity.h @@ -0,0 +1,189 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAEAudioEntity.h" +#include "cTransmission.h" +#include "CAETwinLoopSoundEntity.h" +#include "eRadioID.h" + +enum eVehicleSoundType : char +{ + VEHICLE_SOUND_CAR = 0x0, + VEHICLE_SOUND_MOTORCYCLE = 0x1, + VEHICLE_SOUND_BICYCLE = 0x2, + VEHICLE_SOUND_BOAT = 0x3, + VEHICLE_SOUND_HELI = 0x4, + VEHICLE_SOUND_PLANE = 0x5, + VEHICLE_SOUND_NON_VEH = 0x6, + VEHICLE_SOUND_USED_BY_NONE_VEH = 0x7, + VEHICLE_SOUND_TRAIN = 0x8, + VEHICLE_SOUND_TRAILER = 0x9, + VEHICLE_SOUND_SPECIAL = 0xA, +}; + +enum eRadioType : char +{ + RADIO_CIVILIAN = 0x0, + RADIO_SPECIAL = 0x1, + RADIO_UNKNOWN = 0x2, + RADIO_EMERGENCY = 0x3, + RADIO_DISABLED = -1, +}; + +struct PLUGIN_API tEngineDummySlot { + short m_nBankId; + short m_nUsageCount; +}; + +class PLUGIN_API cVehicleParams { +public: + unsigned int m_nVehicleSubclass; + unsigned int m_nVehicleClass; + char field_8; + char pad1[3]; + int field_C; + class CVehicle *m_pVehicle; + cTransmission *m_pTransmission; + unsigned int m_nModelType; + float m_fVelocity; + short m_nGasState; + short m_nBreakState; + float m_fVelocityAbsolute; + float m_fZVelocity; + float m_fVelocityPercentage; + int field_30; + float field_34; + char m_nCurrentGear; + bool m_bHandbrakeOn; + char pad2[2]; + float m_fVelocityChangingPercentage; + float m_fWheelSpinForAudio; + unsigned short m_nNumberOfGears; + unsigned char m_nWheelsOnGround; + char field_47; + int field_48; +}; + +VALIDATE_SIZE(cVehicleParams, 0x4C); + +struct PLUGIN_API tVehicleSound { + unsigned int m_nIndex; + CAESound *m_pSound; +}; + +VALIDATE_SIZE(tVehicleSound, 0x8); + +struct PLUGIN_API tVehicleAudioSettings { + eVehicleSoundType m_nVehicleSoundType; + char _pad; + short m_nEngineOnSoundBankId; + short m_nEngineOffSoundBankId; + char m_nBassSetting; // m_nStereo + char _pad1; + float m_fBassEq; + float field_C; + char m_bHornTon; // sfx id + char _pad2[3]; + float m_fHornHigh; + char m_nDoorSound; + char field_19; + eRadioID m_nRadioID; + eRadioType m_nRadioType; + char vehTypeForAudio; + char _pad4[3]; + float m_fHornVolumeDelta; +}; + +VALIDATE_SIZE(tVehicleAudioSettings, 0x24); + +class CPed; + +class PLUGIN_API CAEVehicleAudioEntity : public CAEAudioEntity { +public: + short field_7C; + char field_7E[2]; + tVehicleAudioSettings m_settings; + bool m_bEnabled; + bool m_bPlayerDriver; + bool m_bPlayerPassenger; + bool m_bVehicleRadioPaused; + bool m_bSoundsStopped; + char m_nEngineState; + char field_AA; + char field_AB; + int field_AC; + bool m_bInhibitAccForLowSpeed; + char field_B1; + short m_nRainDropCounter; + short field_B4; + char gap_B6[2]; + int field_B8; + char field_BC; + bool m_bDisableHeliEngineSounds; + char field_BE; + bool m_bSirenOrAlarmPlaying; + bool m_bHornPlaying; + char gap_C1[3]; + float m_fSirenVolume; + bool m_bModelWithSiren; + char gap_C9[3]; + unsigned int m_nBoatHitWaveLastPlayedTime; + unsigned int m_nTimeToInhibitAcc; + unsigned int m_nTimeToInhibitCrz; + float m_fGeneralVehicleSoundVolume; + short m_nEngineDecelerateSoundBankId; + short m_nEngineAccelerateSoundBankId; + short m_nEngineBankSlotId; + short field_E2; + tVehicleSound m_aEngineSounds[12]; + int field_144; + short field_148; + short field_14A; + short field_14C; + short field_14E; + int field_150; + short field_154; + short m_nSkidSoundType; + CAESound *field_158; + short m_nRoadNoiseSoundType; + char gap_15E[2]; + CAESound *m_pRoadNoiseSound; + short m_nFlatTyreSoundType; + char gap_166[2]; + CAESound *m_pFlatTyreSound; + short m_nReverseGearSoundType; + char gap_16E[2]; + CAESound *m_pReverseGearSound; + char gap_174[4]; + CAESound *m_pHornTonSound; + CAESound *m_pSirenSound; + CAESound *m_pPoliceSirenSound; + CAETwinLoopSoundEntity m_skidSound; + float field_22C; + float field_230; + float field_234; + float field_238; + float field_23C; + int field_240; + bool m_bNitroSoundPresent; + char field_245[3]; + float field_248; + + SUPPORTED_10US static CPed *&s_pPlayerAttachedForRadio; + SUPPORTED_10US static CPed *&s_pPlayerDriver; + SUPPORTED_10US static bool &s_HelicoptorsDisabled; + SUPPORTED_10US static short &s_NextDummyEngineSlot; + SUPPORTED_10US static tVehicleAudioSettings *&s_pVehicleAudioSettingsForRadio; + SUPPORTED_10US static tEngineDummySlot(&s_DummyEngineSlots)[10]; // static tEngineDummySlot s_DummyEngineSlots[10] +}; + +VALIDATE_SIZE(CAEVehicleAudioEntity, 0x24C); + +// indexes = (Vehicles modelid - 400) +SUPPORTED_10US extern tVehicleAudioSettings const(&gVehicleAudioSettings)[232]; // tVehicleAudioSettings gVehicleAudioSettings[232] diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEWeaponAudioEntity.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAEWeaponAudioEntity.cpp new file mode 100644 index 00000000..877d5a33 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEWeaponAudioEntity.cpp @@ -0,0 +1,97 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CAEWeaponAudioEntity.h" + +// Converted from thiscall void CAEWeaponAudioEntity::CAEWeaponAudioEntity(void) 0x507560 +CAEWeaponAudioEntity::CAEWeaponAudioEntity() { + plugin::CallMethod<0x507560, CAEWeaponAudioEntity *>(this); +} + +// Converted from thiscall void CAEWeaponAudioEntity::WeaponReload(eWeaponType weaptype,CPhysical *entity,int AudioEventId) 0x503690 +void CAEWeaponAudioEntity::WeaponReload(eWeaponType weaptype, CPhysical* entity, int AudioEventId) { + plugin::CallMethod<0x503690, CAEWeaponAudioEntity *, eWeaponType, CPhysical*, int>(this, weaptype, entity, AudioEventId); +} + +// Converted from thiscall void CAEWeaponAudioEntity::WeaponFire(eWeaponType weaptype,CPhysical *entity,int AudioEventId) 0x504F80 +void CAEWeaponAudioEntity::WeaponFire(eWeaponType weaptype, CPhysical* entity, int AudioEventId) { + plugin::CallMethod<0x504F80, CAEWeaponAudioEntity *, eWeaponType, CPhysical*, int>(this, weaptype, entity, AudioEventId); +} + +// Converted from thiscall void CAEWeaponAudioEntity::Terminate(void) 0x503480 +void CAEWeaponAudioEntity::Terminate() { + plugin::CallMethod<0x503480, CAEWeaponAudioEntity *>(this); +} + +// Converted from thiscall void CAEWeaponAudioEntity::StopFlameThrowerIdleGasLoop(void) 0x5034E0 +void CAEWeaponAudioEntity::StopFlameThrowerIdleGasLoop() { + plugin::CallMethod<0x5034E0, CAEWeaponAudioEntity *>(this); +} + +// Converted from thiscall void CAEWeaponAudioEntity::Reset(void) 0x503490 +void CAEWeaponAudioEntity::Reset() { + plugin::CallMethod<0x503490, CAEWeaponAudioEntity *>(this); +} + +// Converted from thiscall void CAEWeaponAudioEntity::ReportStealthKill(eWeaponType weaptype,CPhysical *entity,int AudioEventId) 0x503B20 +void CAEWeaponAudioEntity::ReportStealthKill(eWeaponType weaptype, CPhysical* entity, int AudioEventId) { + plugin::CallMethod<0x503B20, CAEWeaponAudioEntity *, eWeaponType, CPhysical*, int>(this, weaptype, entity, AudioEventId); +} + +// Converted from thiscall void CAEWeaponAudioEntity::ReportChainsawEvent(CPhysical *entity,int AudioEventId) 0x503910 +void CAEWeaponAudioEntity::ReportChainsawEvent(CPhysical* entity, int AudioEventId) { + plugin::CallMethod<0x503910, CAEWeaponAudioEntity *, CPhysical*, int>(this, entity, AudioEventId); +} + +// Converted from thiscall void CAEWeaponAudioEntity::PlayWeaponLoopSound(CPhysical *,short sfxId,int AudioEventId,float audability,float speed,int finalEvent) 0x504610 +void CAEWeaponAudioEntity::PlayWeaponLoopSound(CPhysical* arg0, short sfxId, int AudioEventId, float audability, float speed, int finalEvent) { + plugin::CallMethod<0x504610, CAEWeaponAudioEntity *, CPhysical*, short, int, float, float, int>(this, arg0, sfxId, AudioEventId, audability, speed, finalEvent); +} + +// Converted from thiscall void CAEWeaponAudioEntity::PlayMiniGunStopSound(CPhysical *entity) 0x504960 +void CAEWeaponAudioEntity::PlayMiniGunStopSound(CPhysical* entity) { + plugin::CallMethod<0x504960, CAEWeaponAudioEntity *, CPhysical*>(this, entity); +} + +// Converted from thiscall void CAEWeaponAudioEntity::PlayMiniGunFireSounds(CPhysical *entity,int AudioEventId) 0x5047C0 +void CAEWeaponAudioEntity::PlayMiniGunFireSounds(CPhysical* entity, int AudioEventId) { + plugin::CallMethod<0x5047C0, CAEWeaponAudioEntity *, CPhysical*, int>(this, entity, AudioEventId); +} + +// Converted from thiscall void CAEWeaponAudioEntity::PlayGunSounds(CPhysical *entity,short emptySfxId,short farSfxId2,short highPitchSfxId3,short lowPitchSfxId4,short echoSfxId5,int nAudioEventId,float volumeChange,float speed1,float speed2) 0x503CE0 +void CAEWeaponAudioEntity::PlayGunSounds(CPhysical* entity, short emptySfxId, short farSfxId2, short highPitchSfxId3, short lowPitchSfxId4, short echoSfxId5, int nAudioEventId, float volumeChange, float speed1, float speed2) { + plugin::CallMethod<0x503CE0, CAEWeaponAudioEntity *, CPhysical*, short, short, short, short, short, int, float, float, float>(this, entity, emptySfxId, farSfxId2, highPitchSfxId3, lowPitchSfxId4, echoSfxId5, nAudioEventId, volumeChange, speed1, speed2); +} + +// Converted from thiscall void CAEWeaponAudioEntity::PlayGoggleSound(short sfxId,int AudioEventId) 0x503500 +void CAEWeaponAudioEntity::PlayGoggleSound(short sfxId, int AudioEventId) { + plugin::CallMethod<0x503500, CAEWeaponAudioEntity *, short, int>(this, sfxId, AudioEventId); +} + +// Converted from thiscall void CAEWeaponAudioEntity::PlayFlameThrowerSounds(CPhysical *entity,short sfx1,short sfx2,int AudioEventId,float audability,float speed) 0x504470 +void CAEWeaponAudioEntity::PlayFlameThrowerSounds(CPhysical* entity, short sfx1, short sfx2, int AudioEventId, float audability, float speed) { + plugin::CallMethod<0x504470, CAEWeaponAudioEntity *, CPhysical*, short, short, int, float, float>(this, entity, sfx1, sfx2, AudioEventId, audability, speed); +} + +// Converted from thiscall void CAEWeaponAudioEntity::PlayFlameThrowerIdleGasLoop(CPhysical *entity) 0x503870 +void CAEWeaponAudioEntity::PlayFlameThrowerIdleGasLoop(CPhysical* entity) { + plugin::CallMethod<0x503870, CAEWeaponAudioEntity *, CPhysical*>(this, entity); +} + +// Converted from thiscall void CAEWeaponAudioEntity::PlayChainsawStopSound(CPhysical *entity) 0x504AA0 +void CAEWeaponAudioEntity::PlayChainsawStopSound(CPhysical* entity) { + plugin::CallMethod<0x504AA0, CAEWeaponAudioEntity *, CPhysical*>(this, entity); +} + +// Converted from thiscall void CAEWeaponAudioEntity::PlayCameraSound(CPhysical *entity,int AudioEventId,float audability) 0x5046F0 +void CAEWeaponAudioEntity::PlayCameraSound(CPhysical* entity, int AudioEventId, float audability) { + plugin::CallMethod<0x5046F0, CAEWeaponAudioEntity *, CPhysical*, int, float>(this, entity, AudioEventId, audability); +} + +// Converted from thiscall void CAEWeaponAudioEntity::Initialise(void) 0x503450 +void CAEWeaponAudioEntity::Initialise() { + plugin::CallMethod<0x503450, CAEWeaponAudioEntity *>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEWeaponAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEWeaponAudioEntity.h new file mode 100644 index 00000000..8df46ac2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEWeaponAudioEntity.h @@ -0,0 +1,57 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAEAudioEntity.h" +#include "CAESound.h" +#include "eWeaponType.h" + +class CPhysical; +class CPed; + +class PLUGIN_API CAEWeaponAudioEntity : public CAEAudioEntity { +public: + char m_bPlayedMiniGunFireSound; + char field_7D; + char field_7E; + char field_7F; + char m_nChainsawSoundState; + char field_81[3]; + int m_dwFlameThrowerLastPlayedTime; + int m_dwSpraycanLastPlayedTime; + int m_dwExtinguisherLastPlayedTime; + int m_dwMiniGunFireSoundPlayedTime; + int m_dwTimeChainsaw; + int m_dwTimeLastFired; + CAESound *m_pSounds; + char m_bActive; + char field_A1[3]; + CPed* m_pPed; + + CAEWeaponAudioEntity(); + void WeaponReload(eWeaponType weaptype, CPhysical* entity, int AudioEventId); + void WeaponFire(eWeaponType weaptype, CPhysical* entity, int AudioEventId); + void Terminate(); + void StopFlameThrowerIdleGasLoop(); + void Reset(); + void ReportStealthKill(eWeaponType weaptype, CPhysical* entity, int AudioEventId); + void ReportChainsawEvent(CPhysical* entity, int AudioEventId); + void PlayWeaponLoopSound(CPhysical* arg0, short sfxId, int AudioEventId, float audability, float speed, int finalEvent); + void PlayMiniGunStopSound(CPhysical* entity); + void PlayMiniGunFireSounds(CPhysical* entity, int AudioEventId); + void PlayGunSounds(CPhysical* entity, short emptySfxId, short farSfxId2, short highPitchSfxId3, short lowPitchSfxId4, short echoSfxId5, int nAudioEventId, float volumeChange, float speed1, float speed2); + void PlayGoggleSound(short sfxId, int AudioEventId); + void PlayFlameThrowerSounds(CPhysical* entity, short sfx1, short sfx2, int AudioEventId, float audability, float speed); + void PlayFlameThrowerIdleGasLoop(CPhysical* entity); + void PlayChainsawStopSound(CPhysical* entity); + void PlayCameraSound(CPhysical* entity, int AudioEventId, float audability); + void Initialise(); + +}; + +VALIDATE_SIZE(CAEWeaponAudioEntity, 0xA8); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEWeatherAudioEntity.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAEWeatherAudioEntity.cpp new file mode 100644 index 00000000..f458dd25 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEWeatherAudioEntity.cpp @@ -0,0 +1,8 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAEWeatherAudioEntity.h" + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAEWeatherAudioEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAEWeatherAudioEntity.h new file mode 100644 index 00000000..6a7376d6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAEWeatherAudioEntity.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CAEAudioEntity.h" + +class CAEWeatherAudioEntity : public CAEAudioEntity { +public: + unsigned char m_nThunderFrequencyVariationCounter; +private: + char _pad7D[3]; +public: + + +}; + +VALIDATE_SIZE(CAEWeatherAudioEntity, 0x80); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendAssocGroup.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendAssocGroup.cpp new file mode 100644 index 00000000..3338c491 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendAssocGroup.cpp @@ -0,0 +1,68 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ + +#include "CAnimBlendAssocGroup.h" +// Converted from thiscall void CAnimBlendAssocGroup::CAnimBlendAssocGroup(void) 0x4CDE70 +CAnimBlendAssocGroup::CAnimBlendAssocGroup() { + plugin::CallMethod<0x4CDE70, CAnimBlendAssocGroup *>(this); +} + +// Converted from thiscall CAnimBlendAssociation* CAnimBlendAssocGroup::CopyAnimation(char const *AnimName) 0x4CE0B0 +CAnimBlendAssociation* CAnimBlendAssocGroup::CopyAnimation(char const* AnimName) { + return plugin::CallMethodAndReturn(this, AnimName); +} + +// Converted from thiscall CAnimBlendAssociation* CAnimBlendAssocGroup::CopyAnimation(uint ID) 0x4CE130 +CAnimBlendAssociation* CAnimBlendAssocGroup::CopyAnimation(unsigned int ID) { + return plugin::CallMethodAndReturn(this, ID); +} + +// Converted from thiscall void CAnimBlendAssocGroup::CreateAssociations(char const *szBlockName) 0x4CE220 +void CAnimBlendAssocGroup::CreateAssociations(char const* szBlockName) { + plugin::CallMethod<0x4CE220, CAnimBlendAssocGroup *, char const*>(this, szBlockName); +} + +// Converted from thiscall void CAnimBlendAssocGroup::CreateAssociations(char const *AnimName,RpClump *pClump,char ** arg3,int NumAnimations) 0x4CE6E0 +void CAnimBlendAssocGroup::CreateAssociations(char const* AnimName, RpClump* pClump, char** arg3, int NumAnimations) { + plugin::CallMethod<0x4CE6E0, CAnimBlendAssocGroup *, char const*, RpClump*, char**, int>(this, AnimName, pClump, arg3, NumAnimations); +} + +// Converted from thiscall void CAnimBlendAssocGroup::CreateAssociations(char const *AnimName, char const *arg2 , char const *arg3, int arg4) 0x4CE3B0 +void CAnimBlendAssocGroup::CreateAssociations(char const* AnimName, char const* arg2, char const* arg3, int arg4) { + plugin::CallMethod<0x4CE3B0, CAnimBlendAssocGroup *, char const*, char const*, char const*, int>(this, AnimName, arg2, arg3, arg4); +} + +// Converted from thiscall void CAnimBlendAssocGroup::DestroyAssociations(void) 004CDFF0 +void CAnimBlendAssocGroup::DestroyAssociations() { + plugin::CallMethod<0x4CDFF0, CAnimBlendAssocGroup *>(this); +} + +// Converted from thiscall CAnimBlendAssociation* CAnimBlendAssocGroup::GetAnimation(char const *AnimName) 0x4CE040 +CAnimBlendAssociation* CAnimBlendAssocGroup::GetAnimation(char const* AnimName) { + return plugin::CallMethodAndReturn(this, AnimName); +} + +// Converted from thiscall CAnimBlendAssociation* CAnimBlendAssocGroup::GetAnimation(uint ID) 0x4CE090 +CAnimBlendAssociation* CAnimBlendAssocGroup::GetAnimation(unsigned int ID) { + return plugin::CallMethodAndReturn(this, ID); +} + +// Converted from thiscall uint CAnimBlendAssocGroup::GetAnimationId(char const *AnimName) 0x4CE1B0 +unsigned int CAnimBlendAssocGroup::GetAnimationId(char const* AnimName) { + return plugin::CallMethodAndReturn(this, AnimName); +} + +// Converted from thiscall void CAnimBlendAssocGroup::InitEmptyAssociations(RpClump *pClump) 0x4CDFB0 +void CAnimBlendAssocGroup::InitEmptyAssociations(RpClump* pClump) { + plugin::CallMethod<0x4CDFB0, CAnimBlendAssocGroup *, RpClump*>(this, pClump); +} + +// Converted from thiscall void CAnimBlendAssocGroup::~CAnimBlendAssocGroup() 0x4CE1D0 +CAnimBlendAssocGroup::~CAnimBlendAssocGroup() { + plugin::CallMethod<0x4CE1D0, CAnimBlendAssocGroup *>(this); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendAssocGroup.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendAssocGroup.h new file mode 100644 index 00000000..3a34df4e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendAssocGroup.h @@ -0,0 +1,39 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CAnimBlendAssociation.h" +#include "RenderWare.h" +#include "CAnimBlock.h" + +class CAnimBlendStaticAssociation; + + +class CAnimBlendAssocGroup +{ +public: + CAnimBlock *m_pAnimBlock; + CAnimBlendStaticAssociation *m_pAssociations; + unsigned int m_nNumAnimations; + int m_nIdOffset; + int m_nGroupID; + + CAnimBlendAssocGroup(); + CAnimBlendAssociation* CopyAnimation(char const* AnimName); + CAnimBlendAssociation* CopyAnimation(unsigned int ID); + void CreateAssociations(char const* szBlockName); + void CreateAssociations(char const* AnimName, RpClump* pClump, char** arg3, int NumAnimations); + void CreateAssociations(char const* AnimName, char const* arg2, char const* arg3, int arg4); + void DestroyAssociations(); + CAnimBlendAssociation* GetAnimation(char const* AnimName); + CAnimBlendAssociation* GetAnimation(unsigned int ID); + unsigned int GetAnimationId(char const* AnimName); + void InitEmptyAssociations(RpClump* pClump); + ~CAnimBlendAssocGroup(); +}; + +VALIDATE_SIZE(CAnimBlendAssocGroup, 0x14); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendAssociation.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendAssociation.cpp new file mode 100644 index 00000000..4d272baa --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendAssociation.cpp @@ -0,0 +1,151 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAnimBlendAssociation.h" + +PLUGIN_SOURCE_FILE + +int ctor_addr(CAnimBlendAssociation) = ADDRESS_BY_VERSION(0x4CE9B0, 0, 0, 0, 0, 0); +int ctor_gaddr(CAnimBlendAssociation) = GLOBAL_ADDRESS_BY_VERSION(0x4CE9B0, 0, 0, 0, 0, 0); + +int ctor_addr_o(CAnimBlendAssociation, void(CAnimBlendHierarchy &)) = ADDRESS_BY_VERSION(0x4CF080, 0, 0, 0, 0, 0); +int ctor_gaddr_o(CAnimBlendAssociation, void(CAnimBlendHierarchy &)) = GLOBAL_ADDRESS_BY_VERSION(0x4CF080, 0, 0, 0, 0, 0); + +int ctor_addr_o(CAnimBlendAssociation, void(RpClump *, CAnimBlendHierarchy *)) = ADDRESS_BY_VERSION(0x4CEFC0, 0, 0, 0, 0, 0); +int ctor_gaddr_o(CAnimBlendAssociation, void(RpClump *, CAnimBlendHierarchy *)) = GLOBAL_ADDRESS_BY_VERSION(0x4CEFC0, 0, 0, 0, 0, 0); + +int ctor_addr_o(CAnimBlendAssociation, void(CAnimBlendAssociation &)) = ADDRESS_BY_VERSION(0x4CF020, 0, 0, 0, 0, 0); +int ctor_gaddr_o(CAnimBlendAssociation, void(CAnimBlendAssociation &)) = GLOBAL_ADDRESS_BY_VERSION(0x4CF020, 0, 0, 0, 0, 0); + +int dtor_addr(CAnimBlendAssociation) = ADDRESS_BY_VERSION(0x4CECF0, 0, 0, 0, 0, 0); +int dtor_gaddr(CAnimBlendAssociation) = GLOBAL_ADDRESS_BY_VERSION(0x4CECF0, 0, 0, 0, 0, 0); + +int del_dtor_addr(CAnimBlendAssociation) = ADDRESS_BY_VERSION(0x4CEFA0, 0, 0, 0, 0, 0); +int del_dtor_gaddr(CAnimBlendAssociation) = GLOBAL_ADDRESS_BY_VERSION(0x4CEFA0, 0, 0, 0, 0, 0); + +CAnimBlendAssociation::~CAnimBlendAssociation() +{ + plugin::CallVirtualMethod<0, CAnimBlendAssociation *>(this, 1); +} + +int addrof(CAnimBlendAssociation::AllocateAnimBlendNodeArray) = ADDRESS_BY_VERSION(0x4CE9F0, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::AllocateAnimBlendNodeArray) = GLOBAL_ADDRESS_BY_VERSION(0x4CE9F0, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::AllocateAnimBlendNodeArray(int count) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendAssociation::AllocateAnimBlendNodeArray), this, count); +} + +int addrof(CAnimBlendAssociation::FreeAnimBlendNodeArray) = ADDRESS_BY_VERSION(0x4CEA40, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::FreeAnimBlendNodeArray) = GLOBAL_ADDRESS_BY_VERSION(0x4CEA40, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::FreeAnimBlendNodeArray() { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendAssociation::FreeAnimBlendNodeArray), this); +} + +int addrof(CAnimBlendAssociation::GetNode) = ADDRESS_BY_VERSION(0x4CEB60, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::GetNode) = GLOBAL_ADDRESS_BY_VERSION(0x4CEB60, 0, 0, 0, 0, 0); + +CAnimBlendNode *CAnimBlendAssociation::GetNode(int nodeIndex) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CAnimBlendAssociation::GetNode), this, nodeIndex); +} + +int addrof_o(CAnimBlendAssociation::Init, void (CAnimBlendAssociation::*)(RpClump *, CAnimBlendHierarchy *)) = ADDRESS_BY_VERSION(0x4CED50, 0, 0, 0, 0, 0); +int gaddrof_o(CAnimBlendAssociation::Init, void (CAnimBlendAssociation::*)(RpClump *, CAnimBlendHierarchy *)) = GLOBAL_ADDRESS_BY_VERSION(0x4CED50, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::Init(RpClump *clump, CAnimBlendHierarchy *hierarchy) { + plugin::CallMethodDynGlobal(gaddrof_o(CAnimBlendAssociation::Init, void (CAnimBlendAssociation::*)(RpClump *, CAnimBlendHierarchy *)), this, clump, hierarchy); +} + +int addrof_o(CAnimBlendAssociation::Init, void (CAnimBlendAssociation::*)(CAnimBlendAssociation &)) = ADDRESS_BY_VERSION(0x4CEE40, 0, 0, 0, 0, 0); +int gaddrof_o(CAnimBlendAssociation::Init, void (CAnimBlendAssociation::*)(CAnimBlendAssociation &)) = GLOBAL_ADDRESS_BY_VERSION(0x4CEE40, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::Init(CAnimBlendAssociation &source) { + plugin::CallMethodDynGlobal(gaddrof_o(CAnimBlendAssociation::Init, void (CAnimBlendAssociation::*)(CAnimBlendAssociation &)), this, source); +} + +int addrof_o(CAnimBlendAssociation::Init, void (CAnimBlendAssociation::*)(CAnimBlendStaticAssociation &)) = ADDRESS_BY_VERSION(0x4CEEC0, 0, 0, 0, 0, 0); +int gaddrof_o(CAnimBlendAssociation::Init, void (CAnimBlendAssociation::*)(CAnimBlendStaticAssociation &)) = GLOBAL_ADDRESS_BY_VERSION(0x4CEEC0, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::Init(CAnimBlendStaticAssociation &source) { + plugin::CallMethodDynGlobal(gaddrof_o(CAnimBlendAssociation::Init, void (CAnimBlendAssociation::*)(CAnimBlendStaticAssociation &)), this, source); +} + +int addrof(CAnimBlendAssociation::ReferenceAnimBlock) = ADDRESS_BY_VERSION(0x4CEA50, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::ReferenceAnimBlock) = GLOBAL_ADDRESS_BY_VERSION(0x4CEA50, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::ReferenceAnimBlock() { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendAssociation::ReferenceAnimBlock), this); +} + +int addrof(CAnimBlendAssociation::SetBlend) = ADDRESS_BY_VERSION(0x4CEBA0, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::SetBlend) = GLOBAL_ADDRESS_BY_VERSION(0x4CEBA0, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::SetBlend(float blendAmount, float blendDelta) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendAssociation::SetBlend), this, blendAmount, blendDelta); +} + +int addrof(CAnimBlendAssociation::SetBlendTo) = ADDRESS_BY_VERSION(0x4CEB80, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::SetBlendTo) = GLOBAL_ADDRESS_BY_VERSION(0x4CEB80, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::SetBlendTo(float blendAmount, float blendDelta) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendAssociation::SetBlendTo), this, blendAmount, blendDelta); +} + +int addrof(CAnimBlendAssociation::SetCurrentTime) = ADDRESS_BY_VERSION(0x4CEA80, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::SetCurrentTime) = GLOBAL_ADDRESS_BY_VERSION(0x4CEA80, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::SetCurrentTime(float currentTime) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendAssociation::SetCurrentTime), this, currentTime); +} + +int addrof(CAnimBlendAssociation::SetDeleteCallback) = ADDRESS_BY_VERSION(0x4CEBC0, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::SetDeleteCallback) = GLOBAL_ADDRESS_BY_VERSION(0x4CEBC0, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::SetDeleteCallback(void(*callback)(CAnimBlendAssociation *, void *), void *data) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendAssociation::SetDeleteCallback), this, callback, data); +} + +int addrof(CAnimBlendAssociation::SetFinishCallback) = ADDRESS_BY_VERSION(0x4CEBE0, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::SetFinishCallback) = GLOBAL_ADDRESS_BY_VERSION(0x4CEBE0, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::SetFinishCallback(void(*callback)(CAnimBlendAssociation *, void *), void *data) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendAssociation::SetFinishCallback), this, callback, data); +} + +int addrof(CAnimBlendAssociation::Start) = ADDRESS_BY_VERSION(0x4CEB70, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::Start) = GLOBAL_ADDRESS_BY_VERSION(0x4CEB70, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::Start(float currentTime) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendAssociation::Start), this, currentTime); +} + +int addrof(CAnimBlendAssociation::SyncAnimation) = ADDRESS_BY_VERSION(0x4CEB40, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::SyncAnimation) = GLOBAL_ADDRESS_BY_VERSION(0x4CEB40, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::SyncAnimation(CAnimBlendAssociation *syncWith) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendAssociation::SyncAnimation), this, syncWith); +} + +int addrof(CAnimBlendAssociation::UpdateBlend) = ADDRESS_BY_VERSION(0x4D1490, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::UpdateBlend) = GLOBAL_ADDRESS_BY_VERSION(0x4D1490, 0, 0, 0, 0, 0); + +bool CAnimBlendAssociation::UpdateBlend(float blendDeltaMult) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CAnimBlendAssociation::UpdateBlend), this, blendDeltaMult); +} + +int addrof(CAnimBlendAssociation::UpdateTime) = ADDRESS_BY_VERSION(0x4D13D0, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::UpdateTime) = GLOBAL_ADDRESS_BY_VERSION(0x4D13D0, 0, 0, 0, 0, 0); + +bool CAnimBlendAssociation::UpdateTime(float unused1, float unused2) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CAnimBlendAssociation::UpdateTime), this, unused1, unused2); +} + +int addrof(CAnimBlendAssociation::UpdateTimeStep) = ADDRESS_BY_VERSION(0x4D13A0, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendAssociation::UpdateTimeStep) = GLOBAL_ADDRESS_BY_VERSION(0x4D13A0, 0, 0, 0, 0, 0); + +void CAnimBlendAssociation::UpdateTimeStep(float speedMult, float timeMult) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendAssociation::UpdateTimeStep), this, speedMult, timeMult); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendAssociation.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendAssociation.h new file mode 100644 index 00000000..4e39f6dc --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendAssociation.h @@ -0,0 +1,119 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "AnimAssociationData.h" +#include "eAnimBlendCallbackType.h" +#include "RenderWare.h" + +class CAnimBlendNode; +class CAnimBlendHierarchy; +class CAnimBlendStaticAssociation; + +enum eAnimationFlags +{ + ANIMATION_STARTED = 0x1, + ANIMATION_LOOPED = 0x2, + ANIMATION_FREEZE_LAST_FRAME = 0x4, + ANIMATION_UNLOCK_LAST_FRAME = 0x8, // Animation will be stuck on last frame, if not set + ANIMATION_PARTIAL = 0x10, + ANIMATION_MOVEMENT = 0x20, + ANIMATION_TRANLSATE_X = 0x40, + ANIMATION_TRANLSATE_Y = 0x80, + ANIMATION_UNUSED_1 = 0x100, + ANIMATION_UNUSED_2 = 0x200, + ANIMATION_ADD_TO_BLEND = 0x400, + ANIMATION_UNUSED_3 = 0x800, + ANIMATION_UNUSED_4 = 0x1000, + ANIMATION_FREEZE_TRANSLATION = 0x2000, + ANIMATION_BLOCK_REFERENCED = 0x4000, + ANIMATION_INDESTRUCTIBLE = 0x8000 +}; + +class PLUGIN_API CAnimBlendAssociation { + +public: + void *vtable; + RwLLLink m_link; + unsigned short m_nNumBlendNodes; + unsigned short m_nAnimGroup; + CAnimBlendNode *m_pNodeArray; + CAnimBlendHierarchy *m_pHierarchy; + float m_fBlendAmount; + float m_fBlendDelta; + float m_fCurrentTime; + float m_fSpeed; + float fTimeStep; + short m_nAnimId; + union { + struct + { + unsigned short m_bPlaying : 1; // Anim will stop playing if flag is not set + unsigned short m_bLooped : 1; // Anim will always restart when it completes + unsigned short m_bFreezeLastFrame : 1; // Anim will freeze on last frame + unsigned short m_bUnlockLastFrame : 1; // Animation will be stuck on last frame, if not set + + unsigned short m_bPartial : 1; // Partial anims run along other anims + unsigned short m_bEnableMovement : 1; // blends all playing anims together if set + + + unsigned short m_bTranslateX : 1; + unsigned short m_bTranslateY : 1; // only applies if m_bTranslateX is set + + unsigned short m_bf9 : 1; // doesn't seem to be used + unsigned short m_bf10 : 1; // doesn't seem to be used + + // If set to TRUE, then result: + // Before = https://i.imgur.com/c8T7xNK.png | AFTER = https://i.imgur.com/4gqlA4n.png + unsigned short m_bAddAnimBlendToTotalBlend : 1; + + unsigned short m_bf12 : 1; // doesn't seem to be used + unsigned short m_bSecondaryTaskAnim : 1; // doesn't seem to be used + + // Anim will play. Translation values will be ignored for anim (m_bEnableTranslation + // is ignored if set), and it only applies to some anims though + unsigned short m_bFreezeTranslation : 1; + unsigned short m_bBlockReferenced : 1; // anim block can't be unloaded if it's referenced by an anim. + + // Anim will not be destroyed. It will be played simultaneously with other anims + // (multiple anims at once) if you set this flag while sitting in a car, you'll still be + // seated even if you exit the vehicle or play other anims, like walking, running, crouching, + // etc, like this: https://i.imgur.com/VgWn5fl.png + unsigned short m_bIndestructible : 1; + }; + unsigned short m_nFlags; + }; + eAnimBlendCallbackType m_nCallbackType; + void(*m_pCallbackFunc)(CAnimBlendAssociation *, void *); + void *m_pCallbackData; + + // vtable function #0 (destructor) + SUPPORTED_10US ~CAnimBlendAssociation(); + SUPPORTED_10US void AllocateAnimBlendNodeArray(int count); + SUPPORTED_10US void FreeAnimBlendNodeArray(); + SUPPORTED_10US CAnimBlendNode *GetNode(int nodeIndex); + SUPPORTED_10US void Init(RpClump *clump, CAnimBlendHierarchy *hierarchy); + SUPPORTED_10US void Init(CAnimBlendAssociation &source); + SUPPORTED_10US void Init(CAnimBlendStaticAssociation &source); + SUPPORTED_10US void ReferenceAnimBlock(); + SUPPORTED_10US void SetBlend(float blendAmount, float blendDelta); + SUPPORTED_10US void SetBlendTo(float blendAmount, float blendDelta); + SUPPORTED_10US void SetCurrentTime(float currentTime); + SUPPORTED_10US void SetDeleteCallback(void(*callback)(CAnimBlendAssociation *, void *), void *data); + SUPPORTED_10US void SetFinishCallback(void(*callback)(CAnimBlendAssociation *, void *), void *data); + SUPPORTED_10US void Start(float currentTime); + SUPPORTED_10US void SyncAnimation(CAnimBlendAssociation *syncWith); + SUPPORTED_10US bool UpdateBlend(float blendDeltaMult); + SUPPORTED_10US bool UpdateTime(float unused1, float unused2); + SUPPORTED_10US void UpdateTimeStep(float speedMult, float timeMult); +}; + +VTABLE_DESC(CAnimBlendAssociation, 0x85C6D0, 1); +VALIDATE_SIZE(CAnimBlendAssociation, 0x3C); + +#include "meta/meta.CAnimBlendAssociation.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendClumpData.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendClumpData.cpp new file mode 100644 index 00000000..8bc2a388 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendClumpData.cpp @@ -0,0 +1,51 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAnimBlendClumpData.h" + +PLUGIN_SOURCE_FILE + +int ctor_addr(CAnimBlendClumpData) = ADDRESS_BY_VERSION(0x4CF0E0, 0, 0, 0, 0, 0); +int ctor_gaddr(CAnimBlendClumpData) = GLOBAL_ADDRESS_BY_VERSION(0x4CF0E0, 0, 0, 0, 0, 0); + +CAnimBlendClumpData::CAnimBlendClumpData() { + plugin::CallMethodDynGlobal(ctor_gaddr(CAnimBlendClumpData), this); +} + +int dtor_addr(CAnimBlendClumpData) = ADDRESS_BY_VERSION(0x4CF100, 0, 0, 0, 0, 0); +int dtor_gaddr(CAnimBlendClumpData) = GLOBAL_ADDRESS_BY_VERSION(0x4CF100, 0, 0, 0, 0, 0); + +CAnimBlendClumpData::~CAnimBlendClumpData() { + plugin::CallMethodDynGlobal(dtor_gaddr(CAnimBlendClumpData), this); +} + +int addrof(CAnimBlendClumpData::ForAllFrames) = ADDRESS_BY_VERSION(0x4CF190, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendClumpData::ForAllFrames) = GLOBAL_ADDRESS_BY_VERSION(0x4CF190, 0, 0, 0, 0, 0); + +void CAnimBlendClumpData::ForAllFrames(void(*callback)(AnimBlendFrameData *, void *), void *data) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendClumpData::ForAllFrames), this, callback, data); +} + +int addrof(CAnimBlendClumpData::ForAllFramesInSPR) = ADDRESS_BY_VERSION(0x4CF1E0, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendClumpData::ForAllFramesInSPR) = GLOBAL_ADDRESS_BY_VERSION(0x4CF1E0, 0, 0, 0, 0, 0); + +void CAnimBlendClumpData::ForAllFramesInSPR(void(*callback)(AnimBlendFrameData *, void *), void *data, unsigned int a3) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendClumpData::ForAllFramesInSPR), this, callback, data, a3); +} + +int addrof(CAnimBlendClumpData::LoadFramesIntoSPR) = ADDRESS_BY_VERSION(0x4CF1D0, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendClumpData::LoadFramesIntoSPR) = GLOBAL_ADDRESS_BY_VERSION(0x4CF1D0, 0, 0, 0, 0, 0); + +void CAnimBlendClumpData::LoadFramesIntoSPR() { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendClumpData::LoadFramesIntoSPR), this); +} + +int addrof(CAnimBlendClumpData::SetNumberOfBones) = ADDRESS_BY_VERSION(0x4CF140, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendClumpData::SetNumberOfBones) = GLOBAL_ADDRESS_BY_VERSION(0x4CF140, 0, 0, 0, 0, 0); + +void CAnimBlendClumpData::SetNumberOfBones(int numBones) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendClumpData::SetNumberOfBones), this, numBones); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendClumpData.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendClumpData.h new file mode 100644 index 00000000..efc862cd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendClumpData.h @@ -0,0 +1,35 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CVector.h" +#include "AnimBlendFrameData.h" + +class PLUGIN_API CAnimBlendClumpData { +public: + RwLinkList m_associationsList; + int m_nNumFrames; + CVector *m_pvecPedPosition; + AnimBlendFrameData *m_pFrames; + + SUPPORTED_10US CAnimBlendClumpData(); + + SUPPORTED_10US ~CAnimBlendClumpData(); + + SUPPORTED_10US void ForAllFrames(void(*callback)(AnimBlendFrameData *, void *), void *data); + //! dummy function + SUPPORTED_10US void ForAllFramesInSPR(void(*callback)(AnimBlendFrameData *, void *), void *data, unsigned int a3); + //! dummy function + SUPPORTED_10US void LoadFramesIntoSPR(); + SUPPORTED_10US void SetNumberOfBones(int numBones); +}; + +VALIDATE_SIZE(CAnimBlendClumpData, 0x14); + +#include "meta/meta.CAnimBlendClumpData.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendHierarchy.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendHierarchy.cpp new file mode 100644 index 00000000..d5d8892d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendHierarchy.cpp @@ -0,0 +1,61 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ + +#include "CAnimBlendHierarchy.h" + +// Converted from thiscall void* CAnimBlendHierarchy::AllocSequenceBlock(bool arg1) 0x4CF510 +void* CAnimBlendHierarchy::AllocSequenceBlock(bool arg1) { + return plugin::CallMethodAndReturn(this, arg1); +} + +// Converted from thiscall void CAnimBlendHierarchy::CAnimBlendHierarchy(void) 0x4CF270 +CAnimBlendHierarchy::CAnimBlendHierarchy() { + plugin::CallMethod<0x4CF270, CAnimBlendHierarchy *>(this); +} + +// Converted from thiscall void CAnimBlendHierarchy::CalcTotalTime(void) 0x4CF2F0 +void CAnimBlendHierarchy::CalcTotalTime() { + plugin::CallMethod<0x4CF2F0, CAnimBlendHierarchy *>(this); +} + +// Converted from thiscall void CAnimBlendHierarchy::CalcTotalTimeCompressed(void) 0x4CF3E0 +void CAnimBlendHierarchy::CalcTotalTimeCompressed() { + plugin::CallMethod<0x4CF3E0, CAnimBlendHierarchy *>(this); +} + +// Converted from thiscall void CAnimBlendHierarchy::RemoveAnimSequences(void) 0x4CF8E0 +void CAnimBlendHierarchy::RemoveAnimSequences() { + plugin::CallMethod<0x4CF8E0, CAnimBlendHierarchy *>(this); +} + +// Converted from thiscall void CAnimBlendHierarchy::RemoveQuaternionFlips(void) 0x4CF4E0 +void CAnimBlendHierarchy::RemoveQuaternionFlips() { + plugin::CallMethod<0x4CF4E0, CAnimBlendHierarchy *>(this); +} + +// Converted from thiscall void CAnimBlendHierarchy::RemoveUncompressedData(void) 0x4CF760 +void CAnimBlendHierarchy::RemoveUncompressedData() { + plugin::CallMethod<0x4CF760, CAnimBlendHierarchy *>(this); +} + +// Converted from thiscall void CAnimBlendHierarchy::SetName(char const*string) 0x4CF2D0 +void CAnimBlendHierarchy::SetName(char const* string) { + plugin::CallMethod<0x4CF2D0, CAnimBlendHierarchy *, char const*>(this, string); +} + +// Converted from thiscall void CAnimBlendHierarchy::Shutdown(void) 0x4CF980 +void CAnimBlendHierarchy::Shutdown() { + plugin::CallMethod<0x4CF980, CAnimBlendHierarchy *>(this); +} + +// Converted from thiscall void CAnimBlendHierarchy::Uncompress(void) 0x4CF5F0 +void CAnimBlendHierarchy::Uncompress() { + plugin::CallMethod<0x4CF5F0, CAnimBlendHierarchy *>(this); +} + + + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendHierarchy.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendHierarchy.h new file mode 100644 index 00000000..844d351a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendHierarchy.h @@ -0,0 +1,38 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAnimBlendSequence.h" + +class CAnimBlendHierarchy { +public: + unsigned int m_hashKey; + CAnimBlendSequence *m_pSequences; + unsigned short m_nSeqCount; + bool m_bRunningCompressed; + char field_B; + int m_nAnimBlockId; + float m_fTotalTime; + int field_14; + + //funcs + + void* AllocSequenceBlock(bool arg1); + CAnimBlendHierarchy(); + void CalcTotalTime(); + void CalcTotalTimeCompressed(); + void RemoveAnimSequences(); + void RemoveQuaternionFlips(); + void RemoveUncompressedData(); + void SetName(char const* string); + void Shutdown(); + void Uncompress(); + +}; + +VALIDATE_SIZE(CAnimBlendHierarchy, 0x18); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendNode.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendNode.cpp new file mode 100644 index 00000000..eb3c10b7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendNode.cpp @@ -0,0 +1,78 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CAnimBlendNode.h" + +// Converted from thiscall void CAnimBlendNode::CalcDeltas(void) 0x4D0190 +void CAnimBlendNode::CalcDeltas() { + plugin::CallMethod<0x4D0190, CAnimBlendNode *>(this); +} + +// Converted from thiscall void CAnimBlendNode::CalcDeltasCompressed(void) 0x4D0350 +void CAnimBlendNode::CalcDeltasCompressed() { + plugin::CallMethod<0x4D0350, CAnimBlendNode *>(this); +} + +// Converted from thiscall bool CAnimBlendNode::FindKeyFrame(float arg1) 0x4D0240 +bool CAnimBlendNode::FindKeyFrame(float arg1) { + return plugin::CallMethodAndReturn(this, arg1); +} + +// Converted from thiscall void CAnimBlendNode::GetCurrentTranslation(CVector &Vector,float arg2) 0x4CFC50 +void CAnimBlendNode::GetCurrentTranslation(CVector& Vector, float arg2) { + plugin::CallMethod<0x4CFC50, CAnimBlendNode *, CVector&, float>(this, Vector, arg2); +} + +// Converted from thiscall void CAnimBlendNode::GetCurrentTranslationCompressed(CVector &Vector,float arg2) 0x4CFE60 +void CAnimBlendNode::GetCurrentTranslationCompressed(CVector& Vector, float arg2) { + plugin::CallMethod<0x4CFE60, CAnimBlendNode *, CVector&, float>(this, Vector, arg2); +} + +// Converted from thiscall void CAnimBlendNode::GetEndTranslation(CVector &Vector, float arg2) 0x4CFD90 +void CAnimBlendNode::GetEndTranslation(CVector& Vector, float arg2) { + plugin::CallMethod<0x4CFD90, CAnimBlendNode *, CVector&, float>(this, Vector, arg2); +} + +// Converted from thiscall void CAnimBlendNode::GetEndTranslationCompressed(CVector &Vector ,float arg2) 0x4D0000 +void CAnimBlendNode::GetEndTranslationCompressed(CVector& Vector, float arg2) { + plugin::CallMethod<0x4D0000, CAnimBlendNode *, CVector&, float>(this, Vector, arg2); +} + +// Converted from thiscall void CAnimBlendNode::Init(void) 0x4CFB70 +void CAnimBlendNode::Init() { + plugin::CallMethod<0x4CFB70, CAnimBlendNode *>(this); +} + +// Converted from thiscall bool CAnimBlendNode::NextKeyFrame(void) 0x4D04A0 +bool CAnimBlendNode::NextKeyFrame() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CAnimBlendNode::NextKeyFrameCompressed(void) 0x4D0570 +bool CAnimBlendNode::NextKeyFrameCompressed() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CAnimBlendNode::NextKeyFrameNoCalc(void) 0x4CFB90 +bool CAnimBlendNode::NextKeyFrameNoCalc() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CAnimBlendNode::SetupKeyFrameCompressed(void) 0x4D0650 +bool CAnimBlendNode::SetupKeyFrameCompressed() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CAnimBlendNode::Update(CVector &Vector,CQuaternion &Qauternion,float arg3) 0x4D06C0 +bool CAnimBlendNode::Update(CVector& Vector, CQuaternion& Qauternion, float arg3) { + return plugin::CallMethodAndReturn(this, Vector, Qauternion, arg3); +} + +// Converted from thiscall bool CAnimBlendNode::UpdateCompressed(CVector &Vector,CQuaternion &Quaternion,float arg3) 0x4D08D0 0x4D0160 +bool CAnimBlendNode::UpdateCompressed(CVector& Vector, CQuaternion& Quaternion, float arg3) { + return plugin::CallMethodAndReturn(this, Vector, Quaternion, arg3); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendNode.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendNode.h new file mode 100644 index 00000000..8acc4640 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendNode.h @@ -0,0 +1,40 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CQuaternion.h" + +class PLUGIN_API CAnimBlendNode { +public: + float field_0; + float field_4; + short field_8; + short field_A; + float field_C; + int field_10; + void *m_pAnimBlendAssociation; + + //funcs + + void CalcDeltas(); + void CalcDeltasCompressed(); + bool FindKeyFrame(float arg1); + void GetCurrentTranslation(CVector& Vector, float arg2); + void GetCurrentTranslationCompressed(CVector& Vector, float arg2); + void GetEndTranslation(CVector& Vector, float arg2); + void GetEndTranslationCompressed(CVector& Vector, float arg2); + void Init(); + bool NextKeyFrame(); + bool NextKeyFrameCompressed(); + bool NextKeyFrameNoCalc(); + bool SetupKeyFrameCompressed(); + bool Update(CVector& Vector, CQuaternion& Qauternion, float arg3); + bool UpdateCompressed(CVector& Vector, CQuaternion& Quaternion, float arg3); +}; + +VALIDATE_SIZE(CAnimBlendNode, 0x18); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendSequence.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendSequence.cpp new file mode 100644 index 00000000..efb21190 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendSequence.cpp @@ -0,0 +1,63 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ + +#include "CAnimBlendSequence.h" + +// Converted from thiscall void CAnimBlendSequence::CAnimBlendSequence(void) 0x4D0C10 +CAnimBlendSequence::CAnimBlendSequence() { + plugin::CallMethod<0x4D0C10, CAnimBlendSequence *>(this); +} + +// Converted from thiscall void CAnimBlendSequence::CompressKeyframes(uchar *arg1) 0x4D0F40 +void CAnimBlendSequence::CompressKeyframes(unsigned char* arg1) { + plugin::CallMethod<0x4D0F40, CAnimBlendSequence *, unsigned char*>(this, arg1); +} + +// Converted from thiscall int CAnimBlendSequence::GetDataSize(bool arg1) 0x4D0C90 +int CAnimBlendSequence::GetDataSize(bool arg1) { + return plugin::CallMethodAndReturn(this, arg1); +} + +// Converted from thiscall bool CAnimBlendSequence::MoveMemorY(void) 0x4D1150 +bool CAnimBlendSequence::MoveMemorY() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall int CAnimBlendSequence::RemoveQuaternionFlips(void) 0x4D1190 +int CAnimBlendSequence::RemoveQuaternionFlips() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CAnimBlendSequence::RemoveUncompressedData(uchar *arg1) 0x4D12A0 +void CAnimBlendSequence::RemoveUncompressedData(unsigned char* arg1) { + plugin::CallMethod<0x4D12A0, CAnimBlendSequence *, unsigned char*>(this, arg1); +} + +// Converted from thiscall void CAnimBlendSequence::SetBoneTag(int hash) 0x4D0C70 +void CAnimBlendSequence::SetBoneTag(int hash) { + plugin::CallMethod<0x4D0C70, CAnimBlendSequence *, int>(this, hash); +} + +// Converted from thiscall void CAnimBlendSequence::SetName(char const *string) 0x4D0C50 +void CAnimBlendSequence::SetName(char const* string) { + plugin::CallMethod<0x4D0C50, CAnimBlendSequence *, char const*>(this, string); +} + +// Converted from thiscall void CAnimBlendSequence::SetNumFrames(int count,bool arg2,bool arg3,uchar *arg4) 0x4D0CD0 +void CAnimBlendSequence::SetNumFrames(int count, bool arg2, bool arg3, unsigned char* arg4) { + plugin::CallMethod<0x4D0CD0, CAnimBlendSequence *, int, bool, bool, unsigned char*>(this, count, arg2, arg3, arg4); +} + +// Converted from thiscall void CAnimBlendSequence::Uncompress(uchar *arg1) 0x4D0D40 +void CAnimBlendSequence::Uncompress(unsigned char* arg1) { + plugin::CallMethod<0x4D0D40, CAnimBlendSequence *, unsigned char*>(this, arg1); +} + +// Converted from thiscall void CAnimBlendSequence::~CAnimBlendSequence(void) 0x4D0C30 +CAnimBlendSequence::~CAnimBlendSequence() { + plugin::CallMethod<0x4D0C30, CAnimBlendSequence *>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendSequence.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendSequence.h new file mode 100644 index 00000000..5c1ea0e6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendSequence.h @@ -0,0 +1,33 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CAnimBlendSequence { +public: + unsigned int m_nHash; + unsigned short m_nFlags; + unsigned short m_nFrameCount; + void *m_pFrames; + + //funcs + CAnimBlendSequence(); + void CompressKeyframes(unsigned char* arg1); + int GetDataSize(bool arg1); + bool MoveMemorY(); + int RemoveQuaternionFlips(); + void RemoveUncompressedData(unsigned char* arg1); + void SetBoneTag(int hash); + void SetName(char const* string); + void SetNumFrames(int count, bool arg2, bool arg3, unsigned char* arg4); + void Uncompress(unsigned char* arg1); + ~CAnimBlendSequence(); + +}; + +VALIDATE_SIZE(CAnimBlendSequence, 0xC); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendStaticAssociation.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendStaticAssociation.cpp new file mode 100644 index 00000000..65b05f7a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendStaticAssociation.cpp @@ -0,0 +1,42 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAnimBlendStaticAssociation.h" + +PLUGIN_SOURCE_FILE + +int ctor_addr(CAnimBlendStaticAssociation) = ADDRESS_BY_VERSION(0x4CE940, 0, 0, 0, 0, 0); +int ctor_gaddr(CAnimBlendStaticAssociation) = GLOBAL_ADDRESS_BY_VERSION(0x4CE940, 0, 0, 0, 0, 0); + +int ctor_addr_o(CAnimBlendStaticAssociation, void(RpClump *, CAnimBlendHierarchy *)) = ADDRESS_BY_VERSION(0x4CEF60, 0, 0, 0, 0, 0); +int ctor_gaddr_o(CAnimBlendStaticAssociation, void(RpClump *, CAnimBlendHierarchy *)) = GLOBAL_ADDRESS_BY_VERSION(0x4CEF60, 0, 0, 0, 0, 0); + +int dtor_addr(CAnimBlendStaticAssociation) = ADDRESS_BY_VERSION(0x4CEC00, 0, 0, 0, 0, 0); +int dtor_gaddr(CAnimBlendStaticAssociation) = GLOBAL_ADDRESS_BY_VERSION(0x4CEC00, 0, 0, 0, 0, 0); + +int del_dtor_addr(CAnimBlendStaticAssociation) = ADDRESS_BY_VERSION(0x4CDF50, 0, 0, 0, 0, 0); +int del_dtor_gaddr(CAnimBlendStaticAssociation) = GLOBAL_ADDRESS_BY_VERSION(0x4CDF50, 0, 0, 0, 0, 0); + +int addrof(CAnimBlendStaticAssociation::AllocateSequenceArray) = ADDRESS_BY_VERSION(0x4CE960, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendStaticAssociation::AllocateSequenceArray) = GLOBAL_ADDRESS_BY_VERSION(0x4CE960, 0, 0, 0, 0, 0); + +void CAnimBlendStaticAssociation::AllocateSequenceArray(int count) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendStaticAssociation::AllocateSequenceArray), this, count); +} + +int addrof(CAnimBlendStaticAssociation::FreeSequenceArray) = ADDRESS_BY_VERSION(0x4CE9A0, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendStaticAssociation::FreeSequenceArray) = GLOBAL_ADDRESS_BY_VERSION(0x4CE9A0, 0, 0, 0, 0, 0); + +void CAnimBlendStaticAssociation::FreeSequenceArray() { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendStaticAssociation::FreeSequenceArray), this); +} + +int addrof(CAnimBlendStaticAssociation::Init) = ADDRESS_BY_VERSION(0x4CEC20, 0, 0, 0, 0, 0); +int gaddrof(CAnimBlendStaticAssociation::Init) = GLOBAL_ADDRESS_BY_VERSION(0x4CEC20, 0, 0, 0, 0, 0); + +void CAnimBlendStaticAssociation::Init(RpClump *clump, CAnimBlendHierarchy *hierarchy) { + plugin::CallMethodDynGlobal(gaddrof(CAnimBlendStaticAssociation::Init), this, clump, hierarchy); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendStaticAssociation.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendStaticAssociation.h new file mode 100644 index 00000000..9cac0428 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlendStaticAssociation.h @@ -0,0 +1,36 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" + +class CAnimBlendSequence; +class CAnimBlendHierarchy; + +class PLUGIN_API CAnimBlendStaticAssociation { + PLUGIN_NO_DEFAULT_CONSTRUCTION_VIRTUALBASE(CAnimBlendStaticAssociation) + +public: + unsigned short m_nNumBlendNodes; + short m_nAnimId; + unsigned short m_nAnimGroup; + unsigned short m_nFlags; + CAnimBlendSequence **m_pSequenceArray; + CAnimBlendHierarchy *m_pHeirarchy; + + // vtable function #0 (destructor) + + SUPPORTED_10US void AllocateSequenceArray(int count); + SUPPORTED_10US void FreeSequenceArray(); + SUPPORTED_10US void Init(RpClump *clump, CAnimBlendHierarchy *hierarchy); +}; + +VTABLE_DESC(CAnimBlendStaticAssociation, 0x85C6CC, 1); +VALIDATE_SIZE(CAnimBlendStaticAssociation, 0x14); + +#include "meta/meta.CAnimBlendStaticAssociation.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlock.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlock.h new file mode 100644 index 00000000..f6c9e2f4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimBlock.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CAnimBlock { +public: + + char szName[16]; + char bLoaded; + char pad; + short usRefs; + int startAnimation; + int animationCount; + int animationStyle; +}; + +VALIDATE_SIZE(CAnimBlock,0x20); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimManager.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimManager.cpp new file mode 100644 index 00000000..44f9e1a2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimManager.cpp @@ -0,0 +1,178 @@ +/* +Plugin-SDK (Grand Theft Auto) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CAnimManager.h" + + +CAnimationStyleDescriptor* CAnimManager::ms_aAnimAssocDefinitions = (CAnimationStyleDescriptor*)0x8AA5A8; +CAnimBlendAssocGroup* CAnimManager::ms_aAnimAssocGroups = (CAnimBlendAssocGroup*)0xB4EA34; +CAnimBlendHierarchy* CAnimManager::ms_aAnimations = (CAnimBlendHierarchy*)0xB4EA40; +CAnimBlock* CAnimManager::ms_aAnimBlocks = (CAnimBlock*)0xB5D4A0; +CAnimBlendHierarchy* CAnimManager::ms_animCache = (CAnimBlendHierarchy*)0xB5EB20; +int& CAnimManager::ms_numAnimAssocDefinitions = *(int*)0xB4EA28; +int& CAnimManager::ms_numAnimBlocks = *(int*)0xB4EA30; +int& CAnimManager::ms_numAnimations = *(int*)0xB4EA2C; + +// Converted from cdecl CAnimBlock* CAnimManager::GetAnimationBlock(char const* name) 0x4D3940 +CAnimBlock* CAnimManager::GetAnimationBlock(char const* name) { + return plugin::CallAndReturn(name); +} + +// Converted from cdecl int CAnimManager::GetAnimationBlockIndex(char const* name) 0x4D3990 +int CAnimManager::GetAnimationBlockIndex(char const* name) { + return plugin::CallAndReturn(name); +} + +// Converted from cdecl int CAnimManager::GetFirstAssocGroup(char const* basename) 0x4D39B0 +int CAnimManager::GetFirstAssocGroup(char const* basename) { + return plugin::CallAndReturn(basename); +} + +// Converted from cdecl CAnimBlendHierarchy* CAnimManager::GetAnimation(uint hash,CAnimBlock const* ifp) 0x4D39F0 +CAnimBlendHierarchy* CAnimManager::GetAnimation(unsigned int hash, CAnimBlock const* ifp) { + return plugin::CallAndReturn(hash, ifp); +} + +// Converted from cdecl CAnimBlendHierarchy* CAnimManager::GetAnimation(char const* animName,CAnimBlock const* ifp) 0x4D42F0 +CAnimBlendHierarchy* CAnimManager::GetAnimation(char const* animName, CAnimBlock const* ifp) { + return plugin::CallAndReturn(animName, ifp); +} + +// Converted from cdecl char* CAnimManager::GetAnimGroupName(int AssocGroupId) 0x4D3A20 +char* CAnimManager::GetAnimGroupName(int AssocGroupId) { + return plugin::CallAndReturn(AssocGroupId); +} + +// Converted from cdecl char* CAnimManager::GetAnimBlockName(int AssocGroupId) 0x4D3A30 +char* CAnimManager::GetAnimBlockName(int AssocGroupId) { + return plugin::CallAndReturn(AssocGroupId); +} + +// Converted from cdecl CAnimBlendAssociation* CAnimManager::CreateAnimAssociation(int AssocGroupId,int AnimationId) 0x4D3A40 +CAnimBlendAssociation* CAnimManager::CreateAnimAssociation(int AssocGroupId, int AnimationId) { + return plugin::CallAndReturn(AssocGroupId, AnimationId); +} + +// Converted from cdecl CAnimBlendStaticAssociation* CAnimManager::GetAnimAssociation(int AssocGroupId, int AnimationId) 0x4D3A60 +CAnimBlendStaticAssociation* CAnimManager::GetAnimAssociation(int AssocGroupId, int AnimationId) { + return plugin::CallAndReturn(AssocGroupId, AnimationId); +} + +// Converted from cdecl CAnimBlendStaticAssociation* CAnimManager::GetAnimAssociation(int AssocGroupId,char const* arg2) 0x4D3A80 +CAnimBlendStaticAssociation* CAnimManager::GetAnimAssociation(int AssocGroupId, char const* arg2) { + return plugin::CallAndReturn(AssocGroupId, arg2); +} + +// Converted from cdecl CAnimBlendAssociation* CAnimManager::AddAnimation(RpClump * clump,int AssocGroupId,int AnimationId) 0x4D3AA0 +CAnimBlendAssociation* CAnimManager::AddAnimation(RpClump* clump, int AssocGroupId, int AnimationId) { + return plugin::CallAndReturn(clump, AssocGroupId, AnimationId); +} + +// Converted from cdecl CAnimBlendAssociation* CAnimManager::AddAnimation(RpClump * clump,CAnimBlendHierarchy * pAnimBlendHier,int clumpAssocFlag) 0x4D4330 +CAnimBlendAssociation* CAnimManager::AddAnimation(RpClump* clump, CAnimBlendHierarchy* pAnimBlendHier, int clumpAssocFlag) { + return plugin::CallAndReturn(clump, pAnimBlendHier, clumpAssocFlag); +} + +// Converted from cdecl CAnimBlendAssociation* CAnimManager::AddAnimationAndSync(RpClump * clump,CAnimBlendAssociation * pAnimBlendAssoc,int AssocGroupId,int AnimationId) 0x4D3B30 +CAnimBlendAssociation* CAnimManager::AddAnimationAndSync(RpClump* clump, CAnimBlendAssociation* pAnimBlendAssoc, int AssocGroupId, int AnimationId) { + return plugin::CallAndReturn(clump, pAnimBlendAssoc, AssocGroupId, AnimationId); +} + +// Converted from cdecl CAnimationStyleDescriptor* CAnimManager::AddAnimAssocDefinition(char const* groupName,char const* blockName,uint arg3,uint animsCount,void* pAnimDescriptor) 0x4D3BA0 +CAnimationStyleDescriptor* CAnimManager::AddAnimAssocDefinition(char const* groupName, char const* blockName, unsigned int arg3, unsigned int animsCount, void* pAnimDescriptor) { + return plugin::CallAndReturn(groupName, blockName, arg3, animsCount, pAnimDescriptor); +} + +// Converted from cdecl void* CAnimManager::AddAnimToAssocDefinition(void* pAnimAssocDefinition,char const* arg2) 0x4D3C80 +void* CAnimManager::AddAnimToAssocDefinition(void* pAnimAssocDefinition, char const* arg2) { + return plugin::CallAndReturn(pAnimAssocDefinition, arg2); +} + +// Converted from cdecl void CAnimManager::CreateAnimAssocGroups(void) 0x4D3CC0 +void CAnimManager::CreateAnimAssocGroups() { + plugin::Call<0x4D3CC0>(); +} + +// Converted from cdecl int CAnimManager::RegisterAnimBlock(char const* name) 0x4D3E50 +int CAnimManager::RegisterAnimBlock(char const* name) { + return plugin::CallAndReturn(name); +} + +// Converted from cdecl void CAnimManager::RemoveLastAnimFile(void) 0x4D3ED0 +void CAnimManager::RemoveLastAnimFile() { + plugin::Call<0x4D3ED0>(); +} + +// Converted from cdecl void CAnimManager::RemoveAnimBlock(int index) 0x4D3F40 +void CAnimManager::RemoveAnimBlock(int index) { + plugin::Call<0x4D3F40, int>(index); +} + +// Converted from cdecl void CAnimManager::AddAnimBlockRef(int index) 0x4D3FB0 +void CAnimManager::AddAnimBlockRef(int index) { + plugin::Call<0x4D3FB0, int>(index); +} + +// Converted from cdecl void CAnimManager::RemoveAnimBlockRef(int index) 0x4D3FD0 +void CAnimManager::RemoveAnimBlockRef(int index) { + plugin::Call<0x4D3FD0, int>(index); +} + +// Converted from cdecl void CAnimManager::RemoveAnimBlockRefWithoutDelete(int index) 0x4D3FF0 +void CAnimManager::RemoveAnimBlockRefWithoutDelete(int index) { + plugin::Call<0x4D3FF0, int>(index); +} + +// Converted from cdecl int CAnimManager::GetNumRefsToAnimBlock(int index) 0x4D4010 +int CAnimManager::GetNumRefsToAnimBlock(int index) { + return plugin::CallAndReturn(index); +} + +// Converted from cdecl void CAnimManager::Shutdown(void) 0x4D4130 +void CAnimManager::Shutdown() { + plugin::Call<0x4D4130>(); +} + +// Converted from cdecl void CAnimManager::UncompressAnimation(CAnimBlendHierarchy * pAnimBlendHier) 0x4D41C0 +void CAnimManager::UncompressAnimation(CAnimBlendHierarchy* pAnimBlendHier) { + plugin::Call<0x4D41C0, CAnimBlendHierarchy*>(pAnimBlendHier); +} + +// Converted from cdecl void CAnimManager::RemoveFromUncompressedCache(CAnimBlendHierarchy *pAnimBlendHier) 0x4D42A0 +void CAnimManager::RemoveFromUncompressedCache(CAnimBlendHierarchy* pAnimBlendHier) { + plugin::Call<0x4D42A0, CAnimBlendHierarchy*>(pAnimBlendHier); +} + +// Converted from cdecl CAnimBlendAssociation* CAnimManager::BlendAnimation(RpClump * clump,CAnimBlendHierarchy *pAnimBlendHier,int flags,float clumpAssocBlendData) 0x4D4410 +CAnimBlendAssociation* CAnimManager::BlendAnimation(RpClump* clump, CAnimBlendHierarchy* pAnimBlendHier, int flags, float clumpAssocBlendData) { + return plugin::CallAndReturn(clump, pAnimBlendHier, flags, clumpAssocBlendData); +} + +// Converted from cdecl CAnimBlendAssociation* CAnimManager::BlendAnimation(RpClump * clump,int AssocGroupId,int AnimationId,float clumpAssocBlendData) 0x4D4610 +CAnimBlendAssociation* CAnimManager::BlendAnimation(RpClump* clump, int AssocGroupId, int AnimationId, float clumpAssocBlendData) { + return plugin::CallAndReturn(clump, AssocGroupId, AnimationId, clumpAssocBlendData); +} + +// Converted from cdecl void CAnimManager::LoadAnimFile(RwStream * stream,bool arg1,char const* string) 0x4D47F0 +void CAnimManager::LoadAnimFile(RwStream* stream, bool arg1, char const(*string)[32]) { + plugin::Call<0x4D47F0, RwStream*, bool, char const(*)[32]>(stream, arg1, string); +} + +// Converted from cdecl void CAnimManager::LoadAnimFiles(void) 0x4D5620 +void CAnimManager::LoadAnimFiles() { + plugin::Call<0x4D5620>(); +} + +// Converted from cdecl void CAnimManager::ReadAnimAssociationDefinitions(void) 0x5BC910 +void CAnimManager::ReadAnimAssociationDefinitions() { + plugin::Call<0x5BC910>(); +} + +// Converted from cdecl void CAnimManager::Initialise(void) 0x5BF6B0 +void CAnimManager::Initialise() { + plugin::Call<0x5BF6B0>(); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimManager.h new file mode 100644 index 00000000..4423792b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimManager.h @@ -0,0 +1,61 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAnimationStyleDescriptor.h" +#include "CAnimBlendAssocGroup.h" +#include "CAnimBlendAssociation.h" +#include "CAnimBlock.h" + + +class PLUGIN_API CAnimManager { +public: + static CAnimBlock* GetAnimationBlock(char const* name); + static int GetAnimationBlockIndex(char const* name); + static int GetFirstAssocGroup(char const* basename); + static CAnimBlendHierarchy* GetAnimation(unsigned int hash, CAnimBlock const* ifp); + static CAnimBlendHierarchy* GetAnimation(char const* animName, CAnimBlock const* ifp); + static char* GetAnimGroupName(int AssocGroupId); + static char* GetAnimBlockName(int AssocGroupId); + static CAnimBlendAssociation* CreateAnimAssociation(int AssocGroupId, int AnimationId); + static CAnimBlendStaticAssociation* GetAnimAssociation(int AssocGroupId, int AnimationId); + static CAnimBlendStaticAssociation* GetAnimAssociation(int AssocGroupId, char const* arg2); + static CAnimBlendAssociation* AddAnimation(RpClump* clump, int AssocGroupId, int AnimationId); + static CAnimBlendAssociation* AddAnimation(RpClump* clump, CAnimBlendHierarchy* pAnimBlendHier, int clumpAssocFlag); + static CAnimBlendAssociation* AddAnimationAndSync(RpClump* clump, CAnimBlendAssociation* pAnimBlendAssoc, int AssocGroupId, int AnimationId); + static CAnimationStyleDescriptor* AddAnimAssocDefinition(char const* groupName, char const* blockName, unsigned int arg3, unsigned int animsCount, void* pAnimDescriptor); + static void* AddAnimToAssocDefinition(void* pAnimAssocDefinition, char const* arg2); + static void CreateAnimAssocGroups(); + static int RegisterAnimBlock(char const* name); + static void RemoveLastAnimFile(); + static void RemoveAnimBlock(int index); + static void AddAnimBlockRef(int index); + static void RemoveAnimBlockRef(int index); + static void RemoveAnimBlockRefWithoutDelete(int index); + static int GetNumRefsToAnimBlock(int index); + static void Shutdown(); + static void UncompressAnimation(CAnimBlendHierarchy* pAnimBlendHier); + static void RemoveFromUncompressedCache(CAnimBlendHierarchy* pAnimBlendHier); + static CAnimBlendAssociation* BlendAnimation(RpClump* clump, CAnimBlendHierarchy* pAnimBlendHier, int flags, float clumpAssocBlendData); + static CAnimBlendAssociation* BlendAnimation(RpClump* clump, int AssocGroupId, int AnimationId, float clumpAssocBlendData); + static void LoadAnimFile(RwStream* stream, bool arg1, char const(*string)[32]); + static void LoadAnimFiles(); + static void ReadAnimAssociationDefinitions(); + static void Initialise(); + + + static CAnimationStyleDescriptor* ms_aAnimAssocDefinitions; // CAnimationStyleDescriptor CAnimManager__ms_aAnimAssocDefinitions[118]; + static CAnimBlendAssocGroup* ms_aAnimAssocGroups; + static CAnimBlendHierarchy* ms_aAnimations; // CAnimBlendHierarchy CAnimManager__ms_aAnimations[2500]; + static CAnimBlock* ms_aAnimBlocks; // CAnimBlock CAnimManager__ms_aAnimBlocks[180]; + static CAnimBlendHierarchy* ms_animCache; + static int& ms_numAnimAssocDefinitions; + static int& ms_numAnimBlocks; + static int& ms_numAnimations; + +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimatedBuilding.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimatedBuilding.cpp new file mode 100644 index 00000000..35042517 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimatedBuilding.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAnimatedBuilding.h" + +// Converted from thiscall void CAnimatedBuilding::CAnimatedBuilding(void) 0x537A10 +CAnimatedBuilding::CAnimatedBuilding() : CBuilding(plugin::dummy) { + plugin::CallMethod<0x537A10, CAnimatedBuilding *>(this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimatedBuilding.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimatedBuilding.h new file mode 100644 index 00000000..3a485650 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimatedBuilding.h @@ -0,0 +1,18 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CBuilding.h" + +class CAnimatedBuilding : public CBuilding { +protected: + CAnimatedBuilding(plugin::dummy_func_t) : CBuilding(plugin::dummy) {} +public: + CAnimatedBuilding(); +}; + +VALIDATE_SIZE(CAnimatedBuilding, 0x38); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAnimationStyleDescriptor.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimationStyleDescriptor.h new file mode 100644 index 00000000..2ce14bc5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAnimationStyleDescriptor.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CAnimationStyleDescriptor { +public: + char groupName[16]; + char blockName[16]; + int field_20; + int animsCount; + void *animNames; + void *animDesc; +}; + +VALIDATE_SIZE(CAnimationStyleDescriptor, 0x30); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAtomicModelInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAtomicModelInfo.cpp new file mode 100644 index 00000000..2255a71a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAtomicModelInfo.cpp @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAtomicModelInfo.h" + +void CAtomicModelInfo::SetAtomic(RpAtomic *atomic) +{ + ((void (__thiscall *)(CAtomicModelInfo *, RpAtomic *))plugin::GetVMT(this, 15))(this, atomic); +} + +RpAtomic *CAtomicModelInfo::GetAtomicFromDistance(float distance) +{ + return ((RpAtomic *(__thiscall *)(CAtomicModelInfo *, float))0x4C44B0)(this, distance); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAtomicModelInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAtomicModelInfo.h new file mode 100644 index 00000000..23dee209 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAtomicModelInfo.h @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CBaseModelInfo.h" + +class PLUGIN_API CAtomicModelInfo : public CBaseModelInfo { +public: + // vtable + + void SetAtomic(struct RpAtomic *atomic); + + struct RpAtomic *GetAtomicFromDistance(float distance); +}; + +VALIDATE_SIZE(CAtomicModelInfo, 0x20); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAttractorScanner.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAttractorScanner.h new file mode 100644 index 00000000..d58f334e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAttractorScanner.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskTimer.h" +#include "C2dEffect.h" + +class PLUGIN_API CAttractorScanner { +public: + char field_0; + char _pad[3]; + CTaskTimer field_4; + C2dEffect *m_pEffectInUse; + int field_14; + int field_18[10]; + int field_40[10]; + int field_68[10]; +}; + +VALIDATE_SIZE(CAttractorScanner, 0x90); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAudioEngine.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAudioEngine.cpp new file mode 100644 index 00000000..a08c8693 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAudioEngine.cpp @@ -0,0 +1,99 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CAudioEngine.h" + +CAudioEngine& AudioEngine = *(CAudioEngine*)0xB6BC90; + +void CAudioEngine::Initialise() { + plugin::CallMethod<0x5B9C60, CAudioEngine*>(this); +} + +void CAudioEngine::Restart() { + plugin::CallMethod<0x506DB0, CAudioEngine*>(this); +} + +void CAudioEngine::Shutdown() { + plugin::CallMethod<0x507CB0, CAudioEngine*>(this); +} + +void CAudioEngine::SetEffectsMasterVolume(char volume) { + plugin::CallMethod<0x506E10, CAudioEngine*, char>(this, volume); +} + +void CAudioEngine::SetMusicMasterVolume(char volume) { + plugin::CallMethod<0x506DE0, CAudioEngine*, char>(this, volume); +} + +void CAudioEngine::SetBassEnhanceOnOff(bool on) { + plugin::CallMethod<0x506F90, CAudioEngine*, bool>(this, on); +} + +void CAudioEngine::SetRadioAutoRetuneOnOff(bool on) { + plugin::CallMethod<0x506F80, CAudioEngine*, bool>(this, on); +} + +void CAudioEngine::RetuneRadio(char stationId) { + plugin::CallMethod<0x507E10, CAudioEngine*, char>(this, stationId); +} + +CReference* CAudioEngine::ReportFrontendAudioEvent(int id, float volume, float speed) { + return plugin::CallMethodAndReturn(this, id, volume, speed); +} + + +void CAudioEngine::ReportMissionAudioEvent(eAudioEvents audioEvent, CVector const* coords) { + plugin::CallMethod<0x507340, CAudioEngine*, eAudioEvents,CVector const*>(this,audioEvent,coords); +} + +void CAudioEngine::Service() { + plugin::CallMethod<0x507750, CAudioEngine*>(this); +} + +void CAudioEngine::ServiceLoadingTune(float fade) { + plugin::CallMethod<0x5078A0, CAudioEngine*, float>(this, fade); +} + +void CAudioEngine::StartRadio(int radioStation, char arg) { + plugin::CallMethod<0x507DC0, CAudioEngine*, int, char>(this, radioStation, arg); +} + +void CAudioEngine::StopRadio(tVehicleAudioSettings* settings, bool arg) { + plugin::CallMethod<0x506F70, CAudioEngine*, tVehicleAudioSettings*, bool>(this, settings, arg); +} + +bool CAudioEngine::IsRadioRetuneInProgress() { + return plugin::CallMethodAndReturn(this); +} + +bool CAudioEngine::IsLoadingTuneActive() { + return plugin::CallMethodAndReturn(this); +} + +bool CAudioEngine::IsRadioOn() { + return plugin::CallMethodAndReturn(this); +} + +bool CAudioEngine::IsAmbienceTrackActive() { + return plugin::CallMethodAndReturn(this); +} + +bool CAudioEngine::StartLoadingTune() { + return plugin::CallMethodAndReturn(this); +} + +char CAudioEngine::GetCurrentRadioStationID() { + return plugin::CallMethodAndReturn(this); +} + +bool CAudioEngine::IsVehicleRadioActive() { + return plugin::CallMethodAndReturn(this); +} + +void CAudioEngine::InitialisePostLoading() { + plugin::CallMethod<0x5078F0, CAudioEngine*>(this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAudioEngine.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAudioEngine.h new file mode 100644 index 00000000..2e85fb5d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAudioEngine.h @@ -0,0 +1,67 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#pragma once +#include "PluginBase.h" +#include "CAEFrontendAudioEntity.h" +#include "CAEPedlessSpeechAudioEntity.h" +#include "CAETwinLoopSoundEntity.h" +#include "CAEScriptAudioEntity.h" +#include "CAECollisionAudioEntity.h" +#include "CAEVehicleAudioEntity.h" +#include "eAudioEvents.h" + +class PLUGIN_API CAudioEngine { +public: + char field_0; + char field_1; + char m_nCurrentRadiostationId; + char field_3; + int field_4; + char field_8[152]; + char field_A0; + char field_A1[15]; + char field_B0; + char field_B1[3]; + CAEFrontendAudioEntity m_FrontendAudio; + CAETwinLoopSoundEntity field_150; + CAETwinLoopSoundEntity field_1F8; + CAEScriptAudioEntity m_scriptAudio; + CAECollisionAudioEntity m_collisionAudio; + int m_pWeaponAudio; + CAEPedlessSpeechAudioEntity m_pedlessSpeechAudio; + char field_1F38[24]; + CAEDoorAudioEntity m_doorAudio; + +public: + void Initialise(); + void Restart(); + void Shutdown(); + void SetEffectsMasterVolume(char volume); + void SetMusicMasterVolume(char volume); + void SetBassEnhanceOnOff(bool on); + void SetRadioAutoRetuneOnOff(bool on); + void RetuneRadio(char stationId); + CReference* ReportFrontendAudioEvent(int id, float volume, float speed); + void ReportMissionAudioEvent(eAudioEvents audioEvent, CVector const* coords); + void Service(); + void ServiceLoadingTune(float fade); + void StartRadio(int radioStation, char arg); + void StopRadio(tVehicleAudioSettings* settings, bool arg); + bool IsRadioRetuneInProgress(); + bool IsLoadingTuneActive(); + bool IsRadioOn(); + bool IsAmbienceTrackActive(); + bool StartLoadingTune(); + char GetCurrentRadioStationID(); + bool IsVehicleRadioActive(); + void InitialisePostLoading(); +}; + +VALIDATE_SIZE(CAudioEngine, 0x1FD8); + +extern CAudioEngine& AudioEngine; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAudioLink.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAudioLink.cpp new file mode 100644 index 00000000..c8294353 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAudioLink.cpp @@ -0,0 +1,8 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CAudioLink.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAudioLink.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAudioLink.h new file mode 100644 index 00000000..43841ca3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAudioLink.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#pragma once +#include "PluginBase.h" +#include "CVector.h" +#include "CEntity.h" + +class PLUGIN_API CAudioLink { +public: + CVector m_vPosition; + CEntity* m_pEntity; + int field_10; + int m_nAudioEvent; + int m_nBankId; + int m_nBankSlotId; +}; + +VALIDATE_SIZE(CAudioLink, 0x20); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAutoPilot.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAutoPilot.h new file mode 100644 index 00000000..33d56edd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAutoPilot.h @@ -0,0 +1,77 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" +#include "CPathFind.h" +#include "eCarMission.h" + +enum eCarDrivingStyle : char +{ + DRIVINGSTYLE_STOP_FOR_CARS, + DRIVINGSTYLE_SLOW_DOWN_FOR_CARS, + DRIVINGSTYLE_AVOID_CARS, + DRIVINGSTYLE_PLOUGH_THROUGH, + DRIVINGSTYLE_STOP_FOR_CARS_IGNORE_LIGHTS +}; + +class PLUGIN_API CAutoPilot { +public: + CNodeAddress m_currentAddress; + CNodeAddress m_startingRouteNode; + CNodeAddress field_8; + int field_C; + unsigned int m_nSpeedScaleFactor; + CCarPathLinkAddress m_nCurrentPathNodeInfo; + CCarPathLinkAddress m_nNextPathNodeInfo; + CCarPathLinkAddress m_nPreviousPathNodeInfo; + char field_1A[2]; + unsigned int m_nTimeToStartMission; + unsigned int m_nTimeSwitchedToRealPhysics; + char field_24; + char _smthCurr; + char _smthNext; + char m_nCurrentLane; + char m_nNextLane; + eCarDrivingStyle m_nCarDrivingStyle; + eCarMission m_nCarMission; + char m_nTempAction; + unsigned int m_nTempActionTime; + unsigned int _someStartTime; + char field_34; + char field_35; + char field_36[2]; + float field_38; + float m_fMaxTrafficSpeed; + char m_nCruiseSpeed; + char field_41; + char field_42[2]; + float field_44; + char field_48[1]; + char heliThrustPower; + char field_4A; + unsigned char m_nCarCtrlFlags; + char field_4C; + char m_nStraightLineDistance; + char field_4E; + char field_4F; + char field_50; + char field_51; + char field_52[10]; + CVector m_vecDestinationCoors; + CNodeAddress m_aPathFindNodesInfo[8]; + unsigned short m_nPathFindNodesCount; + char field_8A[2]; + class CVehicle *m_pTargetCar; + class CEntity *m_pCarWeMakingSlowDownFor; + char field_94; + char field_95; + short field_96; +}; + +VALIDATE_SIZE(CAutoPilot, 0x98); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAutomobile.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CAutomobile.cpp new file mode 100644 index 00000000..f91fe497 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAutomobile.cpp @@ -0,0 +1,430 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CAutomobile.h" + +bool &CAutomobile::m_sAllTaxiLights = *(bool *)0xC1BFD0; +CVector &CAutomobile::vecHunterGunPos = *(CVector *)0x8D3394; +CMatrix *CAutomobile::matW2B = (CMatrix *)0xC1C220; +CColPoint *aAutomobileColPoints = (CColPoint *)0xC1BFF8; + +CAutomobile::CAutomobile(int modelIndex, unsigned char createdBy, bool setupSuspensionLines) : CVehicle(plugin::dummy) { + ((void(__thiscall *)(CAutomobile*, int, unsigned char, bool))0x6B0A90)(this, modelIndex, createdBy, setupSuspensionLines); +} + +// Converted from void CAutomobile::ProcessAI(uint &) 0x0 +bool CAutomobile::ProcessAI(unsigned int& arg0) +{ + return ((bool(__thiscall *)(CAutomobile*, unsigned int&))(*(void ***)this)[66])(this, arg0); +} + +// Converted from void CAutomobile::ResetSuspension(void) 0x0 +void CAutomobile::ResetSuspension() +{ + ((void(__thiscall *)(CAutomobile*))(*(void ***)this)[67])(this); +} + +// Converted from void CAutomobile::ProcessFlyingCarStuff(void) 0x0 +void CAutomobile::ProcessFlyingCarStuff() +{ + ((void(__thiscall *)(CAutomobile*))(*(void ***)this)[68])(this); +} + +// Converted from void CAutomobile::DoHoverSuspensionRatios(void) 0x0 +void CAutomobile::DoHoverSuspensionRatios() +{ + ((void(__thiscall *)(CAutomobile*))(*(void ***)this)[69])(this); +} + +// Converted from void CAutomobile::ProcessSuspension(void) 0x0 +void CAutomobile::ProcessSuspension() +{ + ((void(__thiscall *)(CAutomobile*))(*(void ***)this)[70])(this); +} + +// Converted from thiscall void CAutomobile::SetupModelNodes(void) 0x6A0770 +void CAutomobile::SetupModelNodes() +{ + ((void(__thiscall *)(CAutomobile*))0x6A0770)(this); +} + +// Converted from thiscall void CAutomobile::HydraulicControl(void) 0x6A07A0 +void CAutomobile::HydraulicControl() +{ + ((void(__thiscall *)(CAutomobile*))0x6A07A0)(this); +} + +// Converted from thiscall bool CAutomobile::UpdateMovingCollision(float angle) 0x6A1460 +bool CAutomobile::UpdateMovingCollision(float angle) +{ + return ((bool(__thiscall *)(CAutomobile*, float))0x6A1460)(this, angle); +} + +// Converted from thiscall float CAutomobile::GetMovingCollisionOffset(void) 0x6A2150 +float CAutomobile::GetMovingCollisionOffset() +{ + return ((float(__thiscall *)(CAutomobile*))0x6A2150)(this); +} + +// Converted from thiscall void CAutomobile::TellHeliToGoToCoors(float x, float y, float z, float altitudeMin, float altitudeMax) 0x6A2390 +void CAutomobile::TellHeliToGoToCoors(float x, float y, float z, float altitudeMin, float altitudeMax) +{ + ((void(__thiscall *)(CAutomobile*, float, float, float, float, float))0x6A2390)(this, x, y, z, altitudeMin, altitudeMax); +} + +// Converted from thiscall void CAutomobile::SetHeliOrientation(float angle) 0x6A2450 +void CAutomobile::SetHeliOrientation(float angle) +{ + ((void(__thiscall *)(CAutomobile*, float))0x6A2450)(this, angle); +} + +// Converted from thiscall void CAutomobile::ClearHeliOrientation(void) 0x6A2460 +void CAutomobile::ClearHeliOrientation() +{ + ((void(__thiscall *)(CAutomobile*))0x6A2460)(this); +} + +// Converted from thiscall void CAutomobile::TellPlaneToGoToCoors(float x, float y, float z, float altitudeMin, float altitudeMax) 0x6A2470 +void CAutomobile::TellPlaneToGoToCoors(float x, float y, float z, float altitudeMin, float altitudeMax) +{ + ((void(__thiscall *)(CAutomobile*, float, float, float, float, float))0x6A2470)(this, x, y, z, altitudeMin, altitudeMax); +} + +// Converted from thiscall void CAutomobile::HideAllComps(void) 0x6A2510 +void CAutomobile::HideAllComps() +{ + ((void(__thiscall *)(CAutomobile*))0x6A2510)(this); +} + +// Converted from thiscall void CAutomobile::ShowAllComps(void) 0x6A2520 +void CAutomobile::ShowAllComps() +{ + ((void(__thiscall *)(CAutomobile*))0x6A2520)(this); +} + +// Converted from thiscall void CAutomobile::SetRandomDamage(bool) 0x6A2530 +void CAutomobile::SetRandomDamage(bool arg0) +{ + ((void(__thiscall *)(CAutomobile*, bool))0x6A2530)(this, arg0); +} + +// Converted from thiscall void CAutomobile::SetTotalDamage(bool) 0x6A27F0 +void CAutomobile::SetTotalDamage(bool arg0) +{ + ((void(__thiscall *)(CAutomobile*, bool))0x6A27F0)(this, arg0); +} + +// Converted from cdecl RpMaterial* DisableMatFx(RpMaterial *material, void *data) 0x6A2980 +RpMaterial* DisableMatFx(RpMaterial* material, void* data) +{ + return ((RpMaterial*(__cdecl *)(RpMaterial*, void*))0x6A2980)(material, data); +} + +// Converted from thiscall void CAutomobile::ReduceHornCounter(void) 0x6A29A0 +void CAutomobile::ReduceHornCounter() +{ + ((void(__thiscall *)(CAutomobile*))0x6A29A0)(this); +} + +// Converted from thiscall void CAutomobile::CustomCarPlate_BeforeRenderingStart(CVehicleModelInfo *model) 0x6A2F00 +void CAutomobile::CustomCarPlate_BeforeRenderingStart(CVehicleModelInfo* model) +{ + ((void(__thiscall *)(CAutomobile*, CVehicleModelInfo*))0x6A2F00)(this, model); +} + +// Converted from thiscall void CAutomobile::CustomCarPlate_AfterRenderingStop(CVehicleModelInfo *model) 0x6A2F30 +void CAutomobile::CustomCarPlate_AfterRenderingStop(CVehicleModelInfo* model) +{ + ((void(__thiscall *)(CAutomobile*, CVehicleModelInfo*))0x6A2F30)(this, model); +} + +// Converted from thiscall bool CAutomobile::GetAllWheelsOffGround(void) 0x6A2F70 +bool CAutomobile::GetAllWheelsOffGround() +{ + return ((bool(__thiscall *)(CAutomobile*))0x6A2F70)(this); +} + +// Converted from thiscall void CAutomobile::DebugCode(void) 0x6A2F80 +void CAutomobile::DebugCode() +{ + ((void(__thiscall *)(CAutomobile*))0x6A2F80)(this); +} + +// Converted from thiscall void CAutomobile::FixTyre(eWheels wheel) 0x6A3580 +void CAutomobile::FixTyre(eWheels wheel) +{ + ((void(__thiscall *)(CAutomobile*, eWheels))0x6A3580)(this, wheel); +} + +// Converted from thiscall void CAutomobile::FixDoor(int nodeIndex, eDoors door) 0x6A35A0 +void CAutomobile::FixDoor(int nodeIndex, eDoors door) +{ + ((void(__thiscall *)(CAutomobile*, int, eDoors))0x6A35A0)(this, nodeIndex, door); +} + +// Converted from thiscall void CAutomobile::FixPanel(int nodeIndex, ePanels panel) 0x6A3670 +void CAutomobile::FixPanel(int nodeIndex, ePanels panel) +{ + ((void(__thiscall *)(CAutomobile*, int, ePanels))0x6A3670)(this, nodeIndex, panel); +} + +// Converted from thiscall void CAutomobile::SetTaxiLight(bool enable) 0x6A3740 +void CAutomobile::SetTaxiLight(bool enable) +{ + ((void(__thiscall *)(CAutomobile*, bool))0x6A3740)(this, enable); +} + +// Converted from cdecl void CAutomobile::SetAllTaxiLights(bool) 0x6A3760 +void CAutomobile::SetAllTaxiLights(bool arg0) +{ + ((void(__cdecl *)(bool))0x6A3760)(arg0); +} + +// Converted from thiscall void CAutomobile::PlayHornIfNecessary(void) 0x6A3820 +void CAutomobile::PlayHornIfNecessary() +{ + ((void(__thiscall *)(CAutomobile*))0x6A3820)(this); +} + +// Converted from thiscall void CAutomobile::SetBusDoorTimer(uint time, uchar) 0x6A3860 +void CAutomobile::SetBusDoorTimer(unsigned int time, unsigned char arg1) +{ + ((void(__thiscall *)(CAutomobile*, unsigned int, unsigned char))0x6A3860)(this, time, arg1); +} + +// Converted from thiscall void CAutomobile::ProcessAutoBusDoors(void) 0x6A38A0 +void CAutomobile::ProcessAutoBusDoors() +{ + ((void(__thiscall *)(CAutomobile*))0x6A38A0)(this); +} + +// Converted from thiscall void CAutomobile::BoostJumpControl(void) 0x6A3A60 +void CAutomobile::BoostJumpControl() +{ + ((void(__thiscall *)(CAutomobile*))0x6A3A60)(this); +} + +// Converted from thiscall void CAutomobile::DoNitroEffect(float state) 0x6A3BD0 +void CAutomobile::DoNitroEffect(float state) +{ + ((void(__thiscall *)(CAutomobile*, float))0x6A3BD0)(this, state); +} + +// Converted from thiscall void CAutomobile::StopNitroEffect(void) 0x6A3E60 +void CAutomobile::StopNitroEffect() +{ + ((void(__thiscall *)(CAutomobile*))0x6A3E60)(this); +} + +// Converted from thiscall void CAutomobile::NitrousControl(signed char) 0x6A3EA0 +void CAutomobile::NitrousControl(signed char arg0) +{ + ((void(__thiscall *)(CAutomobile*, signed char))0x6A3EA0)(this, arg0); +} + +// Converted from thiscall void CAutomobile::TowTruckControl(void) 0x6A40F0 +void CAutomobile::TowTruckControl() +{ + ((void(__thiscall *)(CAutomobile*))0x6A40F0)(this); +} + +// Converted from thiscall CPed* CAutomobile::KnockPedOutCar(eWeaponType, ushort, CPed *) 0x6A44C0 +CPed* CAutomobile::KnockPedOutCar(eWeaponType arg0, unsigned short arg1, CPed* arg2) +{ + return ((CPed* (__thiscall *)(CAutomobile*, eWeaponType, unsigned short, CPed*))0x6A44C0)(this, arg0, arg1, arg2); +} + +// Converted from thiscall void CAutomobile::PopBootUsingPhysics(void) 0x6A44D0 +void CAutomobile::PopBootUsingPhysics() +{ + ((void(__thiscall *)(CAutomobile*))0x6A44D0)(this); +} + +// Converted from thiscall void CAutomobile::CloseAllDoors(void) 0x6A4520 +void CAutomobile::CloseAllDoors() +{ + ((void(__thiscall *)(CAutomobile*))0x6A4520)(this); +} + +// Converted from thiscall void CAutomobile::DoSoftGroundResistance(uint &) 0x6A4AF0 +void CAutomobile::DoSoftGroundResistance(unsigned int& arg0) +{ + ((void(__thiscall *)(CAutomobile*, unsigned int&))0x6A4AF0)(this, arg0); +} + +// Converted from thiscall void CAutomobile::ProcessCarWheelPair(int, int, float, CVector *, CVector *, float, float, float, bool) 0x6A4EC0 +void CAutomobile::ProcessCarWheelPair(int arg0, int arg1, float arg2, CVector* arg3, CVector* arg4, float arg5, float arg6, float arg7, bool arg8) +{ + ((void(__thiscall *)(CAutomobile*, int, int, float, CVector*, CVector*, float, float, float, bool))0x6A4EC0)(this, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); +} + +// Converted from thiscall float CAutomobile::GetCarRoll(void) 0x6A6010 +float CAutomobile::GetCarRoll() +{ + return ((float(__thiscall *)(CAutomobile*))0x6A6010)(this); +} + +// Converted from thiscall float CAutomobile::GetCarPitch(void) 0x6A6050 +float CAutomobile::GetCarPitch() +{ + return ((float(__thiscall *)(CAutomobile*))0x6A6050)(this); +} + +// Converted from thiscall bool CAutomobile::IsInAir(void) 0x6A6140 +bool CAutomobile::IsInAir() +{ + return ((bool(__thiscall *)(CAutomobile*))0x6A6140)(this); +} + +// Converted from thiscall void CAutomobile::dmgDrawCarCollidingParticles(CVector const& position, float force, eWeaponType weapon) 0x6A6DC0 +void CAutomobile::dmgDrawCarCollidingParticles(CVector const& position, float force, eWeaponType weapon) +{ + ((void(__thiscall *)(CAutomobile*, CVector const&, float, eWeaponType))0x6A6DC0)(this, position, force, weapon); +} + +// Converted from thiscall void CAutomobile::ProcessCarOnFireAndExplode(uchar) 0x6A7090 +void CAutomobile::ProcessCarOnFireAndExplode(unsigned char arg0) +{ + ((void(__thiscall *)(CAutomobile*, unsigned char))0x6A7090)(this, arg0); +} + +// Converted from thiscall CObject* CAutomobile::SpawnFlyingComponent(int nodeIndex, uint collisionType) 0x6A8580 +CObject* CAutomobile::SpawnFlyingComponent(int nodeIndex, unsigned int collisionType) +{ + return ((CObject* (__thiscall *)(CAutomobile*, int, unsigned int))0x6A8580)(this, nodeIndex, collisionType); +} + +// Converted from thiscall void CAutomobile::ProcessBuoyancy(void) 0x6A8C00 +void CAutomobile::ProcessBuoyancy() +{ + ((void(__thiscall *)(CAutomobile*))0x6A8C00)(this); +} + +// Converted from thiscall void CAutomobile::ProcessHarvester(void) 0x6A9680 +void CAutomobile::ProcessHarvester() +{ + ((void(__thiscall *)(CAutomobile*))0x6A9680)(this); +} + +// Converted from thiscall void CAutomobile::ProcessSwingingDoor(int nodeIndex, eDoors door) 0x6A9D70 +void CAutomobile::ProcessSwingingDoor(int nodeIndex, eDoors door) +{ + ((void(__thiscall *)(CAutomobile*, int, eDoors))0x6A9D70)(this, nodeIndex, door); +} + +// Converted from thiscall CObject* CAutomobile::RemoveBonnetInPedCollision(void) 0x6AA200 +CObject* CAutomobile::RemoveBonnetInPedCollision() +{ + return ((CObject* (__thiscall *)(CAutomobile*))0x6AA200)(this); +} + +// Converted from thiscall void CAutomobile::UpdateWheelMatrix(int nodeIndex, int flags) 0x6AA290 +void CAutomobile::UpdateWheelMatrix(int nodeIndex, int flags) +{ + ((void(__thiscall *)(CAutomobile*, int, int))0x6AA290)(this, nodeIndex, flags); +} + +// Converted from thiscall void CAutomobile::PopDoor(int nodeIndex, eDoors door, bool showVisualEffect) 0x6ADEF0 +void CAutomobile::PopDoor(int nodeIndex, eDoors door, bool showVisualEffect) +{ + ((void(__thiscall *)(CAutomobile*, int, eDoors, bool))0x6ADEF0)(this, nodeIndex, door, showVisualEffect); +} + +// Converted from thiscall void CAutomobile::PopPanel(int nodeIndex, ePanels panel, bool showVisualEffect) 0x6ADF80 +void CAutomobile::PopPanel(int nodeIndex, ePanels panel, bool showVisualEffect) +{ + ((void(__thiscall *)(CAutomobile*, int, ePanels, bool))0x6ADF80)(this, nodeIndex, panel, showVisualEffect); +} + +// Converted from thiscall void CAutomobile::ScanForCrimes(void) 0x6ADFF0 +void CAutomobile::ScanForCrimes() +{ + ((void(__thiscall *)(CAutomobile*))0x6ADFF0)(this); +} + +// Converted from thiscall void CAutomobile::TankControl(void) 0x6AE850 +void CAutomobile::TankControl() +{ + ((void(__thiscall *)(CAutomobile*))0x6AE850)(this); +} + +// Converted from thiscall void CAutomobile::BlowUpCarsInPath(void) 0x6AF110 +void CAutomobile::BlowUpCarsInPath() +{ + ((void(__thiscall *)(CAutomobile*))0x6AF110)(this); +} + +// Converted from thiscall void CAutomobile::PlaceOnRoadProperly(void) 0x6AF420 +void CAutomobile::PlaceOnRoadProperly() +{ + ((void(__thiscall *)(CAutomobile*))0x6AF420)(this); +} + +// Converted from thiscall void CAutomobile::PopBoot(void) 0x6AF910 +void CAutomobile::PopBoot() +{ + ((void(__thiscall *)(CAutomobile*))0x6AF910)(this); +} + +// Converted from thiscall void CAutomobile::CloseBoot(void) 0x6AFA20 +void CAutomobile::CloseBoot() +{ + ((void(__thiscall *)(CAutomobile*))0x6AFA20)(this); +} + +// Converted from thiscall void CAutomobile::DoHeliDustEffect(float, float) 0x6B0690 +void CAutomobile::DoHeliDustEffect(float arg0, float arg1) +{ + ((void(__thiscall *)(CAutomobile*, float, float))0x6B0690)(this, arg0, arg1); +} + +// Converted from thiscall void CAutomobile::SetBumperDamage(ePanels panel, bool withoutVisualEffect) 0x6B1350 +void CAutomobile::SetBumperDamage(ePanels panel, bool withoutVisualEffect) +{ + ((void(__thiscall *)(CAutomobile*, ePanels, bool))0x6B1350)(this, panel, withoutVisualEffect); +} + +// Converted from thiscall void CAutomobile::SetPanelDamage(ePanels panel, bool createWindowGlass) 0x6B1480 +void CAutomobile::SetPanelDamage(ePanels panel, bool createWindowGlass) +{ + ((void(__thiscall *)(CAutomobile*, ePanels, bool))0x6B1480)(this, panel, createWindowGlass); +} + +// Converted from thiscall void CAutomobile::SetDoorDamage(eDoors door, bool withoutVisualEffect) 0x6B1600 +void CAutomobile::SetDoorDamage(eDoors door, bool withoutVisualEffect) +{ + ((void(__thiscall *)(CAutomobile*, eDoors, bool))0x6B1600)(this, door, withoutVisualEffect); +} + +// Converted from thiscall bool CAutomobile::RcbanditCheck1CarWheels(CPtrList &ptrlist) 0x6B3F70 +bool CAutomobile::RcbanditCheck1CarWheels(CPtrList& ptrlist) +{ + return ((bool(__thiscall *)(CAutomobile*, CPtrList&))0x6B3F70)(this, ptrlist); +} + +// Converted from thiscall bool CAutomobile::RcbanditCheckHitWheels(void) 0x6B45E0 +bool CAutomobile::RcbanditCheckHitWheels() +{ + return ((bool(__thiscall *)(CAutomobile*))0x6B45E0)(this); +} + +// Converted from thiscall void CAutomobile::FireTruckControl(float) 0x729B60 +void CAutomobile::FireTruckControl(float arg0) +{ + ((void(__thiscall *)(CAutomobile*, float))0x729B60)(this, arg0); +} + +// Converted from thiscall bool CAutomobile::HasCarStoppedBecauseOfLight(void) 0x44D520 +bool CAutomobile::HasCarStoppedBecauseOfLight() +{ + return ((bool(__thiscall *)(CAutomobile*))0x44D520)(this); +} + +// Converted from cdecl RpAtomic* GetCurrentAtomicObjectCB(RwObject *object, void *data) 0x6A0750 +RpAtomic* GetCurrentAtomicObjectCB(RwObject* object, void* data) +{ + return ((RpAtomic* (__cdecl *)(RwObject*, void*))0x6A0750)(object, data); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CAutomobile.h b/third-party/plugin-sdk/plugin_sa/game_sa/CAutomobile.h new file mode 100644 index 00000000..9d10cd2c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CAutomobile.h @@ -0,0 +1,256 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVehicle.h" +#include "CDoor.h" +#include "CBouncingPanel.h" +#include "CDamageManager.h" +#include "CColPoint.h" + +class CObject; + +enum eCarNodes { + CAR_NODE_NONE = 0, + CAR_CHASSIS = 1, + CAR_WHEEL_RF = 2, + CAR_WHEEL_RM = 3, + CAR_WHEEL_RB = 4, + CAR_WHEEL_LF = 5, + CAR_WHEEL_LM = 6, + CAR_WHEEL_LB = 7, + CAR_DOOR_RF = 8, + CAR_DOOR_RR = 9, + CAR_DOOR_LF = 10, + CAR_DOOR_LR = 11, + CAR_BUMP_FRONT = 12, + CAR_BUMP_REAR = 13, + CAR_WING_RF = 14, + CAR_WING_LF = 15, + CAR_BONNET = 16, + CAR_BOOT = 17, + CAR_WINDSCREEN = 18, + CAR_EXHAUST = 19, + CAR_MISC_A = 20, + CAR_MISC_B = 21, + CAR_MISC_C = 22, + CAR_MISC_D = 23, + CAR_MISC_E = 24, + CAR_NUM_NODES +}; + +class CAutomobile : public CVehicle { +protected: + CAutomobile(plugin::dummy_func_t) : CVehicle(plugin::dummy) {} +public: + CDamageManager m_damageManager; + CDoor m_doors[6]; + RwFrame *m_aCarNodes[CAR_NUM_NODES]; + CBouncingPanel m_panels[3]; + CDoor m_swingingChassis; + CColPoint m_wheelColPoint[4]; + float wheelsDistancesToGround1[4]; + float wheelsDistancesToGround2[4]; + float field_7F4[4]; + float field_800; + float field_804; + float field_80C; + int field_810[4]; + char field_81C[4]; + int field_820; + float m_fWheelRotation[4]; + float field_838[4]; + float m_fWheelSpeed[4]; + int field_858[4]; + char taxiAvaliable; + char field_869; + char field_86A; + char field_867; + short m_wMiscComponentAngle; + short m_wVoodooSuspension; + int m_dwBusDoorTimerEnd; + int m_dwBusDoorTimerStart; + float field_878; + float wheelOffsetZ[4]; + int field_88C[3]; + float m_fFrontHeightAboveRoad; + float m_fRearHeightAboveRoad; + float m_fCarTraction; + float m_fNitroValue; + int field_8A4; + int m_fRotationBalance; // used in CHeli::TestSniperCollision + float m_fMoveDirection; + int field_8B4[6]; + int field_8C8[6]; + float m_fBurningTimer; // starts when vehicle health is lower than 250.0, car blows up when it hits 5000.0 + CEntity *m_pWheelCollisionEntity[4]; + CVector m_vWheelCollisionPos[4]; + char field_924; + char field_925; + char field_926; + char field_927; + char field_928; + char field_929; + char field_92A; + char field_92B; + char field_92C; + char field_92D; + char field_92E; + char field_92F; + char field_930; + char field_931; + char field_932; + char field_933; + char field_934; + char field_935; + char field_936; + char field_937; + char field_938; + char field_939; + char field_93A; + char field_93B; + char field_93C; + char field_93D; + char field_93E; + char field_93F; + int field_940; + int field_944; + float m_fDoomVerticalRotation; + float m_fDoomHorizontalRotation; + float m_fForcedOrientation; + float m_fUpDownLightAngle[2]; + unsigned char m_nNumContactWheels; + unsigned char m_nWheelsOnGround; + char field_962; + char field_963; + float field_964; + int field_968[4]; + void *pNitroParticle[2]; + char field_980; + char field_981; + short field_982; + float field_984; + + // variables + static bool &m_sAllTaxiLights; + static CVector &vecHunterGunPos; // { 0.0f, 4.8f, -1.3f } + static CMatrix *matW2B; + + //vtable + bool ProcessAI(unsigned int& arg0); + void ResetSuspension(); + void ProcessFlyingCarStuff(); + void DoHoverSuspensionRatios(); + void ProcessSuspension(); + + //funcs + CAutomobile(int modelIndex, unsigned char createdBy, bool setupSuspensionLines); + + // Find and save components ptrs (RwFrame) to m_modelNodes array + void SetupModelNodes(); + // Process vehicle hydraulics + void HydraulicControl(); + // Sets the angle of a vehicles extra. Called at 08A4 opcode (CONTROL_MOVABLE_VEHICLE_PART) + bool UpdateMovingCollision(float angle); + // Called at 098D opcode (GET_CAR_MOVING_COMPONENT_OFFSET) + float GetMovingCollisionOffset(); + // Makes the helicopter fly to the specified location, keeping a specific Z height/altitude. This must be called for helis only. + void TellHeliToGoToCoors(float x, float y, float z, float altitudeMin, float altitudeMax); + // Force orientation for heli to specified angle (radians) + void SetHeliOrientation(float angle); + // Cancel orientation forcing (m_fForcedOrientation = -1.0f) + void ClearHeliOrientation(); + // Makes the plane fly to the specified location, keeping a specific Z height/altitude. + void TellPlaneToGoToCoors(float x, float y, float z, float altitudeMin, float altitudeMax); + // Empty function + void HideAllComps(); + // Empty function + void ShowAllComps(); + // Set random damage to vehicle. Called when generating a vehicle @CCarCtrl::GenerateOneRandomCar + void SetRandomDamage(bool arg0); + // Make a vehicle fully damaged + void SetTotalDamage(bool arg0); + // if(m_nHornCounter) m_nHornCounter--; + void ReduceHornCounter(); + // Apply custom car plate texture to vehicle + void CustomCarPlate_BeforeRenderingStart(CVehicleModelInfo* model); + // Reset car plate texture after rendering + void CustomCarPlate_AfterRenderingStop(CVehicleModelInfo* model); + // Check if vehicle is in air + bool GetAllWheelsOffGround(); + // Some debug function + void DebugCode(); + // Repair vehicle's tyre + void FixTyre(eWheels wheel); + // Repair vehicle's door. "nodeIndex" is an index of component in m_modelNodes array + void FixDoor(int nodeIndex, eDoors door); + // Repair vehicle's panel. "nodeIndex" is an index of component in m_modelNodes array + void FixPanel(int nodeIndex, ePanels panel); + // Enable/disable taxi light for taxi + void SetTaxiLight(bool enable); + // Enable taxi light for all taxis (CAutomobile::m_sAllTaxiLights = true;) + static void SetAllTaxiLights(bool arg0); + // Play horn for NPC vehicle (called @CAutomobile::ProcessAI) + void PlayHornIfNecessary(); + void SetBusDoorTimer(unsigned int time, unsigned char arg1); + void ProcessAutoBusDoors(); + // Make player vehicle jumps when pressing horn + void BoostJumpControl(); + // Creates/updates nitro particle + void DoNitroEffect(float state); + // Remove nitro particle + void StopNitroEffect(); + void NitrousControl(signed char); + void TowTruckControl(); + // Empty function + CPed* KnockPedOutCar(eWeaponType arg0, unsigned short arg1, CPed* arg2); + void PopBootUsingPhysics(); + // Close all doors + void CloseAllDoors(); + void DoSoftGroundResistance(unsigned int& arg0); + void ProcessCarWheelPair(int arg0, int arg1, float arg2, CVector* arg3, CVector* arg4, float arg5, float arg6, float arg7, bool arg8); + float GetCarRoll(); + float GetCarPitch(); + bool IsInAir(); + // Create colliding particles + void dmgDrawCarCollidingParticles(CVector const&, float force, eWeaponType weapon); + void ProcessCarOnFireAndExplode(unsigned char arg0); + CObject* SpawnFlyingComponent(int nodeIndex, unsigned int collisionType); + void ProcessBuoyancy(); + // Process combine + void ProcessHarvester(); + void ProcessSwingingDoor(int nodeIndex, eDoors door); + // Returns spawned flying component? + CObject* RemoveBonnetInPedCollision(); + void UpdateWheelMatrix(int nodeIndex, int flags); + void PopDoor(int nodeIndex, eDoors door, bool showVisualEffect); + void PopPanel(int nodeIndex, ePanels panel, bool showVisualEffect); + void ScanForCrimes(); + void TankControl(); + // Makes a vehicles acts like a tank on a road - blows up collided vehicles. Must be called in a loop + void BlowUpCarsInPath(); + void PlaceOnRoadProperly(); + void PopBoot(); + void CloseBoot(); + void DoHeliDustEffect(float arg0, float arg1); + void SetBumperDamage(ePanels panel, bool withoutVisualEffect); + void SetPanelDamage(ePanels panel, bool createWindowGlass); + void SetDoorDamage(eDoors door, bool withoutVisualEffect); + bool RcbanditCheck1CarWheels(CPtrList& ptrlist); + bool RcbanditCheckHitWheels(); + void FireTruckControl(float arg0); + bool HasCarStoppedBecauseOfLight(); +}; + +VALIDATE_SIZE(CAutomobile, 0x988); + +extern CColPoint *aAutomobileColPoints; + +// Disable matfx (material effects) for material (callback), "data" parameter is unused +RpMaterial *DisableMatFx(RpMaterial* material, void* data); +// callback +RpAtomic* GetCurrentAtomicObjectCB(RwObject* object, void* data); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBaseModelInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBaseModelInfo.cpp new file mode 100644 index 00000000..c327f957 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBaseModelInfo.cpp @@ -0,0 +1,202 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBaseModelInfo.h" + +CBaseModelInfo *CBaseModelInfo::AsAtomicModelInfoPtr() +{ + return ((CBaseModelInfo *(__thiscall *)(CBaseModelInfo *))plugin::GetVMT(this, 1))(this); +} + +CBaseModelInfo *CBaseModelInfo::AsDamageAtomicModelInfoPtr() +{ + return ((CBaseModelInfo *(__thiscall *)(CBaseModelInfo *))plugin::GetVMT(this, 2))(this); +} + +CBaseModelInfo *CBaseModelInfo::AsLodAtomicModelInfoPtr() +{ + return ((CBaseModelInfo *(__thiscall *)(CBaseModelInfo *))plugin::GetVMT(this, 3))(this); +} + +ModelInfoType CBaseModelInfo::GetModelType() +{ + return ((ModelInfoType (__thiscall *)(CBaseModelInfo *))plugin::GetVMT(this, 4))(this); +} + +struct tTimeInfo *CBaseModelInfo::GetTimeInfo() +{ + return ((struct tTimeInfo *(__thiscall *)(CBaseModelInfo *))plugin::GetVMT(this, 5))(this); +} + +void CBaseModelInfo::Init() +{ + ((void (__thiscall *)(CBaseModelInfo *))plugin::GetVMT(this, 6))(this); +} + +void CBaseModelInfo::Shutdown() +{ + ((void (__thiscall *)(CBaseModelInfo *))plugin::GetVMT(this, 7))(this); +} + +void CBaseModelInfo::DeleteRwObject() +{ + ((void (__thiscall *)(CBaseModelInfo *))plugin::GetVMT(this, 8))(this); +} + +unsigned int CBaseModelInfo::GetRwModelType() +{ + return ((unsigned int (__thiscall *)(CBaseModelInfo *))plugin::GetVMT(this, 9))(this); +} + +RwObject *CBaseModelInfo::CreateInstance(RwMatrix *matrix) +{ + return ((RwObject *(__thiscall *)(CBaseModelInfo *, RwMatrix *))plugin::GetVMT(this, 10))(this, matrix); +} + +RwObject *CBaseModelInfo::CreateInstance() +{ + return ((RwObject *(__thiscall *)(CBaseModelInfo *))plugin::GetVMT(this, 11))(this); +} + +void CBaseModelInfo::SetAnimFile(char *filename) +{ + ((void (__thiscall *)(CBaseModelInfo *, char *))plugin::GetVMT(this, 12))(this, filename); +} + +void CBaseModelInfo::ConvertAnimFileIndex() +{ + ((void (__thiscall *)(CBaseModelInfo *))plugin::GetVMT(this, 13))(this); +} + +signed int CBaseModelInfo::GetAnimFileIndex() +{ + return ((signed int (__thiscall *)(CBaseModelInfo *))plugin::GetVMT(this, 14))(this); +} + +void CBaseModelInfo::SetTexDictionary(char *txdName) +{ + ((void (__thiscall *)(CBaseModelInfo *, char *))0x4C4B40)(this, txdName); +} + +void CBaseModelInfo::ClearTexDictionary() +{ + ((void (__thiscall *)(CBaseModelInfo *))0x4C4B70)(this); +} + +void CBaseModelInfo::AddTexDictionaryRef() +{ + ((void (__thiscall *)(CBaseModelInfo *))0x4C4B80)(this); +} + +void CBaseModelInfo::RemoveTexDictionaryRef() +{ + ((void (__thiscall *)(CBaseModelInfo *))0x4C4B90)(this); +} + +void CBaseModelInfo::AddRef() +{ + ((void (__thiscall *)(CBaseModelInfo *))0x4C4BA0)(this); +} + +void CBaseModelInfo::RemoveRef() +{ + ((void (__thiscall *)(CBaseModelInfo *))0x4C4BB0)(this); +} + +void CBaseModelInfo::SetColModel(CColModel *colModel, bool initPairedModel) +{ + ((void (__thiscall *)(CBaseModelInfo *, CColModel *, bool))0x4C4BC0)(this, colModel, initPairedModel); +} + +void CBaseModelInfo::Init2dEffects() +{ + ((void (__thiscall *)(CBaseModelInfo *))0x4C4C20)(this); +} + +void CBaseModelInfo::DeleteCollisionModel() +{ + ((void (__thiscall *)(CBaseModelInfo *))0x4C4C40)(this); +} + +C2dEffect *CBaseModelInfo::Get2dEffect(int index) +{ + return ((C2dEffect *(__thiscall *)(CBaseModelInfo *, int))0x4C4C70)(this, index); +} + +void CBaseModelInfo::Add2dEffect(C2dEffect *effect) +{ + ((void (__thiscall *)(CBaseModelInfo *, C2dEffect *))0x4C4D20)(this, effect); +} + +CBaseModelInfo::CBaseModelInfo() +{ + ((void (__thiscall *)(CBaseModelInfo *))0x4C4A60)(this); +} + +// Converted from thiscall bool CBaseModelInfo::GetIsDrawLast(void) 0x5328C0 +bool CBaseModelInfo::GetIsDrawLast() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CBaseModelInfo::HasBeenPreRendered(void) 0x5328B0 +bool CBaseModelInfo::HasBeenPreRendered() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CBaseModelInfo::HasComplexHierarchy(void) 0x4C4E00 +bool CBaseModelInfo::HasComplexHierarchy() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CBaseModelInfo::IsBackfaceCulled(void) 0x5328F0 +bool CBaseModelInfo::IsBackfaceCulled() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CBaseModelInfo::IsBreakableStatuePart(void) 0x59F090 +bool CBaseModelInfo::IsBreakableStatuePart() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CBaseModelInfo::IsLod(void) 0x4C4A00 +bool CBaseModelInfo::IsLod() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CBaseModelInfo::IsRoad(void) 0x4C4DF0 +bool CBaseModelInfo::IsRoad() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CBaseModelInfo::IsTagModel(void) 0x49CC20 +bool CBaseModelInfo::IsTagModel() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CBaseModelInfo::SwaysInWind(void) 0x4212C0 +bool CBaseModelInfo::SwaysInWind() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CBaseModelInfo::SetHasBeenPreRendered(int bHasBeenPreRendered) 0x4C42F0 +void CBaseModelInfo::SetHasBeenPreRendered(int bHasBeenPreRendered) { + plugin::CallMethod<0x4C42F0, CBaseModelInfo *, int>(this, bHasBeenPreRendered); +} + +// Converted from thiscall void CBaseModelInfo::SetIsLod(int bIsLod) 0x4C4A10 +void CBaseModelInfo::SetIsLod(int bIsLod) { + plugin::CallMethod<0x4C4A10, CBaseModelInfo *, int>(this, bIsLod); +} + +// Converted from thiscall void CBaseModelInfo::SetOwnsColModel(int bOwns) 0x5328D0 +void CBaseModelInfo::SetOwnsColModel(int bOwns) { + plugin::CallMethod<0x5328D0, CBaseModelInfo *, int>(this, bOwns); +} + +// Converted from thiscall void CBaseModelInfo::IncreaseAlpha(void) 0x532900 +void CBaseModelInfo::IncreaseAlpha() { + plugin::CallMethod<0x532900, CBaseModelInfo *>(this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBaseModelInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBaseModelInfo.h new file mode 100644 index 00000000..08fa3819 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBaseModelInfo.h @@ -0,0 +1,131 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "RenderWare.h" +#include "CColModel.h" +#include "C2dEffect.h" +#include "eModelID.h" + +enum ModelInfoType : unsigned char +{ + MODEL_INFO_ATOMIC = 1, + MODEL_INFO_TIME = 3, + MODEL_INFO_WEAPON = 4, + MODEL_INFO_CLUMP = 5, + MODEL_INFO_VEHICLE = 6, + MODEL_INFO_PED = 7, + MODEL_INFO_LOD = 8 +}; + +struct tTimeInfo +{ + unsigned char m_nTimeOn; + unsigned char m_nTimeOff; + signed short m_wOtherTimeModel; +}; + +VALIDATE_SIZE(tTimeInfo, 4); + +// originally an abstract class +class PLUGIN_API CBaseModelInfo { +public: + unsigned int m_nKey; + unsigned short m_nRefCount; + short m_nTxdIndex; + unsigned char m_nAlpha; // 0 - 255 + unsigned char m_nNum2dEffects; + short m_n2dEffectIndex; + short m_nObjectInfoIndex; + union{ + unsigned short m_nFlags; + struct{ + /* https://code.google.com/p/mtasa-blue/source/browse/tags/1.3.4/MTA10/game_sa/CModelInfoSA.h */ + unsigned char bHasBeenPreRendered : 1; // we use this because we need to apply changes only once + unsigned char bDrawLast: 1; + unsigned char bAdditiveRender: 1; + unsigned char bDontWriteZBuffer: 1; + unsigned char bDontCastShadowsOn : 1; + unsigned char bDoWeOwnTheColModel : 1; + unsigned char bIsBackfaceCulled : 1; + unsigned char bIsLod : 1; + union{ + struct{ + unsigned char bIsRoad: 1; + unsigned char bHasComplexHierarchy : 1; + unsigned char bDontCollideWithFlyer : 1; + unsigned char nSpecialType : 4; + unsigned char : 1; + }; + struct{ + unsigned char : 2; + unsigned char nCarmodId : 5; + unsigned char : 1; + }; + }; + + }; + }; + CColModel *m_pColModel; + float m_fDrawDistance; + union { + RwObject* m_pRwObject; + RpClump* m_pRwClump; + RpAtomic* m_pRwAtomic; + }; + + // vtable + + class CBaseModelInfo *AsAtomicModelInfoPtr(); + class CBaseModelInfo *AsDamageAtomicModelInfoPtr(); + class CBaseModelInfo *AsLodAtomicModelInfoPtr(); + ModelInfoType GetModelType();//=0 + tTimeInfo *GetTimeInfo(); + void Init(); + void Shutdown(); + void DeleteRwObject();//=0 + unsigned int GetRwModelType();//=0 + struct RwObject *CreateInstance(RwMatrix *matrix);//=0 + struct RwObject *CreateInstance();//=0 + void SetAnimFile(char *filename); + void ConvertAnimFileIndex(); + signed int GetAnimFileIndex(); + + // + void SetTexDictionary(char *txdName); + void ClearTexDictionary(); + void AddTexDictionaryRef(); + void RemoveTexDictionaryRef(); + void AddRef(); + void RemoveRef(); + // initPairedModel defines if we need to set col model for time model + void SetColModel(CColModel *colModel, bool initPairedModel); + void Init2dEffects(); + void DeleteCollisionModel(); + // index is a number of effect (max number is (m_n2dfxCount - 1)) + C2dEffect *Get2dEffect(int index); + void Add2dEffect(C2dEffect *effect); + + virtual ~CBaseModelInfo() {} + CBaseModelInfo(); // constructor + + bool GetIsDrawLast(); + bool HasBeenPreRendered(); + bool HasComplexHierarchy(); + bool IsBackfaceCulled(); + bool IsBreakableStatuePart(); + bool IsLod(); + bool IsRoad(); + bool IsTagModel(); + bool SwaysInWind(); + void SetHasBeenPreRendered(int bHasBeenPreRendered); + void SetIsLod(int bIsLod); + void SetOwnsColModel(int bOwns); + void IncreaseAlpha(); +}; + +VALIDATE_SIZE(CBaseModelInfo, 0x20); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBike.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBike.cpp new file mode 100644 index 00000000..f6072302 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBike.cpp @@ -0,0 +1,102 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBike.h" + +// Converted from void CBike::ProcessAI(uint &) 0x0 +void CBike::ProcessAI(unsigned int& arg0) { + ((void(__thiscall *)(CBike*, unsigned int&))(*(void ***)this)[66])(this, arg0); +} + +// Converted from thiscall void CBike::SetupModelNodes(void) 0x6B5960 +void CBike::SetupModelNodes() { + ((void(__thiscall *)(CBike*))0x6B5960)(this); +} + +// Converted from thiscall void CBike::dmgDrawCarCollidingParticles(CVector const& position,float power,eWeaponType weaponType) 0x6B5A00 +void CBike::dmgDrawCarCollidingParticles(CVector const& position, float power, eWeaponType weaponType) { + ((void(__thiscall *)(CBike*, CVector const&, float, eWeaponType))0x6B5A00)(this, position, power, weaponType); +} + +// Converted from cdecl bool CBike::DamageKnockOffRider(CVehicle *,float,ushort,CEntity *,CVector &,CVector &) 0x6B5A10 +bool CBike::DamageKnockOffRider(CVehicle* arg0, float arg1, unsigned short arg2, CEntity* arg3, CVector& arg4, CVector& arg5) { + return ((bool(__cdecl *)(CVehicle*, float, unsigned short, CEntity*, CVector&, CVector&))0x6B5A10)(arg0, arg1, arg2, arg3, arg4, arg5); +} + +// Converted from thiscall CPed* CBike::KnockOffRider(eWeaponType,uchar,CPed *,bool) 0x6B5F40 +CPed* CBike::KnockOffRider(eWeaponType arg0, unsigned char arg1, CPed* arg2, bool arg3) { + return ((CPed* (__thiscall *)(CBike*, eWeaponType, unsigned char, CPed*, bool))0x6B5F40)(this, arg0, arg1, arg2, arg3); +} + +// Converted from thiscall void CBike::SetRemoveAnimFlags(CPed *ped) 0x6B5F50 +void CBike::SetRemoveAnimFlags(CPed* ped) { + ((void(__thiscall *)(CBike*, CPed*))0x6B5F50)(this, ped); +} + +// Converted from thiscall void CBike::ReduceHornCounter(void) 0x6B5F90 +void CBike::ReduceHornCounter() { + ((void(__thiscall *)(CBike*))0x6B5F90)(this); +} + +// Converted from thiscall void CBike::ProcessBuoyancy(void) 0x6B5FB0 +void CBike::ProcessBuoyancy() { + ((void(__thiscall *)(CBike*))0x6B5FB0)(this); +} + +// Converted from thiscall void CBike::ResetSuspension(void) 0x6B6740 +void CBike::ResetSuspension() { + ((void(__thiscall *)(CBike*))0x6B6740)(this); +} + +// Converted from thiscall bool CBike::GetAllWheelsOffGround(void) 0x6B6790 +bool CBike::GetAllWheelsOffGround() { + return ((bool(__thiscall *)(CBike*))0x6B6790)(this); +} + +// Converted from thiscall void CBike::DebugCode(void) 0x6B67A0 +void CBike::DebugCode() { + ((void(__thiscall *)(CBike*))0x6B67A0)(this); +} + +// Converted from thiscall void CBike::DoSoftGroundResistance(uint &) 0x6B6D40 +void CBike::DoSoftGroundResistance(unsigned int& arg0) { + ((void(__thiscall *)(CBike*, unsigned int&))0x6B6D40)(this, arg0); +} + +// Converted from thiscall void CBike::PlayHornIfNecessary(void) 0x6B7130 +void CBike::PlayHornIfNecessary() { + ((void(__thiscall *)(CBike*))0x6B7130)(this); +} + +// Converted from thiscall void CBike::CalculateLeanMatrix(void) 0x6B7150 +void CBike::CalculateLeanMatrix() { + ((void(__thiscall *)(CBike*))0x6B7150)(this); +} + +// Converted from cdecl void CBike::ProcessRiderAnims(CPed *rider,CVehicle *vehicle,CRideAnimData *rideData,tBikeHandlingData *handling) 0x6B7280 +void CBike::ProcessRiderAnims(CPed* rider, CVehicle* vehicle, CRideAnimData* rideData, tBikeHandlingData* handling) { + ((void(__cdecl *)(CPed*, CVehicle*, CRideAnimData*, tBikeHandlingData*))0x6B7280)(rider, vehicle, rideData, handling); +} + +// Converted from thiscall void CBike::FixHandsToBars(CPed *rider) 0x6B7F90 +void CBike::FixHandsToBars(CPed* rider) { + ((void(__thiscall *)(CBike*, CPed*))0x6B7F90)(this, rider); +} + +// Converted from thiscall void CBike::PlaceOnRoadProperly(void) 0x6BEEB0 +void CBike::PlaceOnRoadProperly() { + ((void(__thiscall *)(CBike*))0x6BEEB0)(this); +} + +// Converted from thiscall void CBike::GetCorrectedWorldDoorPosition(CVector &out,CVector,CVector) 0x6BF230 +void CBike::GetCorrectedWorldDoorPosition(CVector& out, CVector arg1, CVector arg2) { + ((void(__thiscall *)(CBike*, CVector&, CVector, CVector))0x6BF230)(this, out, arg1, arg2); +} + +// Converted from thiscall void CBike::CBike(int modelIndex,uchar createdBy) 0x6BF430 +CBike::CBike(int modelIndex, unsigned char createdBy) : CVehicle(plugin::dummy) { + ((void(__thiscall *)(CBike*, int, unsigned char))0x6BF430)(this, modelIndex, createdBy); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBike.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBike.h new file mode 100644 index 00000000..8492017e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBike.h @@ -0,0 +1,111 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVehicle.h" + +struct tBikeHandlingData; + +enum eBikeNodes { + BIKE_NODE_NONE = 0, + BIKE_CHASSIS = 1, + BIKE_FORKS_FRONT = 2, + BIKE_FORKS_REAR = 3, + BIKE_WHEEL_FRONT = 4, + BIKE_WHEEL_REAR = 5, + BIKE_MUDGUARD = 6, + BIKE_HANDLEBARS = 7, + BIKE_MISC_A = 8, + BIKE_MISC_B = 9, + BIKE_NUM_NODES +}; + +class CBike : public CVehicle { +protected: + CBike(plugin::dummy_func_t) : CVehicle(plugin::dummy), m_mLeanMatrix(plugin::dummy) {} +public: + RwFrame *m_aBikeNodes[BIKE_NUM_NODES]; + bool m_bLeanMatrixCalculated; + char _pad0[3]; + CMatrix m_mLeanMatrix; + unsigned char m_nDamageFlags; + char field_615[27]; + CVector field_630; + void *m_pBikeHandlingData; + CRideAnimData m_rideAnimData; + unsigned char m_anWheelDamageState[2]; + char field_65E; + char field_65F; + CColPoint m_anWheelColPoint[4]; + float field_710[4]; + float field_720[4]; + float field_730[4]; + float field_740; + int m_anWheelSurfaceType[2]; + char field_74C[2]; + char field_74E[2]; + float m_afWheelRotationX[2]; + float m_fWheelSpeed[2]; + float field_760; + float field_764; + float field_768; + float field_76C; + float field_770[4]; + float field_780[4]; + float m_fHeightAboveRoad; + float m_fCarTraction; + float field_798; + float field_79C; + float field_7A0; + float field_7A4; + short field_7A8; + char field_7AA[2]; + int field_7AC; + int field_7B0; + bool m_bPedLeftHandFixed; + bool m_bPedRightHandFixed; + char field_7B6[2]; + int field_7B8; + float m_fBurningTimer; // starts when vehicle health is lower than 250.0, bike blows up when it hits 5000.0 + CEntity *m_apWheelCollisionEntity[4]; + CVector m_avTouchPointsLocalSpace[4]; + CEntity *m_pDamager; + unsigned char m_nNumContactWheels; + unsigned char m_nNumWheelsOnGround; + char field_806; + char field_807; + int field_808; + unsigned int m_anWheelState[2]; // enum tWheelState + + //vtable + + void ProcessAI(unsigned int& arg0); + + //funcs + + CBike(int modelIndex, unsigned char createdBy); + + void SetupModelNodes(); + void dmgDrawCarCollidingParticles(CVector const& position, float power, eWeaponType weaponType); // dummy function + static bool DamageKnockOffRider(CVehicle* arg0, float arg1, unsigned short arg2, CEntity* arg3, CVector& arg4, CVector& arg5); + CPed* KnockOffRider(eWeaponType arg0, unsigned char arg1, CPed* arg2, bool arg3); // dummy function + void SetRemoveAnimFlags(CPed* ped); + void ReduceHornCounter(); + void ProcessBuoyancy(); + void ResetSuspension(); + bool GetAllWheelsOffGround(); + void DebugCode(); // dummy function + void DoSoftGroundResistance(unsigned int& arg0); + void PlayHornIfNecessary(); + void CalculateLeanMatrix(); + static void ProcessRiderAnims(CPed* rider, CVehicle* vehicle, CRideAnimData* rideData, tBikeHandlingData* handling); + void FixHandsToBars(CPed* rider); + void PlaceOnRoadProperly(); + void GetCorrectedWorldDoorPosition(CVector& out, CVector arg1, CVector arg2); +}; + +VALIDATE_SIZE(CBike, 0x814); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBirds.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBirds.cpp new file mode 100644 index 00000000..c6cd1f55 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBirds.cpp @@ -0,0 +1,46 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBirds.h" + +unsigned int MAX_BIRDS = 6; +bool &CBirds::bHasBirdBeenShot = *(bool *)0xC6A8A0; +unsigned int &CBirds::NumberOfBirds = *(unsigned int *)0xC6A8A4; +CBird *CBirds::aBirds = (CBird *)0xC6A8B0; +CVector &CBirds::BirdShotAt = *(CVector *)0xC6AA48; +float *BIRD_CREATION_COORS_X = (float *)0x8D5250; +float *BIRD_CREATION_COORS_Y = (float *)0x8D5268; +float *BIRD_CREATION_COORS_Z = (float *)0x8D5280; + +// Converted from cdecl void CBirds::Init(void) 0x711EC0 +void CBirds::Init() { + plugin::Call<0x711EC0>(); +} + +// Converted from cdecl int CBirds::CreateNumberOfBirds(CVector pos,CVector destination,int count,int birdType,bool checkObstacles) 0x711EF0 +int CBirds::CreateNumberOfBirds(CVector pos, CVector destination, int count, int birdType, bool checkObstacles) { + return plugin::CallAndReturn(pos, destination, count, birdType, checkObstacles); +} + +// Converted from cdecl void CBirds::Shutdown(void) 0x712300 +void CBirds::Shutdown() { + plugin::Call<0x712300>(); +} + +// Converted from cdecl void CBirds::Update(void) 0x712330 +void CBirds::Update() { + plugin::Call<0x712330>(); +} + +// Converted from cdecl void CBirds::Render(void) 0x712810 +void CBirds::Render() { + plugin::Call<0x712810>(); +} + +// Converted from cdecl void CBirds::HandleGunShot(CVector const*pointA,CVector const*pointB) 0x712E40 +void CBirds::HandleGunShot(CVector const* pointA, CVector const* pointB) { + plugin::Call<0x712E40, CVector const*, CVector const*>(pointA, pointB); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBirds.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBirds.h new file mode 100644 index 00000000..e04b7e06 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBirds.h @@ -0,0 +1,58 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +/* + researched by LINK/2012 + for 'The Birds Update' mod +*/ + +class PLUGIN_API CBird { +public: + CVector m_vecPosn; // Bird position + CVector m_vecCurrentVelocity; // Velocity in the current frame + CVector m_vecVelocity; // Velocity (constant if the bird is not doing curves) + float m_fAngle; // Bird angle + int field_28; // Always 0 + int m_nWingSpeed; // Determines the bird size + float m_fSize; + float m_fMaxBirdDistance; // When the bird is in this distance from the camera, it will disappear. + // Used also in rendering process to determine the alpha level of the bird. + char field_38; // Always 1, if different than 1 or 2 the bird will not be rendered + char m_anPolyColors[6]; // Polygons color + bool m_bCreated; // This flags indicates if in this index there's a bird created + bool m_bMustDoCurves; // If this flag is true the bird will do curves +private: + char _pad41[3]; +public: +}; + +VALIDATE_SIZE(CBird, 0x44); + +extern unsigned int MAX_BIRDS; // default: 6 + +class PLUGIN_API CBirds { +public: + static bool &bHasBirdBeenShot; + static unsigned int &NumberOfBirds; + static CBird *aBirds; + static CVector &BirdShotAt; + + static void Init(); + static int CreateNumberOfBirds(CVector pos, CVector destination, int count, int birdType, bool checkObstacles); + static void Shutdown(); + static void Update(); + static void Render(); + static void HandleGunShot(CVector const* pointA, CVector const* pointB); +}; + +extern float *BIRD_CREATION_COORS_X; // { 0.0f, -1.0f, 2.0f, -3.0f, 1.0f, -2.0f } +extern float *BIRD_CREATION_COORS_Y; // { 0.0f, -1.0f, -2.0f, 1.0f, 1.0f, -2.0f } +extern float *BIRD_CREATION_COORS_Z; // { 0.0f, 0.5f, 1.0f, 0.7f, 2.0f, 1.2f } diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBmx.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBmx.cpp new file mode 100644 index 00000000..4cbf238e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBmx.cpp @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBmx.h" + +// Converted from thiscall void CBmx::CBmx(int modelIndex,uchar createdBy) 0x6BF820 +CBmx::CBmx(int modelIndex, unsigned char createdBy) : CBike(plugin::dummy) { + ((void(__thiscall *)(CBmx*, int, unsigned char))0x6BF820)(this, modelIndex, createdBy); +} + +// Converted from cdecl void CBmx::LaunchBunnyHopCB(CAnimBlendAssociation *blendAssoc,void *data) 0x6C0390 +void CBmx::LaunchBunnyHopCB(CAnimBlendAssociation* blendAssoc, void* data) { + ((void(__cdecl *)(CAnimBlendAssociation*, void*))0x6C0390)(blendAssoc, data); +} + +// Converted from thiscall void CBmx::GetFrameOffset(float &,float &) 0x6C0500 +void CBmx::GetFrameOffset(float& arg0, float& arg1) { + ((void(__thiscall *)(CBmx*, float&, float&))0x6C0500)(this, arg0, arg1); +} + +// Converted from thiscall void CBmx::ProcessBunnyHop(void) 0x6C0590 +void CBmx::ProcessBunnyHop() { + ((void(__thiscall *)(CBmx*))0x6C0590)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBmx.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBmx.h new file mode 100644 index 00000000..5722af37 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBmx.h @@ -0,0 +1,51 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CBike.h" +#include "CAnimBlendAssociation.h" + +enum eBmxNodes { + BMX_NODE_NONE = 0, + BMX_CHASSIS = 1, + BMX_FORKS_FRONT = 2, + BMX_FORKS_REAR = 3, + BMX_WHEEL_FRONT = 4, + BMX_WHEEL_REAR = 5, + BMX_HANDLEBARS = 6, + BMX_CHAINSET = 7, + BMX_PEDAL_R = 8, + BMX_PEDAL_L = 9, + BMX_NUM_NODES +}; + +class CBmx : public CBike { +protected: + CBmx(plugin::dummy_func_t) : CBike(plugin::dummy) {} +public: + float field_814; + float field_818; + float field_81C; + float field_820; + float field_824; + float field_828; + float m_fDistanceBetweenWheels; + float m_fWheelsBalance; + unsigned char field_834; + char _pad[3]; + + //funcs + + CBmx(int modelIndex, unsigned char createdBy); + + void GetFrameOffset(float& arg0, float& arg1); + void ProcessBunnyHop(); + + static void LaunchBunnyHopCB(CAnimBlendAssociation* blendAssoc, void* data); // data is a ptr to CBmx +}; + +VALIDATE_SIZE(CBmx, 0x838); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBoat.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBoat.cpp new file mode 100644 index 00000000..9a944a6a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBoat.cpp @@ -0,0 +1,75 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBoat.h" + +CBoat **CBoat::apFrameWakeGeneratingBoats = (CBoat **)0xC27994; +float &CBoat::MAX_WAKE_LENGTH = *(float *)0x8D3938; +float &CBoat::MIN_WAKE_INTERVAL = *(float *)0x8D393C; +float &CBoat::WAKE_LIFETIME = *(float *)0x8D3940; +float &fShapeLength = *(float *)0x8D3944; +float &fShapeTime = *(float *)0x8D3948; +float &fRangeMult = *(float *)0x8D394C; + +// Converted from thiscall void CBoat::CBoat(int modelIndex, uchar createdBy) 0x6F2940 +CBoat::CBoat(int modelIndex, unsigned char createdBy) : CVehicle(plugin::dummy) { + ((void(__thiscall *)(CBoat*, int, unsigned char))0x6F2940)(this, modelIndex, createdBy); +} + +// Converted from cdecl RwObject* GetBoatAtomicObjectCB(RwObject *object,void *data) 0x6F00D0 +RwObject* GetBoatAtomicObjectCB(RwObject* object, void* data) { + return ((RwObject* (__cdecl *)(RwObject*, void*))0x6F00D0)(object, data); +} + +// Converted from thiscall void CBoat::SetupModelNodes(void) 0x6F01A0 +void CBoat::SetupModelNodes() { + ((void(__thiscall *)(CBoat*))0x6F01A0)(this); +} + +// Converted from thiscall void CBoat::DebugCode(void) 0x6F0D00 +void CBoat::DebugCode() { + ((void(__thiscall *)(CBoat*))0x6F0D00)(this); +} + +// Converted from thiscall void CBoat::PrintThrustAndRudderInfo(void) 0x6F0D90 +void CBoat::PrintThrustAndRudderInfo() { + ((void(__thiscall *)(CBoat*))0x6F0D90)(this); +} + +// Converted from thiscall void CBoat::ModifyHandlingValue(bool const&) 0x6F0DE0 +void CBoat::ModifyHandlingValue(bool const& arg0) { + ((void(__thiscall *)(CBoat*, bool const&))0x6F0DE0)(this, arg0); +} + +// Converted from thiscall void CBoat::PruneWakeTrail(void) 0x6F0E20 +void CBoat::PruneWakeTrail() { + ((void(__thiscall *)(CBoat*))0x6F0E20)(this); +} + +// Converted from cdecl bool CBoat::IsSectorAffectedByWake(CVector2D,float,CBoat**) 0x6F0E80 +bool CBoat::IsSectorAffectedByWake(CVector2D arg0, float arg1, CBoat** arg2) { + return ((bool(__cdecl *)(CVector2D, float, CBoat**))0x6F0E80)(arg0, arg1, arg2); +} + +// Converted from cdecl float CBoat::IsVertexAffectedByWake(CVector,CBoat*,short,bool) 0x6F0F50 +float CBoat::IsVertexAffectedByWake(CVector arg0, CBoat* arg1, short arg2, bool arg3) { + return ((float(__cdecl *)(CVector, CBoat*, short, bool))0x6F0F50)(arg0, arg1, arg2, arg3); +} + +// Converted from cdecl void CBoat::CheckForSkippingCalculations(void) 0x6F10C0 +void CBoat::CheckForSkippingCalculations() { + ((void(__cdecl *)())0x6F10C0)(); +} + +// Converted from thiscall void CBoat::AddWakePoint(CVector posn) 0x6F2550 +void CBoat::AddWakePoint(CVector posn) { + ((void(__thiscall *)(CBoat*, CVector))0x6F2550)(this, posn); +} + +// Converted from cdecl void CBoat::FillBoatList(void) 0x6F2710 +void CBoat::FillBoatList() { + ((void(__cdecl *)())0x6F2710)(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBoat.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBoat.h new file mode 100644 index 00000000..b248ef2c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBoat.h @@ -0,0 +1,98 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVehicle.h" +#include "CDoor.h" +#include "tBoatHandlingData.h" + +enum eBoatNodes { + BOAT_NODE_NONE = 0, + BOAT_MOVING = 1, + BOAT_WINDSCREEN = 2, + BOAT_RUDDER = 3, + BOAT_FLAP_LEFT = 4, + BOAT_FLAP_RIGHT = 5, + BOAT_REARFLAP_LEFT = 6, + BOAT_REARFLAP_RIGHT = 7, + BOAT_STATIC_PROP = 8, + BOAT_MOVING_PROP = 9, + BOAT_STATIC_PROP_2 = 10, + BOAT_MOVING_PROP_2 = 11, + BOAT_NUM_NODES +}; + +class CBoat : public CVehicle { +protected: + CBoat(plugin::dummy_func_t) : CVehicle(plugin::dummy) {} +public: + float m_fMovingHiRotation; // works as counter also + float m_fPropSpeed; // propeller speed + float m_fPropRotation; // propeller rotation (radians) + struct { + unsigned char bOnWater : 1; // is placed on water + unsigned char bMovingOnWater : 1; + unsigned char bAnchored : 1; // is anchored + } m_nBoatFlags; +private: + char _pad5AD[3]; +public: + RwFrame *m_aBoatNodes[BOAT_NUM_NODES]; + CDoor m_boatFlap; // for marquis model + tBoatHandlingData *m_pBoatHandling; + float m_fAnchoredAngle; // radians, initialised with -9999.99 + int m_nAttackPlayerTime; + int field_604; // initialised with 0, not used + float m_fBurningTimer; // starts when vehicle health is lower than 250.0, boat blows up when it hits 5000.0 + CEntity *m_pWhoDestroyedMe; + CVector m_vecBoatMoveForce; // m_vecBoatMoveForce = m_vecMoveForce + m_vecFrictionMoveForce + CVector m_vecBoatTurnForce; // m_vecBoatTurnForce = m_vecTurnForce + m_vecFrictionTurnForce + FxSystem_c *m_apPropSplashFx[2]; + CVector m_vecWaterDamping; // { 0.0f, 0.0f, DampingPower } + char field_63C; // initialised with 0, maybe boat handling type (@CBoat::DebugCode), possibly a leftover + unsigned char m_nPadNumber; // 0 - 3 +private: + char _pad63E[2]; +public: + float m_fWaterResistance; // initialised with 7.0f, 0.0f - not in water + short m_nNumWaterTrailPoints; +private: + char _pad646[2]; +public: + CVector2D m_avecWakePoints[32]; + float m_afWakePointLifeTime[32]; + unsigned char m_anWakePointIntensity[32]; // m_anWakePointIntensity[i] = boat->m_vecMoveForce.Magnitude() * 100.0f; + + static CBoat **apFrameWakeGeneratingBoats; // static CBoat *apFrameWakeGeneratingBoats[4] + static float &MAX_WAKE_LENGTH; // 50.0 + static float &MIN_WAKE_INTERVAL; // 2.0 + static float &WAKE_LIFETIME; // 150.0 + + //funcs + + CBoat(int modelIndex, unsigned char createdBy); + + void SetupModelNodes(); // fill m_aBoatNodes array + void DebugCode(); + void PrintThrustAndRudderInfo(); // uses debug printing + void ModifyHandlingValue(bool const& arg0); + void PruneWakeTrail(); + void AddWakePoint(CVector posn); + + static bool IsSectorAffectedByWake(CVector2D arg0, float arg1, CBoat** arg2); + static float IsVertexAffectedByWake(CVector arg0, CBoat* arg1, short arg2, bool arg3); + static void CheckForSkippingCalculations(); + static void FillBoatList(); +}; + +VALIDATE_SIZE(CBoat, 0x7E8); + +extern float &fShapeLength; // 0.4 +extern float &fShapeTime; // 0.05 +extern float &fRangeMult; // 0.6 + +RwObject* GetBoatAtomicObjectCB(RwObject* object, void* data); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBouncingPanel.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBouncingPanel.cpp new file mode 100644 index 00000000..eada9fc1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBouncingPanel.cpp @@ -0,0 +1,28 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBouncingPanel.h" + +float &CBouncingPanel::BOUNCE_SPRING_DAMP_MULT = *(float *)0x8D3954; +float &CBouncingPanel::BOUNCE_SPRING_RETURN_MULT = *(float *)0x8D3958; +float &CBouncingPanel::BOUNCE_VEL_CHANGE_LIMIT = *(float *)0x8D395C; +float &CBouncingPanel::BOUNCE_HANGING_DAMP_MULT = *(float *)0x8D3960; +float &CBouncingPanel::BOUNCE_HANGING_RETURN_MULT = *(float *)0x8D3964; + +// Converted from thiscall void CBouncingPanel::ResetPanel(void) 0x6F4910 +void CBouncingPanel::ResetPanel() { + plugin::CallMethod<0x6F4910, CBouncingPanel *>(this); +} + +// Converted from thiscall void CBouncingPanel::SetPanel(short frameId,short axis,float angleLimit) 0x6F4920 +void CBouncingPanel::SetPanel(short frameId, short axis, float angleLimit) { + plugin::CallMethod<0x6F4920, CBouncingPanel *, short, short, float>(this, frameId, axis, angleLimit); +} + +// Converted from thiscall void CBouncingPanel::ProcessPanel(CVehicle *vehicle,RwFrame *frame,CVector,CVector,float,float) 0x6F49A0 +void CBouncingPanel::ProcessPanel(CVehicle* vehicle, RwFrame* frame, CVector arg2, CVector arg3, float arg4, float arg5) { + plugin::CallMethod<0x6F49A0, CBouncingPanel *, CVehicle*, RwFrame*, CVector, CVector, float, float>(this, vehicle, frame, arg2, arg3, arg4, arg5); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBouncingPanel.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBouncingPanel.h new file mode 100644 index 00000000..ab9fed9f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBouncingPanel.h @@ -0,0 +1,33 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class CVehicle; + +class PLUGIN_API CBouncingPanel { +public: + unsigned short m_nFrameId; + unsigned short m_nAxis; + float m_fAngleLimit; + CVector m_vecRotation; + CVector m_vecPos; + + static float &BOUNCE_SPRING_DAMP_MULT; // 0.95 + static float &BOUNCE_SPRING_RETURN_MULT; // 0.1 + static float &BOUNCE_VEL_CHANGE_LIMIT; // 0.1 + static float &BOUNCE_HANGING_DAMP_MULT; // 0.98 + static float &BOUNCE_HANGING_RETURN_MULT; // 0.02 + + void ResetPanel(); + void SetPanel(short frameId, short axis, float angleLimit); + void ProcessPanel(CVehicle* vehicle, RwFrame* frame, CVector arg2, CVector arg3, float arg4, float arg5); +}; + +VALIDATE_SIZE(CBouncingPanel, 0x20); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBoundingBox.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBoundingBox.cpp new file mode 100644 index 00000000..d57cf0c6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBoundingBox.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBoundingBox.h" + +// Converted from thiscall void CBoundingBox::CBoundingBox(void) 0x40FAF0 +CBoundingBox::CBoundingBox() { + plugin::CallMethod<0x40FAF0, CBoundingBox *>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBoundingBox.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBoundingBox.h new file mode 100644 index 00000000..ca38dfad --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBoundingBox.h @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CBox.h" + +class CBoundingBox : public CBox { +public: + CBoundingBox(); + + CBoundingBox(plugin::dummy_func_t) {} +}; + +VALIDATE_SIZE(CBoundingBox, 0x18); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBox.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBox.cpp new file mode 100644 index 00000000..0c33821f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBox.cpp @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBox.h" + +void CBox::Set(CVector const& vecMin, CVector const& vecMax) +{ + ((void (__thiscall *)(CBox *, CVector const&, CVector const&))0x40EDE0)(this, vecMin, vecMax); +} + +void CBox::Recalc() +{ + ((void (__thiscall *)(CBox *))0x40EE20)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBox.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBox.h new file mode 100644 index 00000000..d6bb8616 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBox.h @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class CBox { +public: + CVector m_vecMin; + CVector m_vecMax; + + void Set(CVector const& vecMin, CVector const& vecMax); + // updates box corners, like (if left>right then swap(left, right)) + void Recalc(); +}; + +VALIDATE_SIZE(CBox, 0x18); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBrightLights.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBrightLights.cpp new file mode 100644 index 00000000..dccef875 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBrightLights.cpp @@ -0,0 +1,32 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBrightLights.h" + +unsigned int MAX_NUM_BRIGHTLIGHTS = 32; + +tBrightLight *CBrightLights::aBrightLights = (tBrightLight *)0xC7CB58; +unsigned int &CBrightLights::NumBrightLights = *(unsigned int *)0xC7C6FC; + +// Converted from cdecl void CBrightLights::RenderOutGeometryBuffer(void) 0x722150 +void CBrightLights::RenderOutGeometryBuffer() { + plugin::Call<0x722150>(); +} + +// Converted from cdecl void CBrightLights::Render(void) 0x7241C0 +void CBrightLights::Render() { + plugin::Call<0x7241C0>(); +} + +// Converted from cdecl void CBrightLights::RegisterOne(CVector posn,CVector top,CVector right,CVector at,uchar color,uchar,uchar,uchar) 0x724770 +void CBrightLights::RegisterOne(CVector posn, CVector top, CVector right, CVector at, unsigned char color, unsigned char arg5, unsigned char arg6, unsigned char arg7) { + plugin::Call<0x724770, CVector, CVector, CVector, CVector, unsigned char, unsigned char, unsigned char, unsigned char>(posn, top, right, at, color, arg5, arg6, arg7); +} + +// Converted from cdecl void CBrightLights::Init(void) 0x722140 +void CBrightLights::Init() { + plugin::Call<0x722140>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBrightLights.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBrightLights.h new file mode 100644 index 00000000..1340e6f9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBrightLights.h @@ -0,0 +1,45 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVector.h" + +enum eBrightLightColor { + BRIGHTLIGHT_GREEN = 1, + BRIGHTLIGHT_YELLOW = 2, + BRIGHTLIGHT_RED = 3, + BRIGHTLIGHT_GREEN2 = 13, + BRIGHTLIGHT_YELLOW2 = 14, + BRIGHTLIGHT_RED2 = 15 +}; + +struct tBrightLight { + CVector m_vecPosition; + CVector m_vecRight; + CVector m_vecTop; + CVector m_vecAt; + float m_fDistanceToCamera; + unsigned char m_nColor; // see eBrightLightColor + char field_35; + char field_36; + char field_37; +}; + +VALIDATE_SIZE(tBrightLight, 0x38); + +extern unsigned int MAX_NUM_BRIGHTLIGHTS; // default 32 + +class PLUGIN_API CBrightLights { +public: + static tBrightLight *aBrightLights; // static tBrightLight aBrightLights[32] + static unsigned int &NumBrightLights; + + static void RenderOutGeometryBuffer(); + static void Render(); + static void RegisterOne(CVector posn, CVector top, CVector right, CVector at, unsigned char color, unsigned char arg5, unsigned char arg6, unsigned char arg7); + static void Init(); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBuilding.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBuilding.cpp new file mode 100644 index 00000000..bc159b24 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBuilding.cpp @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBuilding.h" + +void CBuilding::ReplaceWithNewModel(int newModelIndex) +{ + ((void (__thiscall *)(CEntity *, int))0x403EC0)(this, newModelIndex); +} + +// Converted from cdecl void* CBuilding::operator new(uint size) 0x404090 +void* CBuilding::operator new(unsigned int size) { + return plugin::CallAndReturn(size); +} + +// Converted from cdecl void CBuilding::operator delete(void *data) 0x4040A0 +void CBuilding::operator delete(void* data) { + plugin::Call<0x4040A0, void*>(data); +} + +// Converted from thiscall void CBuilding::CBuilding(void) 0x403E00 +CBuilding::CBuilding() : CEntity(plugin::dummy) { + plugin::CallMethod<0x403E00, CBuilding *>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBuilding.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBuilding.h new file mode 100644 index 00000000..5291eb08 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBuilding.h @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CEntity.h" + +class CBuilding : public CEntity { +protected: + CBuilding(plugin::dummy_func_t) : CEntity(plugin::dummy) {} +public: + void ReplaceWithNewModel(int newModelIndex); + + static void* operator new(unsigned int size); + static void operator delete(void* data); + CBuilding(); +}; + +VALIDATE_SIZE(CBuilding, 0x38); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBulletInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBulletInfo.cpp new file mode 100644 index 00000000..4b716d0e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBulletInfo.cpp @@ -0,0 +1,32 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBulletInfo.h" + +unsigned int MAX_BULLET_INFOS = 8; +CBulletInfo *aBulletInfos = (CBulletInfo *)0xC88740; +CVector &PlayerSniperBulletStart = *(CVector *)0xC888A0; +CVector &PlayerSniperBulletEnd = *(CVector *)0xC888AC; + +// Converted from cdecl void CBulletInfo::Initialise(void) 0x735FD0 +void CBulletInfo::Initialise() { + plugin::Call<0x735FD0>(); +} + +// Converted from cdecl void CBulletInfo::Shutdown(void) 0x736000 +void CBulletInfo::Shutdown() { + plugin::Call<0x736000>(); +} + +// Converted from cdecl bool CBulletInfo::AddBullet(CEntity *creator,eWeaponType weaponType,CVector position,CVector velocity) 0x736010 +bool CBulletInfo::AddBullet(CEntity* creator, eWeaponType weaponType, CVector position, CVector velocity) { + return plugin::CallAndReturn(creator, weaponType, position, velocity); +} + +// Converted from cdecl void CBulletInfo::Update(void) 0x7360D0 +void CBulletInfo::Update() { + plugin::Call<0x7360D0>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBulletInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBulletInfo.h new file mode 100644 index 00000000..501dbf99 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBulletInfo.h @@ -0,0 +1,41 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" +#include "eWeaponType.h" +#include "CEntity.h" + +class PLUGIN_API CBulletInfo { +public: + eWeaponType m_nWeaponType; + CEntity *m_pCreator; + int m_nDestroyTime; + bool m_bExists; +private: + char _pad0D[3]; +public: + CVector m_vecPosition; + CVector m_vecVelocity; + short m_nDamage; +private: + char _pad2A[2]; +public: + + static void Initialise(); + static void Shutdown(); + static bool AddBullet(CEntity* creator, eWeaponType weaponType, CVector position, CVector velocity); + static void Update(); +}; + +VALIDATE_SIZE(CBulletInfo, 0x2C); + +extern unsigned int MAX_BULLET_INFOS; // default 8 +extern CBulletInfo *aBulletInfos; // CBulletInfo aBulletInfos[MAX_BULLET_INFOS] +extern CVector &PlayerSniperBulletStart; +extern CVector &PlayerSniperBulletEnd; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBulletTrace.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBulletTrace.cpp new file mode 100644 index 00000000..76799213 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBulletTrace.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBulletTrace.h" + +// Converted from thiscall void CBulletTrace::Update(void) 0x721D70 +void CBulletTrace::Update() { + plugin::CallMethod<0x721D70, CBulletTrace *>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBulletTrace.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBulletTrace.h new file mode 100644 index 00000000..c0a3d01d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBulletTrace.h @@ -0,0 +1,30 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVector.h" + +class PLUGIN_API CBulletTrace { +public: + CVector m_vecStart; + CVector m_vecEnd; + bool m_bExists; +private: + char _pad19[3]; +public: + int m_nCreationTime; + unsigned int m_nLifeTime; + float m_fRadius; + unsigned char m_nTransparency; +private: + char _pad29[3]; +public: + + void Update(); +}; + +VALIDATE_SIZE(CBulletTrace, 0x2C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBulletTraces.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CBulletTraces.cpp new file mode 100644 index 00000000..a1b59dd4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBulletTraces.cpp @@ -0,0 +1,36 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CBulletTraces.h" + +unsigned int MAX_NUM_BULLETTRACES = 16; + +CBulletTrace *CBulletTraces::aTraces = (CBulletTrace *)0xC7C748; + +// Converted from cdecl void CBulletTraces::AddTrace(CVector * start,CVector * end,int weaponType,CEntity * entity) 0x573D40 +void CBulletTraces::AddTrace(CVector* start, CVector* end, int weaponType, CEntity* entity) { + plugin::Call<0x726AF0, CVector*, CVector*, int, CEntity*>(start, end, weaponType, entity); +} + +void CBulletTraces::AddTrace(CVector *start, CVector *end, float radius, unsigned int time, unsigned char transparency) +{ + ((void (__cdecl *)(CVector *, CVector *, float, unsigned int, unsigned char))0x723750)(start, end, radius, time, transparency); +} + +void CBulletTraces::Render() +{ + ((void (__cdecl *)())0x723C10)(); +} + +void CBulletTraces::Update() +{ + ((void (__cdecl *)())0x723FB0)(); +} + +// Converted from cdecl void CBulletTraces::Init(void) 00721D50 +void CBulletTraces::Init() { + plugin::Call<0x721D50>(); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CBulletTraces.h b/third-party/plugin-sdk/plugin_sa/game_sa/CBulletTraces.h new file mode 100644 index 00000000..baa11697 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CBulletTraces.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CBulletTrace.h" +#include "CEntity.h" + +extern unsigned int MAX_NUM_BULLETTRACES; // default 16 + +class PLUGIN_API CBulletTraces { +public: + static CBulletTrace *aTraces; // static CBulletTrace aTraces[16] + + static void AddTrace(CVector *start, CVector *end, int weaponType, CEntity *entity); + static void AddTrace(CVector *start, CVector *end, float radius, unsigned int time, unsigned char transparency); + static void Render(); + static void Update(); + static void Init(); +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCam.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCam.h new file mode 100644 index 00000000..dc0e9516 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCam.h @@ -0,0 +1,132 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "eCamMode.h" +#include "CVector.h" + +/* http://code.google.com/p/mtasa-blue/source/browse/tags/1.3.4/MTA10/game_sa/CCamSA.h */ + +class CEntity; +class CPed; +class CVehicle; + +class PLUGIN_API CCam { +public: + bool m_bBelowMinDist; + bool m_bBehindPlayerDesired; + bool m_bCamLookingAtVector; + bool m_bCollisionChecksOn; + bool m_bFixingBeta; + bool m_bTheHeightFixerVehicleIsATrain; + bool m_bLookBehindCamWasInFront; + bool m_bLookingBehind; + bool m_bLookingLeft; + bool m_bLookingRight; + bool m_bResetStatics; + bool m_bRotating; + eCamMode m_nMode; +private: + char _pad[2]; +public: + unsigned int m_nFinishTime; + unsigned int m_nDoCollisionChecksOnFrameNum; + unsigned int m_nDoCollisionCheckEveryNumOfFrames; + unsigned int m_nFrameNumWereAt; + unsigned int m_nRunningVectorArrayPos; + unsigned int m_nRunningVectorCounter; + unsigned int m_nDirectionWasLooking; + float m_fMaxRoleAngle; + float m_fRoll; + float m_fRollSpeed; + float m_fSyphonModeTargetZOffSet; + float m_fAmountFractionObscured; + float m_fAlphaSpeedOverOneFrame; + float m_fBetaSpeedOverOneFrame; + float m_fBufferedTargetBeta; + float m_fBufferedTargetOrientation; + float m_fBufferedTargetOrientationSpeed; + float m_fCamBufferedHeight; + float m_fCamBufferedHeightSpeed; + float m_fCloseInPedHeightOffset; + float m_fCloseInPedHeightOffsetSpeed; + float m_fCloseInCarHeightOffset; + float m_fCloseInCarHeightOffsetSpeed; + float m_fDimensionOfHighestNearCar; + float m_fDistanceBeforeChanges; + float m_fFovSpeedOverOneFrame; + float m_fMinDistAwayFromCamWhenInterPolating; + float m_fPedBetweenCameraHeightOffset; + float m_fPlayerInFrontSyphonAngleOffSet; + float m_fRadiusForDead; + float m_fRealGroundDist; + float m_fTargetBeta; + float m_fTimeElapsedFloat; + float m_fTilt; + float m_fTiltSpeed; + float m_fTransitionBeta; + float m_fTrueBeta; + float m_fTrueAlpha; + float m_fInitialPlayerOrientation; + float m_fVerticalAngle; + float m_fAlphaSpeed; + float m_fFOV; + float m_fFOVSpeed; + float m_fHorizontalAngle; + float m_fBetaSpeed; + float m_fDistance; + float m_fDistanceSpeed; + float m_fCaMinDistance; + float m_fCaMaxDistance; + float m_fSpeedVar; + float m_fCameraHeightMultiplier; + float m_fTargetZoomGroundOne; + float m_fTargetZoomGroundTwo; + float m_fTargetZoomGroundThree; + float m_fTargetZoomOneZExtra; + float m_fTargetZoomTwoZExtra; + float m_fTargetZoomTwoInteriorZExtra; + float m_fTargetZoomThreeZExtra; + float m_fTargetZoomZCloseIn; + float m_fMinRealGroundDist; + float m_fTargetCloseInDist; + float m_fBeta_Targeting; + float m_fX_Targetting; + float m_fY_Targetting; + CVehicle *m_pCarWeAreFocussingOn; + CVehicle *m_pCarWeAreFocussingOnI; + float m_fCamBumpedHorz; + float m_fCamBumpedVert; + unsigned int m_nCamBumpedTime; + CVector m_vecSourceSpeedOverOneFrame; + CVector m_vecTargetSpeedOverOneFrame; + CVector m_vecUpOverOneFrame; + CVector m_vecTargetCoorsForFudgeInter; + CVector m_vecCamFixedModeVector; + CVector m_vecCamFixedModeSource; + CVector m_vecCamFixedModeUpOffSet; + CVector m_vecLastAboveWaterCamPosition; + CVector m_vecBufferedPlayerBodyOffset; + CVector m_vecFront; + CVector m_vecSource; + CVector m_vecSourceBeforeLookBehind; + CVector m_vecUp; + CVector m_avecPreviousVectors[2]; + CVector m_avecTargetHistoryPos[4]; + unsigned int m_anTargetHistoryTime[4]; + unsigned int m_nCurrentHistoryPoints; + CEntity *m_pCamTargetEntity; + float m_fCameraDistance; + float m_fIdealAlpha; + float m_fPlayerVelocity; + CVehicle *m_pLastCarEntered; + CPed *m_pLastPedLookedAt; + bool m_bFirstPersonRunAboutActive; +}; + +VALIDATE_SIZE(CCam, 0x238); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCamPathSplines.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCamPathSplines.h new file mode 100644 index 00000000..c24a0070 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCamPathSplines.h @@ -0,0 +1,18 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + + +class PLUGIN_API CCamPathSplines +{ +public: + float *m_pArrPathData; +}; + +VALIDATE_SIZE(CCamPathSplines, 4); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCamera.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCamera.cpp new file mode 100644 index 00000000..eddae10a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCamera.cpp @@ -0,0 +1,858 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CCamera.h" + +PLUGIN_SOURCE_FILE + +float &CCamera::m_f3rdPersonCHairMultY = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB6EC10, 0, 0, 0, 0, 0)); +float &CCamera::m_f3rdPersonCHairMultX = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB6EC14, 0, 0, 0, 0, 0)); +float &CCamera::m_fMouseAccelVertical = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB6EC18, 0, 0, 0, 0, 0)); +float &CCamera::m_fMouseAccelHorzntal = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB6EC1C, 0, 0, 0, 0, 0)); +bool &CCamera::m_bUseMouse3rdPerson = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB6EC2E, 0, 0, 0, 0, 0)); +CCamera &TheCamera = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB6F028, 0, 0, 0, 0, 0)); + +int ctor_addr(CCamera) = ADDRESS_BY_VERSION(0x51A450, 0, 0, 0, 0, 0); +int ctor_gaddr(CCamera) = GLOBAL_ADDRESS_BY_VERSION(0x51A450, 0, 0, 0, 0, 0); + +int dtor_addr(CCamera) = ADDRESS_BY_VERSION(0x50A870, 0, 0, 0, 0, 0); +int dtor_gaddr(CCamera) = GLOBAL_ADDRESS_BY_VERSION(0x50A870, 0, 0, 0, 0, 0); + +int del_dtor_addr(CCamera) = ADDRESS_BY_VERSION(0x514010, 0, 0, 0, 0, 0); +int del_dtor_gaddr(CCamera) = GLOBAL_ADDRESS_BY_VERSION(0x514010, 0, 0, 0, 0, 0); + +int addrof(CCamera::AddShakeSimple) = ADDRESS_BY_VERSION(0x50D240, 0, 0, 0, 0, 0); +int gaddrof(CCamera::AddShakeSimple) = GLOBAL_ADDRESS_BY_VERSION(0x50D240, 0, 0, 0, 0, 0); + +void CCamera::AddShakeSimple(float duration, int type, float intensity) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::AddShakeSimple), this, duration, type, intensity); +} + +int addrof(CCamera::AllowShootingWith2PlayersInCar) = ADDRESS_BY_VERSION(0x50C280, 0, 0, 0, 0, 0); +int gaddrof(CCamera::AllowShootingWith2PlayersInCar) = GLOBAL_ADDRESS_BY_VERSION(0x50C280, 0, 0, 0, 0, 0); + +void CCamera::AllowShootingWith2PlayersInCar(bool bAllowShootingWith2PlayersInCar) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::AllowShootingWith2PlayersInCar), this, bAllowShootingWith2PlayersInCar); +} + +int addrof(CCamera::ApplyVehicleCameraTweaks) = ADDRESS_BY_VERSION(0x50A480, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ApplyVehicleCameraTweaks) = GLOBAL_ADDRESS_BY_VERSION(0x50A480, 0, 0, 0, 0, 0); + +void CCamera::ApplyVehicleCameraTweaks(CVehicle *vehicle) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ApplyVehicleCameraTweaks), this, vehicle); +} + +int addrof(CCamera::AvoidTheGeometry) = ADDRESS_BY_VERSION(0x514030, 0, 0, 0, 0, 0); +int gaddrof(CCamera::AvoidTheGeometry) = GLOBAL_ADDRESS_BY_VERSION(0x514030, 0, 0, 0, 0, 0); + +void CCamera::AvoidTheGeometry(CVector const *arg2, CVector const *arg3, CVector *arg4, float FOV) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::AvoidTheGeometry), this, arg2, arg3, arg4, FOV); +} + +int addrof(CCamera::CalculateDerivedValues) = ADDRESS_BY_VERSION(0x5150E0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::CalculateDerivedValues) = GLOBAL_ADDRESS_BY_VERSION(0x5150E0, 0, 0, 0, 0, 0); + +void CCamera::CalculateDerivedValues(bool bForMirror, bool bOriented) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::CalculateDerivedValues), this, bForMirror, bOriented); +} + +int addrof(CCamera::CalculateFrustumPlanes) = ADDRESS_BY_VERSION(0x514D60, 0, 0, 0, 0, 0); +int gaddrof(CCamera::CalculateFrustumPlanes) = GLOBAL_ADDRESS_BY_VERSION(0x514D60, 0, 0, 0, 0, 0); + +void CCamera::CalculateFrustumPlanes(bool bForMirror) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::CalculateFrustumPlanes), this, bForMirror); +} + +int addrof(CCamera::CalculateGroundHeight) = ADDRESS_BY_VERSION(0x514B80, 0, 0, 0, 0, 0); +int gaddrof(CCamera::CalculateGroundHeight) = GLOBAL_ADDRESS_BY_VERSION(0x514B80, 0, 0, 0, 0, 0); + +float CCamera::CalculateGroundHeight(unsigned int type) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::CalculateGroundHeight), this, type); +} + +int addrof(CCamera::CalculateMirroredMatrix) = ADDRESS_BY_VERSION(0x50B380, 0, 0, 0, 0, 0); +int gaddrof(CCamera::CalculateMirroredMatrix) = GLOBAL_ADDRESS_BY_VERSION(0x50B380, 0, 0, 0, 0, 0); + +void CCamera::CalculateMirroredMatrix(CVector posn, float MirrorV, CMatrix *CamMat, CMatrix *MirrorMat) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::CalculateMirroredMatrix), this, posn, MirrorV, CamMat, MirrorMat); +} + +int addrof(CCamera::CamControl) = ADDRESS_BY_VERSION(0x527FA0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::CamControl) = GLOBAL_ADDRESS_BY_VERSION(0x527FA0, 0, 0, 0, 0, 0); + +void CCamera::CamControl() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::CamControl), this); +} + +int addrof(CCamera::CamShake) = ADDRESS_BY_VERSION(0x50A9F0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::CamShake) = GLOBAL_ADDRESS_BY_VERSION(0x50A9F0, 0, 0, 0, 0, 0); + +void CCamera::CamShake(float arg2, float x, float y, float z) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::CamShake), this, arg2, x, y, z); +} + +int addrof(CCamera::CameraColDetAndReact) = ADDRESS_BY_VERSION(0x520190, 0, 0, 0, 0, 0); +int gaddrof(CCamera::CameraColDetAndReact) = GLOBAL_ADDRESS_BY_VERSION(0x520190, 0, 0, 0, 0, 0); + +char CCamera::CameraColDetAndReact(CVector *source, CVector *target) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::CameraColDetAndReact), this, source, target); +} + +int addrof(CCamera::CameraGenericModeSpecialCases) = ADDRESS_BY_VERSION(0x50CD30, 0, 0, 0, 0, 0); +int gaddrof(CCamera::CameraGenericModeSpecialCases) = GLOBAL_ADDRESS_BY_VERSION(0x50CD30, 0, 0, 0, 0, 0); + +void CCamera::CameraGenericModeSpecialCases(CPed *targetPed) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::CameraGenericModeSpecialCases), this, targetPed); +} + +int addrof(CCamera::CameraPedAimModeSpecialCases) = ADDRESS_BY_VERSION(0x50CDA0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::CameraPedAimModeSpecialCases) = GLOBAL_ADDRESS_BY_VERSION(0x50CDA0, 0, 0, 0, 0, 0); + +void CCamera::CameraPedAimModeSpecialCases(CPed *targPed) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::CameraPedAimModeSpecialCases), this, targPed); +} + +int addrof(CCamera::CameraPedModeSpecialCases) = ADDRESS_BY_VERSION(0x50CD80, 0, 0, 0, 0, 0); +int gaddrof(CCamera::CameraPedModeSpecialCases) = GLOBAL_ADDRESS_BY_VERSION(0x50CD80, 0, 0, 0, 0, 0); + +void CCamera::CameraPedModeSpecialCases() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::CameraPedModeSpecialCases), this); +} + +int addrof(CCamera::CameraVehicleModeSpecialCases) = ADDRESS_BY_VERSION(0x50CDE0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::CameraVehicleModeSpecialCases) = GLOBAL_ADDRESS_BY_VERSION(0x50CDE0, 0, 0, 0, 0, 0); + +void CCamera::CameraVehicleModeSpecialCases(CVehicle *targVehicle) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::CameraVehicleModeSpecialCases), this, targVehicle); +} + +int addrof(CCamera::ClearPlayerWeaponMode) = ADDRESS_BY_VERSION(0x50AB10, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ClearPlayerWeaponMode) = GLOBAL_ADDRESS_BY_VERSION(0x50AB10, 0, 0, 0, 0, 0); + +void CCamera::ClearPlayerWeaponMode() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ClearPlayerWeaponMode), this); +} + +int addrof(CCamera::ConeCastCollisionResolve) = ADDRESS_BY_VERSION(0x51A5D0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ConeCastCollisionResolve) = GLOBAL_ADDRESS_BY_VERSION(0x51A5D0, 0, 0, 0, 0, 0); + +bool CCamera::ConeCastCollisionResolve(CVector *source, CVector *center, CVector *pVecOut, float radius, float arg5, float *pFloatOut) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::ConeCastCollisionResolve), this, source, center, pVecOut, radius, arg5, pFloatOut); +} + +int addrof(CCamera::ConsiderPedAsDucking) = ADDRESS_BY_VERSION(0x50CEB0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ConsiderPedAsDucking) = GLOBAL_ADDRESS_BY_VERSION(0x50CEB0, 0, 0, 0, 0, 0); + +bool CCamera::ConsiderPedAsDucking(CPed *ped) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::ConsiderPedAsDucking), this, ped); +} + +int addrof(CCamera::CopyCameraMatrixToRWCam) = ADDRESS_BY_VERSION(0x50AFA0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::CopyCameraMatrixToRWCam) = GLOBAL_ADDRESS_BY_VERSION(0x50AFA0, 0, 0, 0, 0, 0); + +void CCamera::CopyCameraMatrixToRWCam(bool bUpdateMatrix) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::CopyCameraMatrixToRWCam), this, bUpdateMatrix); +} + +int addrof(CCamera::DealWithMirrorBeforeConstructRenderList) = ADDRESS_BY_VERSION(0x50B510, 0, 0, 0, 0, 0); +int gaddrof(CCamera::DealWithMirrorBeforeConstructRenderList) = GLOBAL_ADDRESS_BY_VERSION(0x50B510, 0, 0, 0, 0, 0); + +void CCamera::DealWithMirrorBeforeConstructRenderList(bool bActiveMirror, CVector MirrorNormal, float MirrorV, CMatrix *matMirror) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::DealWithMirrorBeforeConstructRenderList), this, bActiveMirror, MirrorNormal, MirrorV, matMirror); +} + +int addrof(CCamera::DeleteCutSceneCamDataMemory) = ADDRESS_BY_VERSION(0x5B24A0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::DeleteCutSceneCamDataMemory) = GLOBAL_ADDRESS_BY_VERSION(0x5B24A0, 0, 0, 0, 0, 0); + +void CCamera::DeleteCutSceneCamDataMemory() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::DeleteCutSceneCamDataMemory), this); +} + +int addrof(CCamera::DrawBordersForWideScreen) = ADDRESS_BY_VERSION(0x514860, 0, 0, 0, 0, 0); +int gaddrof(CCamera::DrawBordersForWideScreen) = GLOBAL_ADDRESS_BY_VERSION(0x514860, 0, 0, 0, 0, 0); + +void CCamera::DrawBordersForWideScreen() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::DrawBordersForWideScreen), this); +} + +int addrof(CCamera::Enable1rstPersonCamCntrlsScript) = ADDRESS_BY_VERSION(0x50AC00, 0, 0, 0, 0, 0); +int gaddrof(CCamera::Enable1rstPersonCamCntrlsScript) = GLOBAL_ADDRESS_BY_VERSION(0x50AC00, 0, 0, 0, 0, 0); + +void CCamera::Enable1rstPersonCamCntrlsScript() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::Enable1rstPersonCamCntrlsScript), this); +} + +int addrof(CCamera::Enable1rstPersonWeaponsCamera) = ADDRESS_BY_VERSION(0x50AC10, 0, 0, 0, 0, 0); +int gaddrof(CCamera::Enable1rstPersonWeaponsCamera) = GLOBAL_ADDRESS_BY_VERSION(0x50AC10, 0, 0, 0, 0, 0); + +void CCamera::Enable1rstPersonWeaponsCamera() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::Enable1rstPersonWeaponsCamera), this); +} + +int addrof(CCamera::Fade) = ADDRESS_BY_VERSION(0x50AC20, 0, 0, 0, 0, 0); +int gaddrof(CCamera::Fade) = GLOBAL_ADDRESS_BY_VERSION(0x50AC20, 0, 0, 0, 0, 0); + +void CCamera::Fade(float fadeDuration, short FadeInOutFlag) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::Fade), this, fadeDuration, FadeInOutFlag); +} + +int addrof(CCamera::Find3rdPersonCamTargetVector) = ADDRESS_BY_VERSION(0x514970, 0, 0, 0, 0, 0); +int gaddrof(CCamera::Find3rdPersonCamTargetVector) = GLOBAL_ADDRESS_BY_VERSION(0x514970, 0, 0, 0, 0, 0); + +void CCamera::Find3rdPersonCamTargetVector(float range, CVector source, CVector *pCamera, CVector *pPoint) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::Find3rdPersonCamTargetVector), this, range, source, pCamera, pPoint); +} + +int addrof(CCamera::Find3rdPersonQuickAimPitch) = ADDRESS_BY_VERSION(0x50AD40, 0, 0, 0, 0, 0); +int gaddrof(CCamera::Find3rdPersonQuickAimPitch) = GLOBAL_ADDRESS_BY_VERSION(0x50AD40, 0, 0, 0, 0, 0); + +float CCamera::Find3rdPersonQuickAimPitch() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::Find3rdPersonQuickAimPitch), this); +} + +int addrof(CCamera::FindCamFOV) = ADDRESS_BY_VERSION(0x50AD20, 0, 0, 0, 0, 0); +int gaddrof(CCamera::FindCamFOV) = GLOBAL_ADDRESS_BY_VERSION(0x50AD20, 0, 0, 0, 0, 0); + +float CCamera::FindCamFOV() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::FindCamFOV), this); +} + +int addrof(CCamera::FinishCutscene) = ADDRESS_BY_VERSION(0x514950, 0, 0, 0, 0, 0); +int gaddrof(CCamera::FinishCutscene) = GLOBAL_ADDRESS_BY_VERSION(0x514950, 0, 0, 0, 0, 0); + +void CCamera::FinishCutscene() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::FinishCutscene), this); +} + +int addrof(CCamera::GetArrPosForVehicleType) = ADDRESS_BY_VERSION(0x50AF00, 0, 0, 0, 0, 0); +int gaddrof(CCamera::GetArrPosForVehicleType) = GLOBAL_ADDRESS_BY_VERSION(0x50AF00, 0, 0, 0, 0, 0); + +void CCamera::GetArrPosForVehicleType(int type, int *arrPos) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::GetArrPosForVehicleType), this, type, arrPos); +} + +int addrof(CCamera::GetCutSceneFinishTime) = ADDRESS_BY_VERSION(0x50AD90, 0, 0, 0, 0, 0); +int gaddrof(CCamera::GetCutSceneFinishTime) = GLOBAL_ADDRESS_BY_VERSION(0x50AD90, 0, 0, 0, 0, 0); + +unsigned int CCamera::GetCutSceneFinishTime() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::GetCutSceneFinishTime), this); +} + +int addrof(CCamera::GetFading) = ADDRESS_BY_VERSION(0x50ADE0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::GetFading) = GLOBAL_ADDRESS_BY_VERSION(0x50ADE0, 0, 0, 0, 0, 0); + +bool CCamera::GetFading() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::GetFading), this); +} + +int addrof(CCamera::GetFadingDirection) = ADDRESS_BY_VERSION(0x50ADF0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::GetFadingDirection) = GLOBAL_ADDRESS_BY_VERSION(0x50ADF0, 0, 0, 0, 0, 0); + +int CCamera::GetFadingDirection() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::GetFadingDirection), this); +} + +int addrof(CCamera::GetGameCamPosition) = ADDRESS_BY_VERSION(0x50AE50, 0, 0, 0, 0, 0); +int gaddrof(CCamera::GetGameCamPosition) = GLOBAL_ADDRESS_BY_VERSION(0x50AE50, 0, 0, 0, 0, 0); + +CVector *CCamera::GetGameCamPosition() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::GetGameCamPosition), this); +} + +int addrof(CCamera::GetLookDirection) = ADDRESS_BY_VERSION(0x50AE90, 0, 0, 0, 0, 0); +int gaddrof(CCamera::GetLookDirection) = GLOBAL_ADDRESS_BY_VERSION(0x50AE90, 0, 0, 0, 0, 0); + +signed int CCamera::GetLookDirection() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::GetLookDirection), this); +} + +int addrof(CCamera::GetLookingForwardFirstPerson) = ADDRESS_BY_VERSION(0x50AED0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::GetLookingForwardFirstPerson) = GLOBAL_ADDRESS_BY_VERSION(0x50AED0, 0, 0, 0, 0, 0); + +bool CCamera::GetLookingForwardFirstPerson() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::GetLookingForwardFirstPerson), this); +} + +int addrof(CCamera::GetLookingLRBFirstPerson) = ADDRESS_BY_VERSION(0x50AE60, 0, 0, 0, 0, 0); +int gaddrof(CCamera::GetLookingLRBFirstPerson) = GLOBAL_ADDRESS_BY_VERSION(0x50AE60, 0, 0, 0, 0, 0); + +bool CCamera::GetLookingLRBFirstPerson() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::GetLookingLRBFirstPerson), this); +} + +int addrof(CCamera::GetPositionAlongSpline) = ADDRESS_BY_VERSION(0x50AF80, 0, 0, 0, 0, 0); +int gaddrof(CCamera::GetPositionAlongSpline) = GLOBAL_ADDRESS_BY_VERSION(0x50AF80, 0, 0, 0, 0, 0); + +float CCamera::GetPositionAlongSpline() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::GetPositionAlongSpline), this); +} + +int addrof(CCamera::GetRoughDistanceToGround) = ADDRESS_BY_VERSION(0x516B00, 0, 0, 0, 0, 0); +int gaddrof(CCamera::GetRoughDistanceToGround) = GLOBAL_ADDRESS_BY_VERSION(0x516B00, 0, 0, 0, 0, 0); + +float CCamera::GetRoughDistanceToGround() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::GetRoughDistanceToGround), this); +} + +int addrof(CCamera::GetScreenFadeStatus) = ADDRESS_BY_VERSION(0x50AE20, 0, 0, 0, 0, 0); +int gaddrof(CCamera::GetScreenFadeStatus) = GLOBAL_ADDRESS_BY_VERSION(0x50AE20, 0, 0, 0, 0, 0); + +signed int CCamera::GetScreenFadeStatus() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::GetScreenFadeStatus), this); +} + +int addrof(CCamera::GetScreenRect) = ADDRESS_BY_VERSION(0x50AB50, 0, 0, 0, 0, 0); +int gaddrof(CCamera::GetScreenRect) = GLOBAL_ADDRESS_BY_VERSION(0x50AB50, 0, 0, 0, 0, 0); + +void CCamera::GetScreenRect(CRect *pRect) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::GetScreenRect), this, pRect); +} + +int addrof(CCamera::Get_Just_Switched_Status) = ADDRESS_BY_VERSION(0x50AE10, 0, 0, 0, 0, 0); +int gaddrof(CCamera::Get_Just_Switched_Status) = GLOBAL_ADDRESS_BY_VERSION(0x50AE10, 0, 0, 0, 0, 0); + +bool CCamera::Get_Just_Switched_Status() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::Get_Just_Switched_Status), this); +} + +int addrof(CCamera::HandleCameraMotionForDucking) = ADDRESS_BY_VERSION(0x50CFA0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::HandleCameraMotionForDucking) = GLOBAL_ADDRESS_BY_VERSION(0x50CFA0, 0, 0, 0, 0, 0); + +void CCamera::HandleCameraMotionForDucking(CPed *ped, CVector *source, CVector *targPosn, bool arg5) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::HandleCameraMotionForDucking), this, ped, source, targPosn, arg5); +} + +int addrof(CCamera::HandleCameraMotionForDuckingDuringAim) = ADDRESS_BY_VERSION(0x50D090, 0, 0, 0, 0, 0); +int gaddrof(CCamera::HandleCameraMotionForDuckingDuringAim) = GLOBAL_ADDRESS_BY_VERSION(0x50D090, 0, 0, 0, 0, 0); + +void CCamera::HandleCameraMotionForDuckingDuringAim(CPed *ped, CVector *source, CVector *targPosn, bool arg5) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::HandleCameraMotionForDuckingDuringAim), this, ped, source, targPosn, arg5); +} + +int addrof(CCamera::ImproveNearClip) = ADDRESS_BY_VERSION(0x516B20, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ImproveNearClip) = GLOBAL_ADDRESS_BY_VERSION(0x516B20, 0, 0, 0, 0, 0); + +void CCamera::ImproveNearClip(CVehicle *pVehicle, CPed *pPed, CVector *source, CVector *targPosn) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ImproveNearClip), this, pVehicle, pPed, source, targPosn); +} + +int addrof(CCamera::Init) = ADDRESS_BY_VERSION(0x5BC520, 0, 0, 0, 0, 0); +int gaddrof(CCamera::Init) = GLOBAL_ADDRESS_BY_VERSION(0x5BC520, 0, 0, 0, 0, 0); + +void CCamera::Init() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::Init), this); +} + +int addrof(CCamera::InitCameraVehicleTweaks) = ADDRESS_BY_VERSION(0x50A3B0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::InitCameraVehicleTweaks) = GLOBAL_ADDRESS_BY_VERSION(0x50A3B0, 0, 0, 0, 0, 0); + +void CCamera::InitCameraVehicleTweaks() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::InitCameraVehicleTweaks), this); +} + +int addrof(CCamera::InitialiseScriptableComponents) = ADDRESS_BY_VERSION(0x50D2D0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::InitialiseScriptableComponents) = GLOBAL_ADDRESS_BY_VERSION(0x50D2D0, 0, 0, 0, 0, 0); + +int CCamera::InitialiseScriptableComponents() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::InitialiseScriptableComponents), this); +} + +int addrof(CCamera::IsExtraEntityToIgnore) = ADDRESS_BY_VERSION(0x50CE80, 0, 0, 0, 0, 0); +int gaddrof(CCamera::IsExtraEntityToIgnore) = GLOBAL_ADDRESS_BY_VERSION(0x50CE80, 0, 0, 0, 0, 0); + +bool CCamera::IsExtraEntityToIgnore(CEntity *entity) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::IsExtraEntityToIgnore), this, entity); +} + +int addrof(CCamera::IsItTimeForNewcam) = ADDRESS_BY_VERSION(0x51D770, 0, 0, 0, 0, 0); +int gaddrof(CCamera::IsItTimeForNewcam) = GLOBAL_ADDRESS_BY_VERSION(0x51D770, 0, 0, 0, 0, 0); + +bool CCamera::IsItTimeForNewcam(int CamSequence, int StartTime) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::IsItTimeForNewcam), this, CamSequence, StartTime); +} + +int addrof_o(CCamera::IsSphereVisible, bool (CCamera::*)(CVector const &, float, RwMatrixTag *)) = ADDRESS_BY_VERSION(0x420C40, 0, 0, 0, 0, 0); +int gaddrof_o(CCamera::IsSphereVisible, bool (CCamera::*)(CVector const &, float, RwMatrixTag *)) = GLOBAL_ADDRESS_BY_VERSION(0x420C40, 0, 0, 0, 0, 0); + +bool CCamera::IsSphereVisible(CVector const &origin, float radius, RwMatrixTag *transformMatrix) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof_o(CCamera::IsSphereVisible, bool (CCamera::*)(CVector const &, float, RwMatrixTag *)), this, origin, radius, transformMatrix); +} + +int addrof_o(CCamera::IsSphereVisible, bool (CCamera::*)(CVector const &, float)) = ADDRESS_BY_VERSION(0x420D40, 0, 0, 0, 0, 0); +int gaddrof_o(CCamera::IsSphereVisible, bool (CCamera::*)(CVector const &, float)) = GLOBAL_ADDRESS_BY_VERSION(0x420D40, 0, 0, 0, 0, 0); + +bool CCamera::IsSphereVisible(CVector const &origin, float radius) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof_o(CCamera::IsSphereVisible, bool (CCamera::*)(CVector const &, float)), this, origin, radius); +} + +int addrof(CCamera::LerpFOV) = ADDRESS_BY_VERSION(0x50D280, 0, 0, 0, 0, 0); +int gaddrof(CCamera::LerpFOV) = GLOBAL_ADDRESS_BY_VERSION(0x50D280, 0, 0, 0, 0, 0); + +void CCamera::LerpFOV(float zoomInFactor, float zoomOutFactor, float timelimit, bool bEase) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::LerpFOV), this, zoomInFactor, zoomOutFactor, timelimit, bEase); +} + +int addrof(CCamera::LoadPathSplines) = ADDRESS_BY_VERSION(0x5B24D0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::LoadPathSplines) = GLOBAL_ADDRESS_BY_VERSION(0x5B24D0, 0, 0, 0, 0, 0); + +void CCamera::LoadPathSplines(int pFile) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::LoadPathSplines), this, pFile); +} + +int addrof(CCamera::Process) = ADDRESS_BY_VERSION(0x52B730, 0, 0, 0, 0, 0); +int gaddrof(CCamera::Process) = GLOBAL_ADDRESS_BY_VERSION(0x52B730, 0, 0, 0, 0, 0); + +void CCamera::Process() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::Process), this); +} + +int addrof_o(CCamera::ProcessFOVLerp, void (CCamera::*)(float)) = ADDRESS_BY_VERSION(0x50D510, 0, 0, 0, 0, 0); +int gaddrof_o(CCamera::ProcessFOVLerp, void (CCamera::*)(float)) = GLOBAL_ADDRESS_BY_VERSION(0x50D510, 0, 0, 0, 0, 0); + +void CCamera::ProcessFOVLerp(float ratio) { + plugin::CallMethodDynGlobal(gaddrof_o(CCamera::ProcessFOVLerp, void (CCamera::*)(float)), this, ratio); +} + +int addrof_o(CCamera::ProcessFOVLerp, void (CCamera::*)()) = ADDRESS_BY_VERSION(0x516500, 0, 0, 0, 0, 0); +int gaddrof_o(CCamera::ProcessFOVLerp, void (CCamera::*)()) = GLOBAL_ADDRESS_BY_VERSION(0x516500, 0, 0, 0, 0, 0); + +void CCamera::ProcessFOVLerp() { + plugin::CallMethodDynGlobal(gaddrof_o(CCamera::ProcessFOVLerp, void (CCamera::*)()), this); +} + +int addrof(CCamera::ProcessFade) = ADDRESS_BY_VERSION(0x50B5D0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ProcessFade) = GLOBAL_ADDRESS_BY_VERSION(0x50B5D0, 0, 0, 0, 0, 0); + +void CCamera::ProcessFade() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ProcessFade), this); +} + +int addrof(CCamera::ProcessMusicFade) = ADDRESS_BY_VERSION(0x50B6D0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ProcessMusicFade) = GLOBAL_ADDRESS_BY_VERSION(0x50B6D0, 0, 0, 0, 0, 0); + +void CCamera::ProcessMusicFade() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ProcessMusicFade), this); +} + +int addrof(CCamera::ProcessObbeCinemaCameraBoat) = ADDRESS_BY_VERSION(0x526E20, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ProcessObbeCinemaCameraBoat) = GLOBAL_ADDRESS_BY_VERSION(0x526E20, 0, 0, 0, 0, 0); + +void CCamera::ProcessObbeCinemaCameraBoat() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ProcessObbeCinemaCameraBoat), this); +} + +int addrof(CCamera::ProcessObbeCinemaCameraCar) = ADDRESS_BY_VERSION(0x5267C0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ProcessObbeCinemaCameraCar) = GLOBAL_ADDRESS_BY_VERSION(0x5267C0, 0, 0, 0, 0, 0); + +void CCamera::ProcessObbeCinemaCameraCar() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ProcessObbeCinemaCameraCar), this); +} + +int addrof(CCamera::ProcessObbeCinemaCameraHeli) = ADDRESS_BY_VERSION(0x526AE0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ProcessObbeCinemaCameraHeli) = GLOBAL_ADDRESS_BY_VERSION(0x526AE0, 0, 0, 0, 0, 0); + +void CCamera::ProcessObbeCinemaCameraHeli() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ProcessObbeCinemaCameraHeli), this); +} + +int addrof(CCamera::ProcessObbeCinemaCameraPed) = ADDRESS_BY_VERSION(0x50B880, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ProcessObbeCinemaCameraPed) = GLOBAL_ADDRESS_BY_VERSION(0x50B880, 0, 0, 0, 0, 0); + +unsigned int CCamera::ProcessObbeCinemaCameraPed() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::ProcessObbeCinemaCameraPed), this); +} + +int addrof(CCamera::ProcessObbeCinemaCameraPlane) = ADDRESS_BY_VERSION(0x526C80, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ProcessObbeCinemaCameraPlane) = GLOBAL_ADDRESS_BY_VERSION(0x526C80, 0, 0, 0, 0, 0); + +void CCamera::ProcessObbeCinemaCameraPlane() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ProcessObbeCinemaCameraPlane), this); +} + +int addrof(CCamera::ProcessObbeCinemaCameraTrain) = ADDRESS_BY_VERSION(0x526950, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ProcessObbeCinemaCameraTrain) = GLOBAL_ADDRESS_BY_VERSION(0x526950, 0, 0, 0, 0, 0); + +void CCamera::ProcessObbeCinemaCameraTrain() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ProcessObbeCinemaCameraTrain), this); +} + +int addrof(CCamera::ProcessScriptedCommands) = ADDRESS_BY_VERSION(0x516AE0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ProcessScriptedCommands) = GLOBAL_ADDRESS_BY_VERSION(0x516AE0, 0, 0, 0, 0, 0); + +void CCamera::ProcessScriptedCommands() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ProcessScriptedCommands), this); +} + +int addrof_o(CCamera::ProcessShake, void (CCamera::*)(float)) = ADDRESS_BY_VERSION(0x516560, 0, 0, 0, 0, 0); +int gaddrof_o(CCamera::ProcessShake, void (CCamera::*)(float)) = GLOBAL_ADDRESS_BY_VERSION(0x516560, 0, 0, 0, 0, 0); + +void CCamera::ProcessShake(float JiggleIntensity) { + plugin::CallMethodDynGlobal(gaddrof_o(CCamera::ProcessShake, void (CCamera::*)(float)), this, JiggleIntensity); +} + +int addrof_o(CCamera::ProcessShake, void (CCamera::*)()) = ADDRESS_BY_VERSION(0x51A6F0, 0, 0, 0, 0, 0); +int gaddrof_o(CCamera::ProcessShake, void (CCamera::*)()) = GLOBAL_ADDRESS_BY_VERSION(0x51A6F0, 0, 0, 0, 0, 0); + +void CCamera::ProcessShake() { + plugin::CallMethodDynGlobal(gaddrof_o(CCamera::ProcessShake, void (CCamera::*)()), this); +} + +int addrof_o(CCamera::ProcessVectorMoveLinear, void (CCamera::*)(float)) = ADDRESS_BY_VERSION(0x50D430, 0, 0, 0, 0, 0); +int gaddrof_o(CCamera::ProcessVectorMoveLinear, void (CCamera::*)(float)) = GLOBAL_ADDRESS_BY_VERSION(0x50D430, 0, 0, 0, 0, 0); + +void CCamera::ProcessVectorMoveLinear(float ratio) { + plugin::CallMethodDynGlobal(gaddrof_o(CCamera::ProcessVectorMoveLinear, void (CCamera::*)(float)), this, ratio); +} + +int addrof_o(CCamera::ProcessVectorMoveLinear, void (CCamera::*)()) = ADDRESS_BY_VERSION(0x5164A0, 0, 0, 0, 0, 0); +int gaddrof_o(CCamera::ProcessVectorMoveLinear, void (CCamera::*)()) = GLOBAL_ADDRESS_BY_VERSION(0x5164A0, 0, 0, 0, 0, 0); + +void CCamera::ProcessVectorMoveLinear() { + plugin::CallMethodDynGlobal(gaddrof_o(CCamera::ProcessVectorMoveLinear, void (CCamera::*)()), this); +} + +int addrof_o(CCamera::ProcessVectorTrackLinear, void (CCamera::*)(float)) = ADDRESS_BY_VERSION(0x50D350, 0, 0, 0, 0, 0); +int gaddrof_o(CCamera::ProcessVectorTrackLinear, void (CCamera::*)(float)) = GLOBAL_ADDRESS_BY_VERSION(0x50D350, 0, 0, 0, 0, 0); + +void CCamera::ProcessVectorTrackLinear(float ratio) { + plugin::CallMethodDynGlobal(gaddrof_o(CCamera::ProcessVectorTrackLinear, void (CCamera::*)(float)), this, ratio); +} + +int addrof_o(CCamera::ProcessVectorTrackLinear, void (CCamera::*)()) = ADDRESS_BY_VERSION(0x516440, 0, 0, 0, 0, 0); +int gaddrof_o(CCamera::ProcessVectorTrackLinear, void (CCamera::*)()) = GLOBAL_ADDRESS_BY_VERSION(0x516440, 0, 0, 0, 0, 0); + +void CCamera::ProcessVectorTrackLinear() { + plugin::CallMethodDynGlobal(gaddrof_o(CCamera::ProcessVectorTrackLinear, void (CCamera::*)()), this); +} + +int addrof(CCamera::ProcessWideScreenOn) = ADDRESS_BY_VERSION(0x50B890, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ProcessWideScreenOn) = GLOBAL_ADDRESS_BY_VERSION(0x50B890, 0, 0, 0, 0, 0); + +void CCamera::ProcessWideScreenOn() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ProcessWideScreenOn), this); +} + +int addrof(CCamera::RenderMotionBlur) = ADDRESS_BY_VERSION(0x50B8F0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::RenderMotionBlur) = GLOBAL_ADDRESS_BY_VERSION(0x50B8F0, 0, 0, 0, 0, 0); + +void CCamera::RenderMotionBlur() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::RenderMotionBlur), this); +} + +int addrof(CCamera::ResetDuckingSystem) = ADDRESS_BY_VERSION(0x50CEF0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::ResetDuckingSystem) = GLOBAL_ADDRESS_BY_VERSION(0x50CEF0, 0, 0, 0, 0, 0); + +void CCamera::ResetDuckingSystem(CPed *ped) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::ResetDuckingSystem), this, ped); +} + +int addrof(CCamera::Restore) = ADDRESS_BY_VERSION(0x50B930, 0, 0, 0, 0, 0); +int gaddrof(CCamera::Restore) = GLOBAL_ADDRESS_BY_VERSION(0x50B930, 0, 0, 0, 0, 0); + +void CCamera::Restore() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::Restore), this); +} + +int addrof(CCamera::RestoreCameraAfterMirror) = ADDRESS_BY_VERSION(0x51A5A0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::RestoreCameraAfterMirror) = GLOBAL_ADDRESS_BY_VERSION(0x51A5A0, 0, 0, 0, 0, 0); + +void CCamera::RestoreCameraAfterMirror() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::RestoreCameraAfterMirror), this); +} + +int addrof(CCamera::RestoreWithJumpCut) = ADDRESS_BY_VERSION(0x50BAB0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::RestoreWithJumpCut) = GLOBAL_ADDRESS_BY_VERSION(0x50BAB0, 0, 0, 0, 0, 0); + +void CCamera::RestoreWithJumpCut() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::RestoreWithJumpCut), this); +} + +int addrof(CCamera::SetCamCutSceneOffSet) = ADDRESS_BY_VERSION(0x50BD20, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetCamCutSceneOffSet) = GLOBAL_ADDRESS_BY_VERSION(0x50BD20, 0, 0, 0, 0, 0); + +void CCamera::SetCamCutSceneOffSet(CVector const *cutsceneOffset) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetCamCutSceneOffSet), this, cutsceneOffset); +} + +int addrof(CCamera::SetCamPositionForFixedMode) = ADDRESS_BY_VERSION(0x50BEC0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetCamPositionForFixedMode) = GLOBAL_ADDRESS_BY_VERSION(0x50BEC0, 0, 0, 0, 0, 0); + +void CCamera::SetCamPositionForFixedMode(CVector const *fixedModeSource, CVector const *fixedModeUpOffset) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetCamPositionForFixedMode), this, fixedModeSource, fixedModeUpOffset); +} + +int addrof(CCamera::SetCameraDirectlyBehindForFollowPed_CamOnAString) = ADDRESS_BY_VERSION(0x50BD40, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetCameraDirectlyBehindForFollowPed_CamOnAString) = GLOBAL_ADDRESS_BY_VERSION(0x50BD40, 0, 0, 0, 0, 0); + +void CCamera::SetCameraDirectlyBehindForFollowPed_CamOnAString() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetCameraDirectlyBehindForFollowPed_CamOnAString), this); +} + +int addrof(CCamera::SetCameraDirectlyBehindForFollowPed_ForAPed_CamOnAString) = ADDRESS_BY_VERSION(0x50BDA0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetCameraDirectlyBehindForFollowPed_ForAPed_CamOnAString) = GLOBAL_ADDRESS_BY_VERSION(0x50BDA0, 0, 0, 0, 0, 0); + +void CCamera::SetCameraDirectlyBehindForFollowPed_ForAPed_CamOnAString(CPed *targetPed) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetCameraDirectlyBehindForFollowPed_ForAPed_CamOnAString), this, targetPed); +} + +int addrof(CCamera::SetCameraUpForMirror) = ADDRESS_BY_VERSION(0x51A560, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetCameraUpForMirror) = GLOBAL_ADDRESS_BY_VERSION(0x51A560, 0, 0, 0, 0, 0); + +void CCamera::SetCameraUpForMirror() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetCameraUpForMirror), this); +} + +int addrof(CCamera::SetFadeColour) = ADDRESS_BY_VERSION(0x50BF00, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetFadeColour) = GLOBAL_ADDRESS_BY_VERSION(0x50BF00, 0, 0, 0, 0, 0); + +void CCamera::SetFadeColour(unsigned char Red, unsigned char Green, unsigned char Blue) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetFadeColour), this, Red, Green, Blue); +} + +int addrof(CCamera::SetMotionBlur) = ADDRESS_BY_VERSION(0x50BF40, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetMotionBlur) = GLOBAL_ADDRESS_BY_VERSION(0x50BF40, 0, 0, 0, 0, 0); + +void CCamera::SetMotionBlur(int Red, int Green, int Blue, int value, int Blurtype) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetMotionBlur), this, Red, Green, Blue, value, Blurtype); +} + +int addrof(CCamera::SetMotionBlurAlpha) = ADDRESS_BY_VERSION(0x50BF80, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetMotionBlurAlpha) = GLOBAL_ADDRESS_BY_VERSION(0x50BF80, 0, 0, 0, 0, 0); + +void CCamera::SetMotionBlurAlpha(int Alpha) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetMotionBlurAlpha), this, Alpha); +} + +int addrof(CCamera::SetNearClipBasedOnPedCollision) = ADDRESS_BY_VERSION(0x50CB90, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetNearClipBasedOnPedCollision) = GLOBAL_ADDRESS_BY_VERSION(0x50CB90, 0, 0, 0, 0, 0); + +void CCamera::SetNearClipBasedOnPedCollision(float arg2) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetNearClipBasedOnPedCollision), this, arg2); +} + +int addrof(CCamera::SetNearClipScript) = ADDRESS_BY_VERSION(0x50BF90, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetNearClipScript) = GLOBAL_ADDRESS_BY_VERSION(0x50BF90, 0, 0, 0, 0, 0); + +void CCamera::SetNearClipScript(float NearClip) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetNearClipScript), this, NearClip); +} + +int addrof(CCamera::SetNewPlayerWeaponMode) = ADDRESS_BY_VERSION(0x50BFB0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetNewPlayerWeaponMode) = GLOBAL_ADDRESS_BY_VERSION(0x50BFB0, 0, 0, 0, 0, 0); + +void CCamera::SetNewPlayerWeaponMode(short mode, short maxZoom, short minZoom) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetNewPlayerWeaponMode), this, mode, maxZoom, minZoom); +} + +int addrof(CCamera::SetParametersForScriptInterpolation) = ADDRESS_BY_VERSION(0x50C030, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetParametersForScriptInterpolation) = GLOBAL_ADDRESS_BY_VERSION(0x50C030, 0, 0, 0, 0, 0); + +void CCamera::SetParametersForScriptInterpolation(float InterpolationToStopMoving, float InterpolationToCatchUp, unsigned int TimeForInterPolation) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetParametersForScriptInterpolation), this, InterpolationToStopMoving, InterpolationToCatchUp, TimeForInterPolation); +} + +int addrof(CCamera::SetPercentAlongCutScene) = ADDRESS_BY_VERSION(0x50C070, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetPercentAlongCutScene) = GLOBAL_ADDRESS_BY_VERSION(0x50C070, 0, 0, 0, 0, 0); + +void CCamera::SetPercentAlongCutScene(float percent) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetPercentAlongCutScene), this, percent); +} + +int addrof(CCamera::SetRwCamera) = ADDRESS_BY_VERSION(0x50C100, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetRwCamera) = GLOBAL_ADDRESS_BY_VERSION(0x50C100, 0, 0, 0, 0, 0); + +void CCamera::SetRwCamera(RwCamera *rwcamera) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetRwCamera), this, rwcamera); +} + +int addrof(CCamera::SetWideScreenOff) = ADDRESS_BY_VERSION(0x50C150, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetWideScreenOff) = GLOBAL_ADDRESS_BY_VERSION(0x50C150, 0, 0, 0, 0, 0); + +void CCamera::SetWideScreenOff() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetWideScreenOff), this); +} + +int addrof(CCamera::SetWideScreenOn) = ADDRESS_BY_VERSION(0x50C140, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetWideScreenOn) = GLOBAL_ADDRESS_BY_VERSION(0x50C140, 0, 0, 0, 0, 0); + +void CCamera::SetWideScreenOn() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetWideScreenOn), this); +} + +int addrof(CCamera::SetZoomValueCamStringScript) = ADDRESS_BY_VERSION(0x50C1B0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetZoomValueCamStringScript) = GLOBAL_ADDRESS_BY_VERSION(0x50C1B0, 0, 0, 0, 0, 0); + +void CCamera::SetZoomValueCamStringScript(short zoomMode) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetZoomValueCamStringScript), this, zoomMode); +} + +int addrof(CCamera::SetZoomValueFollowPedScript) = ADDRESS_BY_VERSION(0x50C160, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetZoomValueFollowPedScript) = GLOBAL_ADDRESS_BY_VERSION(0x50C160, 0, 0, 0, 0, 0); + +void CCamera::SetZoomValueFollowPedScript(short zoomMode) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::SetZoomValueFollowPedScript), this, zoomMode); +} + +int addrof(CCamera::StartCooperativeCamMode) = ADDRESS_BY_VERSION(0x50C260, 0, 0, 0, 0, 0); +int gaddrof(CCamera::StartCooperativeCamMode) = GLOBAL_ADDRESS_BY_VERSION(0x50C260, 0, 0, 0, 0, 0); + +void CCamera::StartCooperativeCamMode() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::StartCooperativeCamMode), this); +} + +int addrof(CCamera::StartTransition) = ADDRESS_BY_VERSION(0x515200, 0, 0, 0, 0, 0); +int gaddrof(CCamera::StartTransition) = GLOBAL_ADDRESS_BY_VERSION(0x515200, 0, 0, 0, 0, 0); + +void CCamera::StartTransition(short currentCamMode) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::StartTransition), this, currentCamMode); +} + +int addrof(CCamera::StartTransitionWhenNotFinishedInter) = ADDRESS_BY_VERSION(0x515BC0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::StartTransitionWhenNotFinishedInter) = GLOBAL_ADDRESS_BY_VERSION(0x515BC0, 0, 0, 0, 0, 0); + +void CCamera::StartTransitionWhenNotFinishedInter(short currentCamMode) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::StartTransitionWhenNotFinishedInter), this, currentCamMode); +} + +int addrof(CCamera::StopCooperativeCamMode) = ADDRESS_BY_VERSION(0x50C270, 0, 0, 0, 0, 0); +int gaddrof(CCamera::StopCooperativeCamMode) = GLOBAL_ADDRESS_BY_VERSION(0x50C270, 0, 0, 0, 0, 0); + +void CCamera::StopCooperativeCamMode() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::StopCooperativeCamMode), this); +} + +int addrof(CCamera::StoreValuesDuringInterPol) = ADDRESS_BY_VERSION(0x50C290, 0, 0, 0, 0, 0); +int gaddrof(CCamera::StoreValuesDuringInterPol) = GLOBAL_ADDRESS_BY_VERSION(0x50C290, 0, 0, 0, 0, 0); + +void CCamera::StoreValuesDuringInterPol(CVector *SourceDuringInter, CVector *TargetDuringInter, CVector *UpDuringInter, float *FOVDuringInter) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::StoreValuesDuringInterPol), this, SourceDuringInter, TargetDuringInter, UpDuringInter, FOVDuringInter); +} + +int addrof(CCamera::TakeControl) = ADDRESS_BY_VERSION(0x50C7C0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::TakeControl) = GLOBAL_ADDRESS_BY_VERSION(0x50C7C0, 0, 0, 0, 0, 0); + +void CCamera::TakeControl(CEntity *target, short ModeToGoTo, short TypeOfSwitch, int WhoIsInControlOfTheCamera) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::TakeControl), this, target, ModeToGoTo, TypeOfSwitch, WhoIsInControlOfTheCamera); +} + +int addrof(CCamera::TakeControlAttachToEntity) = ADDRESS_BY_VERSION(0x50C910, 0, 0, 0, 0, 0); +int gaddrof(CCamera::TakeControlAttachToEntity) = GLOBAL_ADDRESS_BY_VERSION(0x50C910, 0, 0, 0, 0, 0); + +void CCamera::TakeControlAttachToEntity(CEntity *target, CEntity *attached, CVector *AttachedCamOffset, CVector *AttachedCamLookAt, float AttachedCamAngle, short TypeOfSwitch, int WhoIsInControlOfTheCamera) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::TakeControlAttachToEntity), this, target, attached, AttachedCamOffset, AttachedCamLookAt, AttachedCamAngle, TypeOfSwitch, WhoIsInControlOfTheCamera); +} + +int addrof(CCamera::TakeControlNoEntity) = ADDRESS_BY_VERSION(0x50C8B0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::TakeControlNoEntity) = GLOBAL_ADDRESS_BY_VERSION(0x50C8B0, 0, 0, 0, 0, 0); + +void CCamera::TakeControlNoEntity(CVector const *FixedModeVector, short TypeOfSwitch, int WhoIsInControlOfTheCamera) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::TakeControlNoEntity), this, FixedModeVector, TypeOfSwitch, WhoIsInControlOfTheCamera); +} + +int addrof(CCamera::TakeControlWithSpline) = ADDRESS_BY_VERSION(0x50CAE0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::TakeControlWithSpline) = GLOBAL_ADDRESS_BY_VERSION(0x50CAE0, 0, 0, 0, 0, 0); + +void CCamera::TakeControlWithSpline(short TypeOfSwitch) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::TakeControlWithSpline), this, TypeOfSwitch); +} + +int addrof(CCamera::TryToStartNewCamMode) = ADDRESS_BY_VERSION(0x51E560, 0, 0, 0, 0, 0); +int gaddrof(CCamera::TryToStartNewCamMode) = GLOBAL_ADDRESS_BY_VERSION(0x51E560, 0, 0, 0, 0, 0); + +bool CCamera::TryToStartNewCamMode(int CamSequence) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::TryToStartNewCamMode), this, CamSequence); +} + +int addrof(CCamera::UpdateAimingCoors) = ADDRESS_BY_VERSION(0x50CB10, 0, 0, 0, 0, 0); +int gaddrof(CCamera::UpdateAimingCoors) = GLOBAL_ADDRESS_BY_VERSION(0x50CB10, 0, 0, 0, 0, 0); + +void CCamera::UpdateAimingCoors(CVector const *AimingTargetCoors) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::UpdateAimingCoors), this, AimingTargetCoors); +} + +int addrof(CCamera::UpdateSoundDistances) = ADDRESS_BY_VERSION(0x515BD0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::UpdateSoundDistances) = GLOBAL_ADDRESS_BY_VERSION(0x515BD0, 0, 0, 0, 0, 0); + +void CCamera::UpdateSoundDistances() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::UpdateSoundDistances), this); +} + +int addrof(CCamera::UpdateTargetEntity) = ADDRESS_BY_VERSION(0x50C360, 0, 0, 0, 0, 0); +int gaddrof(CCamera::UpdateTargetEntity) = GLOBAL_ADDRESS_BY_VERSION(0x50C360, 0, 0, 0, 0, 0); + +void CCamera::UpdateTargetEntity() { + plugin::CallMethodDynGlobal(gaddrof(CCamera::UpdateTargetEntity), this); +} + +int addrof(CCamera::Using1stPersonWeaponMode) = ADDRESS_BY_VERSION(0x50BFF0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::Using1stPersonWeaponMode) = GLOBAL_ADDRESS_BY_VERSION(0x50BFF0, 0, 0, 0, 0, 0); + +bool CCamera::Using1stPersonWeaponMode() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::Using1stPersonWeaponMode), this); +} + +int addrof(CCamera::VectorMoveLinear) = ADDRESS_BY_VERSION(0x50D160, 0, 0, 0, 0, 0); +int gaddrof(CCamera::VectorMoveLinear) = GLOBAL_ADDRESS_BY_VERSION(0x50D160, 0, 0, 0, 0, 0); + +void CCamera::VectorMoveLinear(CVector *MoveLinearPosnEnd, CVector *MoveLinearPosnStart, float duration, bool bMoveLinearWithEase) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::VectorMoveLinear), this, MoveLinearPosnEnd, MoveLinearPosnStart, duration, bMoveLinearWithEase); +} + +int addrof(CCamera::VectorMoveRunning) = ADDRESS_BY_VERSION(0x4748A0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::VectorMoveRunning) = GLOBAL_ADDRESS_BY_VERSION(0x4748A0, 0, 0, 0, 0, 0); + +bool CCamera::VectorMoveRunning() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::VectorMoveRunning), this); +} + +int addrof(CCamera::VectorTrackLinear) = ADDRESS_BY_VERSION(0x50D1D0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::VectorTrackLinear) = GLOBAL_ADDRESS_BY_VERSION(0x50D1D0, 0, 0, 0, 0, 0); + +void CCamera::VectorTrackLinear(CVector *TrackLinearStartPoint, CVector *TrackLinearEndPoint, float duration, bool bEase) { + plugin::CallMethodDynGlobal(gaddrof(CCamera::VectorTrackLinear), this, TrackLinearStartPoint, TrackLinearEndPoint, duration, bEase); +} + +int addrof(CCamera::VectorTrackRunning) = ADDRESS_BY_VERSION(0x474870, 0, 0, 0, 0, 0); +int gaddrof(CCamera::VectorTrackRunning) = GLOBAL_ADDRESS_BY_VERSION(0x474870, 0, 0, 0, 0, 0); + +bool CCamera::VectorTrackRunning() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCamera::VectorTrackRunning), this); +} + +int addrof(CCamera::DontProcessObbeCinemaCamera) = ADDRESS_BY_VERSION(0x50AB40, 0, 0, 0, 0, 0); +int gaddrof(CCamera::DontProcessObbeCinemaCamera) = GLOBAL_ADDRESS_BY_VERSION(0x50AB40, 0, 0, 0, 0, 0); + +void CCamera::DontProcessObbeCinemaCamera() { + plugin::CallDynGlobal(gaddrof(CCamera::DontProcessObbeCinemaCamera)); +} + +int addrof(CCamera::SetCamCollisionVarDataSet) = ADDRESS_BY_VERSION(0x50CB60, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetCamCollisionVarDataSet) = GLOBAL_ADDRESS_BY_VERSION(0x50CB60, 0, 0, 0, 0, 0); + +void CCamera::SetCamCollisionVarDataSet(int index) { + plugin::CallDynGlobal(gaddrof(CCamera::SetCamCollisionVarDataSet), index); +} + +int addrof(CCamera::SetColVarsAimWeapon) = ADDRESS_BY_VERSION(0x50CBF0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetColVarsAimWeapon) = GLOBAL_ADDRESS_BY_VERSION(0x50CBF0, 0, 0, 0, 0, 0); + +void CCamera::SetColVarsAimWeapon(int aimingType) { + plugin::CallDynGlobal(gaddrof(CCamera::SetColVarsAimWeapon), aimingType); +} + +int addrof(CCamera::SetColVarsPed) = ADDRESS_BY_VERSION(0x50CC50, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetColVarsPed) = GLOBAL_ADDRESS_BY_VERSION(0x50CC50, 0, 0, 0, 0, 0); + +void CCamera::SetColVarsPed(int pedtype, int nCamPedZoom) { + plugin::CallDynGlobal(gaddrof(CCamera::SetColVarsPed), pedtype, nCamPedZoom); +} + +int addrof(CCamera::SetColVarsVehicle) = ADDRESS_BY_VERSION(0x50CCA0, 0, 0, 0, 0, 0); +int gaddrof(CCamera::SetColVarsVehicle) = GLOBAL_ADDRESS_BY_VERSION(0x50CCA0, 0, 0, 0, 0, 0); + +void CCamera::SetColVarsVehicle(int vehicletype, int CamVehicleZoom) { + plugin::CallDynGlobal(gaddrof(CCamera::SetColVarsVehicle), vehicletype, CamVehicleZoom); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCamera.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCamera.h new file mode 100644 index 00000000..c2211bc3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCamera.h @@ -0,0 +1,485 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPlaceable.h" +#include "CCam.h" +#include "CQueuedMode.h" +#include "CVector.h" +#include "RenderWare.h" +#include "CCamPathSplines.h" +#include "CMatrix.h" +#include "CVehicle.h" +#include "CRect.h" +#include "CPed.h" + +class CGarage; + +enum eSwitchType : unsigned short +{ + SWITCHTYPE_NONE, + SWITCHTYPE_INTERPOLATION, + SWITCHTYPE_JUMPCUT +}; + +class PLUGIN_API CCamera : public CPlaceable { + //PLUGIN_NO_DEFAULT_CONSTRUCTION(CCamera) +public: + bool m_bAboveGroundTrainNodesLoaded; + bool m_bBelowGroundTrainNodesLoaded; + bool m_bCamDirectlyBehind; + bool m_bCamDirectlyInFront; + bool m_bCameraJustRestored; + bool m_bcutsceneFinished; + bool m_bCullZoneChecksOn; + bool m_bFirstPersonBeingUsed; + bool m_bJustJumpedOutOf1stPersonBecauseOfTarget; + bool m_bIdleOn; + bool m_bInATunnelAndABigVehicle; + bool m_bInitialNodeFound; + bool m_bInitialNoNodeStaticsSet; + bool m_bIgnoreFadingStuffForMusic; + bool m_bPlayerIsInGarage; + bool m_bPlayerWasOnBike; + bool m_bJustCameOutOfGarage; + bool m_bJustInitalised; + bool m_bJust_Switched; + bool m_bLookingAtPlayer; + bool m_bLookingAtVector; + bool m_bMoveCamToAvoidGeom; + bool m_bObbeCinematicPedCamOn; + bool m_bObbeCinematicCarCamOn; + bool m_bRestoreByJumpCut; + bool m_bUseNearClipScript; + bool m_bStartInterScript; + bool m_bStartingSpline; + bool m_bTargetJustBeenOnTrain; + bool m_bTargetJustCameOffTrain; + bool m_bUseSpecialFovTrain; + bool m_bUseTransitionBeta; + bool m_bUseScriptZoomValuePed; + bool m_bUseScriptZoomValueCar; + bool m_bWaitForInterpolToFinish; + bool m_bItsOkToLookJustAtThePlayer; + bool m_bWantsToSwitchWidescreenOff; + bool m_bWideScreenOn; + bool m_b1rstPersonRunCloseToAWall; + bool m_bHeadBob; + bool m_bVehicleSuspenHigh; + bool m_bEnable1rstPersonCamCntrlsScript; + bool m_bAllow1rstPersonWeaponsCamera; + bool m_bCooperativeCamMode; + bool m_bAllowShootingWith2PlayersInCar; + bool m_bDisableFirstPersonInCar; + unsigned short m_nModeForTwoPlayersSeparateCars; + unsigned short m_nModeForTwoPlayersSameCarShootingAllowed; + unsigned short m_nModeForTwoPlayersSameCarShootingNotAllowed; + unsigned short m_nModeForTwoPlayersNotBothInCar; + bool m_bGarageFixedCamPositionSet; + bool m_bDoingSpecialInterPolation; + bool m_bScriptParametersSetForInterPol; + bool m_bFading; + bool m_bMusicFading; + bool m_bMusicFadedOut; + bool m_bFailedCullZoneTestPreviously; + bool m_bFadeTargetIsSplashScreen; + bool m_bWorldViewerBeingUsed; + bool m_bTransitionJUSTStarted; + bool m_bTransitionState; + unsigned char m_nActiveCam; +private: + char _pad5A[2]; +public: + unsigned int m_nCamShakeStart; + unsigned int m_nFirstPersonCamLastInputTime; + unsigned int m_nLongestTimeInMill; + unsigned int m_nNumberOfTrainCamNodes; + unsigned int m_nTimeLastChange; + unsigned int m_nTimeWeLeftIdle_StillNoInput; + unsigned int m_nTimeWeEnteredIdle; + unsigned int m_nTimeTransitionStart; + unsigned int m_nTransitionDuration; + unsigned int m_nTransitionDurationTargetCoors; + unsigned int m_nBlurBlue; + unsigned int m_nBlurGreen; + unsigned int m_nBlurRed; + unsigned int m_nBlurType; + unsigned int m_nWorkOutSpeedThisNumFrames; + unsigned int m_nNumFramesSoFar; + unsigned int m_nCurrentTrainCamNode; + unsigned int m_nMotionBlur; + unsigned int m_nMotionBlurAddAlpha; + unsigned int m_nCheckCullZoneThisNumFrames; + unsigned int m_nZoneCullFrameNumWereAt; + unsigned int m_nWhoIsInControlOfTheCamera; + unsigned int m_nCarZoom; + float m_fCarZoomBase; + float m_fCarZoomTotal; + float m_fCarZoomSmoothed; + float m_fCarZoomValueScript; + unsigned int m_nPedZoom; + float m_fPedZoomBase; + float m_fPedZoomTotal; + float m_fPedZoomSmoothed; + float m_fPedZoomValueScript; + float m_fCamFrontXNorm; + float m_fCamFrontYNorm; + float m_fDistanceToWater; + float m_fHeightOfNearestWater; + float m_fFOVDuringInter; + float m_fLODDistMultiplier; + float m_fGenerationDistMultiplier; + float m_fAlphaSpeedAtStartInter; + float m_fAlphaWhenInterPol; + float m_fAlphaDuringInterPol; + float m_fBetaDuringInterPol; + float m_fBetaSpeedAtStartInter; + float m_fBetaWhenInterPol; + float m_fFOVWhenInterPol; + float m_fFOVSpeedAtStartInter; + float m_fStartingBetaForInterPol; + float m_fStartingAlphaForInterPol; + float m_fPedOrientForBehindOrInFront; + float m_fCameraAverageSpeed; + float m_fCameraSpeedSoFar; + float m_fCamShakeForce; + float m_fFovForTrain; + float m_fFOV_Wide_Screen; + float m_fNearClipScript; + float m_fOldBetaDiff; + float m_fPositionAlongSpline; + float m_fScreenReductionPercentage; + float m_fScreenReductionSpeed; + float m_fAlphaForPlayerAnim1rstPerson; + float m_fOrientation; + float m_fPlayerExhaustion; + float m_fSoundDistUp; + float m_fSoundDistUpAsRead; + float m_fSoundDistUpAsReadOld; + float m_fAvoidTheGeometryProbsTimer; + unsigned short m_nAvoidTheGeometryProbsDirn; +private: + char _pad16A[2]; +public: + float m_fWideScreenReductionAmount; + float m_fStartingFOVForInterPol; + CCam m_aCams[3]; + CGarage *m_pToGarageWeAreIn; + CGarage *m_pToGarageWeAreInForHackAvoidFirstPerson; + CQueuedMode m_PlayerMode; + CQueuedMode m_PlayerWeaponMode; + CVector m_vecPreviousCameraPosition; + CVector m_vecRealPreviousCameraPosition; + CVector m_vecAimingTargetCoors; + CVector m_vecFixedModeVector; + CVector m_vecFixedModeSource; + CVector m_vecFixedModeUpOffSet; + CVector m_vecCutSceneOffset; + CVector m_vecStartingSourceForInterPol; + CVector m_vecStartingTargetForInterPol; + CVector m_vecStartingUpForInterPol; + CVector m_vecSourceSpeedAtStartInter; + CVector m_vecTargetSpeedAtStartInter; + CVector m_vecUpSpeedAtStartInter; + CVector m_vecSourceWhenInterPol; + CVector m_vecTargetWhenInterPol; + CVector m_vecUpWhenInterPol; + CVector m_vecClearGeometryVec; + CVector m_vecGameCamPos; + CVector m_vecSourceDuringInter; + CVector m_vecTargetDuringInter; + CVector m_vecUpDuringInter; + CVector m_vecAttachedCamOffset; + CVector m_vecAttachedCamLookAt; + float m_fAttachedCamAngle; + RwCamera *m_pRwCamera; + CEntity *m_pTargetEntity; + CEntity *m_pAttachedEntity; + CCamPathSplines m_aPathArray[4]; + bool m_bMirrorActive; + bool m_bResetOldMatrix; +private: + char _pad972[2]; +public: + CMatrix m_mCameraMatrix; + CMatrix m_mCameraMatrixOld; + CMatrix m_mViewMatrix; + CMatrix m_mMatInverse; + CMatrix m_mMatMirrorInverse; + CMatrix m_mMatMirror; + CVector m_avecFrustumNormals[4]; + CVector m_avecFrustumWorldNormals[4]; + CVector m_avecFrustumWorldNormals_Mirror[4]; + float m_fFrustumPlaneOffsets[4]; + float m_fFrustumPlaneOffsets_Mirror[4]; + CVector m_vecRightFrustumNormal; //!< unused? + CVector m_vecBottomFrustumNormal; //!< unused? + CVector m_vecTopFrustumNormal; //!< unused? + float field_BF8; //!< unused? + float m_fFadeAlpha; + float m_fEffectsFaderScalingFactor; + float m_fFadeDuration; + float m_fTimeToFadeMusic; + float m_fTimeToWaitToFadeMusic; + float m_fFractionInterToStopMoving; + float m_fFractionInterToStopCatchUp; + float m_fFractionInterToStopMovingTarget; + float m_fFractionInterToStopCatchUpTarget; + float m_fGaitSwayBuffer; + float m_fScriptPercentageInterToStopMoving; + float m_fScriptPercentageInterToCatchUp; + unsigned int m_nScriptTimeForInterPolation; + unsigned short m_nFadeInOutFlag; +private: + char _padC32[2]; +public: + int m_nModeObbeCamIsInForCar; + short m_nModeToGoTo; // see eCamMode + short m_nMusicFadingDirection; + short m_nTypeOfSwitch; // see eSwitchType +private: + char _padC3E[2]; +public: + unsigned int m_nFadeStartTime; + unsigned int m_nFadeTimeStartedMusic; + int m_nExtraEntitiesCount; + CEntity *m_pExtraEntity[2]; + float m_fDuckCamMotionFactor; + float m_fDuckAimCamMotionFactor; + float m_fTrackLinearStartTime; + float m_fTrackLinearEndTime; + CVector m_vecTrackLinearEndPoint; + CVector m_vecTrackLinearStartPoint; + bool m_bTrackLinearWithEase; + char field_C7D; + char field_C7E; + char field_C7F; + CVector m_vecTrackLinear; + bool m_bVecTrackLinearProcessed; + char field_C8D; + char field_C8E; + char field_C8F; + float m_fShakeIntensity; + float m_fStartShakeTime; + float m_fEndShakeTime; + int field_C9C; + int m_nShakeType; + float m_fStartZoomTime; + float m_fEndZoomTime; + float m_fZoomInFactor; + float m_fZoomOutFactor; + unsigned char m_nZoomMode; + bool m_bFOVLerpProcessed; + char field_CB6; + char field_CB7; + float m_fFOVNew; + float m_fMoveLinearStartTime; + float m_fMoveLinearEndTime; + CVector m_vecMoveLinearPosnStart; + CVector m_vecMoveLinearPosnEnd; + bool m_bMoveLinearWithEase; + char field_CDD; + char field_CDE; + char field_CDF; + CVector m_vecMoveLinear; + bool m_bVecMoveLinearProcessed; + bool m_bBlockZoom; + bool m_bCameraPersistPosition; + bool m_bCameraPersistTrack; + bool m_bCinemaCamera; + char field_CF1; + char field_CF2; + char field_CF3; + + struct { + int m_nModelIndex; + float m_fDistance; + float m_fAltitude; + float m_fAngle; + } m_aCamTweak[5]; + + bool m_bCameraVehicleTweaksInitialized; +private: + char _padD45[3]; +public: + float m_fCurrentTweakDistance; + float m_fCurrentTweakAltitude; + float m_fCurrentTweakAngle; + int m_nCurrentTweakModelIndex; + // the following are unused? + int field_D58; + int field_D5C; + int field_D60; + int field_D64; + int field_D68; + int field_D6C; + int field_D70; + int field_D74; + + SUPPORTED_10US static float &m_f3rdPersonCHairMultY; + SUPPORTED_10US static float &m_f3rdPersonCHairMultX; + SUPPORTED_10US static float &m_fMouseAccelVertical; + SUPPORTED_10US static float &m_fMouseAccelHorzntal; + SUPPORTED_10US static bool &m_bUseMouse3rdPerson; + /* virtual functions */ + + // vtable function #0 (destructor) + + /* virtual functions - end */ + + SUPPORTED_10US void AddShakeSimple(float duration, int type, float intensity); + SUPPORTED_10US void AllowShootingWith2PlayersInCar(bool bAllowShootingWith2PlayersInCar); + SUPPORTED_10US void ApplyVehicleCameraTweaks(CVehicle *vehicle); + SUPPORTED_10US void AvoidTheGeometry(CVector const *arg2, CVector const *arg3, CVector *arg4, float FOV); + SUPPORTED_10US void CalculateDerivedValues(bool bForMirror, bool bOriented); + SUPPORTED_10US void CalculateFrustumPlanes(bool bForMirror); + SUPPORTED_10US float CalculateGroundHeight(unsigned int type); + SUPPORTED_10US void CalculateMirroredMatrix(CVector posn, float MirrorV, CMatrix *CamMat, CMatrix *MirrorMat); + SUPPORTED_10US void CamControl(); + SUPPORTED_10US void CamShake(float arg2, float x, float y, float z); + SUPPORTED_10US char CameraColDetAndReact(CVector *source, CVector *target); + SUPPORTED_10US void CameraGenericModeSpecialCases(CPed *targetPed); + SUPPORTED_10US void CameraPedAimModeSpecialCases(CPed *targPed); + //! unused + SUPPORTED_10US void CameraPedModeSpecialCases(); + SUPPORTED_10US void CameraVehicleModeSpecialCases(CVehicle *targVehicle); + SUPPORTED_10US void ClearPlayerWeaponMode(); + SUPPORTED_10US bool ConeCastCollisionResolve(CVector *source, CVector *center, CVector *pVecOut, float radius, float arg5, float *pFloatOut); + //! unused + SUPPORTED_10US bool ConsiderPedAsDucking(CPed *ped); + SUPPORTED_10US void CopyCameraMatrixToRWCam(bool bUpdateMatrix); + SUPPORTED_10US void DealWithMirrorBeforeConstructRenderList(bool bActiveMirror, CVector MirrorNormal, float MirrorV, CMatrix *matMirror); + SUPPORTED_10US void DeleteCutSceneCamDataMemory(); + SUPPORTED_10US void DrawBordersForWideScreen(); + //! unused + SUPPORTED_10US void Enable1rstPersonCamCntrlsScript(); + //! unused + SUPPORTED_10US void Enable1rstPersonWeaponsCamera(); + SUPPORTED_10US void Fade(float fadeDuration, short FadeInOutFlag); + SUPPORTED_10US void Find3rdPersonCamTargetVector(float range, CVector source, CVector *pCamera, CVector *pPoint); + SUPPORTED_10US float Find3rdPersonQuickAimPitch(); + SUPPORTED_10US float FindCamFOV(); + SUPPORTED_10US void FinishCutscene(); + SUPPORTED_10US void GetArrPosForVehicleType(int type, int *arrPos); + SUPPORTED_10US unsigned int GetCutSceneFinishTime(); + SUPPORTED_10US bool GetFading(); + SUPPORTED_10US int GetFadingDirection(); + SUPPORTED_10US CVector *GetGameCamPosition(); + SUPPORTED_10US signed int GetLookDirection(); + SUPPORTED_10US bool GetLookingForwardFirstPerson(); + SUPPORTED_10US bool GetLookingLRBFirstPerson(); + SUPPORTED_10US float GetPositionAlongSpline(); + SUPPORTED_10US float GetRoughDistanceToGround(); + SUPPORTED_10US signed int GetScreenFadeStatus(); + SUPPORTED_10US void GetScreenRect(CRect *pRect); + SUPPORTED_10US bool Get_Just_Switched_Status(); + //! arg5 always used as false + SUPPORTED_10US void HandleCameraMotionForDucking(CPed *ped, CVector *source, CVector *targPosn, bool arg5); + //! arg5 always used as false + SUPPORTED_10US void HandleCameraMotionForDuckingDuringAim(CPed *ped, CVector *source, CVector *targPosn, bool arg5); + SUPPORTED_10US void ImproveNearClip(CVehicle *pVehicle, CPed *pPed, CVector *source, CVector *targPosn); + SUPPORTED_10US void Init(); + SUPPORTED_10US void InitCameraVehicleTweaks(); + SUPPORTED_10US int InitialiseScriptableComponents(); + SUPPORTED_10US bool IsExtraEntityToIgnore(CEntity *entity); + SUPPORTED_10US bool IsItTimeForNewcam(int CamSequence, int StartTime); + SUPPORTED_10US bool IsSphereVisible(CVector const &origin, float radius, RwMatrixTag *transformMatrix); + SUPPORTED_10US bool IsSphereVisible(CVector const &origin, float radius); + SUPPORTED_10US void LerpFOV(float zoomInFactor, float zoomOutFactor, float timelimit, bool bEase); + SUPPORTED_10US void LoadPathSplines(int pFile); + SUPPORTED_10US void Process(); + SUPPORTED_10US void ProcessFOVLerp(float ratio); + SUPPORTED_10US void ProcessFOVLerp(); + SUPPORTED_10US void ProcessFade(); + SUPPORTED_10US void ProcessMusicFade(); + SUPPORTED_10US void ProcessObbeCinemaCameraBoat(); + SUPPORTED_10US void ProcessObbeCinemaCameraCar(); + SUPPORTED_10US void ProcessObbeCinemaCameraHeli(); + //! unused, empty + SUPPORTED_10US unsigned int ProcessObbeCinemaCameraPed(); + SUPPORTED_10US void ProcessObbeCinemaCameraPlane(); + SUPPORTED_10US void ProcessObbeCinemaCameraTrain(); + //! unused + SUPPORTED_10US void ProcessScriptedCommands(); + //! JiggleIntensity not used + SUPPORTED_10US void ProcessShake(float JiggleIntensity); + SUPPORTED_10US void ProcessShake(); + SUPPORTED_10US void ProcessVectorMoveLinear(float ratio); + SUPPORTED_10US void ProcessVectorMoveLinear(); + SUPPORTED_10US void ProcessVectorTrackLinear(float ratio); + SUPPORTED_10US void ProcessVectorTrackLinear(); + SUPPORTED_10US void ProcessWideScreenOn(); + SUPPORTED_10US void RenderMotionBlur(); + SUPPORTED_10US void ResetDuckingSystem(CPed *ped); + SUPPORTED_10US void Restore(); + SUPPORTED_10US void RestoreCameraAfterMirror(); + SUPPORTED_10US void RestoreWithJumpCut(); + SUPPORTED_10US void SetCamCutSceneOffSet(CVector const *cutsceneOffset); + SUPPORTED_10US void SetCamPositionForFixedMode(CVector const *fixedModeSource, CVector const *fixedModeUpOffset); + SUPPORTED_10US void SetCameraDirectlyBehindForFollowPed_CamOnAString(); + //! unused + SUPPORTED_10US void SetCameraDirectlyBehindForFollowPed_ForAPed_CamOnAString(CPed *targetPed); + SUPPORTED_10US void SetCameraUpForMirror(); + SUPPORTED_10US void SetFadeColour(unsigned char Red, unsigned char Green, unsigned char Blue); + SUPPORTED_10US void SetMotionBlur(int Red, int Green, int Blue, int value, int Blurtype); + SUPPORTED_10US void SetMotionBlurAlpha(int Alpha); + //! unused + SUPPORTED_10US void SetNearClipBasedOnPedCollision(float arg2); + SUPPORTED_10US void SetNearClipScript(float NearClip); + SUPPORTED_10US void SetNewPlayerWeaponMode(short mode, short maxZoom, short minZoom); + SUPPORTED_10US void SetParametersForScriptInterpolation(float InterpolationToStopMoving, float InterpolationToCatchUp, unsigned int TimeForInterPolation); + SUPPORTED_10US void SetPercentAlongCutScene(float percent); + SUPPORTED_10US void SetRwCamera(RwCamera *rwcamera); + SUPPORTED_10US void SetWideScreenOff(); + SUPPORTED_10US void SetWideScreenOn(); + //! zoomMode : 0- ZOOM_ONE , 1- ZOOM_TWO , 2- ZOOM_THREE + SUPPORTED_10US void SetZoomValueCamStringScript(short zoomMode); + //! zoomMode : value between 0 - 2 + SUPPORTED_10US void SetZoomValueFollowPedScript(short zoomMode); + SUPPORTED_10US void StartCooperativeCamMode(); + //! currentCamMode : see eCamMode + SUPPORTED_10US void StartTransition(short currentCamMode); + //! unused , see eCamMode + SUPPORTED_10US void StartTransitionWhenNotFinishedInter(short currentCamMode); + //! unused + SUPPORTED_10US void StopCooperativeCamMode(); + SUPPORTED_10US void StoreValuesDuringInterPol(CVector *SourceDuringInter, CVector *TargetDuringInter, CVector *UpDuringInter, float *FOVDuringInter); + //! TypeOfSwitch : see eSwitchType + //! ModeToGoTo : see eCamMode + SUPPORTED_10US void TakeControl(CEntity *target, short ModeToGoTo, short TypeOfSwitch, int WhoIsInControlOfTheCamera); + //! TypeOfSwitch : see eSwitchType + SUPPORTED_10US void TakeControlAttachToEntity(CEntity *target, CEntity *attached, CVector *AttachedCamOffset, CVector *AttachedCamLookAt, float AttachedCamAngle, short TypeOfSwitch, int WhoIsInControlOfTheCamera); + //! TypeOfSwitch : see eSwitchType + SUPPORTED_10US void TakeControlNoEntity(CVector const *FixedModeVector, short TypeOfSwitch, int WhoIsInControlOfTheCamera); + //! TypeOfSwitch : see eSwitchType + SUPPORTED_10US void TakeControlWithSpline(short TypeOfSwitch); + SUPPORTED_10US bool TryToStartNewCamMode(int CamSequence); + SUPPORTED_10US void UpdateAimingCoors(CVector const *AimingTargetCoors); + SUPPORTED_10US void UpdateSoundDistances(); + SUPPORTED_10US void UpdateTargetEntity(); + SUPPORTED_10US bool Using1stPersonWeaponMode(); + SUPPORTED_10US void VectorMoveLinear(CVector *MoveLinearPosnEnd, CVector *MoveLinearPosnStart, float duration, bool bMoveLinearWithEase); + SUPPORTED_10US bool VectorMoveRunning(); + SUPPORTED_10US void VectorTrackLinear(CVector *TrackLinearStartPoint, CVector *TrackLinearEndPoint, float duration, bool bEase); + SUPPORTED_10US bool VectorTrackRunning(); + + //! unused + SUPPORTED_10US static void DontProcessObbeCinemaCamera(); + SUPPORTED_10US static void SetCamCollisionVarDataSet(int index); + SUPPORTED_10US static void SetColVarsAimWeapon(int aimingType); + SUPPORTED_10US static void SetColVarsPed(int pedtype, int nCamPedZoom); + SUPPORTED_10US static void SetColVarsVehicle(int vehicletype, int CamVehicleZoom); +}; + +VTABLE_DESC(CCamera, 0x8630E8, 1); + +VALIDATE_SIZE(CCamera, 0xD78); + +SUPPORTED_10US extern CCamera &TheCamera; + +#include "meta/meta.CCamera.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCarAI.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCarAI.cpp new file mode 100644 index 00000000..ad0b9f19 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCarAI.cpp @@ -0,0 +1,89 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ + +#include "CCarAI.h" + +// Converted from cdecl void CCarAI::BackToCruisingIfNoWantedLevel(CVehicle *pVehicle) 0x41BFA0 +void CCarAI::BackToCruisingIfNoWantedLevel(CVehicle* pVehicle) { + plugin::Call<0x41BFA0, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarAI::CarHasReasonToStop(CVehicle *pVehicle) 0x41C050 +void CCarAI::CarHasReasonToStop(CVehicle* pVehicle) { + plugin::Call<0x41C050, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarAI::AddPoliceCarOccupants(CVehicle *pVehicle,bool arg2) 0x41C070 +void CCarAI::AddPoliceCarOccupants(CVehicle* pVehicle, bool arg2) { + plugin::Call<0x41C070, CVehicle*, bool>(pVehicle, arg2); +} + +// Converted from cdecl void CCarAI::AddAmbulanceOccupants(CVehicle *pVehicle) 0x41C4A0 +void CCarAI::AddAmbulanceOccupants(CVehicle* pVehicle) { + plugin::Call<0x41C4A0, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarAI::AddFiretruckOccupants(CVehicle *pVehicle) 0x41C600 +void CCarAI::AddFiretruckOccupants(CVehicle* pVehicle) { + plugin::Call<0x41C600, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarAI::TellOccupantsToLeaveCar(CVehicle *pVehicle) 0x41C760 +void CCarAI::TellOccupantsToLeaveCar(CVehicle* pVehicle) { + plugin::Call<0x41C760, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarAI::TellCarToFollowOtherCar(CVehicle *pVehicle1,CVehicle *pVehicle2,float radius) 0x41C960 +void CCarAI::TellCarToFollowOtherCar(CVehicle* pVehicle1, CVehicle* pVehicle2, float radius) { + plugin::Call<0x41C960, CVehicle*, CVehicle*, float>(pVehicle1, pVehicle2, radius); +} + +// Converted from cdecl char CCarAI::FindPoliceBikeMissionForWantedLevel(void) 0x41CA40 // return 0x2B +char CCarAI::FindPoliceBikeMissionForWantedLevel() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl char CCarAI::FindPoliceBoatMissionForWantedLevel(void) 0x41CA50 +char CCarAI::FindPoliceBoatMissionForWantedLevel() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl int CCarAI::FindPoliceCarSpeedForWantedLevel(CVehicle *pVehicle) 0x41CAA0 +int CCarAI::FindPoliceCarSpeedForWantedLevel(CVehicle* pVehicle) { + return plugin::CallAndReturn(pVehicle); +} + +// Converted from cdecl float CCarAI::GetCarToGoToCoors(CVehicle *pVehicle1,CVector *pVector,int drivingStyle,bool bSpeedLimit20) 0x41CE30 +float CCarAI::GetCarToGoToCoors(CVehicle* pVehicle1, CVector* pVector, int drivingStyle, bool bSpeedLimit20) { + return plugin::CallAndReturn(pVehicle1, pVector, drivingStyle, bSpeedLimit20); +} + +// Converted from cdecl float CCarAI::GetCarToParkAtCoors(CVehicle *pVehicle,CVector *pVector) 0x41D350 +float CCarAI::GetCarToParkAtCoors(CVehicle* pVehicle, CVector* pVector) { + return plugin::CallAndReturn(pVehicle, pVector); +} + +// Converted from cdecl void CCarAI::MellowOutChaseSpeed(CVehicle *pVehicle) 0x41D3D0 +void CCarAI::MellowOutChaseSpeed(CVehicle* pVehicle) { + plugin::Call<0x41D3D0, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarAI::MakeWayForCarWithSiren(CVehicle *pVehicle) 0x41D660 +void CCarAI::MakeWayForCarWithSiren(CVehicle* pVehicle) { + plugin::Call<0x41D660, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarAI::UpdateCarAI(CVehicle *pVehicle) 0x41DA30 +void CCarAI::UpdateCarAI(CVehicle* pVehicle) { + plugin::Call<0x41DA30, CVehicle*>(pVehicle); +} + +// Converted from cdecl char CCarAI::FindPoliceCarMissionForWantedLevel(void) 0x41C9D0 +char CCarAI::FindPoliceCarMissionForWantedLevel() { + return plugin::CallAndReturn(); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCarAI.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCarAI.h new file mode 100644 index 00000000..fe96922b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCarAI.h @@ -0,0 +1,33 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVehicle.h" + + +class PLUGIN_API CCarAI +{ +public: + + static void BackToCruisingIfNoWantedLevel(CVehicle* pVehicle); + static void CarHasReasonToStop(CVehicle* pVehicle); + static void AddPoliceCarOccupants(CVehicle* pVehicle, bool arg2); + static void AddAmbulanceOccupants(CVehicle* pVehicle); + static void AddFiretruckOccupants(CVehicle* pVehicle); + static void TellOccupantsToLeaveCar(CVehicle* pVehicle); + static void TellCarToFollowOtherCar(CVehicle* pVehicle1, CVehicle* pVehicle2, float radius); + static char FindPoliceBikeMissionForWantedLevel(); + static char FindPoliceBoatMissionForWantedLevel(); + static int FindPoliceCarSpeedForWantedLevel(CVehicle* pVehicle); + static float GetCarToGoToCoors(CVehicle* pVehicle1, CVector* pVector, int drivingStyle, bool bSpeedLimit20); + static float GetCarToParkAtCoors(CVehicle* pVehicle, CVector* pVector); + static void MellowOutChaseSpeed(CVehicle* pVehicle); + static void MakeWayForCarWithSiren(CVehicle* pVehicle); + static void UpdateCarAI(CVehicle* pVehicle); + static char FindPoliceCarMissionForWantedLevel(); + +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCarCtrl.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCarCtrl.cpp new file mode 100644 index 00000000..eb274cc9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCarCtrl.cpp @@ -0,0 +1,546 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCarCtrl.h" +// Converted from cdecl int CCarCtrl::ChooseBoatModel(void) 0x421970 +int CCarCtrl::ChooseBoatModel() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl int CCarCtrl::ChooseCarModelToLoad(int arg1) 0x421900 +int CCarCtrl::ChooseCarModelToLoad(int arg1) { + return plugin::CallAndReturn(arg1); +} + +// Converted from cdecl int CCarCtrl::ChooseGangCarModel(int arg1) 0x421A40 +int CCarCtrl::ChooseGangCarModel(int arg1) { + return plugin::CallAndReturn(arg1); +} + +// Converted from cdecl int CCarCtrl::ChooseModel(int *arg1) 0x424CE0 +int CCarCtrl::ChooseModel(int* arg1) { + return plugin::CallAndReturn(arg1); +} + +// Converted from cdecl int CCarCtrl::ChoosePoliceCarModel(uint) 0x421980 +int CCarCtrl::ChoosePoliceCarModel(unsigned int arg0) { + return plugin::CallAndReturn(arg0); +} + +// Converted from cdecl void CCarCtrl::ClearInterestingVehicleList(void) 0x423F00 +void CCarCtrl::ClearInterestingVehicleList() { + plugin::Call<0x423F00>(); +} + +// Converted from cdecl void CCarCtrl::ClipTargetOrientationToLink(CVehicle *pVehicle,CCarPathLinkAddress arg2,char arg3,float *arg4,float arg5,float arg6) 0x422760 +void CCarCtrl::ClipTargetOrientationToLink(CVehicle* pVehicle, CCarPathLinkAddress arg2, char arg3, float* arg4, float arg5, float arg6) { + plugin::Call<0x422760, CVehicle*, CCarPathLinkAddress, char, float*, float, float>(pVehicle, arg2, arg3, arg4, arg5, arg6); +} + +// Converted from cdecl CVehicle* CCarCtrl::CreateCarForScript(int modelid,CVector posn,uchar MissionCleanUpFlag) 0x431F80 +CVehicle* CCarCtrl::CreateCarForScript(int modelid, CVector posn, unsigned char MissionCleanUpFlag) { + return plugin::CallAndReturn(modelid, posn, MissionCleanUpFlag); +} + +// Converted from cdecl bool CCarCtrl::CreateConvoy(CVehicle *pVehicle,int arg2) 0x42C740 +bool CCarCtrl::CreateConvoy(CVehicle* pVehicle, int arg2) { + return plugin::CallAndReturn(pVehicle, arg2); +} + +// Converted from cdecl bool CCarCtrl::CreatePoliceChase(CVehicle *pVehicle,int arg2,CNodeAddress NodeAddress) 0x42C2B0 +bool CCarCtrl::CreatePoliceChase(CVehicle* pVehicle, int arg2, CNodeAddress NodeAddress) { + return plugin::CallAndReturn(pVehicle, arg2, NodeAddress); +} + +// Converted from cdecl bool CCarCtrl::DealWithBend_Racing(CVehicle *pVehicle,CCarPathLinkAddress LinkAddress1,CCarPathLinkAddress LinkAddress2,CCarPathLinkAddress LinkAddress3,CCarPathLinkAddress LinkAddress4,char arg6,char arg7,char arg8,char arg9,float arg10,float * arg11,float *arg12,float *arg13,float *arg14,CVector *pVector) 0x428040 +bool CCarCtrl::DealWithBend_Racing(CVehicle* pVehicle, CCarPathLinkAddress LinkAddress1, CCarPathLinkAddress LinkAddress2, CCarPathLinkAddress LinkAddress3, CCarPathLinkAddress LinkAddress4, char arg6, char arg7, char arg8, char arg9, float arg10, float* arg11, float* arg12, float* arg13, float* arg14, CVector* pVector) { + return plugin::CallAndReturn(pVehicle, LinkAddress1, LinkAddress2, LinkAddress3, LinkAddress4, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, pVector); +} + +// Converted from cdecl void CCarCtrl::DragCarToPoint(CVehicle *pVehicle,CVector *pVector) 0x42EC90 +void CCarCtrl::DragCarToPoint(CVehicle* pVehicle, CVector* pVector) { + plugin::Call<0x42EC90, CVehicle*, CVector*>(pVehicle, pVector); +} + +// Converted from cdecl float CCarCtrl::FindAngleToWeaveThroughTraffic(CVehicle *pVehicle,CPhysical *pPhysical,float arg3,float arg4,float arg5) 0x4325C0 +float CCarCtrl::FindAngleToWeaveThroughTraffic(CVehicle* pVehicle, CPhysical* pPhysical, float arg3, float arg4, float arg5) { + return plugin::CallAndReturn(pVehicle, pPhysical, arg3, arg4, arg5); +} + +// Converted from cdecl void CCarCtrl::FindIntersection2Lines(float arg1,float arg2,float arg3,float arg4,float arg5,float arg6,float arg7,float arg8,float *arg9,float *arg10) 0x4226F0 +void CCarCtrl::FindIntersection2Lines(float arg1, float arg2, float arg3, float arg4, float arg5, float arg6, float arg7, float arg8, float* arg9, float* arg10) { + plugin::Call<0x4226F0, float, float, float, float, float, float, float, float, float*, float*>(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); +} + +// Converted from cdecl void CCarCtrl::FindLinksToGoWithTheseNodes(CVehicle *pVehicle) 0x42B470 +void CCarCtrl::FindLinksToGoWithTheseNodes(CVehicle* pVehicle) { + plugin::Call<0x42B470, CVehicle*>(pVehicle); +} + +// Converted from cdecl float CCarCtrl::FindMaximumSpeedForThisCarInTraffic(CVehicle *pVehicle) 0x434400 +float CCarCtrl::FindMaximumSpeedForThisCarInTraffic(CVehicle* pVehicle) { + return plugin::CallAndReturn(pVehicle); +} + +// Converted from cdecl void CCarCtrl::FindNodesThisCarIsNearestTo(CVehicle *pVehicle,CNodeAddress &NodeAddress1,CNodeAddress &NodeAddress2) 0x42BD20 +void CCarCtrl::FindNodesThisCarIsNearestTo(CVehicle* pVehicle, CNodeAddress& NodeAddress1, CNodeAddress& NodeAddress2) { + plugin::Call<0x42BD20, CVehicle*, CNodeAddress&, CNodeAddress&>(pVehicle, NodeAddress1, NodeAddress2); +} + +// Converted from cdecl char CCarCtrl::FindPathDirection(CNodeAddress NodeAddress1,CNodeAddress NodeAddress2,CNodeAddress NodeAddress3,bool *arg4) 0x422090 +char CCarCtrl::FindPathDirection(CNodeAddress NodeAddress1, CNodeAddress NodeAddress2, CNodeAddress NodeAddress3, bool* arg4) { + return plugin::CallAndReturn(NodeAddress1, NodeAddress2, NodeAddress3, arg4); +} + +// Converted from cdecl float CCarCtrl::FindPercDependingOnDistToLink(CVehicle *pVehicle,CCarPathLinkAddress LinkAddress) 0x422620 +float CCarCtrl::FindPercDependingOnDistToLink(CVehicle* pVehicle, CCarPathLinkAddress LinkAddress) { + return plugin::CallAndReturn(pVehicle, LinkAddress); +} + +// Converted from cdecl int CCarCtrl::FindSequenceElement(int arg1) 0x421770 +int CCarCtrl::FindSequenceElement(int arg1) { + return plugin::CallAndReturn(arg1); +} + +// Converted from cdecl float CCarCtrl::FindSpeedMultiplier(float arg1,float arg2,float arg3,float arg4) 0x4224E0 +float CCarCtrl::FindSpeedMultiplier(float arg1, float arg2, float arg3, float arg4) { + return plugin::CallAndReturn(arg1, arg2, arg3, arg4); +} + +// Converted from cdecl float CCarCtrl::FindSpeedMultiplierWithSpeedFromNodes(char arg1) 0x424130 +float CCarCtrl::FindSpeedMultiplierWithSpeedFromNodes(char arg1) { + return plugin::CallAndReturn(arg1); +} + +// Converted from cdecl void CCarCtrl::FireHeliRocketsAtTarget(CAutomobile *pEntityLauncher,CEntity *pEntity) 0x42B270 +void CCarCtrl::FireHeliRocketsAtTarget(CAutomobile* pEntityLauncher, CEntity* pEntity) { + plugin::Call<0x42B270, CAutomobile*, CEntity*>(pEntityLauncher, pEntity); +} + +// Converted from cdecl void CCarCtrl::FlyAIHeliInCertainDirection(CHeli *pHeli,float arg2,float arg3,bool arg4) 0x429A70 +void CCarCtrl::FlyAIHeliInCertainDirection(CHeli* pHeli, float arg2, float arg3, bool arg4) { + plugin::Call<0x429A70, CHeli*, float, float, bool>(pHeli, arg2, arg3, arg4); +} + +// Converted from cdecl void CCarCtrl::FlyAIHeliToTarget_FixedOrientation(CHeli *pHeli,float Orientation ,CVector posn) 0x423940 +void CCarCtrl::FlyAIHeliToTarget_FixedOrientation(CHeli* pHeli, float Orientation, CVector posn) { + plugin::Call<0x423940, CHeli*, float, CVector>(pHeli, Orientation, posn); +} + +// Converted from cdecl void CCarCtrl::FlyAIPlaneInCertainDirection(CPlane *pPlane) 0x423000 +void CCarCtrl::FlyAIPlaneInCertainDirection(CPlane* pPlane) { + plugin::Call<0x423000, CPlane*>(pPlane); +} + +// Converted from cdecl bool CCarCtrl::GenerateCarCreationCoors2(CVector posn,float radius,float arg3,float arg4,bool arg5,float arg6,float arg7,CVector* pOrigin,CNodeAddress *pNodeAddress1,CNodeAddress *pNodeAddress12,float *arg11,bool arg12,bool arg13) 0x424210 +bool CCarCtrl::GenerateCarCreationCoors2(CVector posn, float radius, float arg3, float arg4, bool arg5, float arg6, float arg7, CVector* pOrigin, CNodeAddress* pNodeAddress1, CNodeAddress* pNodeAddress12, float* arg11, bool arg12, bool arg13) { + return plugin::CallAndReturn(posn, radius, arg3, arg4, arg5, arg6, arg7, pOrigin, pNodeAddress1, pNodeAddress12, arg11, arg12, arg13); +} + +// Converted from cdecl void CCarCtrl::GenerateEmergencyServicesCar(void) 0x42F9C0 +void CCarCtrl::GenerateEmergencyServicesCar() { + plugin::Call<0x42F9C0>(); +} + +// Converted from cdecl bool CCarCtrl::GenerateOneEmergencyServicesCar(uint modelID,CVector posn) 0x42B7D0 +bool CCarCtrl::GenerateOneEmergencyServicesCar(unsigned int modelID, CVector posn) { + return plugin::CallAndReturn(modelID, posn); +} + +// Converted from cdecl void CCarCtrl::GenerateOneRandomCar(void) 0x430050 +void CCarCtrl::GenerateOneRandomCar() { + plugin::Call<0x430050>(); +} + +// Converted from cdecl void CCarCtrl::GenerateRandomCars(void) 0x4341C0 +void CCarCtrl::GenerateRandomCars() { + plugin::Call<0x4341C0>(); +} + +// Converted from cdecl void CCarCtrl::GetAIHeliToAttackPlayer(CAutomobile * pAutomobile) 0x42F3C0 +void CCarCtrl::GetAIHeliToAttackPlayer(CAutomobile* pAutomobile) { + plugin::Call<0x42F3C0, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::GetAIHeliToFlyInDirection(CAutomobile *pAutomobile) 0x42A730 +void CCarCtrl::GetAIHeliToFlyInDirection(CAutomobile* pAutomobile) { + plugin::Call<0x42A730, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::GetAIPlaneToAttackPlayer(CAutomobile *pAutomobile) 0x429780 +void CCarCtrl::GetAIPlaneToAttackPlayer(CAutomobile* pAutomobile) { + plugin::Call<0x429780, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::GetAIPlaneToDoDogFight(CAutomobile *pAutomobile) 0x429890 +void CCarCtrl::GetAIPlaneToDoDogFight(CAutomobile* pAutomobile) { + plugin::Call<0x429890, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::GetAIPlaneToDoDogFightAgainstPlayer(CAutomobile *pAutomobile) 0x42F370 +void CCarCtrl::GetAIPlaneToDoDogFightAgainstPlayer(CAutomobile* pAutomobile) { + plugin::Call<0x42F370, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl CVehicle* CCarCtrl::GetNewVehicleDependingOnCarModel(int modelID,uchar createdBy) 0x421440 +CVehicle* CCarCtrl::GetNewVehicleDependingOnCarModel(int modelID, unsigned char createdBy) { + return plugin::CallAndReturn(modelID, createdBy); +} + +// Converted from cdecl void CCarCtrl::Init(void) 0x4212E0 +void CCarCtrl::Init() { + plugin::Call<0x4212E0>(); +} + +// Converted from cdecl void CCarCtrl::InitSequence(int SequenceElements) 0x421740 +void CCarCtrl::InitSequence(int SequenceElements) { + plugin::Call<0x421740, int>(SequenceElements); +} + +// Converted from cdecl bool CCarCtrl::IsAnyoneParking(void) 0x42C250 +bool CCarCtrl::IsAnyoneParking() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CCarCtrl::IsThisAnAppropriateNode(CVehicle *pVehicle,CNodeAddress NodeAddress1,CNodeAddress NodeAddress2,CNodeAddress NodeAddress3,bool arg5) 0x42DAB0 +bool CCarCtrl::IsThisAnAppropriateNode(CVehicle* pVehicle, CNodeAddress NodeAddress1, CNodeAddress NodeAddress2, CNodeAddress NodeAddress3, bool arg5) { + return plugin::CallAndReturn(pVehicle, NodeAddress1, NodeAddress2, NodeAddress3, arg5); +} + +// Converted from cdecl bool CCarCtrl::IsThisVehicleInteresting(CVehicle *pVehicle) 0x423EA0 +bool CCarCtrl::IsThisVehicleInteresting(CVehicle* pVehicle) { + return plugin::CallAndReturn(pVehicle); +} + +// Converted from cdecl void CCarCtrl::JoinCarWithRoadAccordingToMission(CVehicle *pVehicle) 0x432CB0 +void CCarCtrl::JoinCarWithRoadAccordingToMission(CVehicle* pVehicle) { + plugin::Call<0x432CB0, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarCtrl::JoinCarWithRoadSystem(CVehicle *pVehicle) 0x42F5A0 +void CCarCtrl::JoinCarWithRoadSystem(CVehicle* pVehicle) { + plugin::Call<0x42F5A0, CVehicle*>(pVehicle); +} + +// Converted from cdecl bool CCarCtrl::JoinCarWithRoadSystemGotoCoors(CVehicle *pVehicle,CVector const&posn,bool unused,bool bIsBoat) 0x42F870 +bool CCarCtrl::JoinCarWithRoadSystemGotoCoors(CVehicle* pVehicle, CVector const& posn, bool unused, bool bIsBoat) { + return plugin::CallAndReturn(pVehicle, posn, unused, bIsBoat); +} + +// Converted from cdecl bool CCarCtrl::PickNextNodeAccordingStrategy(CVehicle *pVehicle) 0x432B10 +bool CCarCtrl::PickNextNodeAccordingStrategy(CVehicle* pVehicle) { + return plugin::CallAndReturn(pVehicle); +} + +// Converted from cdecl void CCarCtrl::PickNextNodeRandomly(CVehicle *pVehicle) 0x42DE80 +void CCarCtrl::PickNextNodeRandomly(CVehicle* pVehicle) { + plugin::Call<0x42DE80, CVehicle*>(pVehicle); +} + +// Converted from cdecl bool CCarCtrl::PickNextNodeToChaseCar(CVehicle *pVehicle,float x_dest,float y_dest,float z_dest) 0x426EF0 +bool CCarCtrl::PickNextNodeToChaseCar(CVehicle* pVehicle, float x_dest, float y_dest, float z_dest) { + return plugin::CallAndReturn(pVehicle, x_dest, y_dest, z_dest); +} + +// Converted from cdecl bool CCarCtrl::PickNextNodeToFollowPath(CVehicle *pVehicle) 0x427740 +bool CCarCtrl::PickNextNodeToFollowPath(CVehicle* pVehicle) { + return plugin::CallAndReturn(pVehicle); +} + +// Converted from cdecl void CCarCtrl::PossiblyFireHSMissile(CVehicle *pEntityLauncher,CEntity *pTargetEntity) 0x429600 +void CCarCtrl::PossiblyFireHSMissile(CVehicle* pEntityLauncher, CEntity* pTargetEntity) { + plugin::Call<0x429600, CVehicle*, CEntity*>(pEntityLauncher, pTargetEntity); +} + +// Converted from cdecl void CCarCtrl::PossiblyRemoveVehicle(CVehicle *pVehicle) 0x424F80 +void CCarCtrl::PossiblyRemoveVehicle(CVehicle* pVehicle) { + plugin::Call<0x424F80, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarCtrl::PruneVehiclesOfInterest(void) 0x423F10 +void CCarCtrl::PruneVehiclesOfInterest() { + plugin::Call<0x423F10>(); +} + +// Converted from cdecl void CCarCtrl::ReInit(void) 0x4213B0 +void CCarCtrl::ReInit() { + plugin::Call<0x4213B0>(); +} + +// Converted from cdecl void CCarCtrl::ReconsiderRoute(CVehicle *pVehicle) 0x42FC40 +void CCarCtrl::ReconsiderRoute(CVehicle* pVehicle) { + plugin::Call<0x42FC40, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarCtrl::RegisterVehicleOfInterest(CVehicle *pVehicle) 0x423DE0 +void CCarCtrl::RegisterVehicleOfInterest(CVehicle* pVehicle) { + plugin::Call<0x423DE0, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarCtrl::RemoveCarsIfThePoolGetsFull(void) 0x4322B0 +void CCarCtrl::RemoveCarsIfThePoolGetsFull() { + plugin::Call<0x4322B0>(); +} + +// Converted from cdecl void CCarCtrl::RemoveDistantCars(void) 0x42CD10 +void CCarCtrl::RemoveDistantCars() { + plugin::Call<0x42CD10>(); +} + +// Converted from cdecl void CCarCtrl::RemoveFromInterestingVehicleList(CVehicle *pVehicle) 0x423ED0 +void CCarCtrl::RemoveFromInterestingVehicleList(CVehicle* pVehicle) { + plugin::Call<0x423ED0, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarCtrl::ScanForPedDanger(CVehicle *pVehicle) 0x42CE40 +void CCarCtrl::ScanForPedDanger(CVehicle* pVehicle) { + plugin::Call<0x42CE40, CVehicle*>(pVehicle); +} + +// Converted from cdecl bool CCarCtrl::ScriptGenerateOneEmergencyServicesCar(uint modelID,CVector posn) 0x42FBC0 +bool CCarCtrl::ScriptGenerateOneEmergencyServicesCar(unsigned int modelID, CVector posn) { + return plugin::CallAndReturn(modelID, posn); +} + +// Converted from cdecl void CCarCtrl::SetCoordsOfScriptCar(CVehicle *pVehicle,float x,float y,float z,uchar arg5,uchar arg6) 0x4342A0 +void CCarCtrl::SetCoordsOfScriptCar(CVehicle* pVehicle, float x, float y, float z, unsigned char arg5, unsigned char arg6) { + plugin::Call<0x4342A0, CVehicle*, float, float, float, unsigned char, unsigned char>(pVehicle, x, y, z, arg5, arg6); +} + +// Converted from cdecl void CCarCtrl::SetUpDriverAndPassengersForVehicle(CVehicle *pVehicle,int arg2,int arg3,bool arg4,bool arg5,int passengersNum) 0x4217C0 +void CCarCtrl::SetUpDriverAndPassengersForVehicle(CVehicle* pVehicle, int arg2, int arg3, bool arg4, bool arg5, int passengersNum) { + plugin::Call<0x4217C0, CVehicle*, int, int, bool, bool, int>(pVehicle, arg2, arg3, arg4, arg5, passengersNum); +} + +// Converted from cdecl void CCarCtrl::SlowCarDownForCarsSectorList(CPtrList &PtrList,CVehicle *pVehicle,float arg3,float arg4,float arg5,float arg6,float *arg7,float arg8) 0x432420 +void CCarCtrl::SlowCarDownForCarsSectorList(CPtrList& PtrList, CVehicle* pVehicle, float arg3, float arg4, float arg5, float arg6, float* arg7, float arg8) { + plugin::Call<0x432420, CPtrList&, CVehicle*, float, float, float, float, float*, float>(PtrList, pVehicle, arg3, arg4, arg5, arg6, arg7, arg8); +} + +// Converted from cdecl void CCarCtrl::SlowCarDownForObject(CEntity *pEntity,CVehicle *pVehicle,float *arg3,float arg4) 0x426220 +void CCarCtrl::SlowCarDownForObject(CEntity* pEntity, CVehicle* pVehicle, float* arg3, float arg4) { + plugin::Call<0x426220, CEntity*, CVehicle*, float*, float>(pEntity, pVehicle, arg3, arg4); +} + +// Converted from cdecl void CCarCtrl::SlowCarDownForObjectsSectorList(CPtrList &PtrList,CVehicle *pVehicle,float arg3,float arg4,float arg5,float arg6,float *arg7,float arg8) 0x42D4F0 +void CCarCtrl::SlowCarDownForObjectsSectorList(CPtrList& PtrList, CVehicle* pVehicle, float arg3, float arg4, float arg5, float arg6, float* arg7, float arg8) { + plugin::Call<0x42D4F0, CPtrList&, CVehicle*, float, float, float, float, float*, float>(PtrList, pVehicle, arg3, arg4, arg5, arg6, arg7, arg8); +} + +// Converted from cdecl void CCarCtrl::SlowCarDownForOtherCar(CEntity *pCar1,CVehicle *pCar2,float *arg3,float arg4) 0x42D0E0 +void CCarCtrl::SlowCarDownForOtherCar(CEntity* pCar1, CVehicle* pCar2, float* arg3, float arg4) { + plugin::Call<0x42D0E0, CEntity*, CVehicle*, float*, float>(pCar1, pCar2, arg3, arg4); +} + +// Converted from cdecl void CCarCtrl::SlowCarDownForPedsSectorList(CPtrList &PtrList,CVehicle *pVehicle,float arg3,float arg4,float arg5,float arg6,float *arg7,float arg8) 0x425440 +void CCarCtrl::SlowCarDownForPedsSectorList(CPtrList& PtrList, CVehicle* pVehicle, float arg3, float arg4, float arg5, float arg6, float* arg7, float arg8) { + plugin::Call<0x425440, CPtrList&, CVehicle*, float, float, float, float, float*, float>(PtrList, pVehicle, arg3, arg4, arg5, arg6, arg7, arg8); +} + +// Converted from cdecl void CCarCtrl::SlowCarOnRailsDownForTrafficAndLights(CVehicle *pVehicle) 0x434790 +void CCarCtrl::SlowCarOnRailsDownForTrafficAndLights(CVehicle* pVehicle) { + plugin::Call<0x434790, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarCtrl::SteerAIBoatWithPhysicsAttackingPlayer(CVehicle *pVehicle,float *arg2,float *arg3,float *arg4,bool *arg5) 0x428DE0 +void CCarCtrl::SteerAIBoatWithPhysicsAttackingPlayer(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5) { + plugin::Call<0x428DE0, CVehicle*, float*, float*, float*, bool*>(pVehicle, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl void CCarCtrl::SteerAIBoatWithPhysicsCirclingPlayer(CVehicle *pVehicle,float *arg2,float *arg3,float *arg4,bool *arg5) 0x429090 +void CCarCtrl::SteerAIBoatWithPhysicsCirclingPlayer(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5) { + plugin::Call<0x429090, CVehicle*, float*, float*, float*, bool*>(pVehicle, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl void CCarCtrl::SteerAIBoatWithPhysicsHeadingForTarget(CVehicle *pVehicle,float arg2,float arg3,float *arg4,float *arg5,float *arg6) 0x428BE0 +void CCarCtrl::SteerAIBoatWithPhysicsHeadingForTarget(CVehicle* pVehicle, float arg2, float arg3, float* arg4, float* arg5, float* arg6) { + plugin::Call<0x428BE0, CVehicle*, float, float, float*, float*, float*>(pVehicle, arg2, arg3, arg4, arg5, arg6); +} + +// Converted from cdecl void CCarCtrl::SteerAICarBlockingPlayerForwardAndBack(CVehicle *pVehicle,float *arg2,float *arg3,float *arg4,bool *arg5) 0x422B20 +void CCarCtrl::SteerAICarBlockingPlayerForwardAndBack(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5) { + plugin::Call<0x422B20, CVehicle*, float*, float*, float*, bool*>(pVehicle, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl void CCarCtrl::SteerAICarParkParallel(CVehicle *pVehicle,float *arg2,float *arg3,float *arg4,bool *arg5) 0x433BA0 +void CCarCtrl::SteerAICarParkParallel(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5) { + plugin::Call<0x433BA0, CVehicle*, float*, float*, float*, bool*>(pVehicle, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl void CCarCtrl::SteerAICarParkPerpendicular(CVehicle *pVehicle,float *arg2,float *arg3,float *arg4,bool *arg5) 0x433EA0 +void CCarCtrl::SteerAICarParkPerpendicular(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5) { + plugin::Call<0x433EA0, CVehicle*, float*, float*, float*, bool*>(pVehicle, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl void CCarCtrl::SteerAICarTowardsPointInEscort(CVehicle *pVehicle1,CVehicle *pVehicle2,float arg3,float arg4,float *arg5,float *arg6,float *arg7,bool *arg8) 0x4336D0 +void CCarCtrl::SteerAICarTowardsPointInEscort(CVehicle* pVehicle1, CVehicle* pVehicle2, float arg3, float arg4, float* arg5, float* arg6, float* arg7, bool* arg8) { + plugin::Call<0x4336D0, CVehicle*, CVehicle*, float, float, float*, float*, float*, bool*>(pVehicle1, pVehicle2, arg3, arg4, arg5, arg6, arg7, arg8); +} + +// Converted from cdecl void CCarCtrl::SteerAICarWithPhysics(CVehicle *pVehicle) 0x437C20 +void CCarCtrl::SteerAICarWithPhysics(CVehicle* pVehicle) { + plugin::Call<0x437C20, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarCtrl::SteerAICarWithPhysicsFollowPath(CVehicle *pVehicle,float *arg2,float *arg3,float *arg4,bool *arg5) 0x434900 +void CCarCtrl::SteerAICarWithPhysicsFollowPath(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5) { + plugin::Call<0x434900, CVehicle*, float*, float*, float*, bool*>(pVehicle, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl void CCarCtrl::SteerAICarWithPhysicsFollowPath_Racing(CVehicle *pVehicle,float *arg2,float *arg3,float *arg4,bool *arg5) 0x435830 +void CCarCtrl::SteerAICarWithPhysicsFollowPath_Racing(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5) { + plugin::Call<0x435830, CVehicle*, float*, float*, float*, bool*>(pVehicle, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl void CCarCtrl::SteerAICarWithPhysicsFollowPreRecordedPath(CVehicle *pVehicle,float *arg2,float *arg3,float *arg4,bool *arg5) 0x432DD0 +void CCarCtrl::SteerAICarWithPhysicsFollowPreRecordedPath(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5) { + plugin::Call<0x432DD0, CVehicle*, float*, float*, float*, bool*>(pVehicle, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl void CCarCtrl::SteerAICarWithPhysicsHeadingForTarget(CVehicle *pVehicle,CPhysical *pTarget,float arg3,float arg4,float *arg5,float *arg6,float *arg7,bool *arg8) 0x433280 +void CCarCtrl::SteerAICarWithPhysicsHeadingForTarget(CVehicle* pVehicle, CPhysical* pTarget, float arg3, float arg4, float* arg5, float* arg6, float* arg7, bool* arg8) { + plugin::Call<0x433280, CVehicle*, CPhysical*, float, float, float*, float*, float*, bool*>(pVehicle, pTarget, arg3, arg4, arg5, arg6, arg7, arg8); +} + +// Converted from cdecl void CCarCtrl::SteerAICarWithPhysicsTryingToBlockTarget(CVehicle *pVehicle,CEntity *Unusued,float arg3,float arg4,float arg5,float arg6,float *arg7,float *arg8,float *arg9,bool *arg10) 0x4335E0 +void CCarCtrl::SteerAICarWithPhysicsTryingToBlockTarget(CVehicle* pVehicle, CEntity* Unusued, float arg3, float arg4, float arg5, float arg6, float* arg7, float* arg8, float* arg9, bool* arg10) { + plugin::Call<0x4335E0, CVehicle*, CEntity*, float, float, float, float, float*, float*, float*, bool*>(pVehicle, Unusued, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); +} + +// Converted from cdecl void CCarCtrl::SteerAICarWithPhysicsTryingToBlockTarget_Stop(CVehicle *pVehicle,float x,float y,float arg4,float arg5,float *arg6,float *arg7,float *arg8,bool *arg9) 0x428990 +void CCarCtrl::SteerAICarWithPhysicsTryingToBlockTarget_Stop(CVehicle* pVehicle, float x, float y, float arg4, float arg5, float* arg6, float* arg7, float* arg8, bool* arg9) { + plugin::Call<0x428990, CVehicle*, float, float, float, float, float*, float*, float*, bool*>(pVehicle, x, y, arg4, arg5, arg6, arg7, arg8, arg9); +} + +// Converted from cdecl void CCarCtrl::SteerAICarWithPhysics_OnlyMission(CVehicle *pVehicle,float *arg2,float *arg3,float *arg4,bool *arg5) 0x436A90 +void CCarCtrl::SteerAICarWithPhysics_OnlyMission(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5) { + plugin::Call<0x436A90, CVehicle*, float*, float*, float*, bool*>(pVehicle, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl void CCarCtrl::SteerAIHeliAsPoliceHeli(CAutomobile *pAutomobile) 0x42AAD0 +void CCarCtrl::SteerAIHeliAsPoliceHeli(CAutomobile* pAutomobile) { + plugin::Call<0x42AAD0, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::SteerAIHeliFlyingAwayFromPlayer(CAutomobile *pAutomobile) 0x42ACB0 +void CCarCtrl::SteerAIHeliFlyingAwayFromPlayer(CAutomobile* pAutomobile) { + plugin::Call<0x42ACB0, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::SteerAIHeliToCrashAndBurn(CAutomobile *pAutomobile) 0x4238E0 +void CCarCtrl::SteerAIHeliToCrashAndBurn(CAutomobile* pAutomobile) { + plugin::Call<0x4238E0, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::SteerAIHeliToFollowEntity(CAutomobile *pAutomobile) 0x42A750 +void CCarCtrl::SteerAIHeliToFollowEntity(CAutomobile* pAutomobile) { + plugin::Call<0x42A750, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::SteerAIHeliToKeepEntityInView(CAutomobile *pAutomobile) 0x42AEB0 +void CCarCtrl::SteerAIHeliToKeepEntityInView(CAutomobile* pAutomobile) { + plugin::Call<0x42AEB0, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::SteerAIHeliToLand(CAutomobile *pAutomobile) 0x42AD30 +void CCarCtrl::SteerAIHeliToLand(CAutomobile* pAutomobile) { + plugin::Call<0x42AD30, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::SteerAIHeliTowardsTargetCoors(CAutomobile *pAutomobile) 0x42A630 +void CCarCtrl::SteerAIHeliTowardsTargetCoors(CAutomobile* pAutomobile) { + plugin::Call<0x42A630, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::SteerAIPlaneToCrashAndBurn(CAutomobile *pAutomobile) 0x423880 +void CCarCtrl::SteerAIPlaneToCrashAndBurn(CAutomobile* pAutomobile) { + plugin::Call<0x423880, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::SteerAIPlaneToFollowEntity(CAutomobile *pAutomobile) 0x4237F0 +void CCarCtrl::SteerAIPlaneToFollowEntity(CAutomobile* pAutomobile) { + plugin::Call<0x4237F0, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl void CCarCtrl::SteerAIPlaneTowardsTargetCoors(CAutomobile *pAutomobile) 0x423790 +void CCarCtrl::SteerAIPlaneTowardsTargetCoors(CAutomobile* pAutomobile) { + plugin::Call<0x423790, CAutomobile*>(pAutomobile); +} + +// Converted from cdecl bool CCarCtrl::StopCarIfNodesAreInvalid(CVehicle *pVehicle) 0x422590 +bool CCarCtrl::StopCarIfNodesAreInvalid(CVehicle* pVehicle) { + return plugin::CallAndReturn(pVehicle); +} + +// Converted from cdecl void CCarCtrl::SwitchBetweenPhysicsAndGhost(CVehicle *pVehicle) 0x4222A0 +void CCarCtrl::SwitchBetweenPhysicsAndGhost(CVehicle* pVehicle) { + plugin::Call<0x4222A0, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarCtrl::SwitchVehicleToRealPhysics(CVehicle *pVehicle) 0x423FC0 +void CCarCtrl::SwitchVehicleToRealPhysics(CVehicle* pVehicle) { + plugin::Call<0x423FC0, CVehicle*>(pVehicle); +} + +// Converted from cdecl float CCarCtrl::TestCollisionBetween2MovingRects(CVehicle *pVehicle1,CVehicle *pVehicle2,float arg3,float arg4,CVector *pVector1,CVector *pVector2) 0x425B30 +float CCarCtrl::TestCollisionBetween2MovingRects(CVehicle* pVehicle1, CVehicle* pVehicle2, float arg3, float arg4, CVector* pVector1, CVector* pVector2) { + return plugin::CallAndReturn(pVehicle1, pVehicle2, arg3, arg4, pVector1, pVector2); +} + +// Converted from cdecl float CCarCtrl::TestCollisionBetween2MovingRects_OnlyFrontBumper(CVehicle *pVehicle1,CVehicle *pVehicle2,float arg3,float arg4,CVector *pVector1,CVector *pVector2) 0x425F70 +float CCarCtrl::TestCollisionBetween2MovingRects_OnlyFrontBumper(CVehicle* pVehicle1, CVehicle* pVehicle2, float arg3, float arg4, CVector* pVector1, CVector* pVector2) { + return plugin::CallAndReturn(pVehicle1, pVehicle2, arg3, arg4, pVector1, pVector2); +} + +// Converted from cdecl void CCarCtrl::TestWhetherToFirePlaneGuns(CVehicle *pVehicle,CEntity *pTarget) 0x429520 +void CCarCtrl::TestWhetherToFirePlaneGuns(CVehicle* pVehicle, CEntity* pTarget) { + plugin::Call<0x429520, CVehicle*, CEntity*>(pVehicle, pTarget); +} + +// Converted from cdecl bool CCarCtrl::ThisVehicleShouldTryNotToTurn(CVehicle *pVehicle) 0x421FE0 +bool CCarCtrl::ThisVehicleShouldTryNotToTurn(CVehicle* pVehicle) { + return plugin::CallAndReturn(pVehicle); +} + +// Converted from cdecl void CCarCtrl::TriggerDogFightMoves(CVehicle *pVehicle1,CVehicle *pVehicle2) 0x429300 +void CCarCtrl::TriggerDogFightMoves(CVehicle* pVehicle1, CVehicle* pVehicle2) { + plugin::Call<0x429300, CVehicle*, CVehicle*>(pVehicle1, pVehicle2); +} + +// Converted from cdecl void CCarCtrl::UpdateCarCount(CVehicle *pVehicle,uchar bDecrease) 0x424000 +void CCarCtrl::UpdateCarCount(CVehicle* pVehicle, unsigned char bDecrease) { + plugin::Call<0x424000, CVehicle*, unsigned char>(pVehicle, bDecrease); +} + +// Converted from cdecl void CCarCtrl::UpdateCarOnRails(CVehicle *pVehicle) 0x436540 +void CCarCtrl::UpdateCarOnRails(CVehicle* pVehicle) { + plugin::Call<0x436540, CVehicle*>(pVehicle); +} + +// Converted from cdecl void CCarCtrl::WeaveForObject(CEntity *pEntity,CVehicle *pVehicle,float *arg3,float *arg4) 0x426BC0 +void CCarCtrl::WeaveForObject(CEntity* pEntity, CVehicle* pVehicle, float* arg3, float* arg4) { + plugin::Call<0x426BC0, CEntity*, CVehicle*, float*, float*>(pEntity, pVehicle, arg3, arg4); +} + +// Converted from cdecl void CCarCtrl::WeaveForOtherCar(CEntity *pEntity,CVehicle *pVehicle,float *arg3,float *arg4) 0x426350 +void CCarCtrl::WeaveForOtherCar(CEntity* pEntity, CVehicle* pVehicle, float* arg3, float* arg4) { + plugin::Call<0x426350, CEntity*, CVehicle*, float*, float*>(pEntity, pVehicle, arg3, arg4); +} + +// Converted from cdecl void CCarCtrl::WeaveThroughCarsSectorList(CPtrList &PtrList,CVehicle *pVehicle,CPhysical *pPhysical,float arg4,float arg5,float arg6,float arg7,float *arg8,float *arg9) 0x42D680 +void CCarCtrl::WeaveThroughCarsSectorList(CPtrList& PtrList, CVehicle* pVehicle, CPhysical* pPhysical, float arg4, float arg5, float arg6, float arg7, float* arg8, float* arg9) { + plugin::Call<0x42D680, CPtrList&, CVehicle*, CPhysical*, float, float, float, float, float*, float*>(PtrList, pVehicle, pPhysical, arg4, arg5, arg6, arg7, arg8, arg9); +} + +// Converted from cdecl void CCarCtrl::WeaveThroughObjectsSectorList(CPtrList &PtrList,CVehicle *pVehicle,float arg3,float arg4,float arg5,float arg6,float *arg7,float *arg8) 0x42D950 +void CCarCtrl::WeaveThroughObjectsSectorList(CPtrList& PtrList, CVehicle* pVehicle, float arg3, float arg4, float arg5, float arg6, float* arg7, float* arg8) { + plugin::Call<0x42D950, CPtrList&, CVehicle*, float, float, float, float, float*, float*>(PtrList, pVehicle, arg3, arg4, arg5, arg6, arg7, arg8); +} + +// Converted from cdecl void CCarCtrl::WeaveThroughPedsSectorList(CPtrList &PtrList,CVehicle *pVehicle,CPhysical *pPhysical,float arg4,float arg5,float arg6,float arg7,float *arg8,float *arg9) 0x42D7E0 +void CCarCtrl::WeaveThroughPedsSectorList(CPtrList& PtrList, CVehicle* pVehicle, CPhysical* pPhysical, float arg4, float arg5, float arg6, float arg7, float* arg8, float* arg9) { + plugin::Call<0x42D7E0, CPtrList&, CVehicle*, CPhysical*, float, float, float, float, float*, float*>(PtrList, pVehicle, pPhysical, arg4, arg5, arg6, arg7, arg8, arg9); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCarCtrl.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCarCtrl.h new file mode 100644 index 00000000..459218aa --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCarCtrl.h @@ -0,0 +1,127 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVehicle.h" +#include "CPlane.h" +#include "CHeli.h" +#include "CPathFind.h" + + +class PLUGIN_API CCarCtrl +{ +public: + static int ChooseBoatModel(); + static int ChooseCarModelToLoad(int arg1); + static int ChooseGangCarModel(int arg1); + static int ChooseModel(int* arg1); + static int ChoosePoliceCarModel(unsigned int arg0); + static void ClearInterestingVehicleList(); + static void ClipTargetOrientationToLink(CVehicle* pVehicle, CCarPathLinkAddress arg2, char arg3, float* arg4, float arg5, float arg6); + static CVehicle* CreateCarForScript(int modelid, CVector posn, unsigned char MissionCleanUpFlag); + static bool CreateConvoy(CVehicle* pVehicle, int arg2); + static bool CreatePoliceChase(CVehicle* pVehicle, int arg2, CNodeAddress NodeAddress); + static bool DealWithBend_Racing(CVehicle* pVehicle, CCarPathLinkAddress LinkAddress1, CCarPathLinkAddress LinkAddress2, CCarPathLinkAddress LinkAddress3, CCarPathLinkAddress LinkAddress4, char arg6, char arg7, char arg8, char arg9, float arg10, float* arg11, float* arg12, float* arg13, float* arg14, CVector* pVector); + static void DragCarToPoint(CVehicle* pVehicle, CVector* pVector); + static float FindAngleToWeaveThroughTraffic(CVehicle* pVehicle, CPhysical* pPhysical, float arg3, float arg4, float arg5); + static void FindIntersection2Lines(float arg1, float arg2, float arg3, float arg4, float arg5, float arg6, float arg7, float arg8, float* arg9, float* arg10); + static void FindLinksToGoWithTheseNodes(CVehicle* pVehicle); + static float FindMaximumSpeedForThisCarInTraffic(CVehicle* pVehicle); + static void FindNodesThisCarIsNearestTo(CVehicle* pVehicle, CNodeAddress& NodeAddress1, CNodeAddress& NodeAddress2); + static char FindPathDirection(CNodeAddress NodeAddress1, CNodeAddress NodeAddress2, CNodeAddress NodeAddress3, bool* arg4); + static float FindPercDependingOnDistToLink(CVehicle* pVehicle, CCarPathLinkAddress LinkAddress); + static int FindSequenceElement(int arg1); + static float FindSpeedMultiplier(float arg1, float arg2, float arg3, float arg4); + static float FindSpeedMultiplierWithSpeedFromNodes(char arg1); + static void FireHeliRocketsAtTarget(CAutomobile* pEntityLauncher, CEntity* pEntity); + static void FlyAIHeliInCertainDirection(CHeli* pHeli, float arg2, float arg3, bool arg4); + static void FlyAIHeliToTarget_FixedOrientation(CHeli* pHeli, float Orientation, CVector posn); + static void FlyAIPlaneInCertainDirection(CPlane* pPlane); + static bool GenerateCarCreationCoors2(CVector posn, float radius, float arg3, float arg4, bool arg5, float arg6, float arg7, CVector* pOrigin, CNodeAddress* pNodeAddress1, CNodeAddress* pNodeAddress12, float* arg11, bool arg12, bool arg13); + static void GenerateEmergencyServicesCar(); + static bool GenerateOneEmergencyServicesCar(unsigned int modelID, CVector posn); + static void GenerateOneRandomCar(); + static void GenerateRandomCars(); + static void GetAIHeliToAttackPlayer(CAutomobile* pAutomobile); + static void GetAIHeliToFlyInDirection(CAutomobile* pAutomobile); + static void GetAIPlaneToAttackPlayer(CAutomobile* pAutomobile); + static void GetAIPlaneToDoDogFight(CAutomobile* pAutomobile); + static void GetAIPlaneToDoDogFightAgainstPlayer(CAutomobile* pAutomobile); + static CVehicle* GetNewVehicleDependingOnCarModel(int modelID, unsigned char createdBy); + static void Init(); + static void InitSequence(int SequenceElements); + static bool IsAnyoneParking(); + static bool IsThisAnAppropriateNode(CVehicle* pVehicle, CNodeAddress NodeAddress1, CNodeAddress NodeAddress2, CNodeAddress NodeAddress3, bool arg5); + static bool IsThisVehicleInteresting(CVehicle* pVehicle); + static void JoinCarWithRoadAccordingToMission(CVehicle* pVehicle); + static void JoinCarWithRoadSystem(CVehicle* pVehicle); + static bool JoinCarWithRoadSystemGotoCoors(CVehicle* pVehicle, CVector const& posn, bool unused, bool bIsBoat); + static bool PickNextNodeAccordingStrategy(CVehicle* pVehicle); + static void PickNextNodeRandomly(CVehicle* pVehicle); + static bool PickNextNodeToChaseCar(CVehicle* pVehicle, float x_dest, float y_dest, float z_dest); + static bool PickNextNodeToFollowPath(CVehicle* pVehicle); + static void PossiblyFireHSMissile(CVehicle* pEntityLauncher, CEntity* pTargetEntity); + static void PossiblyRemoveVehicle(CVehicle* pVehicle); + static void PruneVehiclesOfInterest(); + static void ReInit(); + static void ReconsiderRoute(CVehicle* pVehicle); + static void RegisterVehicleOfInterest(CVehicle* pVehicle); + static void RemoveCarsIfThePoolGetsFull(); + static void RemoveDistantCars(); + static void RemoveFromInterestingVehicleList(CVehicle* pVehicle); + static void ScanForPedDanger(CVehicle* pVehicle); + static bool ScriptGenerateOneEmergencyServicesCar(unsigned int modelID, CVector posn); + static void SetCoordsOfScriptCar(CVehicle* pVehicle, float x, float y, float z, unsigned char arg5, unsigned char arg6); + static void SetUpDriverAndPassengersForVehicle(CVehicle* pVehicle, int arg2, int arg3, bool arg4, bool arg5, int passengersNum); + static void SlowCarDownForCarsSectorList(CPtrList& PtrList, CVehicle* pVehicle, float arg3, float arg4, float arg5, float arg6, float* arg7, float arg8); + static void SlowCarDownForObject(CEntity* pEntity, CVehicle* pVehicle, float* arg3, float arg4); + static void SlowCarDownForObjectsSectorList(CPtrList& PtrList, CVehicle* pVehicle, float arg3, float arg4, float arg5, float arg6, float* arg7, float arg8); + static void SlowCarDownForOtherCar(CEntity* pCar1, CVehicle* pCar2, float* arg3, float arg4); + static void SlowCarDownForPedsSectorList(CPtrList& PtrList, CVehicle* pVehicle, float arg3, float arg4, float arg5, float arg6, float* arg7, float arg8); + static void SlowCarOnRailsDownForTrafficAndLights(CVehicle* pVehicle); + static void SteerAIBoatWithPhysicsAttackingPlayer(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5); + static void SteerAIBoatWithPhysicsCirclingPlayer(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5); + static void SteerAIBoatWithPhysicsHeadingForTarget(CVehicle* pVehicle, float arg2, float arg3, float* arg4, float* arg5, float* arg6); + static void SteerAICarBlockingPlayerForwardAndBack(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5); + static void SteerAICarParkParallel(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5); + static void SteerAICarParkPerpendicular(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5); + static void SteerAICarTowardsPointInEscort(CVehicle* pVehicle1, CVehicle* pVehicle2, float arg3, float arg4, float* arg5, float* arg6, float* arg7, bool* arg8); + static void SteerAICarWithPhysics(CVehicle* pVehicle); + static void SteerAICarWithPhysicsFollowPath(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5); + static void SteerAICarWithPhysicsFollowPath_Racing(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5); + static void SteerAICarWithPhysicsFollowPreRecordedPath(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5); + static void SteerAICarWithPhysicsHeadingForTarget(CVehicle* pVehicle, CPhysical* pTarget, float arg3, float arg4, float* arg5, float* arg6, float* arg7, bool* arg8); + static void SteerAICarWithPhysicsTryingToBlockTarget(CVehicle* pVehicle, CEntity* Unusued, float arg3, float arg4, float arg5, float arg6, float* arg7, float* arg8, float* arg9, bool* arg10); + static void SteerAICarWithPhysicsTryingToBlockTarget_Stop(CVehicle* pVehicle, float x, float y, float arg4, float arg5, float* arg6, float* arg7, float* arg8, bool* arg9); + static void SteerAICarWithPhysics_OnlyMission(CVehicle* pVehicle, float* arg2, float* arg3, float* arg4, bool* arg5); + static void SteerAIHeliAsPoliceHeli(CAutomobile* pAutomobile); + static void SteerAIHeliFlyingAwayFromPlayer(CAutomobile* pAutomobile); + static void SteerAIHeliToCrashAndBurn(CAutomobile* pAutomobile); + static void SteerAIHeliToFollowEntity(CAutomobile* pAutomobile); + static void SteerAIHeliToKeepEntityInView(CAutomobile* pAutomobile); + static void SteerAIHeliToLand(CAutomobile* pAutomobile); + static void SteerAIHeliTowardsTargetCoors(CAutomobile* pAutomobile); + static void SteerAIPlaneToCrashAndBurn(CAutomobile* pAutomobile); + static void SteerAIPlaneToFollowEntity(CAutomobile* pAutomobile); + static void SteerAIPlaneTowardsTargetCoors(CAutomobile* pAutomobile); + static bool StopCarIfNodesAreInvalid(CVehicle* pVehicle); + static void SwitchBetweenPhysicsAndGhost(CVehicle* pVehicle); + static void SwitchVehicleToRealPhysics(CVehicle* pVehicle); + static float TestCollisionBetween2MovingRects(CVehicle* pVehicle1, CVehicle* pVehicle2, float arg3, float arg4, CVector* pVector1, CVector* pVector2); + static float TestCollisionBetween2MovingRects_OnlyFrontBumper(CVehicle* pVehicle1, CVehicle* pVehicle2, float arg3, float arg4, CVector* pVector1, CVector* pVector2); + static void TestWhetherToFirePlaneGuns(CVehicle* pVehicle, CEntity* pTarget); + static bool ThisVehicleShouldTryNotToTurn(CVehicle* pVehicle); + static void TriggerDogFightMoves(CVehicle* pVehicle1, CVehicle* pVehicle2); + static void UpdateCarCount(CVehicle* pVehicle, unsigned char bDecrease); + static void UpdateCarOnRails(CVehicle* pVehicle); + static void WeaveForObject(CEntity* pEntity, CVehicle* pVehicle, float* arg3, float* arg4); + static void WeaveForOtherCar(CEntity* pEntity, CVehicle* pVehicle, float* arg3, float* arg4); + static void WeaveThroughCarsSectorList(CPtrList& PtrList, CVehicle* pVehicle, CPhysical* pPhysical, float arg4, float arg5, float arg6, float arg7, float* arg8, float* arg9); + static void WeaveThroughObjectsSectorList(CPtrList& PtrList, CVehicle* pVehicle, float arg3, float arg4, float arg5, float arg6, float* arg7, float* arg8); + static void WeaveThroughPedsSectorList(CPtrList& PtrList, CVehicle* pVehicle, CPhysical* pPhysical, float arg4, float arg5, float arg6, float arg7, float* arg8, float* arg9); + +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCarEnterExit.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCarEnterExit.cpp new file mode 100644 index 00000000..8ede35a8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCarEnterExit.cpp @@ -0,0 +1,243 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCarEnterExit.h" + +PLUGIN_SOURCE_FILE + +float const &CCarEnterExit::ms_fMaxSpeed_CanDragPedOut = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x86F104, 0, 0, 0, 0, 0)); +float const &CCarEnterExit::ms_fMaxSpeed_PlayerCanDragPedOut = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x86F108, 0, 0, 0, 0, 0)); +bool &CCarEnterExit::ms_bPedOffsetsCalculated = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC18C20, 0, 0, 0, 0, 0)); +CVector &CCarEnterExit::ms_vecPedGetUpAnimOffset = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC18C3C, 0, 0, 0, 0, 0)); +CVector &CCarEnterExit::ms_vecPedQuickDraggedOutCarAnimOffset = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC18C48, 0, 0, 0, 0, 0)); +CVector &CCarEnterExit::ms_vecPedBedLAnimOffset = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC18C54, 0, 0, 0, 0, 0)); +CVector &CCarEnterExit::ms_vecPedBedRAnimOffset = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC18C60, 0, 0, 0, 0, 0)); +CVector &CCarEnterExit::ms_vecPedDeskAnimOffset = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC18C6C, 0, 0, 0, 0, 0)); +CVector &CCarEnterExit::ms_vecPedChairAnimOffset = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC18C78, 0, 0, 0, 0, 0)); + +int addrof(CCarEnterExit::AddInCarAnim) = ADDRESS_BY_VERSION(0x64F720, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::AddInCarAnim) = GLOBAL_ADDRESS_BY_VERSION(0x64F720, 0, 0, 0, 0, 0); + +void CCarEnterExit::AddInCarAnim(CVehicle const *vehicle, CPed *ped, bool bAsDriver) { + plugin::CallDynGlobal(gaddrof(CCarEnterExit::AddInCarAnim), vehicle, ped, bAsDriver); +} + +int addrof(CCarEnterExit::CarHasDoorToClose) = ADDRESS_BY_VERSION(0x64EE10, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::CarHasDoorToClose) = GLOBAL_ADDRESS_BY_VERSION(0x64EE10, 0, 0, 0, 0, 0); + +bool CCarEnterExit::CarHasDoorToClose(CVehicle const *vehicle, int doorId) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::CarHasDoorToClose), vehicle, doorId); +} + +int addrof(CCarEnterExit::CarHasDoorToOpen) = ADDRESS_BY_VERSION(0x64EDD0, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::CarHasDoorToOpen) = GLOBAL_ADDRESS_BY_VERSION(0x64EDD0, 0, 0, 0, 0, 0); + +bool CCarEnterExit::CarHasDoorToOpen(CVehicle const *vehicle, int doorID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::CarHasDoorToOpen), vehicle, doorID); +} + +int addrof(CCarEnterExit::CarHasOpenableDoor) = ADDRESS_BY_VERSION(0x64EE50, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::CarHasOpenableDoor) = GLOBAL_ADDRESS_BY_VERSION(0x64EE50, 0, 0, 0, 0, 0); + +bool CCarEnterExit::CarHasOpenableDoor(CVehicle const *vehicle, int DoorID_UnusedArg, CPed const *ped) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::CarHasOpenableDoor), vehicle, DoorID_UnusedArg, ped); +} + +int addrof(CCarEnterExit::CarHasPartiallyOpenDoor) = ADDRESS_BY_VERSION(0x64EE70, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::CarHasPartiallyOpenDoor) = GLOBAL_ADDRESS_BY_VERSION(0x64EE70, 0, 0, 0, 0, 0); + +bool CCarEnterExit::CarHasPartiallyOpenDoor(CVehicle const *vehicle, int doorID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::CarHasPartiallyOpenDoor), vehicle, doorID); +} + +int addrof(CCarEnterExit::ComputeDoorFlag) = ADDRESS_BY_VERSION(0x64E550, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::ComputeDoorFlag) = GLOBAL_ADDRESS_BY_VERSION(0x64E550, 0, 0, 0, 0, 0); + +int CCarEnterExit::ComputeDoorFlag(CVehicle const *vehicle, int doorId, bool bCheckVehicleType) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::ComputeDoorFlag), vehicle, doorId, bCheckVehicleType); +} + +int addrof(CCarEnterExit::ComputeOppositeDoorFlag) = ADDRESS_BY_VERSION(0x64E610, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::ComputeOppositeDoorFlag) = GLOBAL_ADDRESS_BY_VERSION(0x64E610, 0, 0, 0, 0, 0); + +int CCarEnterExit::ComputeOppositeDoorFlag(CVehicle const *vehicle, int doorId, bool bCheckVehicleType) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::ComputeOppositeDoorFlag), vehicle, doorId, bCheckVehicleType); +} + +int addrof(CCarEnterExit::ComputePassengerIndexFromCarDoor) = ADDRESS_BY_VERSION(0x64F1E0, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::ComputePassengerIndexFromCarDoor) = GLOBAL_ADDRESS_BY_VERSION(0x64F1E0, 0, 0, 0, 0, 0); + +signed int CCarEnterExit::ComputePassengerIndexFromCarDoor(CVehicle const *vehicle, int doorID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::ComputePassengerIndexFromCarDoor), vehicle, doorID); +} + +int addrof(CCarEnterExit::ComputeSlowJackedPed) = ADDRESS_BY_VERSION(0x64F070, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::ComputeSlowJackedPed) = GLOBAL_ADDRESS_BY_VERSION(0x64F070, 0, 0, 0, 0, 0); + +int CCarEnterExit::ComputeSlowJackedPed(CVehicle const *vehicle, int doorID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::ComputeSlowJackedPed), vehicle, doorID); +} + +int addrof(CCarEnterExit::ComputeTargetDoorToEnterAsPassenger) = ADDRESS_BY_VERSION(0x64F190, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::ComputeTargetDoorToEnterAsPassenger) = GLOBAL_ADDRESS_BY_VERSION(0x64F190, 0, 0, 0, 0, 0); + +signed int CCarEnterExit::ComputeTargetDoorToEnterAsPassenger(CVehicle const *pVehicle, int nPassengerNum) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::ComputeTargetDoorToEnterAsPassenger), pVehicle, nPassengerNum); +} + +int addrof(CCarEnterExit::ComputeTargetDoorToExit) = ADDRESS_BY_VERSION(0x64F110, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::ComputeTargetDoorToExit) = GLOBAL_ADDRESS_BY_VERSION(0x64F110, 0, 0, 0, 0, 0); + +int CCarEnterExit::ComputeTargetDoorToExit(CVehicle const *pVehicle, CPed const *pPed) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::ComputeTargetDoorToExit), pVehicle, pPed); +} + +int addrof(CCarEnterExit::GetNearestCarDoor) = ADDRESS_BY_VERSION(0x6528F0, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::GetNearestCarDoor) = GLOBAL_ADDRESS_BY_VERSION(0x6528F0, 0, 0, 0, 0, 0); + +bool CCarEnterExit::GetNearestCarDoor(CPed const *pPed, CVehicle const *pVehicle, CVector *outPos, int doorID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::GetNearestCarDoor), pPed, pVehicle, outPos, doorID); +} + +int addrof(CCarEnterExit::GetNearestCarPassengerDoor) = ADDRESS_BY_VERSION(0x650BB0, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::GetNearestCarPassengerDoor) = GLOBAL_ADDRESS_BY_VERSION(0x650BB0, 0, 0, 0, 0, 0); + +bool CCarEnterExit::GetNearestCarPassengerDoor(CPed const *ped, CVehicle const *vehicle, CVector *outVec, int *doorId, bool flag1, bool flag2, bool flag3) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::GetNearestCarPassengerDoor), ped, vehicle, outVec, doorId, flag1, flag2, flag3); +} + +int addrof(CCarEnterExit::GetPositionToOpenCarDoor) = ADDRESS_BY_VERSION(0x64E740, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::GetPositionToOpenCarDoor) = GLOBAL_ADDRESS_BY_VERSION(0x64E740, 0, 0, 0, 0, 0); + +CVector *CCarEnterExit::GetPositionToOpenCarDoor(CVector *out, CVehicle const *vehicle, int doorId) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::GetPositionToOpenCarDoor), out, vehicle, doorId); +} + +int addrof(CCarEnterExit::IsCarDoorInUse) = ADDRESS_BY_VERSION(0x64EC90, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::IsCarDoorInUse) = GLOBAL_ADDRESS_BY_VERSION(0x64EC90, 0, 0, 0, 0, 0); + +bool CCarEnterExit::IsCarDoorInUse(CVehicle const *vehicle, int door1Id, int door2Id) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::IsCarDoorInUse), vehicle, door1Id, door2Id); +} + +int addrof(CCarEnterExit::IsCarDoorReady) = ADDRESS_BY_VERSION(0x64ED90, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::IsCarDoorReady) = GLOBAL_ADDRESS_BY_VERSION(0x64ED90, 0, 0, 0, 0, 0); + +bool CCarEnterExit::IsCarDoorReady(CVehicle const *vehicle, int doorID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::IsCarDoorReady), vehicle, doorID); +} + +int addrof(CCarEnterExit::IsCarQuickJackPossible) = ADDRESS_BY_VERSION(0x64EF00, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::IsCarQuickJackPossible) = GLOBAL_ADDRESS_BY_VERSION(0x64EF00, 0, 0, 0, 0, 0); + +bool CCarEnterExit::IsCarQuickJackPossible(CVehicle const *vehicle, int doorID, CPed const *ped) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::IsCarQuickJackPossible), vehicle, doorID, ped); +} + +int addrof(CCarEnterExit::IsCarSlowJackRequired) = ADDRESS_BY_VERSION(0x64EF70, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::IsCarSlowJackRequired) = GLOBAL_ADDRESS_BY_VERSION(0x64EF70, 0, 0, 0, 0, 0); + +bool CCarEnterExit::IsCarSlowJackRequired(CVehicle const *vehicle, int doorID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::IsCarSlowJackRequired), vehicle, doorID); +} + +int addrof(CCarEnterExit::IsClearToDriveAway) = ADDRESS_BY_VERSION(0x6509B0, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::IsClearToDriveAway) = GLOBAL_ADDRESS_BY_VERSION(0x6509B0, 0, 0, 0, 0, 0); + +bool CCarEnterExit::IsClearToDriveAway(CVehicle const *outVehicle) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::IsClearToDriveAway), outVehicle); +} + +int addrof(CCarEnterExit::IsPathToDoorBlockedByVehicleCollisionModel) = ADDRESS_BY_VERSION(0x651210, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::IsPathToDoorBlockedByVehicleCollisionModel) = GLOBAL_ADDRESS_BY_VERSION(0x651210, 0, 0, 0, 0, 0); + +bool CCarEnterExit::IsPathToDoorBlockedByVehicleCollisionModel(CPed const *ped, CVehicle *vehicle, CVector const *pos) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::IsPathToDoorBlockedByVehicleCollisionModel), ped, vehicle, pos); +} + +int addrof(CCarEnterExit::IsPedHealthy) = ADDRESS_BY_VERSION(0x64EEE0, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::IsPedHealthy) = GLOBAL_ADDRESS_BY_VERSION(0x64EEE0, 0, 0, 0, 0, 0); + +bool CCarEnterExit::IsPedHealthy(CPed *vehicle) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::IsPedHealthy), vehicle); +} + +int addrof(CCarEnterExit::IsPlayerToQuitCarEnter) = ADDRESS_BY_VERSION(0x64F240, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::IsPlayerToQuitCarEnter) = GLOBAL_ADDRESS_BY_VERSION(0x64F240, 0, 0, 0, 0, 0); + +bool CCarEnterExit::IsPlayerToQuitCarEnter(CPed const *ped, CVehicle const *vehicle, int StartTime, CTask *task) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::IsPlayerToQuitCarEnter), ped, vehicle, StartTime, task); +} + +int addrof(CCarEnterExit::IsRoomForPedToLeaveCar) = ADDRESS_BY_VERSION(0x6504C0, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::IsRoomForPedToLeaveCar) = GLOBAL_ADDRESS_BY_VERSION(0x6504C0, 0, 0, 0, 0, 0); + +bool CCarEnterExit::IsRoomForPedToLeaveCar(CVehicle const *veh, int doorID, CVector *pos) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::IsRoomForPedToLeaveCar), veh, doorID, pos); +} + +int addrof(CCarEnterExit::IsVehicleHealthy) = ADDRESS_BY_VERSION(0x64EEC0, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::IsVehicleHealthy) = GLOBAL_ADDRESS_BY_VERSION(0x64EEC0, 0, 0, 0, 0, 0); + +bool CCarEnterExit::IsVehicleHealthy(CVehicle const *vehicle) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::IsVehicleHealthy), vehicle); +} + +int addrof(CCarEnterExit::IsVehicleStealable) = ADDRESS_BY_VERSION(0x6510D0, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::IsVehicleStealable) = GLOBAL_ADDRESS_BY_VERSION(0x6510D0, 0, 0, 0, 0, 0); + +bool CCarEnterExit::IsVehicleStealable(CVehicle const *vehicle, CPed const *ped) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarEnterExit::IsVehicleStealable), vehicle, ped); +} + +int addrof(CCarEnterExit::MakeUndraggedDriverPedLeaveCar) = ADDRESS_BY_VERSION(0x64F600, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::MakeUndraggedDriverPedLeaveCar) = GLOBAL_ADDRESS_BY_VERSION(0x64F600, 0, 0, 0, 0, 0); + +void CCarEnterExit::MakeUndraggedDriverPedLeaveCar(CVehicle const *vehicle, CPed const *ped) { + plugin::CallDynGlobal(gaddrof(CCarEnterExit::MakeUndraggedDriverPedLeaveCar), vehicle, ped); +} + +int addrof(CCarEnterExit::MakeUndraggedPassengerPedsLeaveCar) = ADDRESS_BY_VERSION(0x64F540, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::MakeUndraggedPassengerPedsLeaveCar) = GLOBAL_ADDRESS_BY_VERSION(0x64F540, 0, 0, 0, 0, 0); + +void CCarEnterExit::MakeUndraggedPassengerPedsLeaveCar(CVehicle const *targetVehicle, CPed const *draggedPed, CPed const *ped) { + plugin::CallDynGlobal(gaddrof(CCarEnterExit::MakeUndraggedPassengerPedsLeaveCar), targetVehicle, draggedPed, ped); +} + +int addrof(CCarEnterExit::QuitEnteringCar) = ADDRESS_BY_VERSION(0x650130, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::QuitEnteringCar) = GLOBAL_ADDRESS_BY_VERSION(0x650130, 0, 0, 0, 0, 0); + +void CCarEnterExit::QuitEnteringCar(CPed *ped, CVehicle *vehicle, int doorID, bool bCarWasBeingJacked) { + plugin::CallDynGlobal(gaddrof(CCarEnterExit::QuitEnteringCar), ped, vehicle, doorID, bCarWasBeingJacked); +} + +int addrof(CCarEnterExit::RemoveCarSitAnim) = ADDRESS_BY_VERSION(0x64F680, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::RemoveCarSitAnim) = GLOBAL_ADDRESS_BY_VERSION(0x64F680, 0, 0, 0, 0, 0); + +void CCarEnterExit::RemoveCarSitAnim(CPed const *ped) { + plugin::CallDynGlobal(gaddrof(CCarEnterExit::RemoveCarSitAnim), ped); +} + +int addrof(CCarEnterExit::RemoveGetInAnims) = ADDRESS_BY_VERSION(0x64F6E0, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::RemoveGetInAnims) = GLOBAL_ADDRESS_BY_VERSION(0x64F6E0, 0, 0, 0, 0, 0); + +void CCarEnterExit::RemoveGetInAnims(CPed const *ped) { + plugin::CallDynGlobal(gaddrof(CCarEnterExit::RemoveGetInAnims), ped); +} + +int addrof(CCarEnterExit::SetAnimOffsetForEnterOrExitVehicle) = ADDRESS_BY_VERSION(0x64F860, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::SetAnimOffsetForEnterOrExitVehicle) = GLOBAL_ADDRESS_BY_VERSION(0x64F860, 0, 0, 0, 0, 0); + +void CCarEnterExit::SetAnimOffsetForEnterOrExitVehicle() { + plugin::CallDynGlobal(gaddrof(CCarEnterExit::SetAnimOffsetForEnterOrExitVehicle)); +} + +int addrof(CCarEnterExit::SetPedInCarDirect) = ADDRESS_BY_VERSION(0x650280, 0, 0, 0, 0, 0); +int gaddrof(CCarEnterExit::SetPedInCarDirect) = GLOBAL_ADDRESS_BY_VERSION(0x650280, 0, 0, 0, 0, 0); + +void CCarEnterExit::SetPedInCarDirect(CPed *ped, CVehicle *vehicle, int seatNumber, bool bAsDriver) { + plugin::CallDynGlobal(gaddrof(CCarEnterExit::SetPedInCarDirect), ped, vehicle, seatNumber, bAsDriver); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCarEnterExit.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCarEnterExit.h new file mode 100644 index 00000000..b7adefa1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCarEnterExit.h @@ -0,0 +1,62 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVehicle.h" +#include "CVector.h" +#include "CPed.h" +#include "CTask.h" + +class PLUGIN_API CCarEnterExit { +public: + SUPPORTED_10US static float const &ms_fMaxSpeed_CanDragPedOut; + SUPPORTED_10US static float const &ms_fMaxSpeed_PlayerCanDragPedOut; + SUPPORTED_10US static bool &ms_bPedOffsetsCalculated; + SUPPORTED_10US static CVector &ms_vecPedGetUpAnimOffset; + SUPPORTED_10US static CVector &ms_vecPedQuickDraggedOutCarAnimOffset; + SUPPORTED_10US static CVector &ms_vecPedBedLAnimOffset; + SUPPORTED_10US static CVector &ms_vecPedBedRAnimOffset; + SUPPORTED_10US static CVector &ms_vecPedDeskAnimOffset; + SUPPORTED_10US static CVector &ms_vecPedChairAnimOffset; + + SUPPORTED_10US static void AddInCarAnim(CVehicle const *vehicle, CPed *ped, bool bAsDriver); + SUPPORTED_10US static bool CarHasDoorToClose(CVehicle const *vehicle, int doorId); + SUPPORTED_10US static bool CarHasDoorToOpen(CVehicle const *vehicle, int doorID); + SUPPORTED_10US static bool CarHasOpenableDoor(CVehicle const *vehicle, int DoorID_UnusedArg, CPed const *ped); + SUPPORTED_10US static bool CarHasPartiallyOpenDoor(CVehicle const *vehicle, int doorID); + SUPPORTED_10US static int ComputeDoorFlag(CVehicle const *vehicle, int doorId, bool bCheckVehicleType); + SUPPORTED_10US static int ComputeOppositeDoorFlag(CVehicle const *vehicle, int doorId, bool bCheckVehicleType); + SUPPORTED_10US static signed int ComputePassengerIndexFromCarDoor(CVehicle const *vehicle, int doorID); + SUPPORTED_10US static int ComputeSlowJackedPed(CVehicle const *vehicle, int doorID); + SUPPORTED_10US static signed int ComputeTargetDoorToEnterAsPassenger(CVehicle const *pVehicle, int nPassengerNum); + SUPPORTED_10US static int ComputeTargetDoorToExit(CVehicle const *pVehicle, CPed const *pPed); + SUPPORTED_10US static bool GetNearestCarDoor(CPed const *pPed, CVehicle const *pVehicle, CVector *outPos, int doorID); + SUPPORTED_10US static bool GetNearestCarPassengerDoor(CPed const *ped, CVehicle const *vehicle, CVector *outVec, int *doorId, bool flag1, bool flag2, bool flag3); + SUPPORTED_10US static CVector *GetPositionToOpenCarDoor(CVector *out, CVehicle const *vehicle, int doorId); + SUPPORTED_10US static bool IsCarDoorInUse(CVehicle const *vehicle, int door1Id, int door2Id); + SUPPORTED_10US static bool IsCarDoorReady(CVehicle const *vehicle, int doorID); + SUPPORTED_10US static bool IsCarQuickJackPossible(CVehicle const *vehicle, int doorID, CPed const *ped); + SUPPORTED_10US static bool IsCarSlowJackRequired(CVehicle const *vehicle, int doorID); + SUPPORTED_10US static bool IsClearToDriveAway(CVehicle const *outVehicle); + SUPPORTED_10US static bool IsPathToDoorBlockedByVehicleCollisionModel(CPed const *ped, CVehicle *vehicle, CVector const *pos); + SUPPORTED_10US static bool IsPedHealthy(CPed *vehicle); + SUPPORTED_10US static bool IsPlayerToQuitCarEnter(CPed const *ped, CVehicle const *vehicle, int StartTime, CTask *task); + SUPPORTED_10US static bool IsRoomForPedToLeaveCar(CVehicle const *veh, int doorID, CVector *pos); + SUPPORTED_10US static bool IsVehicleHealthy(CVehicle const *vehicle); + SUPPORTED_10US static bool IsVehicleStealable(CVehicle const *vehicle, CPed const *ped); + SUPPORTED_10US static void MakeUndraggedDriverPedLeaveCar(CVehicle const *vehicle, CPed const *ped); + SUPPORTED_10US static void MakeUndraggedPassengerPedsLeaveCar(CVehicle const *targetVehicle, CPed const *draggedPed, CPed const *ped); + //! unused + SUPPORTED_10US static void QuitEnteringCar(CPed *ped, CVehicle *vehicle, int doorID, bool bCarWasBeingJacked); + SUPPORTED_10US static void RemoveCarSitAnim(CPed const *ped); + SUPPORTED_10US static void RemoveGetInAnims(CPed const *ped); + SUPPORTED_10US static void SetAnimOffsetForEnterOrExitVehicle(); + SUPPORTED_10US static void SetPedInCarDirect(CPed *ped, CVehicle *vehicle, int seatNumber, bool bAsDriver); +}; + +#include "meta/meta.CCarEnterExit.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCarGenerator.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCarGenerator.cpp new file mode 100644 index 00000000..07adcc7a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCarGenerator.cpp @@ -0,0 +1,72 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CCarGenerator.h" + +PLUGIN_SOURCE_FILE + +int addrof(CCarGenerator::CheckForBlockage) = ADDRESS_BY_VERSION(0x6F32E0, 0, 0, 0, 0, 0); +int gaddrof(CCarGenerator::CheckForBlockage) = GLOBAL_ADDRESS_BY_VERSION(0x6F32E0, 0, 0, 0, 0, 0); + +bool CCarGenerator::CheckForBlockage(int modelId) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCarGenerator::CheckForBlockage), this, modelId); +} + +int addrof(CCarGenerator::CheckIfWithinRangeOfAnyPlayers) = ADDRESS_BY_VERSION(0x6F2F40, 0, 0, 0, 0, 0); +int gaddrof(CCarGenerator::CheckIfWithinRangeOfAnyPlayers) = GLOBAL_ADDRESS_BY_VERSION(0x6F2F40, 0, 0, 0, 0, 0); + +bool CCarGenerator::CheckIfWithinRangeOfAnyPlayers() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCarGenerator::CheckIfWithinRangeOfAnyPlayers), this); +} + +int addrof(CCarGenerator::DoInternalProcessing) = ADDRESS_BY_VERSION(0x6F34D0, 0, 0, 0, 0, 0); +int gaddrof(CCarGenerator::DoInternalProcessing) = GLOBAL_ADDRESS_BY_VERSION(0x6F34D0, 0, 0, 0, 0, 0); + +void CCarGenerator::DoInternalProcessing() { + plugin::CallMethodDynGlobal(gaddrof(CCarGenerator::DoInternalProcessing), this); +} + +int addrof(CCarGenerator::Process) = ADDRESS_BY_VERSION(0x6F3E90, 0, 0, 0, 0, 0); +int gaddrof(CCarGenerator::Process) = GLOBAL_ADDRESS_BY_VERSION(0x6F3E90, 0, 0, 0, 0, 0); + +void CCarGenerator::Process() { + plugin::CallMethodDynGlobal(gaddrof(CCarGenerator::Process), this); +} + +int addrof(CCarGenerator::Setup) = ADDRESS_BY_VERSION(0x6F2E50, 0, 0, 0, 0, 0); +int gaddrof(CCarGenerator::Setup) = GLOBAL_ADDRESS_BY_VERSION(0x6F2E50, 0, 0, 0, 0, 0); + +void CCarGenerator::Setup(float x, float y, float z, float angle, int modelId, short color1, short color2, unsigned char bforceSpawn, unsigned char alarm_chances, unsigned char doorLock_chances, unsigned short minDelay, unsigned short maxDelay, unsigned char iplId, unsigned char bOwnedbyplayer) { + plugin::CallMethodDynGlobal(gaddrof(CCarGenerator::Setup), this, x, y, z, angle, modelId, color1, color2, bforceSpawn, alarm_chances, doorLock_chances, minDelay, maxDelay, iplId, bOwnedbyplayer); +} + +int addrof(CCarGenerator::SwitchOff) = ADDRESS_BY_VERSION(0x6F2E30, 0, 0, 0, 0, 0); +int gaddrof(CCarGenerator::SwitchOff) = GLOBAL_ADDRESS_BY_VERSION(0x6F2E30, 0, 0, 0, 0, 0); + +void CCarGenerator::SwitchOff() { + plugin::CallMethodDynGlobal(gaddrof(CCarGenerator::SwitchOff), this); +} + +int addrof(CCarGenerator::SwitchOn) = ADDRESS_BY_VERSION(0x6F32C0, 0, 0, 0, 0, 0); +int gaddrof(CCarGenerator::SwitchOn) = GLOBAL_ADDRESS_BY_VERSION(0x6F32C0, 0, 0, 0, 0, 0); + +void CCarGenerator::SwitchOn() { + plugin::CallMethodDynGlobal(gaddrof(CCarGenerator::SwitchOn), this); +} + +int addrof(CCarGenerator::CalcNextGen) = ADDRESS_BY_VERSION(0x6F2E40, 0, 0, 0, 0, 0); +int gaddrof(CCarGenerator::CalcNextGen) = GLOBAL_ADDRESS_BY_VERSION(0x6F2E40, 0, 0, 0, 0, 0); + +unsigned int CCarGenerator::CalcNextGen() { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarGenerator::CalcNextGen)); +} + +int addrof(CCarGenerator::Get) = ADDRESS_BY_VERSION(0x479D60, 0, 0, 0, 0, 0); +int gaddrof(CCarGenerator::Get) = GLOBAL_ADDRESS_BY_VERSION(0x479D60, 0, 0, 0, 0, 0); + +CCarGenerator *CCarGenerator::Get(unsigned short index) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCarGenerator::Get), index); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCarGenerator.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCarGenerator.h new file mode 100644 index 00000000..0708f0b4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCarGenerator.h @@ -0,0 +1,64 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CompressedVector.h" + +class PLUGIN_API CCarGenerator { +public: + short m_nModelId; + char m_nColor1; + char m_nColor2; + CompressedVector m_vecPosn; + char m_nAngle; + char m_nAlarm; + char m_nDoorLock; + + union + { + struct + { + unsigned char bWaitUntilFarFromPlayer : 1; + unsigned char bHighPriority : 1; + unsigned char bActive : 1; + unsigned char bPlayerHasAlreadyOwnedCar : 1; + unsigned char bIgnorePopulationLimit : 1; + }; + unsigned char m_nFlags; + }; + short m_nMinDelay; + short m_nMaxDelay; +private: + char _pad12[2]; +public: + int m_nNextGenTime; + short m_nVehicleHandle; + signed short m_nGenerateCount; // (0) Don't Spawn , (1 - 32767) Spawn X number of times , (-1) Always Spawn. + char m_nIplId; + bool m_bIsUsed; +private: + char _pad1E[2]; +public: + + SUPPORTED_10US bool CheckForBlockage(int modelId); + SUPPORTED_10US bool CheckIfWithinRangeOfAnyPlayers(); + SUPPORTED_10US void DoInternalProcessing(); + SUPPORTED_10US void Process(); + SUPPORTED_10US void Setup(float x, float y, float z, float angle, int modelId, short color1, short color2, unsigned char bforceSpawn, unsigned char alarm_chances, unsigned char doorLock_chances, unsigned short minDelay, unsigned short maxDelay, unsigned char iplId, unsigned char bOwnedbyplayer); + SUPPORTED_10US void SwitchOff(); + SUPPORTED_10US void SwitchOn(); + + //! unused + SUPPORTED_10US static unsigned int CalcNextGen(); + //! unused + SUPPORTED_10US static CCarGenerator *Get(unsigned short index); +}; + +VALIDATE_SIZE(CCarGenerator, 0x20); + +#include "meta/meta.CCarGenerator.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCarPathLink.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCarPathLink.cpp new file mode 100644 index 00000000..0d878514 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCarPathLink.cpp @@ -0,0 +1,16 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCarPathLink.h" + +PLUGIN_SOURCE_FILE + +int addrof(CCarPathLink::OneWayLaneOffset) = ADDRESS_BY_VERSION(0x44DB00, 0, 0, 0, 0, 0); +int gaddrof(CCarPathLink::OneWayLaneOffset) = GLOBAL_ADDRESS_BY_VERSION(0x44DB00, 0, 0, 0, 0, 0); + +float CCarPathLink::OneWayLaneOffset() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCarPathLink::OneWayLaneOffset), this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCarPathLink.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCarPathLink.h new file mode 100644 index 00000000..b6579d9a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCarPathLink.h @@ -0,0 +1,34 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CompressedVector2D.h" +#include "CNodeAddress.h" + +class PLUGIN_API CCarPathLink { +public: + CompressedVector2D m_vecPosn; + CNodeAddress m_address; + char m_nDirX; + char m_nDirY; + char m_nPathNodeWidth; + + unsigned char m_nNumLeftLanes : 3; + unsigned char m_nNumRightLanes : 3; + unsigned char m_bTrafficLightDirection : 1; //!< 1 if the navi node has the same direction as the traffic light and 0 if the navi node points somewhere else + unsigned char unk1 : 1; + + unsigned char m_nTrafficLightState : 2; //!< 1 - North-South, 2 - West-East cycle + unsigned char m_bTrainCrossing : 1; + + SUPPORTED_10US float OneWayLaneOffset(); +}; + +VALIDATE_SIZE(CCarPathLink, 0xE); + +#include "meta/meta.CCarPathLink.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCarPathLinkAddress.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCarPathLinkAddress.h new file mode 100644 index 00000000..733d1c31 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCarPathLinkAddress.h @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CCarPathLinkAddress { +public: + short m_nCarPathLinkId : 10; + short m_nAreaId : 6; +}; + +VALIDATE_SIZE(CCarPathLinkAddress, 0x2); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCheat.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCheat.cpp new file mode 100644 index 00000000..edfb23c0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCheat.cpp @@ -0,0 +1,503 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCheat.h" + +PLUGIN_SOURCE_FILE + +void(*(&CCheat::m_aCheatFunctions)[92])() = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5B58, 0, 0, 0, 0, 0)); + +int(&CCheat::m_aCheatHashKeys)[92] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5CC8, 0, 0, 0, 0, 0)); +char(&CCheat::m_CheatString)[30] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x969110, 0, 0, 0, 0, 0)); +bool(&CCheat::m_aCheatsActive)[92] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x969130, 0, 0, 0, 0, 0)); +bool &CCheat::m_bHasPlayerCheated = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96918C, 0, 0, 0, 0, 0)); + +int addrof(CCheat::AddToCheatString) = ADDRESS_BY_VERSION(0x438480, 0, 0, 0, 0, 0); +int gaddrof(CCheat::AddToCheatString) = GLOBAL_ADDRESS_BY_VERSION(0x438480, 0, 0, 0, 0, 0); + +void CCheat::AddToCheatString(char LastPressedKey) { + plugin::CallDynGlobal(gaddrof(CCheat::AddToCheatString), LastPressedKey); +} + +int addrof(CCheat::AdrenalineCheat) = ADDRESS_BY_VERSION(0x439880, 0, 0, 0, 0, 0); +int gaddrof(CCheat::AdrenalineCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439880, 0, 0, 0, 0, 0); + +void CCheat::AdrenalineCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::AdrenalineCheat)); +} + +int addrof(CCheat::AllCarsAreGreatCheat) = ADDRESS_BY_VERSION(0x4394E0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::AllCarsAreGreatCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4394E0, 0, 0, 0, 0, 0); + +void CCheat::AllCarsAreGreatCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::AllCarsAreGreatCheat)); +} + +int addrof(CCheat::AllCarsAreShitCheat) = ADDRESS_BY_VERSION(0x4394B0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::AllCarsAreShitCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4394B0, 0, 0, 0, 0, 0); + +void CCheat::AllCarsAreShitCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::AllCarsAreShitCheat)); +} + +int addrof(CCheat::ApacheCheat) = ADDRESS_BY_VERSION(0x43A550, 0, 0, 0, 0, 0); +int gaddrof(CCheat::ApacheCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A550, 0, 0, 0, 0, 0); + +void CCheat::ApacheCheat() { + return plugin::CallDynGlobal(gaddrof(CCheat::ApacheCheat)); +} + +int addrof(CCheat::BeachPartyCheat) = ADDRESS_BY_VERSION(0x439230, 0, 0, 0, 0, 0); +int gaddrof(CCheat::BeachPartyCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439230, 0, 0, 0, 0, 0); + +void CCheat::BeachPartyCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::BeachPartyCheat)); +} + +int addrof(CCheat::BlackCarsCheat) = ADDRESS_BY_VERSION(0x4390F0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::BlackCarsCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4390F0, 0, 0, 0, 0, 0); + +void CCheat::BlackCarsCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::BlackCarsCheat)); +} + +int addrof(CCheat::BlowUpCarsCheat) = ADDRESS_BY_VERSION(0x439D80, 0, 0, 0, 0, 0); +int gaddrof(CCheat::BlowUpCarsCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439D80, 0, 0, 0, 0, 0); + +void CCheat::BlowUpCarsCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::BlowUpCarsCheat)); +} + +int addrof(CCheat::CloudyWeatherCheat) = ADDRESS_BY_VERSION(0x438F60, 0, 0, 0, 0, 0); +int gaddrof(CCheat::CloudyWeatherCheat) = GLOBAL_ADDRESS_BY_VERSION(0x438F60, 0, 0, 0, 0, 0); + +void CCheat::CloudyWeatherCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::CloudyWeatherCheat)); +} + +int addrof(CCheat::CountrysideInvasionCheat) = ADDRESS_BY_VERSION(0x439F60, 0, 0, 0, 0, 0); +int gaddrof(CCheat::CountrysideInvasionCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439F60, 0, 0, 0, 0, 0); + +void CCheat::CountrysideInvasionCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::CountrysideInvasionCheat)); +} + +int addrof(CCheat::DozerCheat) = ADDRESS_BY_VERSION(0x43A660, 0, 0, 0, 0, 0); +int gaddrof(CCheat::DozerCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A660, 0, 0, 0, 0, 0); + +void CCheat::DozerCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::DozerCheat)); +} + +int addrof(CCheat::DrivebyCheat) = ADDRESS_BY_VERSION(0x4398D0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::DrivebyCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4398D0, 0, 0, 0, 0, 0); + +void CCheat::DrivebyCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::DrivebyCheat)); +} + +int addrof(CCheat::DuskCheat) = ADDRESS_BY_VERSION(0x439540, 0, 0, 0, 0, 0); +int gaddrof(CCheat::DuskCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439540, 0, 0, 0, 0, 0); + +void CCheat::DuskCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::DuskCheat)); +} + +int addrof(CCheat::ElvisLivesCheat) = ADDRESS_BY_VERSION(0x4391D0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::ElvisLivesCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4391D0, 0, 0, 0, 0, 0); + +void CCheat::ElvisLivesCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::ElvisLivesCheat)); +} + +int addrof(CCheat::EverybodyAttacksPlayerCheat) = ADDRESS_BY_VERSION(0x439C70, 0, 0, 0, 0, 0); +int gaddrof(CCheat::EverybodyAttacksPlayerCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439C70, 0, 0, 0, 0, 0); + +void CCheat::EverybodyAttacksPlayerCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::EverybodyAttacksPlayerCheat)); +} + +int addrof(CCheat::ExtraSunnyWeatherCheat) = ADDRESS_BY_VERSION(0x438F50, 0, 0, 0, 0, 0); +int gaddrof(CCheat::ExtraSunnyWeatherCheat) = GLOBAL_ADDRESS_BY_VERSION(0x438F50, 0, 0, 0, 0, 0); + +void CCheat::ExtraSunnyWeatherCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::ExtraSunnyWeatherCheat)); +} + +int addrof(CCheat::FastTimeCheat) = ADDRESS_BY_VERSION(0x438F90, 0, 0, 0, 0, 0); +int gaddrof(CCheat::FastTimeCheat) = GLOBAL_ADDRESS_BY_VERSION(0x438F90, 0, 0, 0, 0, 0); + +void CCheat::FastTimeCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::FastTimeCheat)); +} + +int addrof(CCheat::FatCheat) = ADDRESS_BY_VERSION(0x439110, 0, 0, 0, 0, 0); +int gaddrof(CCheat::FatCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439110, 0, 0, 0, 0, 0); + +void CCheat::FatCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::FatCheat)); +} + +int addrof(CCheat::FlyboyCheat) = ADDRESS_BY_VERSION(0x43A530, 0, 0, 0, 0, 0); +int gaddrof(CCheat::FlyboyCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A530, 0, 0, 0, 0, 0); + +void CCheat::FlyboyCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::FlyboyCheat)); +} + +int addrof(CCheat::FoggyWeatherCheat) = ADDRESS_BY_VERSION(0x438F80, 0, 0, 0, 0, 0); +int gaddrof(CCheat::FoggyWeatherCheat) = GLOBAL_ADDRESS_BY_VERSION(0x438F80, 0, 0, 0, 0, 0); + +void CCheat::FoggyWeatherCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::FoggyWeatherCheat)); +} + +int addrof(CCheat::FunhouseCheat) = ADDRESS_BY_VERSION(0x439720, 0, 0, 0, 0, 0); +int gaddrof(CCheat::FunhouseCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439720, 0, 0, 0, 0, 0); + +void CCheat::FunhouseCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::FunhouseCheat)); +} + +int addrof(CCheat::GangLandCheat) = ADDRESS_BY_VERSION(0x4393D0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::GangLandCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4393D0, 0, 0, 0, 0, 0); + +void CCheat::GangLandCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::GangLandCheat)); +} + +int addrof(CCheat::GangsCheat) = ADDRESS_BY_VERSION(0x439360, 0, 0, 0, 0, 0); +int gaddrof(CCheat::GangsCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439360, 0, 0, 0, 0, 0); + +void CCheat::GangsCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::GangsCheat)); +} + +int addrof(CCheat::GolfcartCheat) = ADDRESS_BY_VERSION(0x43A520, 0, 0, 0, 0, 0); +int gaddrof(CCheat::GolfcartCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A520, 0, 0, 0, 0, 0); + +void CCheat::GolfcartCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::GolfcartCheat)); +} + +int addrof(CCheat::HandleSpecialCheats) = ADDRESS_BY_VERSION(0x439A10, 0, 0, 0, 0, 0); +int gaddrof(CCheat::HandleSpecialCheats) = GLOBAL_ADDRESS_BY_VERSION(0x439A10, 0, 0, 0, 0, 0); + +void CCheat::HandleSpecialCheats(int CheatID) { + plugin::CallDynGlobal(gaddrof(CCheat::HandleSpecialCheats), CheatID); +} + +int addrof(CCheat::HealthCheat) = ADDRESS_BY_VERSION(0x438D60, 0, 0, 0, 0, 0); +int gaddrof(CCheat::HealthCheat) = GLOBAL_ADDRESS_BY_VERSION(0x438D60, 0, 0, 0, 0, 0); + +void CCheat::HealthCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::HealthCheat)); +} + +int addrof(CCheat::HearseCheat) = ADDRESS_BY_VERSION(0x43A4F0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::HearseCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A4F0, 0, 0, 0, 0, 0); + +void CCheat::HearseCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::HearseCheat)); +} + +int addrof(CCheat::JetpackCheat) = ADDRESS_BY_VERSION(0x439600, 0, 0, 0, 0, 0); +int gaddrof(CCheat::JetpackCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439600, 0, 0, 0, 0, 0); + +void CCheat::JetpackCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::JetpackCheat)); +} + +int addrof(CCheat::LoveConquersAllCheat) = ADDRESS_BY_VERSION(0x4393F0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::LoveConquersAllCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4393F0, 0, 0, 0, 0, 0); + +void CCheat::LoveConquersAllCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::LoveConquersAllCheat)); +} + +int addrof(CCheat::LovefistCheat) = ADDRESS_BY_VERSION(0x43A500, 0, 0, 0, 0, 0); +int gaddrof(CCheat::LovefistCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A500, 0, 0, 0, 0, 0); + +void CCheat::LovefistCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::LovefistCheat)); +} + +int addrof(CCheat::MayhemCheat) = ADDRESS_BY_VERSION(0x439B20, 0, 0, 0, 0, 0); +int gaddrof(CCheat::MayhemCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439B20, 0, 0, 0, 0, 0); + +void CCheat::MayhemCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::MayhemCheat)); +} + +int addrof(CCheat::MidnightCheat) = ADDRESS_BY_VERSION(0x439510, 0, 0, 0, 0, 0); +int gaddrof(CCheat::MidnightCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439510, 0, 0, 0, 0, 0); + +void CCheat::MidnightCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::MidnightCheat)); +} + +int addrof(CCheat::MoneyArmourHealthCheat) = ADDRESS_BY_VERSION(0x438E40, 0, 0, 0, 0, 0); +int gaddrof(CCheat::MoneyArmourHealthCheat) = GLOBAL_ADDRESS_BY_VERSION(0x438E40, 0, 0, 0, 0, 0); + +void CCheat::MoneyArmourHealthCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::MoneyArmourHealthCheat)); +} + +int addrof(CCheat::MonsterTruckCheat) = ADDRESS_BY_VERSION(0x43A680, 0, 0, 0, 0, 0); +int gaddrof(CCheat::MonsterTruckCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A680, 0, 0, 0, 0, 0); + +void CCheat::MonsterTruckCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::MonsterTruckCheat)); +} + +int addrof(CCheat::MuscleCheat) = ADDRESS_BY_VERSION(0x439150, 0, 0, 0, 0, 0); +int gaddrof(CCheat::MuscleCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439150, 0, 0, 0, 0, 0); + +void CCheat::MuscleCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::MuscleCheat)); +} + +int addrof(CCheat::NinjaCheat) = ADDRESS_BY_VERSION(0x439E50, 0, 0, 0, 0, 0); +int gaddrof(CCheat::NinjaCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439E50, 0, 0, 0, 0, 0); + +void CCheat::NinjaCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::NinjaCheat)); +} + +int addrof(CCheat::NotWantedCheat) = ADDRESS_BY_VERSION(0x4396C0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::NotWantedCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4396C0, 0, 0, 0, 0, 0); + +void CCheat::NotWantedCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::NotWantedCheat)); +} + +int addrof(CCheat::ParachuteCheat) = ADDRESS_BY_VERSION(0x4395B0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::ParachuteCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4395B0, 0, 0, 0, 0, 0); + +void CCheat::ParachuteCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::ParachuteCheat)); +} + +int addrof(CCheat::PinkCarsCheat) = ADDRESS_BY_VERSION(0x4390D0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::PinkCarsCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4390D0, 0, 0, 0, 0, 0); + +void CCheat::PinkCarsCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::PinkCarsCheat)); +} + +int addrof(CCheat::PredatorCheat) = ADDRESS_BY_VERSION(0x4395A0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::PredatorCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4395A0, 0, 0, 0, 0, 0); + +void CCheat::PredatorCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::PredatorCheat)); +} + +int addrof(CCheat::QuadCheat) = ADDRESS_BY_VERSION(0x43A560, 0, 0, 0, 0, 0); +int gaddrof(CCheat::QuadCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A560, 0, 0, 0, 0, 0); + +void CCheat::QuadCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::QuadCheat)); +} + +int addrof(CCheat::RainyWeatherCheat) = ADDRESS_BY_VERSION(0x438F70, 0, 0, 0, 0, 0); +int gaddrof(CCheat::RainyWeatherCheat) = GLOBAL_ADDRESS_BY_VERSION(0x438F70, 0, 0, 0, 0, 0); + +void CCheat::RainyWeatherCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::RainyWeatherCheat)); +} + +int addrof(CCheat::RiotCheat) = ADDRESS_BY_VERSION(0x439710, 0, 0, 0, 0, 0); +int gaddrof(CCheat::RiotCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439710, 0, 0, 0, 0, 0); + +void CCheat::RiotCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::RiotCheat)); +} + +int addrof(CCheat::SandstormCheat) = ADDRESS_BY_VERSION(0x439590, 0, 0, 0, 0, 0); +int gaddrof(CCheat::SandstormCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439590, 0, 0, 0, 0, 0); + +void CCheat::SandstormCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::SandstormCheat)); +} + +int addrof(CCheat::SkinnyCheat) = ADDRESS_BY_VERSION(0x439190, 0, 0, 0, 0, 0); +int gaddrof(CCheat::SkinnyCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439190, 0, 0, 0, 0, 0); + +void CCheat::SkinnyCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::SkinnyCheat)); +} + +int addrof(CCheat::SlowTimeCheat) = ADDRESS_BY_VERSION(0x438FC0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::SlowTimeCheat) = GLOBAL_ADDRESS_BY_VERSION(0x438FC0, 0, 0, 0, 0, 0); + +void CCheat::SlowTimeCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::SlowTimeCheat)); +} + +int addrof(CCheat::StaminaCheat) = ADDRESS_BY_VERSION(0x439930, 0, 0, 0, 0, 0); +int gaddrof(CCheat::StaminaCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439930, 0, 0, 0, 0, 0); + +void CCheat::StaminaCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::StaminaCheat)); +} + +int addrof(CCheat::StockCar2Cheat) = ADDRESS_BY_VERSION(0x43A4C0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::StockCar2Cheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A4C0, 0, 0, 0, 0, 0); + +void CCheat::StockCar2Cheat() { + plugin::CallDynGlobal(gaddrof(CCheat::StockCar2Cheat)); +} + +int addrof(CCheat::StockCar3Cheat) = ADDRESS_BY_VERSION(0x43A4D0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::StockCar3Cheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A4D0, 0, 0, 0, 0, 0); + +void CCheat::StockCar3Cheat() { + plugin::CallDynGlobal(gaddrof(CCheat::StockCar3Cheat)); +} + +int addrof(CCheat::StockCar4Cheat) = ADDRESS_BY_VERSION(0x43A4E0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::StockCar4Cheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A4E0, 0, 0, 0, 0, 0); + +void CCheat::StockCar4Cheat() { + plugin::CallDynGlobal(gaddrof(CCheat::StockCar4Cheat)); +} + +int addrof(CCheat::StockCarCheat) = ADDRESS_BY_VERSION(0x43A4B0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::StockCarCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A4B0, 0, 0, 0, 0, 0); + +void CCheat::StockCarCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::StockCarCheat)); +} + +int addrof(CCheat::StormCheat) = ADDRESS_BY_VERSION(0x439570, 0, 0, 0, 0, 0); +int gaddrof(CCheat::StormCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439570, 0, 0, 0, 0, 0); + +void CCheat::StormCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::StormCheat)); +} + +int addrof(CCheat::StuntPlaneCheat) = ADDRESS_BY_VERSION(0x43A670, 0, 0, 0, 0, 0); +int gaddrof(CCheat::StuntPlaneCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A670, 0, 0, 0, 0, 0); + +void CCheat::StuntPlaneCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::StuntPlaneCheat)); +} + +int addrof(CCheat::SuicideCheat) = ADDRESS_BY_VERSION(0x438FF0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::SuicideCheat) = GLOBAL_ADDRESS_BY_VERSION(0x438FF0, 0, 0, 0, 0, 0); + +void CCheat::SuicideCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::SuicideCheat)); +} + +int addrof(CCheat::SunnyWeatherCheat) = ADDRESS_BY_VERSION(0x438F40, 0, 0, 0, 0, 0); +int gaddrof(CCheat::SunnyWeatherCheat) = GLOBAL_ADDRESS_BY_VERSION(0x438F40, 0, 0, 0, 0, 0); + +void CCheat::SunnyWeatherCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::SunnyWeatherCheat)); +} + +int addrof(CCheat::TankCheat) = ADDRESS_BY_VERSION(0x43A4A0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::TankCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A4A0, 0, 0, 0, 0, 0); + +void CCheat::TankCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::TankCheat)); +} + +int addrof(CCheat::TankerCheat) = ADDRESS_BY_VERSION(0x43A570, 0, 0, 0, 0, 0); +int gaddrof(CCheat::TankerCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A570, 0, 0, 0, 0, 0); + +void CCheat::TankerCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::TankerCheat)); +} + +int addrof(CCheat::TrashmasterCheat) = ADDRESS_BY_VERSION(0x43A510, 0, 0, 0, 0, 0); +int gaddrof(CCheat::TrashmasterCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A510, 0, 0, 0, 0, 0); + +void CCheat::TrashmasterCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::TrashmasterCheat)); +} + +int addrof(CCheat::VehicleCheat) = ADDRESS_BY_VERSION(0x43A0B0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::VehicleCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A0B0, 0, 0, 0, 0, 0); + +CVehicle* CCheat::VehicleCheat(int vehicleModelId) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCheat::VehicleCheat), vehicleModelId); +} + +int addrof(CCheat::VehicleSkillsCheat) = ADDRESS_BY_VERSION(0x4399D0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::VehicleSkillsCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4399D0, 0, 0, 0, 0, 0); + +void CCheat::VehicleSkillsCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::VehicleSkillsCheat)); +} + +int addrof(CCheat::VillagePeopleCheat) = ADDRESS_BY_VERSION(0x439DD0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::VillagePeopleCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439DD0, 0, 0, 0, 0, 0); + +void CCheat::VillagePeopleCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::VillagePeopleCheat)); +} + +int addrof(CCheat::VortexCheat) = ADDRESS_BY_VERSION(0x43A540, 0, 0, 0, 0, 0); +int gaddrof(CCheat::VortexCheat) = GLOBAL_ADDRESS_BY_VERSION(0x43A540, 0, 0, 0, 0, 0); + +void CCheat::VortexCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::VortexCheat)); +} + +int addrof(CCheat::WantedCheat) = ADDRESS_BY_VERSION(0x4396F0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::WantedCheat) = GLOBAL_ADDRESS_BY_VERSION(0x4396F0, 0, 0, 0, 0, 0); + +void CCheat::WantedCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::WantedCheat)); +} + +int addrof(CCheat::WantedLevelDownCheat) = ADDRESS_BY_VERSION(0x438F20, 0, 0, 0, 0, 0); +int gaddrof(CCheat::WantedLevelDownCheat) = GLOBAL_ADDRESS_BY_VERSION(0x438F20, 0, 0, 0, 0, 0); + +void CCheat::WantedLevelDownCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::WantedLevelDownCheat)); +} + +int addrof(CCheat::WantedLevelUpCheat) = ADDRESS_BY_VERSION(0x438E90, 0, 0, 0, 0, 0); +int gaddrof(CCheat::WantedLevelUpCheat) = GLOBAL_ADDRESS_BY_VERSION(0x438E90, 0, 0, 0, 0, 0); + +void CCheat::WantedLevelUpCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::WantedLevelUpCheat)); +} + +int addrof(CCheat::WeaponCheat1) = ADDRESS_BY_VERSION(0x4385B0, 0, 0, 0, 0, 0); +int gaddrof(CCheat::WeaponCheat1) = GLOBAL_ADDRESS_BY_VERSION(0x4385B0, 0, 0, 0, 0, 0); + +void CCheat::WeaponCheat1() { + plugin::CallDynGlobal(gaddrof(CCheat::WeaponCheat1)); +} + +int addrof(CCheat::WeaponCheat2) = ADDRESS_BY_VERSION(0x438890, 0, 0, 0, 0, 0); +int gaddrof(CCheat::WeaponCheat2) = GLOBAL_ADDRESS_BY_VERSION(0x438890, 0, 0, 0, 0, 0); + +void CCheat::WeaponCheat2() { + plugin::CallDynGlobal(gaddrof(CCheat::WeaponCheat2)); +} + +int addrof(CCheat::WeaponCheat3) = ADDRESS_BY_VERSION(0x438B30, 0, 0, 0, 0, 0); +int gaddrof(CCheat::WeaponCheat3) = GLOBAL_ADDRESS_BY_VERSION(0x438B30, 0, 0, 0, 0, 0); + +void CCheat::WeaponCheat3() { + plugin::CallDynGlobal(gaddrof(CCheat::WeaponCheat3)); +} + +int addrof(CCheat::WeaponSkillsCheat) = ADDRESS_BY_VERSION(0x439940, 0, 0, 0, 0, 0); +int gaddrof(CCheat::WeaponSkillsCheat) = GLOBAL_ADDRESS_BY_VERSION(0x439940, 0, 0, 0, 0, 0); + +void CCheat::WeaponSkillsCheat() { + plugin::CallDynGlobal(gaddrof(CCheat::WeaponSkillsCheat)); +} + +void CCheat::ResetCheats() { + plugin::Call<0x438450>(); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCheat.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCheat.h new file mode 100644 index 00000000..d2064846 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCheat.h @@ -0,0 +1,99 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVehicle.h" + + + +class PLUGIN_API CCheat { +public: + + SUPPORTED_10US static void(*(&m_aCheatFunctions)[92])(); + SUPPORTED_10US static int(&m_aCheatHashKeys)[92]; // static int m_aCheatHashKeys[92] + SUPPORTED_10US static char(&m_CheatString)[30]; // static char m_CheatString[30] + SUPPORTED_10US static bool(&m_aCheatsActive)[92]; // static bool m_aCheatsActive[92] + SUPPORTED_10US static bool &m_bHasPlayerCheated; + + SUPPORTED_10US static void AddToCheatString(char LastPressedKey); + SUPPORTED_10US static void AdrenalineCheat(); + SUPPORTED_10US static void AllCarsAreGreatCheat(); + SUPPORTED_10US static void AllCarsAreShitCheat(); + SUPPORTED_10US static void ApacheCheat(); + SUPPORTED_10US static void BeachPartyCheat(); + SUPPORTED_10US static void BlackCarsCheat(); + SUPPORTED_10US static void BlowUpCarsCheat(); + SUPPORTED_10US static void CloudyWeatherCheat(); + SUPPORTED_10US static void CountrysideInvasionCheat(); + SUPPORTED_10US static void DozerCheat(); + SUPPORTED_10US static void DrivebyCheat(); + SUPPORTED_10US static void DuskCheat(); + SUPPORTED_10US static void ElvisLivesCheat(); + SUPPORTED_10US static void EverybodyAttacksPlayerCheat(); + SUPPORTED_10US static void ExtraSunnyWeatherCheat(); + SUPPORTED_10US static void FastTimeCheat(); + SUPPORTED_10US static void FatCheat(); + SUPPORTED_10US static void FlyboyCheat(); + SUPPORTED_10US static void FoggyWeatherCheat(); + SUPPORTED_10US static void FunhouseCheat(); + SUPPORTED_10US static void GangLandCheat(); + SUPPORTED_10US static void GangsCheat(); + SUPPORTED_10US static void GolfcartCheat(); + //! handles BeachParty, Funhouse, AllCarsAreGreat , AllCarsAreCheap cheats toggling + SUPPORTED_10US static void HandleSpecialCheats(int CheatID); + SUPPORTED_10US static void HealthCheat(); + SUPPORTED_10US static void HearseCheat(); + SUPPORTED_10US static void JetpackCheat(); + SUPPORTED_10US static void LoveConquersAllCheat(); + SUPPORTED_10US static void LovefistCheat(); + SUPPORTED_10US static void MayhemCheat(); + SUPPORTED_10US static void MidnightCheat(); + SUPPORTED_10US static void MoneyArmourHealthCheat(); + SUPPORTED_10US static void MonsterTruckCheat(); + SUPPORTED_10US static void MuscleCheat(); + SUPPORTED_10US static void NinjaCheat(); + SUPPORTED_10US static void NotWantedCheat(); + SUPPORTED_10US static void ParachuteCheat(); + SUPPORTED_10US static void PinkCarsCheat(); + //! unused + //! does nothing (NOP) + SUPPORTED_10US static void PredatorCheat(); + SUPPORTED_10US static void QuadCheat(); + SUPPORTED_10US static void RainyWeatherCheat(); + SUPPORTED_10US static void RiotCheat(); + SUPPORTED_10US static void SandstormCheat(); + SUPPORTED_10US static void SkinnyCheat(); + SUPPORTED_10US static void SlowTimeCheat(); + SUPPORTED_10US static void StaminaCheat(); + SUPPORTED_10US static void StockCar2Cheat(); + SUPPORTED_10US static void StockCar3Cheat(); + SUPPORTED_10US static void StockCar4Cheat(); + SUPPORTED_10US static void StockCarCheat(); + SUPPORTED_10US static void StormCheat(); + SUPPORTED_10US static void StuntPlaneCheat(); + SUPPORTED_10US static void SuicideCheat(); + SUPPORTED_10US static void SunnyWeatherCheat(); + SUPPORTED_10US static void TankCheat(); + SUPPORTED_10US static void TankerCheat(); + SUPPORTED_10US static void TrashmasterCheat(); + SUPPORTED_10US static CVehicle* VehicleCheat(int vehicleModelId); + SUPPORTED_10US static void VehicleSkillsCheat(); + SUPPORTED_10US static void VillagePeopleCheat(); + SUPPORTED_10US static void VortexCheat(); + SUPPORTED_10US static void WantedCheat(); + SUPPORTED_10US static void WantedLevelDownCheat(); + SUPPORTED_10US static void WantedLevelUpCheat(); + SUPPORTED_10US static void WeaponCheat1(); + SUPPORTED_10US static void WeaponCheat2(); + SUPPORTED_10US static void WeaponCheat3(); + SUPPORTED_10US static void WeaponSkillsCheat(); + SUPPORTED_10US static void ResetCheats(); + +}; + +#include "meta/meta.CCheat.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCheckpoint.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCheckpoint.cpp new file mode 100644 index 00000000..313bcf76 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCheckpoint.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCheckpoint.h" + +// Converted from thiscall void CCheckpoint::Render(void) 0x725C00 +void CCheckpoint::Render() { + plugin::CallMethod<0x725C00, CCheckpoint *>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCheckpoint.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCheckpoint.h new file mode 100644 index 00000000..72c8459e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCheckpoint.h @@ -0,0 +1,31 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CRGBA.h" +#include "CVector.h" + +class PLUGIN_API CCheckpoint { +public: + unsigned short m_nType; + bool m_bIsUsed; + bool m_bMustBeRenderedThisFrame; + int m_nIdentifier; + CRGBA m_colour; + short m_nPulsePeriod; + short m_nRotateRate; + CVector m_vecPosition; + CVector m_vecDirection; + float m_fPulseFraction; + float m_fSize; + float m_fDistanceToPlayer; //or CameraRange + float m_multiSize; + + void Render(); +}; + +VALIDATE_SIZE(CCheckpoint, 0x38); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCheckpoints.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCheckpoints.cpp new file mode 100644 index 00000000..53a6d540 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCheckpoints.cpp @@ -0,0 +1,52 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCheckpoints.h" + +unsigned int MAX_NUM_CHECKPOINTS = 32; + +unsigned int &CCheckpoints::NumActiveCPts = *(unsigned int *)0xC7C6D4; +CCheckpoint *CCheckpoints::m_aCheckPtArray = (CCheckpoint *)0xC7F158; + +// Converted from cdecl void CCheckpoints::DeleteCP(uint id,ushort type) 0x722FC0 +void CCheckpoints::DeleteCP(unsigned int id, unsigned short type) { + plugin::Call<0x722FC0, unsigned int, unsigned short>(id, type); +} + +// Converted from cdecl void CCheckpoints::Init(void) 0x722880 +void CCheckpoints::Init() { + plugin::Call<0x722880>(); +} + +// Converted from cdecl CCheckpoint* CCheckpoints::PlaceMarker(uint id,ushort type,CVector &posn,CVector &direction,float size,uchar red,uchar green,uchar blue,uchar alpha,ushort pulsePeriod,float pulseFraction,short rotateRate) 0x722C40 +CCheckpoint* CCheckpoints::PlaceMarker(unsigned int id, unsigned short type, CVector& posn, CVector& direction, float size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, unsigned short pulsePeriod, float pulseFraction, short rotateRate) { + return plugin::CallAndReturn(id, type, posn, direction, size, red, green, blue, alpha, pulsePeriod, pulseFraction, rotateRate); +} + +// Converted from cdecl void CCheckpoints::Render(void) 0x726060 +void CCheckpoints::Render() { + plugin::Call<0x726060>(); +} + +// Converted from cdecl void CCheckpoints::SetHeading(uint id,float angle) 0x722970 +void CCheckpoints::SetHeading(unsigned int id, float angle) { + plugin::Call<0x722970, unsigned int, float>(id, angle); +} + +// Converted from cdecl void CCheckpoints::Shutdown(void) 0x7228F0 +void CCheckpoints::Shutdown() { + plugin::Call<0x7228F0>(); +} + +// Converted from cdecl void CCheckpoints::Update(void) 0x7229C0 +void CCheckpoints::Update() { + plugin::Call<0x7229C0>(); +} + +// Converted from cdecl void CCheckpoints::UpdatePos(uint id,CVector &posn) 0x722900 +void CCheckpoints::UpdatePos(unsigned int id, CVector& posn) { + plugin::Call<0x722900, unsigned int, CVector&>(id, posn); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCheckpoints.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCheckpoints.h new file mode 100644 index 00000000..46c4ffd6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCheckpoints.h @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CCheckpoint.h" + +extern unsigned int MAX_NUM_CHECKPOINTS; // default 32 + +class PLUGIN_API CCheckpoints { +public: + static unsigned int &NumActiveCPts; // not used, only initialised (0) + static CCheckpoint *m_aCheckPtArray; // static CCheckpoint m_aCheckPtArray[32] + + static void DeleteCP(unsigned int id, unsigned short type); + static void Init(); + static CCheckpoint* PlaceMarker(unsigned int id, unsigned short type, CVector& posn, CVector& direction, float size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, unsigned short pulsePeriod, float pulseFraction, short rotateRate); + static void Render(); + static void SetHeading(unsigned int id, float angle); + // dummy function + static void Shutdown(); + static void Update(); + static void UpdatePos(unsigned int id, CVector& posn); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCivilianPed.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCivilianPed.cpp new file mode 100644 index 00000000..a826cc75 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCivilianPed.cpp @@ -0,0 +1,11 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCivilianPed.h" + +CCivilianPed::CCivilianPed(ePedType pedType, unsigned int modelIndex) : CPed(plugin::dummy) { + ((void(__thiscall *)(CCivilianPed *, ePedType, unsigned int))0x5DDB70)(this, pedType, modelIndex); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCivilianPed.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCivilianPed.h new file mode 100644 index 00000000..d261202c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCivilianPed.h @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPed.h" + +class PLUGIN_API CCivilianPed : public CPed { +public: + CCivilianPed(ePedType pedType, unsigned int modelIndex); +}; + +VALIDATE_SIZE(CCivilianPed, 0x79C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CClock.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CClock.cpp new file mode 100644 index 00000000..11fb5978 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CClock.cpp @@ -0,0 +1,88 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CClock.h" + +PLUGIN_SOURCE_FILE + +unsigned char(&CClock::daysInMonth)[12] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8CCF24, 0, 0, 0, 0, 0)); +bool &CClock::bClockHasBeenStored = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB70144, 0, 0, 0, 0, 0)); +unsigned short &CClock::ms_Stored_nGameClockSeconds = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB70148, 0, 0, 0, 0, 0)); +unsigned char &CClock::ms_Stored_nGameClockMinutes = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB7014A, 0, 0, 0, 0, 0)); +unsigned char &CClock::ms_Stored_nGameClockHours = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB7014B, 0, 0, 0, 0, 0)); +unsigned char &CClock::ms_Stored_nGameClockDays = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB7014C, 0, 0, 0, 0, 0)); +unsigned char &CClock::ms_Stored_nGameClockMonths = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB7014D, 0, 0, 0, 0, 0)); +unsigned char &CClock::CurrentDay = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB7014E, 0, 0, 0, 0, 0)); +unsigned short &CClock::ms_nGameClockSeconds = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB70150, 0, 0, 0, 0, 0)); +unsigned char &CClock::ms_nGameClockMinutes = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB70152, 0, 0, 0, 0, 0)); +unsigned char &CClock::ms_nGameClockHours = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB70153, 0, 0, 0, 0, 0)); +unsigned char &CClock::ms_nGameClockDays = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB70154, 0, 0, 0, 0, 0)); +unsigned char &CClock::ms_nGameClockMonth = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB70155, 0, 0, 0, 0, 0)); +unsigned int &CClock::ms_nLastClockTick = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB70158, 0, 0, 0, 0, 0)); +unsigned int &CClock::ms_nMillisecondsPerGameMinute = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB7015C, 0, 0, 0, 0, 0)); + +int addrof(CClock::GetGameClockMinutesUntil) = ADDRESS_BY_VERSION(0x52CEB0, 0, 0, 0, 0, 0); +int gaddrof(CClock::GetGameClockMinutesUntil) = GLOBAL_ADDRESS_BY_VERSION(0x52CEB0, 0, 0, 0, 0, 0); + +unsigned short CClock::GetGameClockMinutesUntil(unsigned char hours, unsigned char minutes) { + return plugin::CallAndReturnDynGlobal(gaddrof(CClock::GetGameClockMinutesUntil), hours, minutes); +} + +int addrof(CClock::GetIsTimeInRange) = ADDRESS_BY_VERSION(0x52CEE0, 0, 0, 0, 0, 0); +int gaddrof(CClock::GetIsTimeInRange) = GLOBAL_ADDRESS_BY_VERSION(0x52CEE0, 0, 0, 0, 0, 0); + +bool CClock::GetIsTimeInRange(unsigned char hourA, unsigned char hourB) { + return plugin::CallAndReturnDynGlobal(gaddrof(CClock::GetIsTimeInRange), hourA, hourB); +} + +int addrof(CClock::Initialise) = ADDRESS_BY_VERSION(0x52CD90, 0, 0, 0, 0, 0); +int gaddrof(CClock::Initialise) = GLOBAL_ADDRESS_BY_VERSION(0x52CD90, 0, 0, 0, 0, 0); + +void CClock::Initialise(unsigned int milisecondsPerGameMinute) { + plugin::CallDynGlobal(gaddrof(CClock::Initialise), milisecondsPerGameMinute); +} + +int addrof(CClock::NormaliseGameClock) = ADDRESS_BY_VERSION(0x52CDE0, 0, 0, 0, 0, 0); +int gaddrof(CClock::NormaliseGameClock) = GLOBAL_ADDRESS_BY_VERSION(0x52CDE0, 0, 0, 0, 0, 0); + +void CClock::NormaliseGameClock() { + plugin::CallDynGlobal(gaddrof(CClock::NormaliseGameClock)); +} + +int addrof(CClock::OffsetClockByADay) = ADDRESS_BY_VERSION(0x52D0B0, 0, 0, 0, 0, 0); +int gaddrof(CClock::OffsetClockByADay) = GLOBAL_ADDRESS_BY_VERSION(0x52D0B0, 0, 0, 0, 0, 0); + +void CClock::OffsetClockByADay(unsigned int timeDirection) { + plugin::CallDynGlobal(gaddrof(CClock::OffsetClockByADay), timeDirection); +} + +int addrof(CClock::RestoreClock) = ADDRESS_BY_VERSION(0x52D070, 0, 0, 0, 0, 0); +int gaddrof(CClock::RestoreClock) = GLOBAL_ADDRESS_BY_VERSION(0x52D070, 0, 0, 0, 0, 0); + +void CClock::RestoreClock() { + plugin::CallDynGlobal(gaddrof(CClock::RestoreClock)); +} + +int addrof(CClock::SetGameClock) = ADDRESS_BY_VERSION(0x52D150, 0, 0, 0, 0, 0); +int gaddrof(CClock::SetGameClock) = GLOBAL_ADDRESS_BY_VERSION(0x52D150, 0, 0, 0, 0, 0); + +void CClock::SetGameClock(unsigned char hours, unsigned char minutes, unsigned char day) { + plugin::CallDynGlobal(gaddrof(CClock::SetGameClock), hours, minutes, day); +} + +int addrof(CClock::StoreClock) = ADDRESS_BY_VERSION(0x52D020, 0, 0, 0, 0, 0); +int gaddrof(CClock::StoreClock) = GLOBAL_ADDRESS_BY_VERSION(0x52D020, 0, 0, 0, 0, 0); + +void CClock::StoreClock() { + plugin::CallDynGlobal(gaddrof(CClock::StoreClock)); +} + +int addrof(CClock::Update) = ADDRESS_BY_VERSION(0x52CF10, 0, 0, 0, 0, 0); +int gaddrof(CClock::Update) = GLOBAL_ADDRESS_BY_VERSION(0x52CF10, 0, 0, 0, 0, 0); + +void CClock::Update() { + plugin::CallDynGlobal(gaddrof(CClock::Update)); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CClock.h b/third-party/plugin-sdk/plugin_sa/game_sa/CClock.h new file mode 100644 index 00000000..42855e1c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CClock.h @@ -0,0 +1,51 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CClock { +public: + SUPPORTED_10US static unsigned char(&daysInMonth)[12]; // static unsigned char const daysInMonth[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} + SUPPORTED_10US static bool &bClockHasBeenStored; + SUPPORTED_10US static unsigned short &ms_Stored_nGameClockSeconds; + SUPPORTED_10US static unsigned char &ms_Stored_nGameClockMinutes; + SUPPORTED_10US static unsigned char &ms_Stored_nGameClockHours; + SUPPORTED_10US static unsigned char &ms_Stored_nGameClockDays; + SUPPORTED_10US static unsigned char &ms_Stored_nGameClockMonths; + SUPPORTED_10US static unsigned char &CurrentDay; + SUPPORTED_10US static unsigned short &ms_nGameClockSeconds; + SUPPORTED_10US static unsigned char &ms_nGameClockMinutes; + SUPPORTED_10US static unsigned char &ms_nGameClockHours; + SUPPORTED_10US static unsigned char &ms_nGameClockDays; + SUPPORTED_10US static unsigned char &ms_nGameClockMonth; + SUPPORTED_10US static unsigned int &ms_nLastClockTick; + SUPPORTED_10US static unsigned int &ms_nMillisecondsPerGameMinute; + + //! Returns number of minutes to specified hour & minute. + SUPPORTED_10US static unsigned short GetGameClockMinutesUntil(unsigned char hours, unsigned char minutes); + //! Returns true current hour is in range of two specified hours. + SUPPORTED_10US static bool GetIsTimeInRange(unsigned char hourA, unsigned char hourB); + //! Initializes clock + SUPPORTED_10US static void Initialise(unsigned int milisecondsPerGameMinute); + //! Normalizes game clock + //! For example hour of 24 means new day and hour 1. + SUPPORTED_10US static void NormaliseGameClock(); + //! Sets new day + //! Directions (0 = one day backwards, 1 = one day forwards) + SUPPORTED_10US static void OffsetClockByADay(unsigned int timeDirection); + //! Restores a clock time + SUPPORTED_10US static void RestoreClock(); + //! Sets game clock + SUPPORTED_10US static void SetGameClock(unsigned char hours, unsigned char minutes, unsigned char day); + //! Backups a clock time + SUPPORTED_10US static void StoreClock(); + //! Updates a time + SUPPORTED_10US static void Update(); +}; + +#include "meta/meta.CClock.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CClothes.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CClothes.cpp new file mode 100644 index 00000000..657c099c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CClothes.cpp @@ -0,0 +1,68 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CClothes.h" + +// Converted from cdecl void CClothes::ConstructPedModel(uint modelid,CPedClothesDesc &newclothes,CPedClothesDesc const*oldclothes,bool bCutscenePlayer) 0x5A81E0 +void CClothes::ConstructPedModel(unsigned int modelid, CPedClothesDesc& newclothes, CPedClothesDesc const* oldclothes, bool bCutscenePlayer) { + plugin::Call<0x5A81E0, unsigned int, CPedClothesDesc&, CPedClothesDesc const*, bool>(modelid, newclothes, oldclothes, bCutscenePlayer); +} + +// Converted from cdecl void CClothes::RequestMotionGroupAnims(void) 0x5A8120 +void CClothes::RequestMotionGroupAnims() { + plugin::Call<0x5A8120>(); +} + +// Converted from cdecl void CClothes::RebuildPlayerIfNeeded(CPlayerPed *player) 0x5A8390 +void CClothes::RebuildPlayerIfNeeded(CPlayerPed* player) { + plugin::Call<0x5A8390, CPlayerPed*>(player); +} + +// Converted from cdecl void CClothes::RebuildPlayer(CPlayerPed *player,bool bIgnoreFatAndMuscle) 0x5A82C0 +void CClothes::RebuildPlayer(CPlayerPed* player, bool bIgnoreFatAndMuscle) { + plugin::Call<0x5A82C0, CPlayerPed*, bool>(player, bIgnoreFatAndMuscle); +} + +// Converted from cdecl void CClothes::RebuildCutscenePlayer(CPlayerPed *player,int modelid) 0x5A8270 +void CClothes::RebuildCutscenePlayer(CPlayerPed* player, int modelid) { + plugin::Call<0x5A8270, CPlayerPed*, int>(player, modelid); +} + +// Converted from cdecl void CClothes::LoadClothesFile(void) 0x5A7B30 +void CClothes::LoadClothesFile() { + plugin::Call<0x5A7B30>(); +} + +// Converted from cdecl void CClothes::Init(void) 0x5A80D0 +void CClothes::Init() { + plugin::Call<0x5A80D0>(); +} + +// Converted from cdecl eClothesModelPart CClothes::GetTextureDependency(int eClothesTexturePart) 0x5A7EA0 +eClothesModelPart CClothes::GetTextureDependency(int eClothesTexturePart) { + eClothesModelPart result; + plugin::CallAndReturn(&result, eClothesTexturePart); + return result; +} + +// Converted from cdecl int CClothes::GetPlayerMotionGroupToLoad(void) 0x5A7FB0 +int CClothes::GetPlayerMotionGroupToLoad() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl eClothesTexturePart CClothes::GetDependentTexture(int eClothesModelPart) 0x5A7F30 +eClothesTexturePart CClothes::GetDependentTexture(int eClothesModelPart) { + eClothesTexturePart result; + plugin::CallAndReturn(&result, eClothesModelPart); + return result; +} + +// Converted from cdecl int CClothes::GetDefaultPlayerMotionGroup(void) 0x5A81B0 +int CClothes::GetDefaultPlayerMotionGroup() { + return plugin::CallAndReturn(); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CClothes.h b/third-party/plugin-sdk/plugin_sa/game_sa/CClothes.h new file mode 100644 index 00000000..06c3e50a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CClothes.h @@ -0,0 +1,28 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CPlayerPed.h" +#include "CPedClothesDesc.h" + + +class PLUGIN_API CClothes +{ +public: + //funcs + static void ConstructPedModel(unsigned int modelid, CPedClothesDesc& newclothes, CPedClothesDesc const* oldclothes, bool bCutscenePlayer); + static void RequestMotionGroupAnims(); + static void RebuildPlayerIfNeeded(CPlayerPed* player); + static void RebuildPlayer(CPlayerPed* player, bool bIgnoreFatAndMuscle); + static void RebuildCutscenePlayer(CPlayerPed* player, int modelid); + static void LoadClothesFile(); + static void Init(); + static eClothesModelPart GetTextureDependency(int eClothesTexturePart); + static int GetPlayerMotionGroupToLoad(); + static eClothesTexturePart GetDependentTexture(int eClothesModelPart); + static int GetDefaultPlayerMotionGroup(); +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CClothesBuilder.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CClothesBuilder.cpp new file mode 100644 index 00000000..068f680a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CClothesBuilder.cpp @@ -0,0 +1,139 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CClothesBuilder.h" + +// Converted from cdecl void CClothesBuilder::BlendTextures(RwTexture *texture,RwTexture *texture,RwTexture *texture,float factorA,float factorB,float factorC,int arg7,RwTexture *texture) 0x5A5BC0 +void CClothesBuilder::BlendTextures(RwTexture* texture1, RwTexture* texture2, RwTexture* texture3, float factorA, float factorB, float factorC, int arg7, RwTexture* texture4) { + plugin::Call<0x5A5BC0, RwTexture*, RwTexture*, RwTexture*, float, float, float, int, RwTexture*>(texture1, texture2, texture3, factorA, factorB, factorC, arg7, texture4); +} + +// Converted from cdecl void CClothesBuilder::BlendTextures(RwTexture *texture,RwTexture *texture,RwTexture *texture,float factorA,float factorB,float factorC) 0x5A59C0 +void CClothesBuilder::BlendTextures(RwTexture* texture1, RwTexture* texture2, RwTexture* texture3, float factorA, float factorB, float factorC) { + plugin::Call<0x5A59C0, RwTexture*, RwTexture*, RwTexture*, float, float, float>(texture1, texture2, texture3, factorA, factorB, factorC); +} + +// Converted from cdecl void CClothesBuilder::BlendTextures(RwTexture *texture,RwTexture *texture,float arg3,float arg4) 0x5A5820 +void CClothesBuilder::BlendTextures(RwTexture* texture1, RwTexture* texture2, float arg3, float arg4) { + plugin::Call<0x5A5820, RwTexture*, RwTexture*, float, float>(texture1, texture2, arg3, arg4); +} + +// Converted from cdecl void CClothesBuilder::BuildBoneIndexConversionTable(uchar *arg1,RpHAnimHierarchy *arg2,int arg3) 0x5A56E0 +void CClothesBuilder::BuildBoneIndexConversionTable(unsigned char* arg1, RpHAnimHierarchy* arg2, int arg3) { + plugin::Call<0x5A56E0, unsigned char*, RpHAnimHierarchy*, int>(arg1, arg2, arg3); +} + +// Converted from cdecl void CClothesBuilder::ConstructGeometryAndSkinArrays(RpHAnimHierarchy *arg1,RpGeometry **arg2,RwMatrixWeights **arg3,uint **arg4,uint,RpGeometry **arg5,RpMaterial **arg6) 0x5A6530 +void CClothesBuilder::ConstructGeometryAndSkinArrays(RpHAnimHierarchy* arg1, RpGeometry** arg2, RwMatrixWeights** arg3, unsigned int** arg4, unsigned int arg5, RpGeometry** arg6, RpMaterial** arg7) { + plugin::Call<0x5A6530, RpHAnimHierarchy*, RpGeometry**, RwMatrixWeights**, unsigned int**, unsigned int, RpGeometry**, RpMaterial**>(arg1, arg2, arg3, arg4, arg5, arg6, arg7); +} + +// Converted from cdecl void CClothesBuilder::ConstructGeometryArray(RpGeometry **arg1,uint *arg2,float arg3,float arg4,float arg5) 0x5A55A0 +void CClothesBuilder::ConstructGeometryArray(RpGeometry** arg1, unsigned int* arg2, float arg3, float arg4, float arg5) { + plugin::Call<0x5A55A0, RpGeometry**, unsigned int*, float, float, float>(arg1, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl void CClothesBuilder::ConstructTextures(RwTexDictionary *dict,uint *hashes,float factorA,float factorB,float factorC) 0x5A6040 +void CClothesBuilder::ConstructTextures(RwTexDictionary* dict, unsigned int* hashes, float factorA, float factorB, float factorC) { + plugin::Call<0x5A6040, RwTexDictionary*, unsigned int*, float, float, float>(dict, hashes, factorA, factorB, factorC); +} + +// Converted from cdecl RwTexture* CClothesBuilder::CopyTexture(RwTexture *texture) 0x5A5730 +RwTexture* CClothesBuilder::CopyTexture(RwTexture* texture) { + return plugin::CallAndReturn(texture); +} + +// Converted from cdecl RwClump* CClothesBuilder::CreateSkinnedClump(RpClump *clump ,RwTexDictionary *dict,CPedClothesDesc &newclothes,CPedClothesDesc const*oldclothes,bool bCutscenePlayer) 0x5A69D0 +RpClump* CClothesBuilder::CreateSkinnedClump(RpClump* clump, RwTexDictionary* dict, CPedClothesDesc& newclothes, CPedClothesDesc const* oldclothes, bool bCutscenePlayer) { + return plugin::CallAndReturn(clump, dict, newclothes, oldclothes, bCutscenePlayer); +} + +// Converted from cdecl void CClothesBuilder::DestroySkinArrays(RwMatrixWeights *arg1,uint *arg2) 0x5A56C0 +void CClothesBuilder::DestroySkinArrays(RwMatrixWeights* arg1, unsigned int* arg2) { + plugin::Call<0x5A56C0, RwMatrixWeights*, unsigned int*>(arg1, arg2); +} + +// Converted from cdecl int CClothesBuilder::FindNearestColour(RwRGBA *color) 0x5A5F40 +int CClothesBuilder::FindNearestColour(RwRGBA* color) { + return plugin::CallAndReturn(color); +} + +// Converted from cdecl void CClothesBuilder::InitPaletteOctTree(int numColors) 0x5A5EB0 +void CClothesBuilder::InitPaletteOctTree(int numColors) { + plugin::Call<0x5A5EB0, int>(numColors); +} + +// Converted from cdecl void CClothesBuilder::LoadCdDirectory(void) 0x5A4190 +void CClothesBuilder::LoadCdDirectory() { + plugin::Call<0x5A4190>(); +} + +// Converted from cdecl void CClothesBuilder::PlaceTextureOnTopOfTexture(RwTexture *texture1,RwTexture *texture2) 0x5A57B0 +void CClothesBuilder::PlaceTextureOnTopOfTexture(RwTexture* texture1, RwTexture* texture2) { + plugin::Call<0x5A57B0, RwTexture*, RwTexture*>(texture1, texture2); +} + +// Converted from cdecl void CClothesBuilder::PreprocessClothesDesc(CPedClothesDesc &arg1,bool arg2) 0x5A44C0 +void CClothesBuilder::PreprocessClothesDesc(CPedClothesDesc& arg1, bool arg2) { + plugin::Call<0x5A44C0, CPedClothesDesc&, bool>(arg1, arg2); +} + +// Converted from cdecl void CClothesBuilder::ReducePaletteSize(RwTexture *texture,int numColorsToReduce) 0x5A6870 +void CClothesBuilder::ReducePaletteSize(RwTexture* texture, int numColorsToReduce) { + plugin::Call<0x5A6870, RwTexture*, int>(texture, numColorsToReduce); +} + +// Converted from cdecl void CClothesBuilder::ReleaseGeometry(int numToRelease) 0x5A47B0 +void CClothesBuilder::ReleaseGeometry(int numToRelease) { + plugin::Call<0x5A47B0, int>(numToRelease); +} + +// Converted from thiscall void CClothesBuilder::RequestGeometry(int modelid,uint crc) 0x5A41C0 +void CClothesBuilder::RequestGeometry(int modelid, unsigned int crc) { + plugin::CallMethod<0x5A41C0, CClothesBuilder *, int, unsigned int>(this, modelid, crc); +} + +// Converted from cdecl void CClothesBuilder::StoreBoneArray(RpClump *clump,int arg2) 0x5A48B0 +void CClothesBuilder::StoreBoneArray(RpClump* clump, int arg2) { + plugin::Call<0x5A48B0, RpClump*, int>(clump, arg2); +} + +// Converted from cdecl RpGeometry* CClothesBuilder::BlendGeometry(RpClump *clump, char const *arg2, char const *arg3, char const *arg4, float arg5, float arg6, float arg7) 0x5A4940 +RpGeometry* CClothesBuilder::BlendGeometry(RpClump* clump, char const* arg2, char const* arg3, char const* arg4, float arg5, float arg6, float arg7) { + return plugin::CallAndReturn(clump, arg2, arg3, arg4, arg5, arg6, arg7); +} + +// Converted from cdecl RpGeometry* CClothesBuilder::BlendGeometry(RpClump *clump, char const *arg2, char const *arg3, float arg4, float arg5) 0x5A4F10 +RpGeometry* CClothesBuilder::BlendGeometry(RpClump* clump, char const* arg2, char const* arg3, float arg4, float arg5) { + return plugin::CallAndReturn(clump, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl RpGeometry* CClothesBuilder::CopyGeometry(RpClump *clump, char const *arg2, char const *arg3) 0x5A5340 +RpGeometry* CClothesBuilder::CopyGeometry(RpClump* clump, char const* arg2, char const* arg3) { + return plugin::CallAndReturn(clump, arg2, arg3); +} + +// Converted from cdecl void CClothesBuilder::ShutdownPaletteOctTree(void) 0x5A5EE0 +void CClothesBuilder::ShutdownPaletteOctTree() { + plugin::Call<0x5A5EE0>(); +} + +// Converted from cdecl void CClothesBuilder::ReducePaletteOctTree(int numColorsToReduce) 0x5A5EF0 +void CClothesBuilder::ReducePaletteOctTree(int numColorsToReduce) { + plugin::Call<0x5A5EF0, int>(numColorsToReduce); +} + +// Converted from cdecl bool CClothesBuilder::AddColour(RwRGBA *color) 0x5A5F00 +bool CClothesBuilder::AddColour(RwRGBA* color) { + return plugin::CallAndReturn(color); +} + +// Converted from cdecl void CClothesBuilder::FillPalette(RwRGBA *color) 0x5A5F30 0x5A5F70 +void CClothesBuilder::FillPalette(RwRGBA* color) { + plugin::Call<0x5A5F30, RwRGBA*>(color); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CClothesBuilder.h b/third-party/plugin-sdk/plugin_sa/game_sa/CClothesBuilder.h new file mode 100644 index 00000000..160a429f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CClothesBuilder.h @@ -0,0 +1,44 @@ + +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "renderware.h" // important +#include "CPedClothesDesc.h" + + +class PLUGIN_API CClothesBuilder +{ +public: + + static void BlendTextures(RwTexture* texture1, RwTexture* texture2, RwTexture* texture3, float factorA, float factorB, float factorC, int arg7, RwTexture* texture4); + static void BlendTextures(RwTexture* texture1, RwTexture* texture2, RwTexture* texture3, float factorA, float factorB, float factorC); + static void BlendTextures(RwTexture* texture1, RwTexture* texture2, float arg3, float arg4); + static void BuildBoneIndexConversionTable(unsigned char* arg1, RpHAnimHierarchy* arg2, int arg3); + static void ConstructGeometryAndSkinArrays(RpHAnimHierarchy* arg1, RpGeometry** arg2, RwMatrixWeights** arg3, unsigned int** arg4, unsigned int arg5, RpGeometry** arg6, RpMaterial** arg7); + static void ConstructGeometryArray(RpGeometry** arg1, unsigned int* arg2, float arg3, float arg4, float arg5); + static void ConstructTextures(RwTexDictionary* dict, unsigned int* hashes, float factorA, float factorB, float factorC); + static RwTexture* CopyTexture(RwTexture* texture); + static RpClump* CreateSkinnedClump(RpClump* clump, RwTexDictionary* dict, CPedClothesDesc& newclothes, CPedClothesDesc const* oldclothes, bool bCutscenePlayer); + static void DestroySkinArrays(RwMatrixWeights* arg1, unsigned int* arg2); + static int FindNearestColour(RwRGBA* color); + static void InitPaletteOctTree(int numColors); + static void LoadCdDirectory(); + static void PlaceTextureOnTopOfTexture(RwTexture* texture1, RwTexture* texture2); + static void PreprocessClothesDesc(CPedClothesDesc& arg1, bool arg2); + static void ReducePaletteSize(RwTexture* texture, int numColorsToReduce); + static void ReleaseGeometry(int numToRelease); + void RequestGeometry(int modelid, unsigned int crc); + static void StoreBoneArray(RpClump* clump, int arg2); + static RpGeometry* BlendGeometry(RpClump* clump, char const* arg2, char const* arg3, char const* arg4, float arg5, float arg6, float arg7); + static RpGeometry* BlendGeometry(RpClump* clump, char const* arg2, char const* arg3, float arg4, float arg5); + static RpGeometry* CopyGeometry(RpClump* clump, char const* arg2, char const* arg3); + static void ShutdownPaletteOctTree(); + static void ReducePaletteOctTree(int numColorsToReduce); + static bool AddColour(RwRGBA* color); + static void FillPalette(RwRGBA* color); +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CClouds.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CClouds.cpp new file mode 100644 index 00000000..7ab7cc10 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CClouds.cpp @@ -0,0 +1,139 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CClouds.h" + +float &CClouds::m_fVolumetricCloudDensity = *(float *)0x8D5388; +bool &CClouds::m_bVolumetricCloudHeightSwitch = *(bool *)0x8D538C; +float &CClouds::m_fVolumetricCloudWindMoveFactor = *(float *)0x8D5390; +float &CClouds::m_fVolumetricCloudMaxDistance = *(float *)0xC6AA58; +unsigned int &CClouds::m_VolumetricCloudsUsedNum = *(unsigned int *)0xC6AA5C; +float &CClouds::ms_cameraRoll = *(float *)0xC6AA64; +int &CClouds::IndividualRotation = *(int *)0xC6AA6C; +float &CClouds::CloudRotation = *(float *)0xC6AA70; +tVolumetricClouds &CClouds::ms_vc = *(tVolumetricClouds *)0xC6AAB0; +tMovingFog &CClouds::ms_mf = *(tMovingFog *)0xC6C158; +CVector &CClouds::PlayerCoords = *(CVector *)0xC6E958; +CVector &CClouds::CameraCoors = *(CVector *)0xC6E964; +unsigned char *RAINBOW_LINES_COLOR_RED = (unsigned char *)0x8D5370; +unsigned char *RAINBOW_LINES_COLOR_GREEN = (unsigned char *)0x8D5378; +unsigned char *RAINBOW_LINES_COLOR_BLUE = (unsigned char *)0x8D5380; +float *LOW_CLOUDS_X_COORDS = (float *)0x8D5394; +float *LOW_CLOUDS_Y_COORDS = (float *)0x8D53C4; +float *LOW_CLOUDS_Z_COORDS = (float *)0x8D53F4; +float *STARS_Y_POSITIONS = (float *)0x8D55EC; +float *STARS_Z_POSITIONS = (float *)0x8D5610; +float *STARS_SIZES = (float *)0x8D5634; +float &CurrentFogIntensity = *(float *)0x8D5798; +RwTexture *&gpMoonMask = *(RwTexture **)0xC6AA74; +RwTexture **gpCloudTex = (RwTexture **)0xC6AA78; + +// Converted from cdecl void CClouds::Shutdown(void) 0x712FA0 +void CClouds::Shutdown() { + plugin::Call<0x712FA0>(); +} + +// Converted from cdecl void CClouds::Update(void) 0x712FF0 +void CClouds::Update() { + plugin::Call<0x712FF0>(); +} + +// Converted from cdecl void CClouds::SetUpOneSkyPoly(CVector vert1pos,CVector vert2pos,CVector vert3pos,CVector vert4pos,uchar topRed,uchar topGreen,uchar topBlue,uchar bottomRed,uchar bottomGreen,uchar bottomBlue) 0x713060 +void CClouds::SetUpOneSkyPoly(CVector vert1pos, CVector vert2pos, CVector vert3pos, CVector vert4pos, unsigned char topRed, unsigned char topGreen, unsigned char topBlue, unsigned char bottomRed, unsigned char bottomGreen, unsigned char bottomBlue) { + plugin::Call<0x713060, CVector, CVector, CVector, CVector, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char>(vert1pos, vert2pos, vert3pos, vert4pos, topRed, topGreen, topBlue, bottomRed, bottomGreen, bottomBlue); +} + +// Converted from cdecl void CClouds::VolumetricCloudsInit(void) 0x7131C0 +void CClouds::VolumetricCloudsInit() { + plugin::Call<0x7131C0>(); +} + +// Converted from cdecl int CClouds::VolumetricClouds_GetFirstFreeSlot(void) 0x7135C0 +int CClouds::VolumetricClouds_GetFirstFreeSlot() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CClouds::VolumetricClouds_Delete(int vcSlotIndex) 0x7135F0 +void CClouds::VolumetricClouds_Delete(int vcSlotIndex) { + plugin::Call<0x7135F0, int>(vcSlotIndex); +} + +// Converted from cdecl float CClouds::VolumetricCloudsGetMaxDistance(void) 0x713630 +float CClouds::VolumetricCloudsGetMaxDistance() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CClouds::MovingFogInit(void) 0x713660 +void CClouds::MovingFogInit() { + plugin::Call<0x713660>(); +} + +// Converted from cdecl float CClouds::MovingFog_GetFXIntensity(void) 0x7136D0 +float CClouds::MovingFog_GetFXIntensity() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl CVector CClouds::MovingFog_GetWind(void) 0x7136E0 +CVector CClouds::MovingFog_GetWind() { + CVector result; + plugin::Call<0x7136E0, CVector*>(&result); + return result; +} + +// Converted from cdecl int CClouds::MovingFog_GetFirstFreeSlot(void) 0x713710 +int CClouds::MovingFog_GetFirstFreeSlot() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CClouds::MovingFog_Delete(int fogSlotIndex) 0x713730 +void CClouds::MovingFog_Delete(int fogSlotIndex) { + plugin::Call<0x713730, int>(fogSlotIndex); +} + +// Converted from cdecl void CClouds::MovingFog_Create(CVector *posn) 0x713760 +void CClouds::MovingFog_Create(CVector* posn) { + plugin::Call<0x713760, CVector*>(posn); +} + +// Converted from cdecl void CClouds::Init(void) 0x7138D0 +void CClouds::Init() { + plugin::Call<0x7138D0>(); +} + +// Converted from cdecl void CClouds::Render(void) 0x713950 +void CClouds::Render() { + plugin::Call<0x713950>(); +} + +// Converted from cdecl void CClouds::RenderSkyPolys(void) 0x714650 +void CClouds::RenderSkyPolys() { + plugin::Call<0x714650>(); +} + +// Converted from cdecl void CClouds::RenderBottomFromHeight(void) 0x7154B0 +void CClouds::RenderBottomFromHeight() { + plugin::Call<0x7154B0>(); +} + +// Converted from cdecl void CClouds::VolumetricClouds_Create(CVector *posn) 0x715F40 +void CClouds::VolumetricClouds_Create(CVector* posn) { + plugin::Call<0x715F40, CVector*>(posn); +} + +// Converted from cdecl void CClouds::VolumetricCloudsRender(void) 0x716380 +void CClouds::VolumetricCloudsRender() { + plugin::Call<0x716380>(); +} + +// Converted from cdecl void CClouds::MovingFog_Update(void) 0x716B10 +void CClouds::MovingFog_Update() { + plugin::Call<0x716B10>(); +} + +// Converted from cdecl void CClouds::MovingFogRender(void) 0x716C90 +void CClouds::MovingFogRender() { + plugin::Call<0x716C90>(); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CClouds.h b/third-party/plugin-sdk/plugin_sa/game_sa/CClouds.h new file mode 100644 index 00000000..66c8b6aa --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CClouds.h @@ -0,0 +1,94 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +#define MAX_MOVING_FOG 350 +#define MAX_VOLUMETRIC_CLOUDS 180 + +struct tMovingFog { + bool m_bFogSlots[350]; +private: + char _pad15E[2]; +public: + CVector m_vecPosn[350]; + float m_fSize[350]; + float m_fIntensity[350]; + float m_fMaxIntensity[350]; + CVector m_vecWind; + float m_fSpeed[350]; + int field_27B4[12]; + unsigned int m_nPrimIndices[6]; +}; + +struct tVolumetricClouds { + char m_bSlots[180]; + char m_bInsideVisibilityRange[180]; + CVector field_168[180]; + CVector field_9D8[180]; + int m_nHeight[180]; + RwTexture *m_pTex; + CVector m_vecCloudsSpace[3]; + float m_fCloudXCoords[18]; + float m_fCloudYCoords[18]; + float m_fCloudZCoords[18]; + float m_fCloudUCoords[18]; + float m_fCloudVCoords[18]; +}; + +class PLUGIN_API CClouds { +public: + static float &m_fVolumetricCloudDensity; // default 1.0f + static bool &m_bVolumetricCloudHeightSwitch; // default true + static float &m_fVolumetricCloudWindMoveFactor; // default 0.1f + static float &m_fVolumetricCloudMaxDistance; + static unsigned int &m_VolumetricCloudsUsedNum; + static float &ms_cameraRoll; + static int &IndividualRotation; + static float &CloudRotation; + static tVolumetricClouds &ms_vc; + static tMovingFog &ms_mf; + static CVector &PlayerCoords; + static CVector &CameraCoors; + + static void Shutdown(); + static void Update(); + static void SetUpOneSkyPoly(CVector vert1pos, CVector vert2pos, CVector vert3pos, CVector vert4pos, unsigned char topRed, unsigned char topGreen, unsigned char topBlue, unsigned char bottomRed, unsigned char bottomGreen, unsigned char bottomBlue); + static void VolumetricCloudsInit(); + static int VolumetricClouds_GetFirstFreeSlot(); + static void VolumetricClouds_Delete(int vcSlotIndex); + static float VolumetricCloudsGetMaxDistance(); + static void MovingFogInit(); + static float MovingFog_GetFXIntensity(); + static CVector MovingFog_GetWind(); + static int MovingFog_GetFirstFreeSlot(); + static void MovingFog_Delete(int fogSlotIndex); + static void MovingFog_Create(CVector* posn); + static void Init(); + static void Render(); + static void RenderSkyPolys(); + static void RenderBottomFromHeight(); + static void VolumetricClouds_Create(CVector* posn); + static void VolumetricCloudsRender(); + static void MovingFog_Update(); + static void MovingFogRender(); +}; + +extern unsigned char *RAINBOW_LINES_COLOR_RED; // RAINBOW_LINES_COLOR_RED[6] = { 30, 30, 30, 10, 0, 15 } +extern unsigned char *RAINBOW_LINES_COLOR_GREEN; // RAINBOW_LINES_COLOR_GREEN[6] = { 0, 15, 30, 30, 0, 0 } +extern unsigned char *RAINBOW_LINES_COLOR_BLUE; // RAINBOW_LINES_COLOR_BLUE[6] = { 0, 0, 0, 10, 30, 30 } +extern float *LOW_CLOUDS_X_COORDS; // LOW_CLOUDS_X_COORDS[12] = { 1.0f, 0.7f, 0.0f, -0.7f, -1.0f, -0.7f, 0.0f, 0.7f, 0.8f, -0.8f, 0.4f, 0.4f } +extern float *LOW_CLOUDS_Y_COORDS; // LOW_CLOUDS_Y_COORDS[12] = { 0.0f, -0.7f, -1.0f, -0.7f, 0.0f, 0.7f, 1.0f, 0.7f, 0.4f, 0.4f, -0.8f. -0.8f } +extern float *LOW_CLOUDS_Z_COORDS; // LOW_CLOUDS_Z_COORDS[12] = { 0.0f, 1.0f, 0.5f, 0.0f, 1.0f, 0.3f, 0.9f, 0.4f, 1.3f, 1.4f, 1.2f, 1.7f } +extern float *STARS_Y_POSITIONS; // STARS_Y_POSITIONS[9] = { 0.0f, 0.05f, 0.13f, 0.4f, 0.7f, 0.6f, 0.27f, 0.55f, 0.75f } +extern float *STARS_Z_POSITIONS; // STARS_Z_POSITIONS[9] = { 0.0f, 0.45f, 0.9f, 1.0f, 0.85f, 0.52f, 0.48f, 0.35f, 0.2f } +extern float *STARS_SIZES; // STARS_SIZES[9] = { 1.0f, 1.4f, 0.9f, 1.0f, 0.6f, 1.5f, 1.3f, 1.0f, 0.8f } +extern float &CurrentFogIntensity; // default 1.0f +extern RwTexture *&gpMoonMask; +extern RwTexture **gpCloudTex; // RwTexture *gpCloudTex[2] diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CClumpModelInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CClumpModelInfo.cpp new file mode 100644 index 00000000..257f8b5c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CClumpModelInfo.cpp @@ -0,0 +1,62 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CClumpModelInfo.h" + +CBox *CClumpModelInfo::GetBoundingBox() +{ + return ((CBox *(__thiscall *)(CClumpModelInfo *))plugin::GetVMT(this, 15))(this); +} + +void CClumpModelInfo::SetClump(RpClump *clump) +{ + ((void (__thiscall *)(CClumpModelInfo *, RpClump *))plugin::GetVMT(this, 16))(this, clump); +} + +void CClumpModelInfo::SetAtomicRendererCB(RpAtomic *atomic, void *renderFunc) +{ + ((void (__cdecl *)(RpAtomic *, void *))0x4C5280)(atomic, renderFunc); +} + +RwFrame *CClumpModelInfo::FindFrameFromNameCB(RwFrame *frame, void *searchData) +{ + return ((RwFrame *(__cdecl *)(RwFrame *, void *))0x4C52A0)(frame, searchData); +} + +RwFrame *CClumpModelInfo::FindFrameFromNameWithoutIdCB(RwFrame *frame, void *searchData) +{ + return ((RwFrame *(__cdecl *)(RwFrame *, void *))0x4C52F0)(frame, searchData); +} + +RwFrame *CClumpModelInfo::FindFrameFromIdCB(RwFrame *frame, void *searchData) +{ + return ((RwFrame *(__cdecl *)(RwFrame *, void *))0x4C5350)(frame, searchData); +} + +RwFrame *CClumpModelInfo::FillFrameArrayCB(RwFrame *frame, void *data) +{ + return ((RwFrame *(__cdecl *)(RwFrame *, void *))0x4C5390)(frame, data); +} + +RwFrame *CClumpModelInfo::GetFrameFromId(RpClump *clump, int id) +{ + return ((RwFrame *(__cdecl *)(RpClump *, int))0x4C53C0)(clump, id); +} + +RwFrame *CClumpModelInfo::GetFrameFromName(RpClump *clump, char *name) +{ + return ((RwFrame *(__cdecl *)(RpClump *, char *))0x4C5400)(clump, name); +} + +void CClumpModelInfo::FillFrameArray(RpClump *clump, RwFrame **frames) +{ + ((void (__cdecl *)(RpClump *, RwFrame **))0x4C5440)(clump, frames); +} + +// Converted from thiscall void CClumpModelInfo::SetFrameIds(RwObjectNameIdAssocation *data) 0x4C5460 +void CClumpModelInfo::SetFrameIds(RwObjectNameIdAssocation* data) { + plugin::CallMethod<0x4C5460, CClumpModelInfo *, RwObjectNameIdAssocation*>(this, data); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CClumpModelInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CClumpModelInfo.h new file mode 100644 index 00000000..cc243cb0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CClumpModelInfo.h @@ -0,0 +1,44 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CBaseModelInfo.h" +#include "RwObjectNameIdAssocation.h" + +struct RwFrame; +struct RpAtomic; +struct RpClump; + + +class PLUGIN_API CClumpModelInfo : public CBaseModelInfo { +public: + union{ + char *m_animFileName; + unsigned int m_dwAnimFileIndex; + }; + + // vtable + + CBox *GetBoundingBox(); + void SetClump(RpClump *clump); + + // static functions + + static void SetAtomicRendererCB(RpAtomic *atomic, void *renderFunc); + /* struct tSearchData { char *name; RwFrame *result; }; + returns 0 if we found frame, or last frame if we need to continue searching */ + static RwFrame *FindFrameFromNameCB(RwFrame *frame, void *searchData); + static RwFrame *FindFrameFromNameWithoutIdCB(RwFrame *frame, void *searchData); + static RwFrame *FindFrameFromIdCB(RwFrame *frame, void *searchData); + static RwFrame *FillFrameArrayCB(RwFrame *frame, void *data); + static RwFrame *GetFrameFromId(RpClump *clump, int id); + static RwFrame *GetFrameFromName(RpClump *clump, char *name); + static void FillFrameArray(RpClump *clump, RwFrame **frames); + void SetFrameIds(RwObjectNameIdAssocation* data); +}; + +VALIDATE_SIZE(CClumpModelInfo, 0x24); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColAccel.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CColAccel.cpp new file mode 100644 index 00000000..f9306924 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColAccel.cpp @@ -0,0 +1,11 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CColAccel.h" + +bool CColAccel::IsCacheLoading() { + return plugin::CallAndReturn(); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColAccel.h b/third-party/plugin-sdk/plugin_sa/game_sa/CColAccel.h new file mode 100644 index 00000000..d305a3d1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColAccel.h @@ -0,0 +1,13 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +class CColAccel { +public: + bool IsCacheLoading(); +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColBox.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CColBox.cpp new file mode 100644 index 00000000..cd74765e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColBox.cpp @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CColBox.h" + +void CColBox::Set(CVector const& sup, CVector const& inf, unsigned char material , unsigned char flags, unsigned char lighting) +{ + ((void (__thiscall *)(CColBox *, CVector const&, CVector const&, unsigned char, unsigned char, unsigned char))0x40EE70)(this, sup, inf, material , flags, lighting); +} + +void CColBox::operator=(CColBox const& right) +{ + ((void (__thiscall *)(CColBox *, CColBox const&))0x40EEC0)(this, right); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColBox.h b/third-party/plugin-sdk/plugin_sa/game_sa/CColBox.h new file mode 100644 index 00000000..e529f9df --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColBox.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CBox.h" + +class CColBox : public CBox { +public: + unsigned char m_nMaterial; + unsigned char m_nFlags; + unsigned char m_nLighting; + unsigned char m_nLight; + + void Set(CVector const& sup, CVector const& inf, unsigned char material , unsigned char flags, unsigned char lighting); + void operator=(CColBox const& right); +}; + +VALIDATE_SIZE(CColBox, 0x1C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColDisk.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CColDisk.cpp new file mode 100644 index 00000000..f0f058c7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColDisk.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CColDisk.h" + +// Converted from thiscall void CColDisk::Set(float startRadius,CVector const&start,CVector const&end,float endRadius,uchar material,uchar pieceType,uchar lighting) 0x40FD50 +void CColDisk::Set(float startRadius, CVector const& start, CVector const& end, float endRadius, unsigned char material, unsigned char pieceType, unsigned char lighting) { + plugin::CallMethod<0x40FD50, CColDisk *, float, CVector const&, CVector const&, float, unsigned char, unsigned char, unsigned char>(this, startRadius, start, end, endRadius, material, pieceType, lighting); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColDisk.h b/third-party/plugin-sdk/plugin_sa/game_sa/CColDisk.h new file mode 100644 index 00000000..ab4569b2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColDisk.h @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVector.h" + +class CColDisk { +public: + CVector m_vecStart; + float m_fStartRadius; + unsigned char m_nMaterial; + unsigned char m_nPiece; + unsigned char m_nLighting; +private: + char _pad13; +public: + CVector m_vecEnd; + float m_fEndRadius; + + void Set(float startRadius, CVector const& start, CVector const& end, float endRadius, unsigned char material, unsigned char pieceType, unsigned char lighting); +}; + +VALIDATE_SIZE(CColDisk, 0x24); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColLine.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CColLine.cpp new file mode 100644 index 00000000..b5f40dea --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColLine.cpp @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CColLine.h" + +CColLine::CColLine(CVector const& start, CVector const& end) +{ + ((void (__thiscall *)(CColLine *, CVector const&, CVector const&))0x40EF50)(this, start, end); +} + +void CColLine::Set(CVector const& start, CVector const& end) +{ + ((void (__thiscall *)(CColLine *, CVector const&, CVector const&))0x40EF10)(this, start, end); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColLine.h b/third-party/plugin-sdk/plugin_sa/game_sa/CColLine.h new file mode 100644 index 00000000..ca7c1520 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColLine.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class CColLine { +public: + CVector m_vecStart; + float m_fStartSize; + CVector m_vecEnd; + float m_fEndSize; + + CColLine(CVector const& start, CVector const& end); + void Set(CVector const& start, CVector const& end); +}; + +VALIDATE_SIZE(CColLine, 0x20); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColModel.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CColModel.cpp new file mode 100644 index 00000000..28a3f72d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColModel.cpp @@ -0,0 +1,67 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CColModel.h" + +// Converted from thiscall void CColModel::CColModel(void) 0x40FB60 +CColModel::CColModel() : m_boundBox(plugin::dummy) { + plugin::CallMethod<0x40FB60, CColModel *>(this); +} + +// Converted from thiscall void CColModel::~CColModel() 0x40F700 +CColModel::~CColModel() { + plugin::CallMethod<0x40F700, CColModel *>(this); +} + +// Converted from thiscall void CColModel::MakeMultipleAlloc(void) 0x40F740 +void CColModel::MakeMultipleAlloc() { + plugin::CallMethod<0x40F740, CColModel *>(this); +} + +// Converted from thiscall CColModel& CColModel::operator=(CColModel const&colModel) 0x40F7C0 +CColModel& CColModel::operator=(CColModel const& colModel) { + return plugin::CallMethodAndReturn(this, colModel); +} + +// Converted from thiscall void CColModel::AllocateData(void) 0x40F810 +void CColModel::AllocateData() { + plugin::CallMethod<0x40F810, CColModel *>(this); +} + +// Converted from thiscall void CColModel::AllocateData(int numSpheres, int numBoxes, int numLines, int numVertices, int numTriangles, bool disks) 0x40F870 +void CColModel::AllocateData(int numSpheres, int numBoxes, int numLines, int numVertices, int numTriangles, bool disks) { + plugin::CallMethod<0x40F870, CColModel *, int, int, int, int, int, bool>(this, numSpheres, numBoxes, numLines, numVertices, numTriangles, disks); +} + +// Converted from thiscall void CColModel::AllocateData(int size) 0x40F9B0 +void CColModel::AllocateData(int size) { + plugin::CallMethod<0x40F9B0, CColModel *, int>(this, size); +} + +// Converted from thiscall void CColModel::RemoveCollisionVolumes(void) 0x40F9E0 +void CColModel::RemoveCollisionVolumes() { + plugin::CallMethod<0x40F9E0, CColModel *>(this); +} + +// Converted from thiscall void CColModel::CalculateTrianglePlanes(void) 0x40FA30 +void CColModel::CalculateTrianglePlanes() { + plugin::CallMethod<0x40FA30, CColModel *>(this); +} + +// Converted from thiscall void CColModel::RemoveTrianglePlanes(void) 0x40FA40 +void CColModel::RemoveTrianglePlanes() { + plugin::CallMethod<0x40FA40, CColModel *>(this); +} + +// Converted from cdecl void* CColModel::operator new(uint size) 0x40FC30 +void* CColModel::operator new(unsigned int size) { + return plugin::CallAndReturn(size); +} + +// Converted from cdecl void CColModel::operator delete(void *data) 0x40FC40 +void CColModel::operator delete(void* data) { + plugin::Call<0x40FC40, void*>(data); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColModel.h b/third-party/plugin-sdk/plugin_sa/game_sa/CColModel.h new file mode 100644 index 00000000..19ed70ea --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColModel.h @@ -0,0 +1,45 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CBoundingBox.h" +#include "CColSphere.h" +#include "CCollisionData.h" + +class CColModel { +public: + CBoundingBox m_boundBox; + CSphere m_boundSphere; + unsigned char m_nColSlot; + union { + struct { + unsigned char m_bHasCollisionVolumes : 1; + unsigned char m_bIsSingleColDataAlloc : 1; + unsigned char m_bIsActive : 1; + }; + unsigned char m_nFlags; + }; + CCollisionData* m_pColData; + + CColModel(); + ~CColModel(); + CColModel& operator=(CColModel const& colModel); + + void MakeMultipleAlloc(); + void AllocateData(); + void AllocateData(int numSpheres, int numBoxes, int numLines, int numVertices, int numTriangles, bool disks); + void AllocateData(int size); + void RemoveCollisionVolumes(); + void CalculateTrianglePlanes(); + void RemoveTrianglePlanes(); + + static void* operator new(unsigned int size); + static void operator delete(void* data); +}; + +VALIDATE_SIZE(CColModel, 0x30); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColPoint.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CColPoint.cpp new file mode 100644 index 00000000..da16408f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColPoint.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CColPoint.h" + +void CColPoint::operator=(CColPoint const& right) +{ + ((void (__thiscall *)(CColPoint *, CColPoint const&))0x40FC80)(this, right); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColPoint.h b/third-party/plugin-sdk/plugin_sa/game_sa/CColPoint.h new file mode 100644 index 00000000..a9ad130a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColPoint.h @@ -0,0 +1,46 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +struct PLUGIN_API tColLighting +{ + unsigned char day : 4; + unsigned char night : 4; +}; + + +class PLUGIN_API CColPoint { +public: + /* https://code.google.com/p/mtasa-blue/source/browse/tags/1.3.4/MTA10/game_sa/CColPointSA.h */ + CVector m_vecPoint; + float field_C; + CVector m_vecNormal; + float field_1C; + // col shape 1 info + unsigned char m_nSurfaceTypeA; // see eSurfaceType + unsigned char m_nPieceTypeA; + tColLighting m_nLightingA; +private: + char _pad; +public: + // col shape 2 info + unsigned char m_nSurfaceTypeB; // see eSurfaceType + unsigned char m_nPieceTypeB; + tColLighting m_nLightingB; +private: + char _pad2; +public: + // col depth + float m_fDepth; + + void operator=(CColPoint const& right); +}; + +VALIDATE_SIZE(CColPoint, 0x2C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColSphere.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CColSphere.cpp new file mode 100644 index 00000000..32349d94 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColSphere.cpp @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CColSphere.h" + +void CColSphere::Set(float radius, CVector const& center, unsigned char material , unsigned char flags, unsigned char lighting) +{ + ((void (__thiscall *)(CColSphere *, float, CVector const&, unsigned char, unsigned char, unsigned char))0x40FD10)(this, radius, center, material , flags, lighting); +} + +bool CColSphere::IntersectRay(CVector const& rayStart, CVector const& rayEnd, CVector& intPoint1, CVector& intPoint2) +{ + return ((bool (__thiscall *)(CColSphere *, CVector const&, CVector const&, CVector&, CVector&))0x40FF20)(this, rayStart, rayEnd, intPoint1 , intPoint2); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColSphere.h b/third-party/plugin-sdk/plugin_sa/game_sa/CColSphere.h new file mode 100644 index 00000000..82d85d04 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColSphere.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CSphere.h" + +class CColSphere : public CSphere { +public: + unsigned char m_nMaterial; + unsigned char m_nFlags; + unsigned char m_nLighting; + unsigned char m_nLight; + + void Set(float radius, CVector const& center, unsigned char material , unsigned char flags, unsigned char lighting); + bool IntersectRay(CVector const& rayStart, CVector const& rayEnd, CVector& intPoint1, CVector& intPoint2); +}; + +VALIDATE_SIZE(CColSphere, 0x14); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColStore.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CColStore.cpp new file mode 100644 index 00000000..fe06f014 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColStore.cpp @@ -0,0 +1,15 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CColStore.h" + +CVector& CColStore::ms_vecCollisionNeeded = *(CVector*)0x965580; +bool& CColStore::ms_bCollisionNeeded = *(bool*)0x965558; +int CColStore::ms_nRequiredCollisionArea = *(int*)0x965554; + +CColPool*& CColStore::ms_pColPool = *(CColPool**)0x965560; +CQuadTreeNode*& CColStore::ms_pQuadTree = *(CQuadTreeNode**)0x96555C; + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColStore.h b/third-party/plugin-sdk/plugin_sa/game_sa/CColStore.h new file mode 100644 index 00000000..d94ba1be --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColStore.h @@ -0,0 +1,44 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CQuadTreeNode.h" +#include "CPool.h" +#include "CVector.h" + +struct ColDef { + CRect m_Area; + unsigned int field_10; + unsigned int field_14; + unsigned int field_18; + unsigned int field_1C; + unsigned short field_20; + short m_nModelIdStart; + short m_nModelIdEnd; + unsigned short m_nRefCount; + bool m_bActive; + bool m_bCollisionIsRequired; + bool m_bProcedural; + bool m_bInterior; +}; + +VALIDATE_SIZE(ColDef, 0x2C); + +typedef CPool CColPool; + +class CQuadTreeNode; + +class CColStore { +public: + static CColPool*& ms_pColPool; + static CQuadTreeNode*& ms_pQuadTree; + + static CVector& ms_vecCollisionNeeded; + static bool& ms_bCollisionNeeded; + static int ms_nRequiredCollisionArea; + +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColTriangle.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CColTriangle.cpp new file mode 100644 index 00000000..20e2b659 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColTriangle.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CColTriangle.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColTriangle.h b/third-party/plugin-sdk/plugin_sa/game_sa/CColTriangle.h new file mode 100644 index 00000000..7784c9cd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColTriangle.h @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class CColTriangle { +public: + unsigned short m_nVertA; // vertex index in vertices array + unsigned short m_nVertB; // vertex index in vertices array + unsigned short m_nVertC; // vertex index in vertices array + unsigned char m_nMaterial; + unsigned char m_nLight; +}; + +VALIDATE_SIZE(CColTriangle, 8); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColTrianglePlane.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CColTrianglePlane.cpp new file mode 100644 index 00000000..5f56fca6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColTrianglePlane.cpp @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CColTrianglePlane.h" + +void CColTrianglePlane::GetNormal(CVector &out) +{ + ((void (__thiscall *)(CColTrianglePlane *, CVector &))0x411610)(this, out); +} + +void CColTrianglePlane::Set(CompressedVector const* vertices, CColTriangle & triangle) +{ + ((void (__thiscall *)(CColTrianglePlane *, CompressedVector const*, CColTriangle &))0x411660)(this, vertices, triangle); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColTrianglePlane.h b/third-party/plugin-sdk/plugin_sa/game_sa/CColTrianglePlane.h new file mode 100644 index 00000000..0ff0c82b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColTrianglePlane.h @@ -0,0 +1,24 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CompressedVector.h" +#include "CVector.h" +#include "CColTriangle.h" + +class CColTrianglePlane { +public: + CompressedVector m_normal; + unsigned short m_nDistance; + unsigned char m_nOrientation; + + void GetNormal(CVector &out); + void Set(CompressedVector const* vertices, CColTriangle & triangle); +}; + +VALIDATE_SIZE(CColTrianglePlane, 0xA); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCollision.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCollision.cpp new file mode 100644 index 00000000..ffe8e79b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCollision.cpp @@ -0,0 +1,312 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCollision.h" + +// Converted from cdecl void CCollision::Update(void) 0x411E20 +void CCollision::Update() { + plugin::Call<0x411E20>(); +} + +// Converted from cdecl void CCollision::SortOutCollisionAfterLoad(void) 0x411E30 +void CCollision::SortOutCollisionAfterLoad() { + plugin::Call<0x411E30>(); +} + +// Converted from cdecl bool CCollision::TestSphereSphere(CColSphere const&sphere1,CColSphere const&sphere2) 0x411E70 +bool CCollision::TestSphereSphere(CColSphere const& sphere1, CColSphere const& sphere2) { + return plugin::CallAndReturn(sphere1, sphere2); +} + +// Converted from cdecl void CalculateColPointInsideBox(CBox const&box,CVector const&point,CColPoint &colPoint) 0x411EC0 +void CalculateColPointInsideBox(CBox const& box, CVector const& point, CColPoint& colPoint) { + plugin::Call<0x411EC0, CBox const&, CVector const&, CColPoint&>(box, point, colPoint); +} + +// Converted from cdecl bool CCollision::TestSphereBox(CSphere const&sphere,CBox const&box) 0x4120C0 +bool CCollision::TestSphereBox(CSphere const& sphere, CBox const& box) { + return plugin::CallAndReturn(sphere, box); +} + +// Converted from cdecl bool CCollision::ProcessSphereBox(CColSphere const&sphere,CColBox const&box,CColPoint &colPoint,float &maxTouchDistance) 0x412130 +bool CCollision::ProcessSphereBox(CColSphere const& sphere, CColBox const& box, CColPoint& colPoint, float& maxTouchDistance) { + return plugin::CallAndReturn(sphere, box, colPoint, maxTouchDistance); +} + +// Converted from cdecl bool CCollision::PointInTriangle(CVector const&point,CVector const*triPoints) 0x412700 +bool CCollision::PointInTriangle(CVector const& point, CVector const* triPoints) { + return plugin::CallAndReturn(point, triPoints); +} + +// Converted from cdecl float CCollision::DistToLineSqr(CVector const*lineStart,CVector const*lineEnd,CVector const*point) 0x412850 +float CCollision::DistToLineSqr(CVector const* lineStart, CVector const* lineEnd, CVector const* point) { + return plugin::CallAndReturn(lineStart, lineEnd, point); +} + +// Converted from cdecl float CCollision::DistToMathematicalLine(CVector const*lineStart,CVector const*lineEnd,CVector const*point) 0x412970 +float CCollision::DistToMathematicalLine(CVector const* lineStart, CVector const* lineEnd, CVector const* point) { + return plugin::CallAndReturn(lineStart, lineEnd, point); +} + +// Converted from cdecl float CCollision::DistToMathematicalLine2D(float lineStartX,float lineStartY,float lineEndX,float lineEndY,float pointX,float pointY) 0x412A30 +float CCollision::DistToMathematicalLine2D(float lineStartX, float lineStartY, float lineEndX, float lineEndY, float pointX, float pointY) { + return plugin::CallAndReturn(lineStartX, lineStartY, lineEndX, lineEndY, pointX, pointY); +} + +// Converted from cdecl float CCollision::DistAlongLine2D(float lineX,float lineY,float lineDirX,float lineDirY,float pointX,float pointY) 0x412A80 +float CCollision::DistAlongLine2D(float lineX, float lineY, float lineDirX, float lineDirY, float pointX, float pointY) { + return plugin::CallAndReturn(lineX, lineY, lineDirX, lineDirY, pointX, pointY); +} + +// Converted from cdecl bool CCollision::ProcessLineSphere(CColLine const&line,CColSphere const&sphere,CColPoint &colPoint,float &depth) 0x412AA0 +bool CCollision::ProcessLineSphere(CColLine const& line, CColSphere const& sphere, CColPoint& colPoint, float& depth) { + return plugin::CallAndReturn(line, sphere, colPoint, depth); +} + +// Converted from cdecl bool CCollision::TestLineBox_DW(CColLine const&line,CBox const&box) 0x412C70 +bool CCollision::TestLineBox_DW(CColLine const& line, CBox const& box) { + return plugin::CallAndReturn(line, box); +} + +// Converted from cdecl bool CCollision::TestLineBox(CColLine const&line,CBox const&box) 0x413070 +bool CCollision::TestLineBox(CColLine const& line, CBox const& box) { + return plugin::CallAndReturn(line, box); +} + +// Converted from cdecl bool CCollision::TestVerticalLineBox(CColLine const&line,CBox const&box) 0x413080 +bool CCollision::TestVerticalLineBox(CColLine const& line, CBox const& box) { + return plugin::CallAndReturn(line, box); +} + +// Converted from cdecl bool CCollision::ProcessLineBox(CColLine const&line,CColBox const&box,CColPoint &colPoint,float &maxTouchDistance) 0x413100 +bool CCollision::ProcessLineBox(CColLine const& line, CColBox const& box, CColPoint& colPoint, float& maxTouchDistance) { + return plugin::CallAndReturn(line, box, colPoint, maxTouchDistance); +} + +// Converted from cdecl bool CCollision::Test2DLineAgainst2DLine(float line1StartX,float line1StartY,float line1EndX,float line1EndY,float line2StartX,float line2StartY,float line2EndX,float line2EndY) 0x4138D0 +bool CCollision::Test2DLineAgainst2DLine(float line1StartX, float line1StartY, float line1EndX, float line1EndY, float line2StartX, float line2StartY, float line2EndX, float line2EndY) { + return plugin::CallAndReturn(line1StartX, line1StartY, line1EndX, line1EndY, line2StartX, line2StartY, line2EndX, line2EndY); +} + +// Converted from cdecl bool ProcessDiscCollision(CColPoint &colPoint1,CMatrix const&mat,CColDisk const&disk,CColPoint &colPoint2,bool &,float &,CColPoint &colPoint3) 0x413960 +bool ProcessDiscCollision(CColPoint& colPoint1, CMatrix const& mat, CColDisk const& disk, CColPoint& colPoint2, bool& arg4, float& arg5, CColPoint& colPoint3) { + return plugin::CallAndReturn(colPoint1, mat, disk, colPoint2, arg4, arg5, colPoint3); +} + +// Converted from cdecl bool CCollision::TestLineTriangle(CColLine const&line,CompressedVector const*verts,CColTriangle const&tri,CColTrianglePlane const&triPlane) 0x413AC0 +bool CCollision::TestLineTriangle(CColLine const& line, CompressedVector const* verts, CColTriangle const& tri, CColTrianglePlane const& triPlane) { + return plugin::CallAndReturn(line, verts, tri, triPlane); +} + +// Converted from cdecl bool CCollision::ProcessLineTriangle(CColLine const&line,CompressedVector const*verts,CColTriangle const&tri,CColTrianglePlane const&triPlane,CColPoint &colPoint,float &maxTouchDistance,CStoredCollPoly *collPoly) 0x4140F0 +bool CCollision::ProcessLineTriangle(CColLine const& line, CompressedVector const* verts, CColTriangle const& tri, CColTrianglePlane const& triPlane, CColPoint& colPoint, float& maxTouchDistance, CStoredCollPoly* collPoly) { + return plugin::CallAndReturn(line, verts, tri, triPlane, colPoint, maxTouchDistance, collPoly); +} + +// Converted from cdecl bool CCollision::ProcessVerticalLineTriangle(CColLine const&line,CompressedVector const*verts,CColTriangle const&tri,CColTrianglePlane const&triPlane,CColPoint &colPoint,float &maxTouchDistance,CStoredCollPoly *collPoly) 0x4147E0 +bool CCollision::ProcessVerticalLineTriangle(CColLine const& line, CompressedVector const* verts, CColTriangle const& tri, CColTrianglePlane const& triPlane, CColPoint& colPoint, float& maxTouchDistance, CStoredCollPoly* collPoly) { + return plugin::CallAndReturn(line, verts, tri, triPlane, colPoint, maxTouchDistance, collPoly); +} + +// Converted from cdecl bool CCollision::IsStoredPolyStillValidVerticalLine(CVector const&lineOrigin,float lineDist,CColPoint &colPoint,CStoredCollPoly *collPoly) 0x414D70 +bool CCollision::IsStoredPolyStillValidVerticalLine(CVector const& lineOrigin, float lineDist, CColPoint& colPoint, CStoredCollPoly* collPoly) { + return plugin::CallAndReturn(lineOrigin, lineDist, colPoint, collPoly); +} + +// Converted from cdecl void CCollision::GetBoundingBoxFromTwoSpheres(CColBox *bbox,CColSphere *sphere1,CColSphere *sphere2) 0x415230 +void CCollision::GetBoundingBoxFromTwoSpheres(CColBox* bbox, CColSphere* sphere1, CColSphere* sphere2) { + plugin::Call<0x415230, CColBox*, CColSphere*, CColSphere*>(bbox, sphere1, sphere2); +} + +// Converted from cdecl bool CCollision::IsThisVehicleSittingOnMe(CVehicle *vehicle,CVehicle *vehicleOnMe) 0x4152C0 +bool CCollision::IsThisVehicleSittingOnMe(CVehicle* vehicle, CVehicle* vehicleOnMe) { + return plugin::CallAndReturn(vehicle, vehicleOnMe); +} + +// Converted from cdecl bool CCollision::CheckCameraCollisionPeds(int sectorX,int sectorY,CVector *pos,CVector *dir,float *) 0x415320 +bool CCollision::CheckCameraCollisionPeds(int sectorX, int sectorY, CVector* pos, CVector* dir, float* arg4) { + return plugin::CallAndReturn(sectorX, sectorY, pos, dir, arg4); +} + +// Converted from cdecl bool CCollision::CheckPeds(CVector *pos,CVector *dir,float *) 0x4154A0 +bool CCollision::CheckPeds(CVector* pos, CVector* dir, float* arg2) { + return plugin::CallAndReturn(pos, dir, arg2); +} + +// Converted from cdecl void ResetMadeInvisibleObjects(void) 0x415540 +void ResetMadeInvisibleObjects() { + plugin::Call<0x415540>(); +} + +// Converted from cdecl bool CCollision::SphereCastVsBBox(CColSphere *sphere1,CColSphere *sphere2,CColBox *box) 0x415590 +bool CCollision::SphereCastVsBBox(CColSphere* sphere1, CColSphere* sphere2, CColBox* box) { + return plugin::CallAndReturn(sphere1, sphere2, box); +} + +// Converted from cdecl bool CCollision::RayPolyPOP(CVector *,CVector *,CColTriangle *,CVector *,CVector *) 0x415620 +bool CCollision::RayPolyPOP(CVector* arg0, CVector* arg1, CColTriangle* arg2, CVector* arg3, CVector* arg4) { + return plugin::CallAndReturn(arg0, arg1, arg2, arg3, arg4); +} + +// Converted from cdecl int CCollision::GetPrincipleAxis(CVector *vec) 0x4156D0 +int CCollision::GetPrincipleAxis(CVector* vec) { + return plugin::CallAndReturn(vec); +} + +// Converted from cdecl bool CCollision::PointInPoly(CVector *point,CColTriangle *tri,CVector *,CVector *triVerts) 0x415730 +bool CCollision::PointInPoly(CVector* point, CColTriangle* tri, CVector* arg2, CVector* triVerts) { + return plugin::CallAndReturn(point, tri, arg2, triVerts); +} + +// Converted from cdecl void CCollision::Closest3(CVector *,CVector *) 0x415950 +void CCollision::Closest3(CVector* arg0, CVector* arg1) { + plugin::Call<0x415950, CVector*, CVector*>(arg0, arg1); +} + +// Converted from cdecl float ClosestSquaredDistanceBetweenFiniteLines(CVector *line1Start,CVector *line1End,CVector *line2Start,CVector *line2End,float) 0x415A40 +float ClosestSquaredDistanceBetweenFiniteLines(CVector* line1Start, CVector* line1End, CVector* line2Start, CVector* line2End, float arg4) { + return plugin::CallAndReturn(line1Start, line1End, line2Start, line2End, arg4); +} + +// Converted from cdecl bool CCollision::SphereCastVersusVsPoly(CColSphere *sphere1,CColSphere *sphere2,CColTriangle *tri,CColTrianglePlane *triPlane,CompressedVector *verts) 0x415CF0 +bool CCollision::SphereCastVersusVsPoly(CColSphere* sphere1, CColSphere* sphere2, CColTriangle* tri, CColTrianglePlane* triPlane, CompressedVector* verts) { + return plugin::CallAndReturn(sphere1, sphere2, tri, triPlane, verts); +} + +// Converted from cdecl void CCollision::Init(void) 0x416260 +void CCollision::Init() { + plugin::Call<0x416260>(); +} + +// Converted from cdecl void CCollision::Shutdown(void) 0x4162E0 +void CCollision::Shutdown() { + plugin::Call<0x4162E0>(); +} + +// Converted from cdecl void CCollision::CalculateTrianglePlanes(CCollisionData *colData) 0x416330 +void CCollision::CalculateTrianglePlanes(CCollisionData* colData) { + plugin::Call<0x416330, CCollisionData*>(colData); +} + +// Converted from cdecl void CCollision::RemoveTrianglePlanes(CCollisionData *colData) 0x416400 +void CCollision::RemoveTrianglePlanes(CCollisionData* colData) { + plugin::Call<0x416400, CCollisionData*>(colData); +} + +// Converted from cdecl bool CCollision::ProcessSphereSphere(CColSphere const&sphere1,CColSphere const&sphere2,CColPoint &colPoint,float &maxTouchDistance) 0x416450 +bool CCollision::ProcessSphereSphere(CColSphere const& sphere1, CColSphere const& sphere2, CColPoint& colPoint, float& maxTouchDistance) { + return plugin::CallAndReturn(sphere1, sphere2, colPoint, maxTouchDistance); +} + +// Converted from cdecl bool CCollision::TestSphereTriangle(CColSphere const&sphere,CompressedVector const*verts,CColTriangle const&tri,CColTrianglePlane const&triPlane) 0x4165B0 +bool CCollision::TestSphereTriangle(CColSphere const& sphere, CompressedVector const* verts, CColTriangle const& tri, CColTrianglePlane const& triPlane) { + return plugin::CallAndReturn(sphere, verts, tri, triPlane); +} + +// Converted from cdecl bool CCollision::ProcessSphereTriangle(CColSphere const&sphere,CompressedVector const*verts,CColTriangle const&tri,CColTrianglePlane const&triPlane,CColPoint &colPoint,float &maxTouchDistance) 0x416BA0 +bool CCollision::ProcessSphereTriangle(CColSphere const& sphere, CompressedVector const* verts, CColTriangle const& tri, CColTrianglePlane const& triPlane, CColPoint& colPoint, float& maxTouchDistance) { + return plugin::CallAndReturn(sphere, verts, tri, triPlane, colPoint, maxTouchDistance); +} + +// Converted from cdecl bool CCollision::TestLineSphere(CColLine const&line,CColSphere const&sphere) 0x417470 +bool CCollision::TestLineSphere(CColLine const& line, CColSphere const& sphere) { + return plugin::CallAndReturn(line, sphere); +} + +// Converted from cdecl float CCollision::DistToLine(CVector const*lineStart,CVector const*lineEnd,CVector const*point) 0x417610 +float CCollision::DistToLine(CVector const* lineStart, CVector const* lineEnd, CVector const* point) { + return plugin::CallAndReturn(lineStart, lineEnd, point); +} + +// Converted from cdecl bool CCollision::TestLineOfSight(CColLine const&line,CMatrix const&transform,CColModel &colModel,bool doSeeThroughCheck,bool doShootThroughCheck) 0x417730 +bool CCollision::TestLineOfSight(CColLine const& line, CMatrix const& transform, CColModel& colModel, bool doSeeThroughCheck, bool doShootThroughCheck) { + return plugin::CallAndReturn(line, transform, colModel, doSeeThroughCheck, doShootThroughCheck); +} + +// Converted from cdecl bool CCollision::ProcessLineOfSight(CColLine const&line,CMatrix const&transform,CColModel &colModel,CColPoint &colPoint,float &maxTouchDistance,bool doSeeThroughCheck,bool doShootThroughCheck) 0x417950 +bool CCollision::ProcessLineOfSight(CColLine const& line, CMatrix const& transform, CColModel& colModel, CColPoint& colPoint, float& maxTouchDistance, bool doSeeThroughCheck, bool doShootThroughCheck) { + return plugin::CallAndReturn(line, transform, colModel, colPoint, maxTouchDistance, doSeeThroughCheck, doShootThroughCheck); +} + +// Converted from cdecl bool CCollision::ProcessVerticalLine(CColLine const&line,CMatrix const&transform,CColModel &colModel,CColPoint &colPoint,float &maxTouchDistance,bool doSeeThroughCheck,bool doShootThroughCheck,CStoredCollPoly *collPoly) 0x417BF0 +bool CCollision::ProcessVerticalLine(CColLine const& line, CMatrix const& transform, CColModel& colModel, CColPoint& colPoint, float& maxTouchDistance, bool doSeeThroughCheck, bool doShootThroughCheck, CStoredCollPoly* collPoly) { + return plugin::CallAndReturn(line, transform, colModel, colPoint, maxTouchDistance, doSeeThroughCheck, doShootThroughCheck, collPoly); +} + +// Converted from cdecl bool CCollision::SphereCastVsSphere(CColSphere *,CColSphere *,CColSphere *) 0x417F20 +bool CCollision::SphereCastVsSphere(CColSphere* arg0, CColSphere* arg1, CColSphere* arg2) { + return plugin::CallAndReturn(arg0, arg1, arg2); +} + +// Converted from cdecl void CCollision::ClosestPointOnLine(CVector *,CVector *,CVector *,CVector *) 0x417FD0 +void CCollision::ClosestPointOnLine(CVector* arg0, CVector* arg1, CVector* arg2, CVector* arg3) { + plugin::Call<0x417FD0, CVector*, CVector*, CVector*, CVector*>(arg0, arg1, arg2, arg3); +} + +// Converted from cdecl void CCollision::ClosestPointsOnPoly(CColTriangle *,CVector *,CVector *,CVector *) 0x418100 +void CCollision::ClosestPointsOnPoly(CColTriangle* arg0, CVector* arg1, CVector* arg2, CVector* arg3) { + plugin::Call<0x418100, CColTriangle*, CVector*, CVector*, CVector*>(arg0, arg1, arg2, arg3); +} + +// Converted from cdecl void CCollision::ClosestPointOnPoly(CColTriangle *,CVector *,CVector *) 0x418150 +void CCollision::ClosestPointOnPoly(CColTriangle* arg0, CVector* arg1, CVector* arg2) { + plugin::Call<0x418150, CColTriangle*, CVector*, CVector*>(arg0, arg1, arg2); +} + +// Converted from cdecl bool CCollision::SphereCastVsCaches(CColSphere *sphere,CVector *,int,CColCacheEntry *,int *,CColCacheEntry *) 0x4181B0 +bool CCollision::SphereCastVsCaches(CColSphere* sphere, CVector* arg1, int arg2, CColCacheEntry* arg3, int* arg4, CColCacheEntry* arg5) { + return plugin::CallAndReturn(sphere, arg1, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl void CCollision::CalculateTrianglePlanes(CColModel *colModel) 0x418580 +void CCollision::CalculateTrianglePlanes(CColModel* colModel) { + plugin::Call<0x418580, CColModel*>(colModel); +} + +// Converted from cdecl void CCollision::RemoveTrianglePlanes(CColModel *colModel) 0x4185A0 +void CCollision::RemoveTrianglePlanes(CColModel* colModel) { + plugin::Call<0x4185A0, CColModel*>(colModel); +} + +// Converted from cdecl int CCollision::ProcessColModels(CMatrix const&transform1,CColModel &colModel1,CMatrix const&transform2,CColModel &colModel2,CColPoint *colPoint1,CColPoint *colPoint2,float *maxTouchDistance, bool) 0x4185C0 +int CCollision::ProcessColModels(CMatrix const& transform1, CColModel& colModel1, CMatrix const& transform2, CColModel& colModel2, CColPoint* colPoint1, CColPoint* colPoint2, float* maxTouchDistance, bool arg7) { + return plugin::CallAndReturn(transform1, colModel1, transform2, colModel2, colPoint1, colPoint2, maxTouchDistance, arg7); +} + +// Converted from cdecl bool CCollision::SphereCastVsEntity(CColSphere *sphere1,CColSphere *sphere2,CEntity *entity) 0x419F00 +bool CCollision::SphereCastVsEntity(CColSphere* sphere1, CColSphere* sphere2, CEntity* entity) { + return plugin::CallAndReturn(sphere1, sphere2, entity); +} + +// Converted from cdecl bool CCollision::SphereVsEntity(CColSphere *sphere,CEntity *entity) 0x41A5A0 +bool CCollision::SphereVsEntity(CColSphere* sphere, CEntity* entity) { + return plugin::CallAndReturn(sphere, entity); +} + +// Converted from cdecl bool CCollision::CheckCameraCollisionBuildings(int sectorX,int sectorY,CColBox *,CColSphere *,CColSphere *,CColSphere *) 0x41A820 +bool CCollision::CheckCameraCollisionBuildings(int sectorX, int sectorY, CColBox* arg2, CColSphere* arg3, CColSphere* arg4, CColSphere* arg5) { + return plugin::CallAndReturn(sectorX, sectorY, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl bool CCollision::CheckCameraCollisionVehicles(int sectorX,int sectorY,CColBox *,CColSphere *,CColSphere *,CColSphere *,CVector *) 0x41A990 +bool CCollision::CheckCameraCollisionVehicles(int sectorX, int sectorY, CColBox* arg2, CColSphere* arg3, CColSphere* arg4, CColSphere* arg5, CVector* arg6) { + return plugin::CallAndReturn(sectorX, sectorY, arg2, arg3, arg4, arg5, arg6); +} + +// Converted from cdecl bool CCollision::CheckCameraCollisionObjects(int sectorX,int sectorY,CColBox *,CColSphere *,CColSphere *,CColSphere *) 0x41AB20 +bool CCollision::CheckCameraCollisionObjects(int sectorX, int sectorY, CColBox* arg2, CColSphere* arg3, CColSphere* arg4, CColSphere* arg5) { + return plugin::CallAndReturn(sectorX, sectorY, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl bool CCollision::BuildCacheOfCameraCollision(CColSphere *sphere1,CColSphere *sphere2) 0x41AC40 +bool CCollision::BuildCacheOfCameraCollision(CColSphere* sphere1, CColSphere* sphere2) { + return plugin::CallAndReturn(sphere1, sphere2); +} + +// Converted from cdecl bool CCollision::CameraConeCastVsWorldCollision(CColSphere *sphere1,CColSphere *sphere2,float *,float) 0x41B000 +bool CCollision::CameraConeCastVsWorldCollision(CColSphere* sphere1, CColSphere* sphere2, float* arg2, float arg3) { + return plugin::CallAndReturn(sphere1, sphere2, arg2, arg3); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCollision.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCollision.h new file mode 100644 index 00000000..c1aa12ee --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCollision.h @@ -0,0 +1,84 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CColModel.h" +#include "CColPoint.h" +#include "CStoredCollPoly.h" + +class CEntity; +class CVehicle; +class CColCacheEntry; + +class CCollision { +public: + // dummy function + static void Update(); + static void SortOutCollisionAfterLoad(); + static bool TestSphereSphere(CColSphere const& sphere1, CColSphere const& sphere2); + static bool TestSphereBox(CSphere const& sphere, CBox const& box); + static bool ProcessSphereBox(CColSphere const& sphere, CColBox const& box, CColPoint& colPoint, float& maxTouchDistance); + static bool PointInTriangle(CVector const& point, CVector const* triPoints); + static float DistToLineSqr(CVector const* lineStart, CVector const* lineEnd, CVector const* point); + static float DistToMathematicalLine(CVector const* lineStart, CVector const* lineEnd, CVector const* point); + static float DistToMathematicalLine2D(float lineStartX, float lineStartY, float lineEndX, float lineEndY, float pointX, float pointY); + static float DistAlongLine2D(float lineX, float lineY, float lineDirX, float lineDirY, float pointX, float pointY); + static bool ProcessLineSphere(CColLine const& line, CColSphere const& sphere, CColPoint& colPoint, float& depth); + static bool TestLineBox_DW(CColLine const& line, CBox const& box); + static bool TestLineBox(CColLine const& line, CBox const& box); + static bool TestVerticalLineBox(CColLine const& line, CBox const& box); + static bool ProcessLineBox(CColLine const& line, CColBox const& box, CColPoint& colPoint, float& maxTouchDistance); + static bool Test2DLineAgainst2DLine(float line1StartX, float line1StartY, float line1EndX, float line1EndY, float line2StartX, float line2StartY, float line2EndX, float line2EndY); + static bool TestLineTriangle(CColLine const& line, CompressedVector const* verts, CColTriangle const& tri, CColTrianglePlane const& triPlane); + static bool ProcessLineTriangle(CColLine const& line, CompressedVector const* verts, CColTriangle const& tri, CColTrianglePlane const& triPlane, CColPoint& colPoint, float& maxTouchDistance, CStoredCollPoly* collPoly); + static bool ProcessVerticalLineTriangle(CColLine const& line, CompressedVector const* verts, CColTriangle const& tri, CColTrianglePlane const& triPlane, CColPoint& colPoint, float& maxTouchDistance, CStoredCollPoly* collPoly); + static bool IsStoredPolyStillValidVerticalLine(CVector const& lineOrigin, float lineDist, CColPoint& colPoint, CStoredCollPoly* collPoly); + static void GetBoundingBoxFromTwoSpheres(CColBox* bbox, CColSphere* sphere1, CColSphere* sphere2); + static bool IsThisVehicleSittingOnMe(CVehicle* vehicle, CVehicle* vehicleOnMe); + static bool CheckCameraCollisionPeds(int sectorX, int sectorY, CVector* pos, CVector* dir, float* arg4); + static bool CheckPeds(CVector* pos, CVector* dir, float* arg2); + static bool SphereCastVsBBox(CColSphere* sphere1, CColSphere* sphere2, CColBox* box); + static bool RayPolyPOP(CVector* arg0, CVector* arg1, CColTriangle* arg2, CVector* arg3, CVector* arg4); + static int GetPrincipleAxis(CVector* vec); + static bool PointInPoly(CVector* point, CColTriangle* tri, CVector* arg2, CVector* triVerts); + static void Closest3(CVector* arg0, CVector* arg1); + static bool SphereCastVersusVsPoly(CColSphere* sphere1, CColSphere* sphere2, CColTriangle* tri, CColTrianglePlane* triPlane, CompressedVector* verts); + static void Init(); + static void Shutdown(); + static void CalculateTrianglePlanes(CCollisionData* colData); + static void RemoveTrianglePlanes(CCollisionData* colData); + static bool ProcessSphereSphere(CColSphere const& sphere1, CColSphere const& sphere2, CColPoint& colPoint, float& maxTouchDistance); + static bool TestSphereTriangle(CColSphere const& sphere, CompressedVector const* verts, CColTriangle const& tri, CColTrianglePlane const& triPlane); + static bool ProcessSphereTriangle(CColSphere const& sphere, CompressedVector const* verts, CColTriangle const& tri, CColTrianglePlane const& triPlane, CColPoint& colPoint, float& maxTouchDistance); + static bool TestLineSphere(CColLine const& line, CColSphere const& sphere); + static float DistToLine(CVector const* lineStart, CVector const* lineEnd, CVector const* point); + static bool TestLineOfSight(CColLine const& line, CMatrix const& transform, CColModel& colModel, bool doSeeThroughCheck, bool doShootThroughCheck); + static bool ProcessLineOfSight(CColLine const& line, CMatrix const& transform, CColModel& colModel, CColPoint& colPoint, float& maxTouchDistance, bool doSeeThroughCheck, bool doShootThroughCheck); + static bool ProcessVerticalLine(CColLine const& line, CMatrix const& transform, CColModel& colModel, CColPoint& colPoint, float& maxTouchDistance, bool doSeeThroughCheck, bool doShootThroughCheck, CStoredCollPoly* collPoly); + static bool SphereCastVsSphere(CColSphere* arg0, CColSphere* arg1, CColSphere* arg2); + static void ClosestPointOnLine(CVector* arg0, CVector* arg1, CVector* arg2, CVector* arg3); + static void ClosestPointsOnPoly(CColTriangle* arg0, CVector* arg1, CVector* arg2, CVector* arg3); + static void ClosestPointOnPoly(CColTriangle* arg0, CVector* arg1, CVector* arg2); + static bool SphereCastVsCaches(CColSphere* sphere, CVector* arg1, int arg2, CColCacheEntry* arg3, int* arg4, CColCacheEntry* arg5); + static void CalculateTrianglePlanes(CColModel* colModel); + static void RemoveTrianglePlanes(CColModel* colModel); + // returns number of resulting collision points + static int ProcessColModels(CMatrix const& transform1, CColModel& colModel1, CMatrix const& transform2, CColModel& colModel2, CColPoint* colPoint1, CColPoint* colPoint2, float* maxTouchDistance, bool arg7); + static bool SphereCastVsEntity(CColSphere* sphere1, CColSphere* sphere2, CEntity* entity); + static bool SphereVsEntity(CColSphere* sphere, CEntity* entity); + static bool CheckCameraCollisionBuildings(int sectorX, int sectorY, CColBox* arg2, CColSphere* arg3, CColSphere* arg4, CColSphere* arg5); + static bool CheckCameraCollisionVehicles(int sectorX, int sectorY, CColBox* arg2, CColSphere* arg3, CColSphere* arg4, CColSphere* arg5, CVector* arg6); + static bool CheckCameraCollisionObjects(int sectorX, int sectorY, CColBox* arg2, CColSphere* arg3, CColSphere* arg4, CColSphere* arg5); + static bool BuildCacheOfCameraCollision(CColSphere* sphere1, CColSphere* sphere2); + static bool CameraConeCastVsWorldCollision(CColSphere* sphere1, CColSphere* sphere2, float* arg2, float arg3); +}; + +void CalculateColPointInsideBox(CBox const& box, CVector const& point, CColPoint& colPoint); +bool ProcessDiscCollision(CColPoint& colPoint1, CMatrix const& mat, CColDisk const& disk, CColPoint& colPoint2, bool& arg4, float& arg5, CColPoint& colPoint3); +void ResetMadeInvisibleObjects(); +float ClosestSquaredDistanceBetweenFiniteLines(CVector* line1Start, CVector* line1End, CVector* line2Start, CVector* line2End, float arg4); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCollisionData.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCollisionData.cpp new file mode 100644 index 00000000..753b95f1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCollisionData.cpp @@ -0,0 +1,52 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCollisionData.h" + +// Converted from thiscall void CCollisionData::CCollisionData(void) 0x40F030 +CCollisionData::CCollisionData() { + plugin::CallMethod<0x40F030, CCollisionData *>(this); +} + +// Converted from thiscall void CCollisionData::RemoveCollisionVolumes(void) 0x40F070 +void CCollisionData::RemoveCollisionVolumes() { + plugin::CallMethod<0x40F070, CCollisionData *>(this); +} + +// Converted from thiscall void CCollisionData::Copy(CCollisionData const&) 0x40F120 +void CCollisionData::Copy(CCollisionData const& arg0) { + plugin::CallMethod<0x40F120, CCollisionData *, CCollisionData const&>(this, arg0); +} + +// Converted from thiscall void CCollisionData::CalculateTrianglePlanes(void) 0x40F590 +void CCollisionData::CalculateTrianglePlanes() { + plugin::CallMethod<0x40F590, CCollisionData *>(this); +} + +// Converted from thiscall void CCollisionData::GetTrianglePoint(CVector &outVec,int vertId) 0x40F5E0 +void CCollisionData::GetTrianglePoint(CVector& outVec, int vertId) { + plugin::CallMethod<0x40F5E0, CCollisionData *, CVector&, int>(this, outVec, vertId); +} + +// Converted from thiscall void CCollisionData::GetShadTrianglePoint(CVector &outVec,int vertId) 0x40F640 +void CCollisionData::GetShadTrianglePoint(CVector& outVec, int vertId) { + plugin::CallMethod<0x40F640, CCollisionData *, CVector&, int>(this, outVec, vertId); +} + +// Converted from thiscall void CCollisionData::RemoveTrianglePlanes(void) 0x40F6A0 +void CCollisionData::RemoveTrianglePlanes() { + plugin::CallMethod<0x40F6A0, CCollisionData *>(this); +} + +// Converted from thiscall void CCollisionData::SetLinkPtr(void *link) 0x40F6C0 +void CCollisionData::SetLinkPtr(CLink *link) { + plugin::CallMethod<0x40F6C0, CCollisionData *, CLink *>(this, link); +} + +// Converted from thiscall void* CCollisionData::GetLinkPtr(void) 0x40F6E0 +CLink *CCollisionData::GetLinkPtr() { + return plugin::CallMethodAndReturn *, 0x40F6E0, CCollisionData *>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCollisionData.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCollisionData.h new file mode 100644 index 00000000..48cc6b1a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCollisionData.h @@ -0,0 +1,57 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CColSphere.h" +#include "CColBox.h" +#include "CColLine.h" +#include "CompressedVector.h" +#include "CColTriangle.h" +#include "CColTrianglePlane.h" +#include "CColDisk.h" +#include "CLink.h" + +class CCollisionData { +public: + unsigned short m_nNumSpheres; + unsigned short m_nNumBoxes; + unsigned short m_nNumTriangles; + unsigned char m_nNumLines; + struct { + unsigned char bUsesDisks : 1; + unsigned char bNotEmpty : 1; + unsigned char b03 : 1; + unsigned char bHasFaceGroups : 1; + unsigned char bHasShadow : 1; + } m_nFlags; + CColSphere *m_pSpheres; + CColBox *m_pBoxes; + union { + CColLine *m_pLines; + CColDisk *m_pDisks; + }; + CompressedVector *m_pVertices; + CColTriangle *m_pTriangles; + CColTrianglePlane *m_pTrianglePlanes; + unsigned int m_nNumShadowTriangles; + unsigned int m_nNumShadowVertices; + CompressedVector *m_pShadowVertices; + CColTriangle *m_pShadowTriangles; + + CCollisionData(); + void RemoveCollisionVolumes(); + void Copy(CCollisionData const& arg0); + void CalculateTrianglePlanes(); + void GetTrianglePoint(CVector& outVec, int vertId); + void GetShadTrianglePoint(CVector& outVec, int vertId); + void RemoveTrianglePlanes(); + void SetLinkPtr(CLink *link); + CLink *GetLinkPtr(); +}; + +VALIDATE_SIZE(CCollisionData, 0x30); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColourSet.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CColourSet.cpp new file mode 100644 index 00000000..ccb5f6be --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColourSet.cpp @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CColourSet.h" + +// Converted from thiscall void CColourSet::CColourSet(int weatherId, int timeId) 0x55F4B0 +CColourSet::CColourSet(int weatherId, int timeId) { + plugin::CallMethod<0x55F4B0, CColourSet *, int, int>(this, weatherId, timeId); +} + +// Converted from thiscall void CColourSet::Interpolate(CColourSet* a, CColourSet* b, float factor_a, float factor_b, bool bIgnoreSky) 0x55F870 +void CColourSet::Interpolate(CColourSet* a, CColourSet* b, float factor_a, float factor_b, bool bIgnoreSky) { + plugin::CallMethod<0x55F870, CColourSet *, CColourSet*, CColourSet*, float, float, bool>(this, a, b, factor_a, factor_b, bIgnoreSky); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CColourSet.h b/third-party/plugin-sdk/plugin_sa/game_sa/CColourSet.h new file mode 100644 index 00000000..f4eaad1d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CColourSet.h @@ -0,0 +1,72 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CColourSet { +public: + float m_fAmbientRed; + float m_fAmbientGreen; + float m_fAmbientBlue; + float m_fAmbientRed_Obj; + float m_fAmbientGreen_Obj; + float m_fAmbientBlue_Obj; + float m_fDirectionalRed; + float m_fDirectionalGreen; + float m_fDirectionalBlue; + unsigned short m_nSkyTopRed; + unsigned short m_nSkyTopGreen; + unsigned short m_nSkyTopBlue; + unsigned short m_nSkyBottomRed; + unsigned short m_nSkyBottomGreen; + unsigned short m_nSkyBottomBlue; + unsigned short m_nSunCoreRed; + unsigned short m_nSunCoreGreen; + unsigned short m_nSunCoreBlue; + unsigned short m_nSunCoronaRed; + unsigned short m_nSunCoronaGreen; + unsigned short m_nSunCoronaBlue; + float m_fSunSize; + float m_fSpriteSize; + float m_fSpriteBrightness; + unsigned short m_nShadowStrength; + unsigned short m_nLightShadowStrength; + unsigned short m_nPoleShadowStrength; + float m_fFarClip; + float m_fFogStart; + float m_fLightsOnGroundBrightness; + unsigned short m_nLowCloudsRed; + unsigned short m_nLowCloudsGreen; + unsigned short m_nLowCloudsBlue; + unsigned short m_nFluffyCloudsBottomRed; + unsigned short m_nFluffyCloudsBottomGreen; + unsigned short m_nFluffyCloudsBottomBlue; + float m_fWaterRed; + float m_fWaterGreen; + float m_fWaterBlue; + float m_fWaterAlpha; + float m_fPostFx1Red; + float m_fPostFx1Green; + float m_fPostFx1Blue; + float m_fPostFx1Alpha; + float m_fPostFx2Red; + float m_fPostFx2Green; + float m_fPostFx2Blue; + float m_fPostFx2Alpha; + float m_fCloudAlpha; + unsigned int m_nHighLightMinIntensity; + unsigned short m_nWaterFogAlpha; + float m_fIllumination; + float m_fLodDistMult; + + //funcs + CColourSet(int weatherId, int timeId); + void Interpolate(CColourSet* a, CColourSet* b, float factor_a, float factor_b, bool bIgnoreSky); +}; + +VALIDATE_SIZE(CColourSet, 0xAC); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CControllerConfigManager.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CControllerConfigManager.cpp new file mode 100644 index 00000000..45d2e12b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CControllerConfigManager.cpp @@ -0,0 +1,33 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CControllerConfigManager.h" + +CControllerConfigManager &ControlsManager = *(CControllerConfigManager *)0xB70198; + +void CControllerConfigManager::SaveSettings(int file) +{ + plugin::CallMethod <0x52D200, CControllerConfigManager*, int> ( this, file ); +} + +bool CControllerConfigManager::LoadSettings(int file) +{ + return plugin::CallMethodAndReturn ( this, file ); +} + +// Converted from thiscall bool CControllerConfigManager::GetIsKeyboardKeyDown(RsKeyCodes key) 0x52DDB0 +bool CControllerConfigManager::GetIsKeyboardKeyDown(RsKeyCodes key) { + return plugin::CallMethodAndReturn(this, key); +} + +// Converted from thiscall bool CControllerConfigManager::GetIsKeyboardKeyJustDown(RsKeyCodes key) 0x52E450 +bool CControllerConfigManager::GetIsKeyboardKeyJustDown(RsKeyCodes key) { + return plugin::CallMethodAndReturn(this, key); +} + +void CControllerConfigManager::ResetSettingOrder(e_ControllerAction action) { + plugin::CallMethod<0x52F5F0, CControllerConfigManager*, e_ControllerAction>(this, action); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CControllerConfigManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/CControllerConfigManager.h new file mode 100644 index 00000000..abe0361a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CControllerConfigManager.h @@ -0,0 +1,147 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" + +struct PLUGIN_API DIJOYSTATE2 { + int lX; + int lY; + int lZ; + int lRx; + int lRy; + int lRz; + int rglSlider[2]; + unsigned int rgdwPOV[4]; + unsigned char rgbButtons[128]; + int lVX; + int lVY; + int lVZ; + int lVRx; + int lVRy; + int lVRz; + int rglVSlider[2]; + int lAX; + int lAY; + int lAZ; + int lARx; + int lARy; + int lARz; + int rglASlider[2]; + int lFX; + int lFY; + int lFZ; + int lFRx; + int lFRy; + int lFRz; + int rglFSlider[2]; +}; + +enum PLUGIN_API e_ControllerAction { + CA_PED_FIREWEAPON, + CA_PED_FIREWEAPON_ALT, + CA_PED_CYCLE_WEAPON_RIGHT, + CA_PED_CYCLE_WEAPON_LEFT, + CA_GO_FORWARD, + CA_GO_BACK, + CA_GO_LEFT, + CA_GO_RIGHT, + CA_PED_SNIPER_ZOOM_IN, + CA_PED_SNIPER_ZOOM_OUT, + CA_VEHICLE_ENTER_EXIT, + CA_CAMERA_CHANGE_VIEW_ALL_SITUATIONS, + CA_PED_JUMPING, + CA_PED_SPRINT, + CA_PED_LOOKBEHIND, + CA_PED_DUCK, + CA_PED_ANSWER_PHONE, + CA_SNEAK_ABOUT, + CA_VEHICLE_FIREWEAPON, + CA_VEHICLE_FIREWEAPON_ALT, + CA_VEHICLE_STEERLEFT, + CA_VEHICLE_STEERRIGHT, + CA_VEHICLE_STEERUP, + CA_VEHICLE_STEERDOWN, + CA_VEHICLE_ACCELERATE, + CA_VEHICLE_BRAKE, + CA_VEHICLE_RADIO_STATION_UP, + CA_VEHICLE_RADIO_STATION_DOWN, + CA_VEHICLE_HORN = 29, + CA_TOGGLE_SUBMISSIONS, + CA_VEHICLE_HANDBRAKE, + CA_PED_1RST_PERSON_LOOK_LEFT, + CA_PED_1RST_PERSON_LOOK_RIGHT, + CA_VEHICLE_LOOKLEFT, + CA_VEHICLE_LOOKRIGHT, + CA_VEHICLE_LOOKBEHIND, + CA_VEHICLE_MOUSELOOK, + CA_VEHICLE_TURRETLEFT, + CA_VEHICLE_TURRETRIGHT, + CA_VEHICLE_TURRETUP, + CA_VEHICLE_TURRETDOWN, + CA_PED_CYCLE_TARGET_LEFT, + CA_PED_CYCLE_TARGET_RIGHT, + CA_PED_CENTER_CAMERA_BEHIND_PLAYER, + CA_PED_LOCK_TARGET, + CA_NETWORK_TALK, + CA_CONVERSATION_YES, + CA_CONVERSATION_NO, + CA_GROUP_CONTROL_FWD, + CA_GROUP_CONTROL_BWD, + CA_PED_1RST_PERSON_LOOK_UP, + CA_PED_1RST_PERSON_LOOK_DOWN, + CA_TOGGLE_DPAD = 54, + CA_SWITCH_DEBUG_CAM_ON, + CA_TAKE_SCREEN_SHOT, + CA_SHOW_MOUSE_POINTER_TOGGLE +}; + +enum PLUGIN_API eControllerType { + CONTROLLER_KEYBOARD1 = 0, + CONTROLLER_KEYBOARD2 = 1, + CONTROLLER_MOUSE = 2, + CONTROLLER_PAD = 3, +}; + +class PLUGIN_API CControllerKey { +public: + unsigned int keyCode; + unsigned int priority; +}; + +class PLUGIN_API CControllerAction { +public: + CControllerKey keys[4]; +}; + +class PLUGIN_API CControllerConfigManager { +public: + char field_0; + char field_1; + char field_2; + char field_3; + DIJOYSTATE2 m_prevPadState; + DIJOYSTATE2 m_currPadState; + char m_aszEventNames[59][40]; + char field_B5C[17]; // pad button states + char _pad1[3]; + CControllerAction m_actions[59]; + char field_12D0[16]; + char field_12E0; + char _pad2[3]; + + void SaveSettings(int file); + bool LoadSettings(int file); + bool GetIsKeyboardKeyDown(RsKeyCodes key); + bool GetIsKeyboardKeyJustDown(RsKeyCodes key); + void ResetSettingOrder(e_ControllerAction action); +}; + +VALIDATE_SIZE(CControllerConfigManager, 0x12E4); + +extern PLUGIN_API CControllerConfigManager &ControlsManager; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCopPed.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCopPed.cpp new file mode 100644 index 00000000..f399d71b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCopPed.cpp @@ -0,0 +1,35 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCopPed.h" + +CCopPed::CCopPed(eCopType copType) : CPed(plugin::dummy) { + ((void(__thiscall *)(CCopPed*, eCopType))0x5DDC60)(this, copType); +} + +// Converted from thiscall void CCopPed::SetPartner(CCopPed *partner) 0x5DDE80 +void CCopPed::SetPartner(CCopPed* partner) +{ + ((void (__thiscall *)(CCopPed*, CCopPed*))0x5DDE80)(this, partner); +} + +// Converted from thiscall void CCopPed::AddCriminalToKill(CPed *criminal) 0x5DDEB0 +void CCopPed::AddCriminalToKill(CPed* criminal) +{ + ((void (__thiscall *)(CCopPed*, CPed*))0x5DDEB0)(this, criminal); +} + +// Converted from thiscall void CCopPed::RemoveCriminalToKill(CPed *,int criminalIdx) 0x5DE040 +void CCopPed::RemoveCriminalToKill(CPed* arg0, int criminalIdx) +{ + ((void (__thiscall *)(CCopPed*, CPed*, int))0x5DE040)(this, arg0, criminalIdx); +} + +// Converted from thiscall void CCopPed::ClearCriminalsToKill(void) 0x5DE070 +void CCopPed::ClearCriminalsToKill() +{ + ((void (__thiscall *)(CCopPed*))0x5DE070)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCopPed.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCopPed.h new file mode 100644 index 00000000..85491c5d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCopPed.h @@ -0,0 +1,36 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPed.h" +#include "eCopType.h" + + +class PLUGIN_API CCopPed : public CPed { +public: + char field_79C; + char field_79D; +private: + char padding[2]; +public: + eCopType m_copType; + int field_7A4; + CCopPed *m_pCopPartner; + CPed *m_apCriminalsToKill[5]; + char field_7C0; + + // we can use modelIds as copType too! + CCopPed(eCopType copType); + + void SetPartner(CCopPed* partner); + void AddCriminalToKill(CPed* criminal); + void RemoveCriminalToKill(CPed* likeUnused, int criminalIdx); + void ClearCriminalsToKill(); +}; + +VALIDATE_SIZE(CCopPed, 0x7C4); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCoronas.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCoronas.cpp new file mode 100644 index 00000000..c7b200b8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCoronas.cpp @@ -0,0 +1,69 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCoronas.h" + +unsigned int MAX_CORONAS = 64; +RwTexture **gpCoronaTexture = (RwTexture **)0xC3E000; + +float& CCoronas::SunScreenX = *(float *)0xC3E028; +float& CCoronas::SunScreenY = *(float *)0xC3E02C; +bool& CCoronas::SunBlockedByClouds = *(bool *)0xC3E030; +int& CCoronas::bChangeBrightnessImmediately = *(int *)0xC3E034; +unsigned int& CCoronas::NumCoronas = *(unsigned int *)0xC3E038; +CRegisteredCorona *CCoronas::aCoronas = (CRegisteredCorona *)0xC3E058; +float& CCoronas::LightsMult = *(float *)0x8D4B5C; +unsigned int& CCoronas::MoonSize = *(unsigned int *)0x8D4B60; + +void CCoronas::Init() +{ + ((void (__cdecl *)())0x6FAA70)(); +} + +void CCoronas::Shutdown() +{ + ((void (__cdecl *)())0x6FAB00)(); +} + +void CCoronas::Update() +{ + ((void (__cdecl *)())0x6FADF0)(); +} + +void CCoronas::Render() +{ + ((void (__cdecl *)())0x6FAEC0)(); +} + +void CCoronas::RenderReflections() +{ + ((void (__cdecl *)())0x6FB630)(); +} + +void CCoronas::RenderSunReflection() +{ + ((void (__cdecl *)())0x6FBAA0)(); +} + +void CCoronas::RegisterCorona(unsigned int id, CEntity *attachTo, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, CVector const &posn, float radius, float farClip, RwTexture *texture, eCoronaFlareType flaretype, bool enableReflection, bool checkObstacles, int _param_not_used, float angle, bool longDistance, float nearClip, unsigned char fadeState, float fadeSpeed, bool onlyFromBelow, bool reflectionDelay) +{ + ((void (__cdecl *)(unsigned int, CEntity *, unsigned char, unsigned char, unsigned char, unsigned char, CVector const &, float, float, RwTexture *, eCoronaFlareType, bool, bool, int, float, bool, float, unsigned char, float, bool, bool))0x6FC180)(id, attachTo, red, green, blue, alpha, posn, radius, farClip, texture, flaretype, enableReflection, checkObstacles, _param_not_used, angle, longDistance, nearClip, fadeState, fadeSpeed, onlyFromBelow, reflectionDelay); +} + +void CCoronas::RegisterCorona(unsigned int id, CEntity *attachTo, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, CVector const &posn, float radius, float farClip, eCoronaType coronaType, eCoronaFlareType flaretype, bool enableReflection, bool checkObstacles, int _param_not_used, float angle, bool longDistance, float nearClip, unsigned char fadeState, float fadeSpeed, bool onlyFromBelow, bool reflectionDelay) +{ + ((void (__cdecl *)(unsigned int, CEntity *, unsigned char, unsigned char, unsigned char, unsigned char, CVector const &, float, float, eCoronaType, eCoronaFlareType, bool, bool, int, float, bool, float, unsigned char, float, bool, bool))0x6FC580)(id, attachTo, red, green, blue, alpha, posn, radius, farClip, coronaType, flaretype, enableReflection, checkObstacles, _param_not_used, angle, longDistance, nearClip, fadeState, fadeSpeed, onlyFromBelow, reflectionDelay); +} + +void CCoronas::UpdateCoronaCoors(unsigned int id, CVector const& posn, float farClip, float angle) +{ + ((void (__cdecl *)(unsigned int, CVector const&, float, float))0x6FC4D0)(id, posn, farClip, angle); +} + +void CCoronas::DoSunAndMoon() +{ + ((void (__cdecl *)())0x6FC5A0)(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCoronas.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCoronas.h new file mode 100644 index 00000000..568f2623 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCoronas.h @@ -0,0 +1,59 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CRegisteredCorona.h" + +class PLUGIN_API CCoronas { +public: + // sun 2d position + static float& SunScreenX; + static float& SunScreenY; + // are there any obstacles between sun and camera + static bool& SunBlockedByClouds; + // change coronas brightness immediately + static int& bChangeBrightnessImmediately; + // num of registered coronas in frame + static unsigned int& NumCoronas; + // coronas intensity multiplier + static float& LightsMult; + // this is used to control moon size when you shooting it with sniper + static unsigned int& MoonSize; + // Coronas array. count: MAX_NUM_CORONAS (default: 64) + static CRegisteredCorona *aCoronas; + + // Initialises coronas + static void Init(); + // Terminates coronas + static void Shutdown(); + // Updates coronas + static void Update(); + // Renders coronas + static void Render(); + // Renders coronas reflections on a wet ground + static void RenderReflections(); + // Renders sun reflection on a water + static void RenderSunReflection(); + // Creates corona by texture + static void RegisterCorona(unsigned int id, CEntity *attachTo, unsigned char red, unsigned char green, unsigned char blue, + unsigned char alpha, CVector const &posn, float radius, float farClip, RwTexture *texture, eCoronaFlareType flaretype, + bool enableReflection, bool checkObstacles, int _param_not_used, float angle, bool longDistance, float nearClip, + unsigned char fadeState, float fadeSpeed, bool onlyFromBelow, bool reflectionDelay); + // Creates corona by type + static void RegisterCorona(unsigned int id, CEntity *attachTo, unsigned char red, unsigned char green, unsigned char blue, + unsigned char alpha, CVector const &posn, float radius, float farClip, eCoronaType coronaType, eCoronaFlareType flaretype, + bool enableReflection, bool checkObstacles, int _param_not_used, float angle, bool longDistance, float nearClip, + unsigned char fadeState, float fadeSpeed, bool onlyFromBelow, bool reflectionDelay); + + static void UpdateCoronaCoors(unsigned int id, CVector const& posn, float farClip, float angle); + // Draw sun (Moon went to CClouds since SA) + static void DoSunAndMoon(); +}; + +extern unsigned int MAX_CORONAS; +extern RwTexture **gpCoronaTexture; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCover.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCover.cpp new file mode 100644 index 00000000..d9fb86e1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCover.cpp @@ -0,0 +1,129 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCover.h" + +PLUGIN_SOURCE_FILE + +PLUGIN_VARIABLE unsigned int &CCover::m_NumPoints = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC197A4, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CCoverPoint(&CCover::m_aPoints)[100] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC197C8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CPtrListDoubleLink &CCover::m_ListOfProcessedBuildings = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC1A2B8, 0, 0, 0, 0, 0)); + +int addrof(CCover::AddCoverPoint) = ADDRESS_BY_VERSION(0x698F30, 0, 0, 0, 0, 0); +int gaddrof(CCover::AddCoverPoint) = GLOBAL_ADDRESS_BY_VERSION(0x698F30, 0, 0, 0, 0, 0); + +void CCover::AddCoverPoint(int maxPeds, CEntity *coverEntity, CVector *position, char coverType, unsigned char direction) { + plugin::CallDynGlobal(gaddrof(CCover::AddCoverPoint), maxPeds, coverEntity, position, coverType, direction); +} + +int addrof(CCover::CalculateHorizontalSize) = ADDRESS_BY_VERSION(0x6987F0, 0, 0, 0, 0, 0); +int gaddrof(CCover::CalculateHorizontalSize) = GLOBAL_ADDRESS_BY_VERSION(0x6987F0, 0, 0, 0, 0, 0); + +float CCover::CalculateHorizontalSize(CColTriangle *triangle, CVector *vertPositions) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCover::CalculateHorizontalSize), triangle, vertPositions); +} + +int addrof(CCover::DoLineCheckWithinObject) = ADDRESS_BY_VERSION(0x698990, 0, 0, 0, 0, 0); +int gaddrof(CCover::DoLineCheckWithinObject) = GLOBAL_ADDRESS_BY_VERSION(0x698990, 0, 0, 0, 0, 0); + +char CCover::DoLineCheckWithinObject(CColTriangle *triangle, int a2, CVector *a3, CVector *a4, CVector a5, CVector a6) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCover::DoLineCheckWithinObject), triangle, a2, a3, a4, a5, a6); +} + +int addrof(CCover::DoesCoverPointStillProvideCover) = ADDRESS_BY_VERSION(0x698DD0, 0, 0, 0, 0, 0); +int gaddrof(CCover::DoesCoverPointStillProvideCover) = GLOBAL_ADDRESS_BY_VERSION(0x698DD0, 0, 0, 0, 0, 0); + +bool CCover::DoesCoverPointStillProvideCover(CCoverPoint *point, CVector position) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCover::DoesCoverPointStillProvideCover), point, position); +} + +int addrof(CCover::Find2HighestPoints) = ADDRESS_BY_VERSION(0x6988E0, 0, 0, 0, 0, 0); +int gaddrof(CCover::Find2HighestPoints) = GLOBAL_ADDRESS_BY_VERSION(0x6988E0, 0, 0, 0, 0, 0); + +void CCover::Find2HighestPoints(CColTriangle *triangle, CVector *vertPositions, int &outPoint1, int &outPoint2) { + plugin::CallDynGlobal(gaddrof(CCover::Find2HighestPoints), triangle, vertPositions, outPoint1, outPoint2); +} + +int addrof(CCover::FindAndReserveCoverPoint) = ADDRESS_BY_VERSION(0x6992B0, 0, 0, 0, 0, 0); +int gaddrof(CCover::FindAndReserveCoverPoint) = GLOBAL_ADDRESS_BY_VERSION(0x6992B0, 0, 0, 0, 0, 0); + +CCoverPoint *CCover::FindAndReserveCoverPoint(CPed *ped, CVector &position, bool a3) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCover::FindAndReserveCoverPoint), ped, position, a3); +} + +int addrof(CCover::FindCoordinatesCoverPoint) = ADDRESS_BY_VERSION(0x699570, 0, 0, 0, 0, 0); +int gaddrof(CCover::FindCoordinatesCoverPoint) = GLOBAL_ADDRESS_BY_VERSION(0x699570, 0, 0, 0, 0, 0); + +bool CCover::FindCoordinatesCoverPoint(CCoverPoint *point, CPed *ped, CVector &position, CVector &outCoordinates) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCover::FindCoordinatesCoverPoint), point, ped, position, outCoordinates); +} + +int addrof(CCover::FindCoverPointsForThisBuilding) = ADDRESS_BY_VERSION(0x699120, 0, 0, 0, 0, 0); +int gaddrof(CCover::FindCoverPointsForThisBuilding) = GLOBAL_ADDRESS_BY_VERSION(0x699120, 0, 0, 0, 0, 0); + +void CCover::FindCoverPointsForThisBuilding(CBuilding *building) { + plugin::CallDynGlobal(gaddrof(CCover::FindCoverPointsForThisBuilding), building); +} + +int addrof(CCover::FindDirFromVector) = ADDRESS_BY_VERSION(0x698D40, 0, 0, 0, 0, 0); +int gaddrof(CCover::FindDirFromVector) = GLOBAL_ADDRESS_BY_VERSION(0x698D40, 0, 0, 0, 0, 0); + +unsigned char CCover::FindDirFromVector(float x, float y) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCover::FindDirFromVector), x, y); +} + +int addrof(CCover::FindVectorFromDir) = ADDRESS_BY_VERSION(0x698D60, 0, 0, 0, 0, 0); +int gaddrof(CCover::FindVectorFromDir) = GLOBAL_ADDRESS_BY_VERSION(0x698D60, 0, 0, 0, 0, 0); + +CVector CCover::FindVectorFromDir(unsigned char direction) { + CVector ret_vec; + plugin::CallDynGlobal(gaddrof(CCover::FindVectorFromDir), &ret_vec, direction); + return ret_vec; +} + +int addrof(CCover::FindVectorFromFirstToMissingVertex) = ADDRESS_BY_VERSION(0x698790, 0, 0, 0, 0, 0); +int gaddrof(CCover::FindVectorFromFirstToMissingVertex) = GLOBAL_ADDRESS_BY_VERSION(0x698790, 0, 0, 0, 0, 0); + +CVector CCover::FindVectorFromFirstToMissingVertex(CColTriangle *triangle, int *a3, CVector *vertPositions) { + CVector ret_vec; + plugin::CallDynGlobal(gaddrof(CCover::FindVectorFromFirstToMissingVertex), &ret_vec, triangle, a3, vertPositions); + return ret_vec; +} + +int addrof(CCover::Init) = ADDRESS_BY_VERSION(0x698710, 0, 0, 0, 0, 0); +int gaddrof(CCover::Init) = GLOBAL_ADDRESS_BY_VERSION(0x698710, 0, 0, 0, 0, 0); + +void CCover::Init() { + plugin::CallDynGlobal(gaddrof(CCover::Init)); +} + +int addrof(CCover::RemoveCoverPointIfEntityLost) = ADDRESS_BY_VERSION(0x698DB0, 0, 0, 0, 0, 0); +int gaddrof(CCover::RemoveCoverPointIfEntityLost) = GLOBAL_ADDRESS_BY_VERSION(0x698DB0, 0, 0, 0, 0, 0); + +void CCover::RemoveCoverPointIfEntityLost(CCoverPoint *point) { + plugin::CallDynGlobal(gaddrof(CCover::RemoveCoverPointIfEntityLost), point); +} + +int addrof(CCover::RemoveCoverPointsForThisEntity) = ADDRESS_BY_VERSION(0x698740, 0, 0, 0, 0, 0); +int gaddrof(CCover::RemoveCoverPointsForThisEntity) = GLOBAL_ADDRESS_BY_VERSION(0x698740, 0, 0, 0, 0, 0); + +void CCover::RemoveCoverPointsForThisEntity(CEntity *entity) { + plugin::CallDynGlobal(gaddrof(CCover::RemoveCoverPointsForThisEntity), entity); +} + +int addrof(CCover::ShouldThisBuildingHaveItsCoverPointsCreated) = ADDRESS_BY_VERSION(0x699230, 0, 0, 0, 0, 0); +int gaddrof(CCover::ShouldThisBuildingHaveItsCoverPointsCreated) = GLOBAL_ADDRESS_BY_VERSION(0x699230, 0, 0, 0, 0, 0); + +bool CCover::ShouldThisBuildingHaveItsCoverPointsCreated(CBuilding *building) { + return plugin::CallAndReturnDynGlobal(gaddrof(CCover::ShouldThisBuildingHaveItsCoverPointsCreated), building); +} + +int addrof(CCover::Update) = ADDRESS_BY_VERSION(0x6997E0, 0, 0, 0, 0, 0); +int gaddrof(CCover::Update) = GLOBAL_ADDRESS_BY_VERSION(0x6997E0, 0, 0, 0, 0, 0); + +void CCover::Update() { + plugin::CallDynGlobal(gaddrof(CCover::Update)); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCover.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCover.h new file mode 100644 index 00000000..c2a5dd65 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCover.h @@ -0,0 +1,43 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CEntity.h" +#include "CVector.h" +#include "CColTriangle.h" +#include "CCoverPoint.h" +#include "CBuilding.h" +#include "CPtrListDoubleLink.h" + +class CPed; + +class PLUGIN_API CCover { +public: + SUPPORTED_10US static unsigned int &m_NumPoints; + SUPPORTED_10US static CCoverPoint(&m_aPoints)[100]; // static CCoverPoint m_aPoints[100] + SUPPORTED_10US static CPtrListDoubleLink &m_ListOfProcessedBuildings; + + SUPPORTED_10US static void AddCoverPoint(int maxPeds, CEntity *coverEntity, CVector *position, char coverType, unsigned char direction); + SUPPORTED_10US static float CalculateHorizontalSize(CColTriangle *triangle, CVector *vertPositions); + SUPPORTED_10US static char DoLineCheckWithinObject(CColTriangle *triangle, int a2, CVector *a3, CVector *a4, CVector a5, CVector a6); + SUPPORTED_10US static bool DoesCoverPointStillProvideCover(CCoverPoint *point, CVector position); + SUPPORTED_10US static void Find2HighestPoints(CColTriangle *triangle, CVector *vertPositions, int &outPoint1, int &outPoint2); + SUPPORTED_10US static CCoverPoint *FindAndReserveCoverPoint(CPed *ped, CVector &position, bool a3); + SUPPORTED_10US static bool FindCoordinatesCoverPoint(CCoverPoint *point, CPed *ped, CVector &position, CVector &outCoordinates); + SUPPORTED_10US static void FindCoverPointsForThisBuilding(CBuilding *building); + SUPPORTED_10US static unsigned char FindDirFromVector(float x, float y); + SUPPORTED_10US static CVector FindVectorFromDir(unsigned char direction); + SUPPORTED_10US static CVector FindVectorFromFirstToMissingVertex(CColTriangle *triangle, int *a3, CVector *vertPositions); + SUPPORTED_10US static void Init(); + SUPPORTED_10US static void RemoveCoverPointIfEntityLost(CCoverPoint *point); + SUPPORTED_10US static void RemoveCoverPointsForThisEntity(CEntity *entity); + SUPPORTED_10US static bool ShouldThisBuildingHaveItsCoverPointsCreated(CBuilding *building); + SUPPORTED_10US static void Update(); +}; + +#include "meta/meta.CCover.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCoverPoint.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCoverPoint.cpp new file mode 100644 index 00000000..0899787f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCoverPoint.cpp @@ -0,0 +1,30 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCoverPoint.h" + +PLUGIN_SOURCE_FILE + +int addrof(CCoverPoint::CanAccomodateAnotherPed) = ADDRESS_BY_VERSION(0x698E70, 0, 0, 0, 0, 0); +int gaddrof(CCoverPoint::CanAccomodateAnotherPed) = GLOBAL_ADDRESS_BY_VERSION(0x698E70, 0, 0, 0, 0, 0); + +bool CCoverPoint::CanAccomodateAnotherPed() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CCoverPoint::CanAccomodateAnotherPed), this); +} + +int addrof(CCoverPoint::ReleaseCoverPointForPed) = ADDRESS_BY_VERSION(0x698EF0, 0, 0, 0, 0, 0); +int gaddrof(CCoverPoint::ReleaseCoverPointForPed) = GLOBAL_ADDRESS_BY_VERSION(0x698EF0, 0, 0, 0, 0, 0); + +void CCoverPoint::ReleaseCoverPointForPed(CPed *ped) { + plugin::CallMethodDynGlobal(gaddrof(CCoverPoint::ReleaseCoverPointForPed), this, ped); +} + +int addrof(CCoverPoint::ReserveCoverPointForPed) = ADDRESS_BY_VERSION(0x698EB0, 0, 0, 0, 0, 0); +int gaddrof(CCoverPoint::ReserveCoverPointForPed) = GLOBAL_ADDRESS_BY_VERSION(0x698EB0, 0, 0, 0, 0, 0); + +void CCoverPoint::ReserveCoverPointForPed(CPed *ped) { + plugin::CallMethodDynGlobal(gaddrof(CCoverPoint::ReserveCoverPointForPed), this, ped); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCoverPoint.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCoverPoint.h new file mode 100644 index 00000000..a7d3911e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCoverPoint.h @@ -0,0 +1,34 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class CEntity; +class CPed; + +class PLUGIN_API CCoverPoint { +public: + char m_nMaxPedsInCover; + char m_nCoverType; + char m_nDirection; +private: + char _pad3; +public: + CVector m_vecOffset; + CEntity *m_pCoverEntity; + CPed *m_apCoveredPeds[2]; + + SUPPORTED_10US bool CanAccomodateAnotherPed(); + SUPPORTED_10US void ReleaseCoverPointForPed(CPed *ped); + SUPPORTED_10US void ReserveCoverPointForPed(CPed *ped); +}; + +VALIDATE_SIZE(CCoverPoint, 0x1C); + +#include "meta/meta.CCoverPoint.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCredits.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCredits.cpp new file mode 100644 index 00000000..36095df0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCredits.cpp @@ -0,0 +1,40 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCredits.h" + +int &CCredits::CreditsStartTime = *(int *)0xC6E978; +bool &CCredits::bCreditsGoing = *(bool *)0xC6E97C; + +// Converted from cdecl void CCredits::Render(void) 0x53D5B0 +void CCredits::Render() { + plugin::Call<0x53D5B0>(); +} + +// Converted from cdecl void CCredits::PrintCreditText(float scaleX,float scaleY,ushort *text,uint &position,float currentOffset,bool highlighted) 0x5A8660 +void CCredits::PrintCreditText(float scaleX, float scaleY, unsigned short* text, unsigned int& position, float currentOffset, bool highlighted) { + plugin::Call<0x5A8660, float, float, unsigned short*, unsigned int&, float, bool>(scaleX, scaleY, text, position, currentOffset, highlighted); +} + +// Converted from cdecl void CCredits::PrintCreditSpace(float spaceSize,uint &position) 0x5A87C0 +void CCredits::PrintCreditSpace(float spaceSize, unsigned int& position) { + plugin::Call<0x5A87C0, float, unsigned int&>(spaceSize, position); +} + +// Converted from cdecl void CCredits::RenderCredits(void) 0x5A87F0 +void CCredits::RenderCredits() { + plugin::Call<0x5A87F0>(); +} + +// Converted from cdecl void CCredits::Start(void) 0x7170E0 +void CCredits::Start() { + plugin::Call<0x7170E0>(); +} + +// Converted from cdecl void CCredits::Stop(void) 0x717100 +void CCredits::Stop() { + plugin::Call<0x717100>(); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCredits.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCredits.h new file mode 100644 index 00000000..e56f3f63 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCredits.h @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CCredits { +public: + static int &CreditsStartTime; + static bool &bCreditsGoing; + + static void Render(); + static void PrintCreditText(float scaleX, float scaleY, unsigned short* text, unsigned int& position, float currentOffset, bool highlighted); + static void PrintCreditSpace(float spaceSize, unsigned int& position); + static void RenderCredits(); + static void Start(); + static void Stop(); +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCreepingFire.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCreepingFire.cpp new file mode 100644 index 00000000..14dbf0e6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCreepingFire.cpp @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCreepingFire.h" + +// Converted from cdecl bool CCreepingFire::TryToStartFireAtCoors(CVector posn,signed char numGenerations,bool,bool scriptFire,float zDistance) 0x53A450 +bool CCreepingFire::TryToStartFireAtCoors(CVector posn, signed char numGenerations, _IGNORED_ bool arg2, bool scriptFire, float zDistance) { + return ((bool(__cdecl *)(CVector, signed char, bool, bool, float))0x53A450)(posn, numGenerations, arg2, scriptFire, zDistance); +} + +// Converted from cdecl void CCreepingFire::SetReadyToBurn(void) 0x539CC0 +void CCreepingFire::SetReadyToBurn() { + ((void(__cdecl *)())0x539CC0)(); +} + +// Converted from cdecl void CCreepingFire::Update(void) 0x539CE0 +void CCreepingFire::Update() { + ((void(__cdecl *)())0x539CE0)(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCreepingFire.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCreepingFire.h new file mode 100644 index 00000000..72af2548 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCreepingFire.h @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class PLUGIN_API CCreepingFire { +public: + // 32x32 map areas + static unsigned char(*m_aFireStatus)[32]; // static unsigned char m_aFireStatus[32][32] + + static bool TryToStartFireAtCoors(CVector posn, signed char numGenerations, _IGNORED_ bool arg2, bool scriptFire, float zDistance); + static void SetReadyToBurn(); + static void Update(); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCrimeBeingQd.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCrimeBeingQd.h new file mode 100644 index 00000000..4811d1bb --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCrimeBeingQd.h @@ -0,0 +1,26 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "eCrimeType.h" +#include "CVector.h" + +class PLUGIN_API CCrimeBeingQd { +public: + unsigned int m_nCrimeType; // see eCrimeType + unsigned int m_nCrimeID; + unsigned int m_nTimeOfQing; + CVector m_vecCoors; + bool m_bAlreadyReported; + bool m_bPoliceDontReallyCare; +private: + char _pad1A[2]; +public: +}; + +VALIDATE_SIZE(CCrimeBeingQd, 0x1C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCullZones.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCullZones.cpp new file mode 100644 index 00000000..003f21a9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCullZones.cpp @@ -0,0 +1,89 @@ + /* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCullZones.h" + +int& CCullZones::NumMirrorAttributeZones = *(int*)0xC87AC4; +CCullZoneReflection(&CCullZones::aMirrorAttributeZones)[72] = *(CCullZoneReflection(*)[72])0xC815C0; + +int& CCullZones::NumTunnelAttributeZones = *(int*)0xC87AC0; +CCullZone(&CCullZones::aTunnelAttributeZones)[40] = *(CCullZone(*)[40])0xC81C80; + +int& CCullZones::NumAttributeZones = *(int*)0xC87AC8; +CCullZone(&CCullZones::aAttributeZones)[1300] = *(CCullZone(*)[1300])0xC81F50; + +int& CCullZones::CurrentFlags_Player = *(int*)0xC87AB8; +int& CCullZones::CurrentFlags_Camera = *(int*)0xC87ABC; + +bool& CCullZones::bMilitaryZonesDisabled = *(bool*)0xC87ACD; + +bool CZoneDef::IsPointWithin(const CVector& point) { + return plugin::CallMethodAndReturn(this, point); +} + +void CCullZones::Init() { + plugin::Call<0x72D6B0>(); +} + +void CCullZones::Update() { + plugin::Call<0x72DEC0>(); +} + +void CCullZones::AddCullZone(const CVector& center, float unk1, float fWidthY, float fBottomZ, float fWidthX, float unk2, float fTopZ, ushort flags) { + plugin::Call<0x72DF70>(); +} + +void CCullZones::AddTunnelAttributeZone(const CVector& center, float unk1, float fWidthY, float fBottomZ, float fWidthX, float unk2, float fTopZ, ushort flags) { + plugin::Call<0x72DB50>(); +} + +void CCullZones::AddMirrorAttributeZone(const CVector& center, float unk1, float fWidthY, float fBottomZ, float fWidthX, float unk2, float fTopZ, eZoneAttributes flags, float cm, float vX, float vY, float vZ) { + plugin::Call<0x72DC10>(); +} + +bool CCullZones::InRoomForAudio() { + return plugin::CallAndReturn(); +} + +bool CCullZones::FewerCars() { + return plugin::CallAndReturn(); +} + +bool CCullZones::CamNoRain() { + return plugin::CallAndReturn(); +} + +bool CCullZones::PlayerNoRain() { + return plugin::CallAndReturn(); +} + +bool CCullZones::FewerPeds() { + return plugin::CallAndReturn(); +} + +bool CCullZones::NoPolice() { + return plugin::CallAndReturn(); +} + +bool CCullZones::DoExtraAirResistanceForPlayer() { + return plugin::CallAndReturn(); +} + +eZoneAttributes CCullZones::FindTunnelAttributesForCoors(CVector point) { + return plugin::CallAndReturn(point); +} + +CCullZoneReflection* CCullZones::FindMirrorAttributesForCoors(CVector cameraPosition) { + return plugin::CallAndReturn(cameraPosition); +} + +CCullZone* CCullZones::FindZoneWithStairsAttributeForPlayer() { + return plugin::CallAndReturn(); +} + +eZoneAttributes CCullZones::FindAttributesForCoors(CVector pos) { + return plugin::CallAndReturn(pos); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCullZones.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCullZones.h new file mode 100644 index 00000000..1e069452 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCullZones.h @@ -0,0 +1,113 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVector.h" + +enum eZoneAttributes : unsigned short { + ATTRZONE_NONE = 0x0, + ATTRZONE_CAMCLOSEIN = 0x1, + ATTRZONE_STAIRS = 0x2, + ATTRZONE_1STPERSONS = 0x4, + ATTRZONE_NORAIN = 0x8, + ATTRZONE_NOPOLICE = 0x10, + ATTRZONE_DOINEEDCOLLISION = 0x40, + ATTRZONE_POLICEABANDONCAR = 0x100, + ATTRZONE_INROOMSFORAUDIO = 0x200, + ATTRZONE_INROOMSFEWERPEDS = 0x400, + ATTRZONE_MILITARYZONE = 0x1000, + ATTRZONE_EXTRAAIRRESISTANCE = 0x4000, + ATTRZONE_FEWERCARS = 0x8000, +}; + +struct CZoneDef { + short x1; + short y1; + + short x2; + short y2; + + short x3; + short y3; + + short z1; + short z2; + + void Init(const CVector& center, float _x1, float _y1, float _z1, float _x2, float _y2, float _z2) { + x1 = (short)(center.x - _x1 - _x2); + y1 = (short)(center.y - _y1 - _y2); + + x2 = (short)(_x1 + _x1); + y2 = (short)(_y1 + _y1); + + x3 = (short)(_x2 + _x2); + y3 = (short)(_y2 + _y2); + + z1 = (short)(_z1); + z2 = (short)(_z2); + } + + bool IsPointWithin(const CVector& point); +}; + +VALIDATE_SIZE(CZoneDef, 0x10); + +struct CCullZoneReflection { + CZoneDef zoneDef; + float cm; + char vx; + char vy; + char vz; + unsigned char flags; +}; + +VALIDATE_SIZE(CCullZoneReflection, 0x18); + +struct CCullZone { + CZoneDef zoneDef; + eZoneAttributes flags; +}; + +VALIDATE_SIZE(CCullZone, 0x12); + +class CCullZones { +public: + static int& NumMirrorAttributeZones; + static CCullZoneReflection(&aMirrorAttributeZones)[72]; + + static int& NumTunnelAttributeZones; + static CCullZone(&aTunnelAttributeZones)[40]; + + static int& NumAttributeZones; + static CCullZone(&aAttributeZones)[1300]; + + static int& CurrentFlags_Player; + static int& CurrentFlags_Camera; + + static bool& bMilitaryZonesDisabled; + +public: + static void Init(); + static void Update(); + + static void AddCullZone(const CVector& center, float unk1, float _y1, float _z1, float _x2, float unk2, float _z2, ushort flags); + static void AddTunnelAttributeZone(const CVector& center, float unk1, float _y1, float _z1, float _x2, float unk2, float _z2, ushort flags); + static void AddMirrorAttributeZone(const CVector& center, float unk1, float _y1, float _z1, float _x2, float unk2, float _z2, eZoneAttributes flags, float cm, float vX, float vY, float vZ); + + static bool InRoomForAudio(); + static bool FewerCars(); + static bool CamNoRain(); + static bool PlayerNoRain(); + static bool FewerPeds(); + static bool NoPolice(); + static bool DoExtraAirResistanceForPlayer(); + + static eZoneAttributes FindTunnelAttributesForCoors(CVector point); + static CCullZoneReflection* FindMirrorAttributesForCoors(CVector cameraPosition); + static CCullZone* FindZoneWithStairsAttributeForPlayer(); + static eZoneAttributes FindAttributesForCoors(CVector pos); +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCustomCarEnvMapPipeline.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCustomCarEnvMapPipeline.cpp new file mode 100644 index 00000000..c9971030 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCustomCarEnvMapPipeline.cpp @@ -0,0 +1,147 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CCustomCarEnvMapPipeline.h" + +int& CCustomCarEnvMapPipeline::ms_envMapPluginOffset = *(int*)0x8D12C4; +int& CCustomCarEnvMapPipeline::ms_envMapAtmPluginOffset = *(int*)0x8D12C8; +int& CCustomCarEnvMapPipeline::ms_specularMapPluginOffset = *(int*)0x8D12CC; +CustomEnvMapPipeMaterialData& CCustomCarEnvMapPipeline::fakeEnvMapPipeMatData = *(CustomEnvMapPipeMaterialData*)0xC02D18; +RxPipeline*& CCustomCarEnvMapPipeline::ObjPipeline = *(RxPipeline**)0xC02D24; +CPool *&CCustomCarEnvMapPipeline::m_gEnvMapPipeMatDataPool = *(CPool **)0xC02D28; +CPool *&CCustomCarEnvMapPipeline::m_gEnvMapPipeAtmDataPool = *(CPool **)0xC02D2C; +CPool *&CCustomCarEnvMapPipeline::m_gSpecMapPipeMatDataPool = *(CPool **)0xC02D30; + + +// Converted from cdecl int CCustomCarEnvMapPipeline::CustomPipeInstanceCB(int arg1,int arg2, int (__cdecl *callback)(int, int, int)) 0x5D8490 +int CCustomCarEnvMapPipeline::CustomPipeInstanceCB(int arg1, int arg2, int(__cdecl *callback)(int, int, int)) { + return plugin::CallAndReturn(arg1, arg2, callback); +} + +// Converted from cdecl void CCustomCarEnvMapPipeline::PreRenderUpdate(void) 0x5D8870 +void CCustomCarEnvMapPipeline::PreRenderUpdate() { + plugin::Call<0x5D8870>(); +} + +// Converted from cdecl void* CCustomCarEnvMapPipeline::pluginEnvMatConstructorCB(void *object,int offset) 0x5D8BD0 +void* CCustomCarEnvMapPipeline::pluginEnvMatConstructorCB(void* object, int offset) { + return plugin::CallAndReturn(object, offset); +} + +// Converted from cdecl RwStream* CCustomCarEnvMapPipeline::pluginEnvMatStreamWriteCB(RwStream *stream, int length,void const* arg3 ,int arg4) 0x5D8CD0 +RwStream* CCustomCarEnvMapPipeline::pluginEnvMatStreamWriteCB(RwStream* stream, int length, void const* arg3, int arg4) { + return plugin::CallAndReturn(stream, length, arg3, arg4); +} + +// Converted from cdecl int CCustomCarEnvMapPipeline::pluginEnvMatStreamGetSizeCB(void const* arg0) 0x5D8D10 +int CCustomCarEnvMapPipeline::pluginEnvMatStreamGetSizeCB(void const* arg0) { + return plugin::CallAndReturn(arg0); +} + +// Converted from cdecl void* CCustomCarEnvMapPipeline::pluginEnvAtmConstructorCB(void *object,int offset) 0x5D8D30 +void* CCustomCarEnvMapPipeline::pluginEnvAtmConstructorCB(void* object, int offset) { + return plugin::CallAndReturn(object, offset); +} + +// Converted from cdecl void* CCustomCarEnvMapPipeline::pluginSpecMatConstructorCB(void *object) 0x5D8D40 +void* CCustomCarEnvMapPipeline::pluginSpecMatConstructorCB(void* object) { + return plugin::CallAndReturn(object); +} + +// Converted from cdecl RwStream* CCustomCarEnvMapPipeline::pluginSpecMatStreamWriteCB(RwStream *stream,int length,void const* object) 0x5D8D60 +RwStream* CCustomCarEnvMapPipeline::pluginSpecMatStreamWriteCB(RwStream* stream, int length, void const* object) { + return plugin::CallAndReturn(stream, length, object); +} + +// Converted from cdecl int CCustomCarEnvMapPipeline::pluginSpecMatStreamGetSizeCB(void) 0x5D8DD0 +signed int CCustomCarEnvMapPipeline::pluginSpecMatStreamGetSizeCB() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl CustomEnvMapPipeMaterialData* CCustomCarEnvMapPipeline::DuplicateCustomEnvMapPipeMaterialData(CustomEnvMapPipeMaterialData **arg0) 0x5D9570 +CustomEnvMapPipeMaterialData* CCustomCarEnvMapPipeline::DuplicateCustomEnvMapPipeMaterialData(CustomEnvMapPipeMaterialData** arg0) { + return plugin::CallAndReturn(arg0); +} + +// Converted from cdecl void* CCustomCarEnvMapPipeline::pluginEnvMatDestructorCB(void * object,int offset) 0x5D95B0 +void* CCustomCarEnvMapPipeline::pluginEnvMatDestructorCB(void* object, int offset) { + return plugin::CallAndReturn(object, offset); +} + +// Converted from cdecl void* CCustomCarEnvMapPipeline::pluginEnvMatCopyConstructorCB(void *object_dst,void const*object_src,int offset,int size) 0x5D9600 +void* CCustomCarEnvMapPipeline::pluginEnvMatCopyConstructorCB(void* object_dst, void const* object_src, int offset, int size) { + return plugin::CallAndReturn(object_dst, object_src, offset, size); +} + +// Converted from cdecl RwStream* CCustomCarEnvMapPipeline::pluginEnvMatStreamReadCB(RwStream *stream,int length,void *object,int offset) 0x5D9660 +RwStream* CCustomCarEnvMapPipeline::pluginEnvMatStreamReadCB(RwStream* stream, int length, void* object, int offset) { + return plugin::CallAndReturn(stream, length, object, offset); +} + +// Converted from cdecl void* CCustomCarEnvMapPipeline::pluginEnvAtmDestructorCB(void *object,int offset) 0x5D9730 +void* CCustomCarEnvMapPipeline::pluginEnvAtmDestructorCB(void* object, int offset) { + return plugin::CallAndReturn(object, offset); +} + +// Converted from cdecl void* CCustomCarEnvMapPipeline::pluginEnvAtmCopyConstructorCB(void *object_dst,void const*object_src,int offset,int size) 0x5D9780 +void* CCustomCarEnvMapPipeline::pluginEnvAtmCopyConstructorCB(void* object_dst, void const* object_src, int offset, int size) { + return plugin::CallAndReturn(object_dst, object_src, offset, size); +} + +// Converted from cdecl void* CCustomCarEnvMapPipeline::pluginSpecMatDestructorCB(void *object) 0x5D97D0 +void* CCustomCarEnvMapPipeline::pluginSpecMatDestructorCB(void* object) { + return plugin::CallAndReturn(object); +} + +// Converted from cdecl void* CCustomCarEnvMapPipeline::pluginSpecMatCopyConstructorCB(void *object_dst,void const*object_src) 0x5D9830 +void* CCustomCarEnvMapPipeline::pluginSpecMatCopyConstructorCB(void* object_dst, void const* object_src) { + return plugin::CallAndReturn(object_dst, object_src); +} + +// Converted from cdecl RwStream* CCustomCarEnvMapPipeline::pluginSpecMatStreamReadCB(RwStream *stream,int length,void *object) 0x5D9880 +RwStream* CCustomCarEnvMapPipeline::pluginSpecMatStreamReadCB(RwStream* stream, int length, void* object) { + return plugin::CallAndReturn(stream, length, object); +} + +// Converted from cdecl int CCustomCarEnvMapPipeline::CustomPipeRenderCB(RwResEntry *atomic,void *object,uchar flags1,uint flags2) 0x5D9900 +int CCustomCarEnvMapPipeline::CustomPipeRenderCB(RwResEntry* atomic, void* object, unsigned char flags1, unsigned int flags2) { + return plugin::CallAndReturn(atomic, object, flags1, flags2); +} + +// Converted from cdecl RxPipeline* CCustomCarEnvMapPipeline::CreateCustomOpenGLObjPipe(void) 0x5D9F80 +RxPipeline* CCustomCarEnvMapPipeline::CreateCustomOpenGLObjPipe() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl char CCustomCarEnvMapPipeline::CreatePipe(void) 0x5DA020 +char CCustomCarEnvMapPipeline::CreatePipe() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CCustomCarEnvMapPipeline::DestroyPipe(void) 0x5DA130 +void CCustomCarEnvMapPipeline::DestroyPipe() { + plugin::Call<0x5DA130>(); +} + +// Converted from cdecl void CCustomCarEnvMapPipeline::SetFxEnvTexture(RpMaterial *material,RwTexture *texture) 0x5DA230 +void CCustomCarEnvMapPipeline::SetFxEnvTexture(RpMaterial* material, RwTexture* texture) { + plugin::Call<0x5DA230, RpMaterial*, RwTexture*>(material, texture); +} + +// Converted from cdecl char CCustomCarEnvMapPipeline::RegisterPlugin(void) 0x5DA450 +char CCustomCarEnvMapPipeline::RegisterPlugin() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl RpMaterial* CCustomCarEnvMapPipeline::CustomPipeMaterialSetup(RpMaterial *,void *) 0x5DA560 +RpMaterial* CCustomCarEnvMapPipeline::CustomPipeMaterialSetup(RpMaterial* arg0, void* arg1) { + return plugin::CallAndReturn(arg0, arg1); +} + +// Converted from cdecl RpAtomic* CCustomCarEnvMapPipeline::CustomPipeAtomicSetup(RpAtomic *) 0x5DA610 +RpAtomic* CCustomCarEnvMapPipeline::CustomPipeAtomicSetup(RpAtomic* arg0) { + return plugin::CallAndReturn(arg0); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCustomCarEnvMapPipeline.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCustomCarEnvMapPipeline.h new file mode 100644 index 00000000..9e88f563 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCustomCarEnvMapPipeline.h @@ -0,0 +1,83 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CPool.h" +#include "CObject.h" + +struct CustomEnvMapPipeMaterialData +{ +public: + char scaleX; + char scaleY; + char transSclX; + char transSclY; + char shininess; + short renderFrameCounter; + void *texture; +}; +VALIDATE_SIZE(CustomEnvMapPipeMaterialData, 0xC); + +struct CustomEnvMapPipeAtomicData +{ + float lastTrans; + float posx; + float posy; +}; +VALIDATE_SIZE(CustomEnvMapPipeAtomicData, 0xC); + +struct CustomSpecMapPipeMaterialData +{ + float specularity; + void *texture; +}; +VALIDATE_SIZE(CustomSpecMapPipeMaterialData, 0x8); + +class PLUGIN_API CCustomCarEnvMapPipeline { +public: + + static int CustomPipeInstanceCB(int arg1, int arg2, int(__cdecl *callback)(int, int, int)); + static void PreRenderUpdate(); + static void* pluginEnvMatConstructorCB(void* object, int offset); + static RwStream* pluginEnvMatStreamWriteCB(RwStream* stream, int length, void const* arg3, int arg4); + static int pluginEnvMatStreamGetSizeCB(void const* arg0); + static void* pluginEnvAtmConstructorCB(void* object, int offset); + static void* pluginSpecMatConstructorCB(void* object); + static RwStream* pluginSpecMatStreamWriteCB(RwStream* stream, int length, void const* object); + static signed int pluginSpecMatStreamGetSizeCB(); + static CustomEnvMapPipeMaterialData* DuplicateCustomEnvMapPipeMaterialData(CustomEnvMapPipeMaterialData** arg0); + static void* pluginEnvMatDestructorCB(void* object, int offset); + static void* pluginEnvMatCopyConstructorCB(void* object_dst, void const* object_src, int offset, int size); + static RwStream* pluginEnvMatStreamReadCB(RwStream* stream, int length, void* object, int offset); + static void* pluginEnvAtmDestructorCB(void* object, int offset); + static void* pluginEnvAtmCopyConstructorCB(void* object_dst, void const* object_src, int offset, int size); + static void* pluginSpecMatDestructorCB(void* object); + static void* pluginSpecMatCopyConstructorCB(void* object_dst, void const* object_src); + static RwStream* pluginSpecMatStreamReadCB(RwStream* stream, int length, void* object); + static int CustomPipeRenderCB(RwResEntry* atomic, void* object, unsigned char flags1, unsigned int flags2); + static RxPipeline* CreateCustomOpenGLObjPipe(); + static char CreatePipe(); + static void DestroyPipe(); + static void SetFxEnvTexture(RpMaterial* material, RwTexture* texture); + static char RegisterPlugin(); + static RpMaterial* CustomPipeMaterialSetup(RpMaterial* arg0, void* arg1); + static RpAtomic* CustomPipeAtomicSetup(RpAtomic* arg0); + + + static int& ms_envMapPluginOffset; + static int& ms_envMapAtmPluginOffset; + static int& ms_specularMapPluginOffset; + static CustomEnvMapPipeMaterialData& fakeEnvMapPipeMatData; + static RxPipeline*& ObjPipeline; + static CPool *&m_gEnvMapPipeMatDataPool; + static CPool *&m_gEnvMapPipeAtmDataPool; + static CPool *&m_gSpecMapPipeMatDataPool; + + +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCustomCarPlateMgr.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCustomCarPlateMgr.cpp new file mode 100644 index 00000000..febe7f4d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCustomCarPlateMgr.cpp @@ -0,0 +1,101 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCustomCarPlateMgr.h" + +RwTexture *&CCustomCarPlateMgr::pCharsetTex = *(RwTexture **)0xC3EF5C; +RwTexture **CCustomCarPlateMgr::pPlatebackTexTab = (RwTexture **)0xC3EF60; +void **CCustomCarPlateMgr::pPalette1555Tab = (void **)0xC3EF6C; +unsigned char *&CharsetLockedData = *(unsigned char **)0xC3EF78; +RpMaterial *&CurrentLicensePlateMaterial = *(RpMaterial **)0xC3EF7C; +char &CurrentLicensePlateType = *(char *)0xC3EF80; + +// Converted from cdecl bool CCustomCarPlateMgr::Initialise(void) 0x6FD500 +bool CCustomCarPlateMgr::Initialise() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CCustomCarPlateMgr::GeneratePlateText(char *plateTextBuf,int length) 0x6FD5B0 +bool CCustomCarPlateMgr::GeneratePlateText(char* plateTextBuf, int length) { + return plugin::CallAndReturn(plateTextBuf, length); +} + +// Converted from cdecl bool CCustomCarPlateMgr::Shutdown(void) 0x6FD720 +bool CCustomCarPlateMgr::Shutdown() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl uchar CCustomCarPlateMgr::GetMapRegionPlateDesign(void) 0x6FD7A0 +unsigned char CCustomCarPlateMgr::GetMapRegionPlateDesign() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CCustomCarPlateMgr::LoadPlatecharsetDat(char const*filename,uchar *data,int,int) 0x6FDC00 +bool CCustomCarPlateMgr::LoadPlatecharsetDat(char const* filename, unsigned char* data, int arg2, int arg3) { + return plugin::CallAndReturn(filename, data, arg2, arg3); +} + +// Converted from cdecl bool RenderLicenseplateTextToRaster(char* text, RwRaster* charsetRaster, void *palette, RwRaster* resultRaster) 0x6FDD70 +bool RenderLicenseplateTextToRaster(char* text, RwRaster* charsetRaster, void* palette, RwRaster* resultRaster) { + return plugin::CallAndReturn(text, charsetRaster, palette, resultRaster); +} + +// Converted from cdecl RpMaterial* CCustomCarPlateMgr::SetupMaterialPlatebackTexture(RpMaterial *material,uchar plateType) 0x6FDE50 +RpMaterial* CCustomCarPlateMgr::SetupMaterialPlatebackTexture(RpMaterial* material, unsigned char plateType) { + return plugin::CallAndReturn(material, plateType); +} + +// Converted from cdecl RwTexture* CCustomCarPlateMgr::CreatePlateTexture(char *text,uchar plateType) 0x6FDEA0 +RwTexture* CCustomCarPlateMgr::CreatePlateTexture(char* text, unsigned char plateType) { + return plugin::CallAndReturn(text, plateType); +} + +// Converted from cdecl RpMaterial* MaterialUpgradeSetCarplateTextureCB(RpMaterial *material, void *data) 0x6FDF50 +RpMaterial* MaterialUpgradeSetCarplateTextureCB(RpMaterial* material, void* data) { + return plugin::CallAndReturn(material, data); +} + +// Converted from cdecl RpAtomic* AtomicUpgradeSetCarplateTextureCB(RpAtomic *atomic, void *data) 0x6FDFC0 +RpAtomic* AtomicUpgradeSetCarplateTextureCB(RpAtomic* atomic, _IGNORED_ void* data) { + return plugin::CallAndReturn(atomic, data); +} + +// Converted from cdecl bool CCustomCarPlateMgr::SetupClumpAfterVehicleUpgrade(RpClump *clump,RpMaterial *plateMaterial,uchar plateType) 0x6FDFE0 +bool CCustomCarPlateMgr::SetupClumpAfterVehicleUpgrade(RpClump* clump, RpMaterial* plateMaterial, unsigned char plateType) { + return plugin::CallAndReturn(clump, plateMaterial, plateType); +} + +// Converted from cdecl RpMaterial* CCustomCarPlateMgr::SetupMaterialPlateTexture(RpMaterial *material,char *plateText,uchar plateType) 0x6FE020 +RpMaterial* CCustomCarPlateMgr::SetupMaterialPlateTexture(RpMaterial* material, char* plateText, unsigned char plateType) { + return plugin::CallAndReturn(material, plateText, plateType); +} + +// Converted from cdecl RpMaterial* MaterialSetCarplateTextureCB(RpMaterial *material, void *data) 0x6FE060 +RpMaterial* MaterialSetCarplateTextureCB(RpMaterial* material, void* data) { + return plugin::CallAndReturn(material, data); +} + +// Converted from cdecl RpAtomic* AtomicSetCarplateTextureCB(RpAtomic *atomic, void *data) 0x6FE0D0 +RpAtomic* AtomicSetCarplateTextureCB(RpAtomic* atomic, void* data) { + return plugin::CallAndReturn(atomic, data); +} + +// Converted from cdecl RpMaterial* CCustomCarPlateMgr::SetupClump(RpClump *clump,char *plateText,uchar plateType) 0x6FE0F0 +RpMaterial* CCustomCarPlateMgr::SetupClump(RpClump* clump, char* plateText, unsigned char plateType) { + return plugin::CallAndReturn(clump, plateText, plateType); +} + +#ifdef _MSC_VER +// Converted from cdecl void GetCharacterPositionInCharSet(char c, uint &outColumn, uint &outRow) 0x6FD7C0 +void GetCharacterPositionInCharSet(char c, unsigned int& outColumn, unsigned int& outRow) { + __asm mov al, c + __asm push outRow + __asm push outColumn + __asm mov ecx, 0x6FD7C0 + __asm call ecx + __asm add esp, 8 +} +#endif diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCustomCarPlateMgr.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCustomCarPlateMgr.h new file mode 100644 index 00000000..0c1c7416 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCustomCarPlateMgr.h @@ -0,0 +1,52 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" + +enum eCarPlateType { + CARPLATE_SF = 0, + CARPLATE_LV = 1, + CARPLATE_LA = 2 +}; + +class PLUGIN_API CCustomCarPlateMgr { +public: + static RwTexture *&pCharsetTex; + static RwTexture **pPlatebackTexTab; // static RwTexture *pPlatebackTexTab[3] + static void **pPalette1555Tab; // static void *pPalette1555Tab[3] - unused array + + static bool Initialise(); + static bool GeneratePlateText(char* plateTextBuf, int length); + static bool Shutdown(); + static unsigned char GetMapRegionPlateDesign(); + static bool LoadPlatecharsetDat(char const* filename, unsigned char* data, int arg2, int arg3); + static RpMaterial* SetupMaterialPlatebackTexture(RpMaterial* material, unsigned char plateType); + static RwTexture* CreatePlateTexture(char* text, unsigned char plateType); + static bool SetupClumpAfterVehicleUpgrade(RpClump* clump, RpMaterial* plateMaterial, unsigned char plateType); + static RpMaterial* SetupMaterialPlateTexture(RpMaterial* material, char* plateText, unsigned char plateType); + static RpMaterial* SetupClump(RpClump* clump, char* plateText, unsigned char plateType); +}; + +extern unsigned char *&CharsetLockedData; +extern RpMaterial *&CurrentLicensePlateMaterial; +extern char &CurrentLicensePlateType; + +#ifdef _MSC_VER +void GetCharacterPositionInCharSet(char c, unsigned int& outColumn, unsigned int& outRow); +#endif + +bool RenderLicenseplateTextToRaster(char* text, RwRaster* charsetRaster, void* palette, RwRaster* resultRaster); +// 'data' is a pointer to RpGeometry +RpMaterial* MaterialUpgradeSetCarplateTextureCB(RpMaterial* material, void* data); +// 'data' is unused +RpAtomic* AtomicUpgradeSetCarplateTextureCB(RpAtomic* atomic, _IGNORED_ void* data); +// 'data' is a plate text (char *) +RpMaterial* MaterialSetCarplateTextureCB(RpMaterial* material, void* data); +// 'data' is a plate text (char *) +RpAtomic* AtomicSetCarplateTextureCB(RpAtomic* atomic, void* data); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCutsceneMgr.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCutsceneMgr.cpp new file mode 100644 index 00000000..30f66494 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCutsceneMgr.cpp @@ -0,0 +1,235 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCutsceneMgr.h" + +unsigned int MAX_NUM_CUTSCENE_OBJECTS = 50; +unsigned int MAX_NUM_CUTSCENE_PARTICLE_EFFECTS = 8; +unsigned int MAX_NUM_CUTSCENE_ITEMS_TO_HIDE = 50; +unsigned int MAX_NUM_CUTSCENE_ATTACHMENTS = 50; + +bool &CCutsceneMgr::ms_useCutsceneShadows = *(bool *)0x8AC158; +unsigned int &CCutsceneMgr::numPlayerWeaponsToRestore = *(unsigned int *)0xB5EB58; +unsigned int *CCutsceneMgr::playerWeaponsToRestore_Ammo = (unsigned int *)0xB5EB5C; +unsigned int *CCutsceneMgr::playerWeaponsToRestore_Type = (unsigned int *)0xB5EB90; +char (*CCutsceneMgr::ms_cAppendAnimName)[32] = (char(*)[32])0xB5EBC8; +char (*CCutsceneMgr::ms_cAppendObjectName)[32] = (char(*)[32])0xB5F208; +CDirectory *CCutsceneMgr::ms_pCutsceneDir = (CDirectory *)0xB5F848; +unsigned int &CCutsceneMgr::ms_cutsceneLoadStatus = *(unsigned int *)0xB5F84C; +bool &CCutsceneMgr::ms_animLoaded = *(bool *)0xB5F850; +bool &CCutsceneMgr::ms_running = *(bool *)0xB5F851; +bool &CCutsceneMgr::ms_cutsceneProcessing = *(bool *)0xB5F852; +bool &CCutsceneMgr::ms_useLodMultiplier = *(bool *)0xB5F853; +bool &CCutsceneMgr::ms_wasCutsceneSkipped = *(bool *)0xB5F854; +bool &CCutsceneMgr::ms_hasFileInfo = *(bool *)0xB5F855; +unsigned int &CCutsceneMgr::ms_numAppendObjectNames = *(unsigned int *)0xB5F858; +bool &CCutsceneMgr::restoreEverythingAfterCutscene = *(bool *)0xB5F85C; +float &CCutsceneMgr::m_fPrevCarDensity = *(float *)0xBC1D68; +float &CCutsceneMgr::m_fPrevPedDensity = *(float *)0xBC1D6C; +tCutsceneParticleEffect *CCutsceneMgr::ms_pParticleEffects = (tCutsceneParticleEffect *)0xBC1D70; +tCutsceneRemoval *CCutsceneMgr::ms_crToHideItems = (tCutsceneRemoval *)0xBC20D0; +CEntity **CCutsceneMgr::ms_pHiddenEntities = (CEntity **)0xBC2968; +unsigned int &CCutsceneMgr::ms_numAttachObjectToBones = *(unsigned int *)0xBC2A30; +bool *CCutsceneMgr::ms_bRepeatObject = (bool *)0xBC2A34; +tCutsceneAttachment *CCutsceneMgr::ms_iAttachObjectToBone = (tCutsceneAttachment *)0xBC2A68; +char (*CCutsceneMgr::ms_aUncompressedCutsceneAnims)[32] = (char(*)[32])0xBC2CC0; +int *CCutsceneMgr::ms_iTextDuration = (int *)0xBC2DC0; +int *CCutsceneMgr::ms_iTextStartTime = (int *)0xBC2EC0; +char (*CCutsceneMgr::ms_cTextOutput)[8] = (char(*)[8])0xBC2FC0; +int *CCutsceneMgr::ms_iModelIndex = (int *)0xBC31C0; +char (*CCutsceneMgr::ms_cLoadAnimName)[32] = (char(*)[32])0xBC3288; +char (*CCutsceneMgr::ms_cLoadObjectName)[32] = (char(*)[32])0xBC38C8; +float &CCutsceneMgr::ms_cutsceneTimer = *(float *)0xBC3F08; +char *CCutsceneMgr::ms_cutsceneName = (char *)0xBC3F0C; +CCutsceneObject **CCutsceneMgr::ms_pCutsceneObjects = (CCutsceneObject **)0xBC3F18; +unsigned int &CCutsceneMgr::ms_cutscenePlayStatus = *(unsigned int *)0xBC3FE0; +unsigned int &CCutsceneMgr::ms_numCutsceneObjs = *(unsigned int *)0xBC3FE4; +unsigned int &CCutsceneMgr::ms_numLoadObjectNames = *(unsigned int *)0xBC3FE8; +unsigned int &CCutsceneMgr::ms_numTextOutput = *(unsigned int *)0xBC3FEC; +unsigned int &CCutsceneMgr::ms_currTextOutput = *(unsigned int *)0xBC3FF0; +unsigned int &CCutsceneMgr::ms_numUncompressedCutsceneAnims = *(unsigned int *)0xBC3FF4; +unsigned int &CCutsceneMgr::ms_iNumHiddenEntities = *(unsigned int *)0xBC3FF8; +unsigned int &CCutsceneMgr::ms_iNumParticleEffects = *(unsigned int *)0xBC3FFC; +unsigned int &CCutsceneMgr::m_PrevExtraColour = *(unsigned int *)0xBC4000; +bool &CCutsceneMgr::m_PrevExtraColourOn = *(bool *)0xBC4004; +bool &CCutsceneMgr::dataFileLoaded = *(bool *)0xBC4006; +CAnimBlendAssocGroup &CCutsceneMgr::ms_cutsceneAssociations = *(CAnimBlendAssocGroup *)0xBC4020; +CVector &CCutsceneMgr::ms_cutsceneOffset = *(CVector *)0xBC4034; + +// Converted from cdecl int CCutsceneMgr::AddCutsceneHead(CObject *object,int) 0x5B0380 +int CCutsceneMgr::AddCutsceneHead(CObject* object, int arg1) { + return plugin::CallAndReturn(object, arg1); +} + +// Converted from cdecl void CCutsceneMgr::AppendToNextCutscene(char const*objectName,char const*animName) 0x4D5DB0 +void CCutsceneMgr::AppendToNextCutscene(char const* objectName, char const* animName) { + plugin::Call<0x4D5DB0, char const*, char const*>(objectName, animName); +} + +// Converted from cdecl void CCutsceneMgr::AttachObjectToBone(CObject *attachment,CObject *object,int boneId) 0x5B0450 +void CCutsceneMgr::AttachObjectToBone(CObject* attachment, CObject* object, int boneId) { + plugin::Call<0x5B0450, CObject*, CObject*, int>(attachment, object, boneId); +} + +// Converted from cdecl void CCutsceneMgr::AttachObjectToFrame(CObject *attachment,CEntity *object,char const*frameName) 0x5B0480 +void CCutsceneMgr::AttachObjectToFrame(CObject* attachment, CEntity* object, char const* frameName) { + plugin::Call<0x5B0480, CObject*, CEntity*, char const*>(attachment, object, frameName); +} + +// Converted from cdecl void CCutsceneMgr::AttachObjectToParent(CObject *attachment,CEntity *object) 0x5B04B0 +void CCutsceneMgr::AttachObjectToParent(CObject* attachment, CEntity* object) { + plugin::Call<0x5B04B0, CObject*, CEntity*>(attachment, object); +} + +// Converted from cdecl void CCutsceneMgr::BuildCutscenePlayer(void) 0x4D5E20 +void CCutsceneMgr::BuildCutscenePlayer() { + plugin::Call<0x4D5E20>(); +} + +// Converted from cdecl CCutsceneObject* CCutsceneMgr::CreateCutsceneObject(int modelId) 0x5B02A0 +CCutsceneObject* CCutsceneMgr::CreateCutsceneObject(int modelId) { + return plugin::CallAndReturn(modelId); +} + +// Converted from cdecl void CCutsceneMgr::DeleteCutsceneData(void) 0x4D5ED0 +void CCutsceneMgr::DeleteCutsceneData() { + plugin::Call<0x4D5ED0>(); +} + +// Converted from cdecl void CCutsceneMgr::DeleteCutsceneData_overlay(void) 0x5AFD60 +void CCutsceneMgr::DeleteCutsceneData_overlay() { + plugin::Call<0x5AFD60>(); +} + +// Converted from cdecl void CCutsceneMgr::FinishCutscene(void) 0x5B04D0 +void CCutsceneMgr::FinishCutscene() { + plugin::Call<0x5B04D0>(); +} + +// Converted from cdecl uint CCutsceneMgr::GetCutsceneTimeInMilleseconds(void) 0x5B0550 +long long CCutsceneMgr::GetCutsceneTimeInMilleseconds() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CCutsceneMgr::HasCutsceneFinished(void) 0x5B0570 +bool CCutsceneMgr::HasCutsceneFinished() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CCutsceneMgr::HideRequestedObjects(void) 0x5AFAD0 +void CCutsceneMgr::HideRequestedObjects() { + plugin::Call<0x5AFAD0>(); +} + +// Converted from cdecl void CCutsceneMgr::Initialise(void) 0x4D5A20 +void CCutsceneMgr::Initialise() { + plugin::Call<0x4D5A20>(); +} + +// Converted from cdecl void CCutsceneMgr::IsCutsceneSkipButtonBeingPressed(void) 0x4D5D10 +void CCutsceneMgr::IsCutsceneSkipButtonBeingPressed() { + plugin::Call<0x4D5D10>(); +} + +// Converted from cdecl void CCutsceneMgr::LoadAnimationUncompressed(char const*animName) 0x4D5AB0 +void CCutsceneMgr::LoadAnimationUncompressed(char const* animName) { + plugin::Call<0x4D5AB0, char const*>(animName); +} + +// Converted from cdecl void CCutsceneMgr::LoadCutsceneData(char const*cutsceneName) 0x4D5E80 +void CCutsceneMgr::LoadCutsceneData(char const* cutsceneName) { + plugin::Call<0x4D5E80, char const*>(cutsceneName); +} + +// Converted from cdecl void CCutsceneMgr::LoadCutsceneData_loading(void) 0x5B11C0 +void CCutsceneMgr::LoadCutsceneData_loading() { + plugin::Call<0x5B11C0>(); +} + +// Converted from cdecl void CCutsceneMgr::LoadCutsceneData_overlay(char const*cutsceneName) 0x5B13F0 +void CCutsceneMgr::LoadCutsceneData_overlay(char const* cutsceneName) { + plugin::Call<0x5B13F0, char const*>(cutsceneName); +} + +// Converted from cdecl void CCutsceneMgr::LoadCutsceneData_postload(void) 0x5AFBC0 +void CCutsceneMgr::LoadCutsceneData_postload() { + plugin::Call<0x5AFBC0>(); +} + +// Converted from cdecl void CCutsceneMgr::LoadCutsceneData_preload(void) 0x5B05A0 +void CCutsceneMgr::LoadCutsceneData_preload() { + plugin::Call<0x5B05A0>(); +} + +// Converted from cdecl void CCutsceneMgr::LoadEverythingBecauseCutsceneDeletedAllOfIt(void) 0x4D5C10 +void CCutsceneMgr::LoadEverythingBecauseCutsceneDeletedAllOfIt() { + plugin::Call<0x4D5C10>(); +} + +// Converted from cdecl void CCutsceneMgr::RemoveCutscenePlayer(void) 0x4D5E50 +void CCutsceneMgr::RemoveCutscenePlayer() { + plugin::Call<0x4D5E50>(); +} + +// Converted from cdecl void CCutsceneMgr::RemoveEverythingBecauseCutsceneDoesntFitInMemory(void) 0x4D5AF0 +void CCutsceneMgr::RemoveEverythingBecauseCutsceneDoesntFitInMemory() { + plugin::Call<0x4D5AF0>(); +} + +// Converted from cdecl void CCutsceneMgr::SetCutsceneAnim(char const*animName,CObject *object) 0x5B0390 +void CCutsceneMgr::SetCutsceneAnim(char const* animName, CObject* object) { + plugin::Call<0x5B0390, char const*, CObject*>(animName, object); +} + +// Converted from cdecl void CCutsceneMgr::SetCutsceneAnimToLoop(char const*animName) 0x5B0420 +void CCutsceneMgr::SetCutsceneAnimToLoop(char const* animName) { + plugin::Call<0x5B0420, char const*>(animName); +} + +// Converted from cdecl void CCutsceneMgr::SetHeadAnim(char const*animName,CObject *headObject) 0x5B0440 +void CCutsceneMgr::SetHeadAnim(char const* animName, CObject* headObject) { + plugin::Call<0x5B0440, char const*, CObject*>(animName, headObject); +} + +// Converted from cdecl void CCutsceneMgr::SetupCutsceneToStart(void) 0x5B14D0 +void CCutsceneMgr::SetupCutsceneToStart() { + plugin::Call<0x5B14D0>(); +} + +// Converted from cdecl void CCutsceneMgr::Shutdown(void) 0x4D5E60 +void CCutsceneMgr::Shutdown() { + plugin::Call<0x4D5E60>(); +} + +// Converted from cdecl void CCutsceneMgr::SkipCutscene(void) 0x5B1700 +void CCutsceneMgr::SkipCutscene() { + plugin::Call<0x5B1700>(); +} + +// Converted from cdecl void CCutsceneMgr::StartCutscene(void) 0x5B1460 +void CCutsceneMgr::StartCutscene() { + plugin::Call<0x5B1460>(); +} + +// Converted from cdecl void CCutsceneMgr::Update(void) 0x4D5D00 +void CCutsceneMgr::Update() { + plugin::Call<0x4D5D00>(); +} + +// Converted from cdecl void CCutsceneMgr::Update_overlay(void) 0x5B1720 +void CCutsceneMgr::Update_overlay() { + plugin::Call<0x5B1720>(); +} + +// Converted from cdecl short FindCutsceneAudioTrackId(char const*cutsceneName) 0x5AFA50 +short FindCutsceneAudioTrackId(char const* cutsceneName) { + return plugin::CallAndReturn(cutsceneName); +} + +// Converted from cdecl void UpdateCutsceneObjectBoundingBox(RpClump *clump,int modelId) 0x5B01E0 +void UpdateCutsceneObjectBoundingBox(RpClump* clump, int modelId) { + plugin::Call<0x5B01E0, RpClump*, int>(clump, modelId); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCutsceneMgr.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCutsceneMgr.h new file mode 100644 index 00000000..d5b4c026 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCutsceneMgr.h @@ -0,0 +1,134 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CCutsceneObject.h" +#include "CDirectory.h" +#include "FxSystem_c.h" +#include "CAnimBlendAssocGroup.h" + +struct tCutsceneParticleEffect { + char m_szEffectName[32]; + FxSystem_c *m_pFxSystem; + int m_nStartTime; + int m_nEndTime; + int m_nObjectId; + char m_szObjectPart[32]; + CVector m_vecPosn; + CVector m_vecDirection; + bool m_bPlaying; + bool m_bStopped; +private: + char _pad6A[2]; +public: +}; + +struct tCutsceneAttachment { + int m_nCutscenePedObjectId; + int m_nCutsceneAttachmentObjectId; + int m_nBoneId; +}; + +struct tCutsceneRemoval { + CVector m_vecPosn; + char m_szObjectName[32]; +}; + +extern unsigned int MAX_NUM_CUTSCENE_OBJECTS; // default: 50 +extern unsigned int MAX_NUM_CUTSCENE_PARTICLE_EFFECTS; // default: 8 +extern unsigned int MAX_NUM_CUTSCENE_ITEMS_TO_HIDE; // default: 50 +extern unsigned int MAX_NUM_CUTSCENE_ATTACHMENTS; // default: 50 + +class PLUGIN_API CCutsceneMgr { +public: + static bool &ms_useCutsceneShadows; // always 'true', doesn't change anything + static unsigned int &numPlayerWeaponsToRestore; + static unsigned int *playerWeaponsToRestore_Ammo; // static unsigned int playerWeaponsToRestore_Ammo[13] + static unsigned int *playerWeaponsToRestore_Type; // static unsigned int playerWeaponsToRestore_Type[13] + static char (*ms_cAppendAnimName)[32]; // static char ms_cAppendAnimName[50][32] + static char (*ms_cAppendObjectName)[32]; // static char ms_cAppendObjectName[50][32] + static CDirectory *ms_pCutsceneDir; + static unsigned int &ms_cutsceneLoadStatus; + static bool &ms_animLoaded; + static bool &ms_running; + static bool &ms_cutsceneProcessing; + static bool &ms_useLodMultiplier; + static bool &ms_wasCutsceneSkipped; + static bool &ms_hasFileInfo; + static unsigned int &ms_numAppendObjectNames; + static bool &restoreEverythingAfterCutscene; + static float &m_fPrevCarDensity; + static float &m_fPrevPedDensity; + static tCutsceneParticleEffect *ms_pParticleEffects; // static tCutsceneParticleEffect ms_pParticleEffects[8] + static tCutsceneRemoval *ms_crToHideItems; // static tCutsceneRemoval ms_crToHideItems[50] + static CEntity **ms_pHiddenEntities; // static CEntity *ms_pHiddenEntities[50] + static unsigned int &ms_numAttachObjectToBones; + static bool *ms_bRepeatObject; // static bool ms_bRepeatObject[50] + static tCutsceneAttachment *ms_iAttachObjectToBone; // static tCutsceneAttachment ms_iAttachObjectToBone[] + static char (*ms_aUncompressedCutsceneAnims)[32]; // static char ms_aUncompressedCutsceneAnims[8][32] + static int *ms_iTextDuration; // static int ms_iTextDuration[64] + static int *ms_iTextStartTime; // static int ms_iTextStartTime[64] + static char (*ms_cTextOutput)[8]; // static char ms_cTextOutput[40][8] + static int *ms_iModelIndex; // static int ms_iModelIndex[50] + static char (*ms_cLoadAnimName)[32]; // static char ms_cLoadAnimName[50][32] + static char (*ms_cLoadObjectName)[32]; // static char ms_cLoadObjectName[50][32] + static float &ms_cutsceneTimer; + static char *ms_cutsceneName; // static char ms_cutsceneName[8] + static CCutsceneObject **ms_pCutsceneObjects; // static CCutsceneObject *ms_pCutsceneObject[50] + static unsigned int &ms_cutscenePlayStatus; + static unsigned int &ms_numCutsceneObjs; + static unsigned int &ms_numLoadObjectNames; + static unsigned int &ms_numTextOutput; + static unsigned int &ms_currTextOutput; + static unsigned int &ms_numUncompressedCutsceneAnims; + static unsigned int &ms_iNumHiddenEntities; + static unsigned int &ms_iNumParticleEffects; + static unsigned int &m_PrevExtraColour; + static bool &m_PrevExtraColourOn; + static bool &dataFileLoaded; + static CAnimBlendAssocGroup &ms_cutsceneAssociations; + static CVector &ms_cutsceneOffset; + + // dummy function + static int AddCutsceneHead(CObject* object, int arg1); + static void AppendToNextCutscene(char const* objectName, char const* animName); + static void AttachObjectToBone(CObject* attachment, CObject* object, int boneId); + static void AttachObjectToFrame(CObject* attachment, CEntity* object, char const* frameName); + static void AttachObjectToParent(CObject* attachment, CEntity* object); + static void BuildCutscenePlayer(); + static CCutsceneObject* CreateCutsceneObject(int modelId); + static void DeleteCutsceneData(); + static void DeleteCutsceneData_overlay(); + static void FinishCutscene(); + static long long GetCutsceneTimeInMilleseconds(); + static bool HasCutsceneFinished(); + static void HideRequestedObjects(); + static void Initialise(); + static void IsCutsceneSkipButtonBeingPressed(); + static void LoadAnimationUncompressed(char const* animName); + static void LoadCutsceneData(char const* cutsceneName); + static void LoadCutsceneData_loading(); + static void LoadCutsceneData_overlay(char const* cutsceneName); + static void LoadCutsceneData_postload(); + static void LoadCutsceneData_preload(); + static void LoadEverythingBecauseCutsceneDeletedAllOfIt(); + static void RemoveCutscenePlayer(); + static void RemoveEverythingBecauseCutsceneDoesntFitInMemory(); + static void SetCutsceneAnim(char const* animName, CObject* object); + static void SetCutsceneAnimToLoop(char const* animName); + // dummy function + static void SetHeadAnim(char const* animName, CObject* headObject); + static void SetupCutsceneToStart(); + static void Shutdown(); + static void SkipCutscene(); + static void StartCutscene(); + static void Update(); + static void Update_overlay(); +}; + +short FindCutsceneAudioTrackId(char const* cutsceneName); +void UpdateCutsceneObjectBoundingBox(RpClump* clump, int modelId); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCutsceneObject.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CCutsceneObject.cpp new file mode 100644 index 00000000..8169029d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCutsceneObject.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CCutsceneObject.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CCutsceneObject.h b/third-party/plugin-sdk/plugin_sa/game_sa/CCutsceneObject.h new file mode 100644 index 00000000..3b01adf2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CCutsceneObject.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CObject.h" + +class PLUGIN_API CCutsceneObject : public CObject { +public: + union { + RwFrame *m_pAttachTo; + unsigned int m_nAttachBone; // this one if m_pAttachmentObject != 0 + }; + CObject *m_pAttachmentObject; + CVector m_vWorldPosition; + CVector m_vForce; +}; + +VALIDATE_SIZE(CCutsceneObject, 0x19C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDamageAtomicModelInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CDamageAtomicModelInfo.cpp new file mode 100644 index 00000000..73f7f201 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDamageAtomicModelInfo.cpp @@ -0,0 +1,9 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CDamageAtomicModelInfo.h" + +bool& CDamageAtomicModelInfo::ms_bCreateDamagedVersion = *(bool*)0xA9B0B0; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDamageAtomicModelInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDamageAtomicModelInfo.h new file mode 100644 index 00000000..5c2a00d3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDamageAtomicModelInfo.h @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CAtomicModelInfo.h" + +class CDamageAtomicModelInfo : public CAtomicModelInfo { +public: + RpAtomic* m_pDamagedAtomic; + static bool& ms_bCreateDamagedVersion; + +}; +VALIDATE_SIZE(CDamageAtomicModelInfo, 0x24); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDamageManager.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CDamageManager.cpp new file mode 100644 index 00000000..4f22b207 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDamageManager.cpp @@ -0,0 +1,163 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CDamageManager.h" + +// Converted from thiscall bool CDamageManager::GetComponentGroup(tComponent component, tComponentGroup* group, uchar *damageCompId) 0x6C2040 +bool CDamageManager::GetComponentGroup(tComponent component, tComponentGroup* group, unsigned char* damageCompId) +{ + return ((bool(__thiscall *)(CDamageManager*, tComponent, tComponentGroup*, unsigned char*))0x6C2040)(this, component, group, damageCompId); +} + +// Converted from thiscall void CDamageManager::ResetDamageStatus(void) 0x6C20E0 +void CDamageManager::ResetDamageStatus() +{ + ((void(__thiscall *)(CDamageManager*))0x6C20E0)(this); +} + +// Converted from thiscall void CDamageManager::SetLightStatus(eLights light, uint status) 0x6C2100 +void CDamageManager::SetLightStatus(eLights light, unsigned int status) +{ + ((void(__thiscall *)(CDamageManager*, eLights, unsigned int))0x6C2100)(this, light, status); +} + +// Converted from thiscall uint CDamageManager::GetLightStatus(eLights light) 0x6C2130 +unsigned int CDamageManager::GetLightStatus(eLights light) +{ + return ((unsigned int(__thiscall *)(CDamageManager*, eLights))0x6C2130)(this, light); +} + +// Converted from thiscall void CDamageManager::SetPanelStatus(int panel, uint status) 0x6C2150 +void CDamageManager::SetPanelStatus(int panel, unsigned int status) +{ + ((void(__thiscall *)(CDamageManager*, int, unsigned int))0x6C2150)(this, panel, status); +} + +// Converted from thiscall uint CDamageManager::GetPanelStatus(int) 0x6C2180 +unsigned int CDamageManager::GetPanelStatus(int arg0) +{ + return ((unsigned int(__thiscall *)(CDamageManager*, int))0x6C2180)(this, arg0); +} + +// Converted from thiscall void CDamageManager::SetWheelStatus(int wheel, uint status) 0x6C21A0 +void CDamageManager::SetWheelStatus(int wheel, unsigned int status) +{ + ((void(__thiscall *)(CDamageManager*, int, unsigned int))0x6C21A0)(this, wheel, status); +} + +// Converted from thiscall uint CDamageManager::GetWheelStatus(int wheel) 0x6C21B0 +unsigned int CDamageManager::GetWheelStatus(int wheel) +{ + return ((unsigned int(__thiscall *)(CDamageManager*, int))0x6C21B0)(this, wheel); +} + +// Converted from thiscall void CDamageManager::SetDoorStatus(eDoors door, uint status) 0x6C21C0 +void CDamageManager::SetDoorStatus(eDoors door, unsigned int status) +{ + ((void(__thiscall *)(CDamageManager*, eDoors, unsigned int))0x6C21C0)(this, door, status); +} + +// Converted from thiscall void CDamageManager::SetDoorStatus(int doorNodeIndex, uint status) 0x6C21E0 +void CDamageManager::SetDoorStatus(int doorNodeIndex, unsigned int status) +{ + ((void(__thiscall *)(CDamageManager*, int, unsigned int))0x6C21E0)(this, doorNodeIndex, status); +} + +// Converted from thiscall uint CDamageManager::GetDoorStatus(int doorNodeIndex) 0x6C2230 +unsigned int CDamageManager::GetDoorStatus(int doorNodeIndex) +{ + return ((unsigned int(__thiscall *)(CDamageManager*, int))0x6C2250)(this, doorNodeIndex); +} + +// Converted from thiscall uint CDamageManager::GetDoorStatus(eDoors door) 0x6C2250 +unsigned int CDamageManager::GetDoorStatus(eDoors door) +{ + return ((unsigned int(__thiscall *)(CDamageManager*, eDoors))0x6C2230)(this, door); +} + +// Converted from thiscall void CDamageManager::SetEngineStatus(uint status) 0x6C22A0 +void CDamageManager::SetEngineStatus(unsigned int status) +{ + ((void(__thiscall *)(CDamageManager*, unsigned int))0x6C22A0)(this, status); +} + +// Converted from thiscall uint CDamageManager::GetEngineStatus(void) 0x6C22C0 +unsigned int CDamageManager::GetEngineStatus() +{ + return ((unsigned int(__thiscall *)(CDamageManager*))0x6C22C0)(this); +} + +// Converted from thiscall void CDamageManager::SetAeroplaneCompStatus(int component, uint status) 0x6C22D0 +void CDamageManager::SetAeroplaneCompStatus(int component, unsigned int status) +{ + ((void(__thiscall *)(CDamageManager*, int, unsigned int))0x6C22D0)(this, component, status); +} + +// Converted from thiscall uint CDamageManager::GetAeroplaneCompStatus(int component) 0x6C2300 +unsigned int CDamageManager::GetAeroplaneCompStatus(int component) +{ + return ((unsigned int(__thiscall *)(CDamageManager*, int))0x6C2300)(this, component); +} + +// Converted from thiscall bool CDamageManager::ProgressDoorDamage(uchar damageCompId, CAutomobile *car) 0x6C2320 +bool CDamageManager::ProgressDoorDamage(unsigned char damageCompId, CAutomobile* car) +{ + return ((bool(__thiscall *)(CDamageManager*, unsigned char, CAutomobile*))0x6C2320)(this, damageCompId, car); +} + +// Converted from thiscall bool CDamageManager::ProgressEngineDamage(float) 0x6C23B0 +bool CDamageManager::ProgressEngineDamage(float arg0) +{ + return ((bool(__thiscall *)(CDamageManager*, float))0x6C23B0)(this, arg0); +} + +// Converted from thiscall bool CDamageManager::ProgressPanelDamage(uchar panel) 0x6C23C0 +bool CDamageManager::ProgressPanelDamage(unsigned char panel) +{ + return ((bool(__thiscall *)(CDamageManager*, unsigned char))0x6C23C0)(this, panel); +} + +// Converted from thiscall bool CDamageManager::ProgressWheelDamage(uchar wheel) 0x6C2440 +bool CDamageManager::ProgressWheelDamage(unsigned char wheel) +{ + return ((bool(__thiscall *)(CDamageManager*, unsigned char))0x6C2440)(this, wheel); +} + +// Converted from thiscall bool CDamageManager::ProgressAeroplaneDamage(uchar component) 0x6C2460 +bool CDamageManager::ProgressAeroplaneDamage(unsigned char component) +{ + return ((bool(__thiscall *)(CDamageManager*, unsigned char))0x6C2460)(this, component); +} + +// Converted from thiscall bool CDamageManager::ApplyDamage(CAutomobile *car, tComponent component, float intensity, float) 0x6C24B0 +bool CDamageManager::ApplyDamage(CAutomobile* car, tComponent component, float intensity, float arg3) +{ + return ((bool(__thiscall *)(CDamageManager*, CAutomobile*, tComponent, float, float))0x6C24B0)(this, car, component, intensity, arg3); +} + +// Converted from thiscall void CDamageManager::FuckCarCompletely(bool skipWheels) 0x6C25D0 +void CDamageManager::FuckCarCompletely(bool skipWheels) +{ + ((void(__thiscall *)(CDamageManager*, bool))0x6C25D0)(this, skipWheels); +} + +// Converted from thiscall int CDamageManager::GetCarNodeIndexFromPanel(ePanels panel) 0x6C26A0 +int CDamageManager::GetCarNodeIndexFromPanel(ePanels panel) +{ + return ((int(__thiscall *)(CDamageManager*, ePanels))0x6C26A0)(this, panel); +} + +// Converted from thiscall int CDamageManager::GetCarNodeIndexFromDoor(eDoors door) 0x6C26F0 +int CDamageManager::GetCarNodeIndexFromDoor(eDoors door) +{ + return ((int(__thiscall *)(CDamageManager*, eDoors))0x6C26F0)(this, door); +} + +// Converted from thiscall void CDamageManager::Reset(void) 0x6A04E0 +void CDamageManager::Reset() +{ + ((void(__thiscall *)(CDamageManager*))0x6A04E0)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDamageManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDamageManager.h new file mode 100644 index 00000000..7a0ad9f1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDamageManager.h @@ -0,0 +1,157 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class CAutomobile; + +enum PLUGIN_API eDamageState { + DAMSTATE_OK = 0, + DAMSTATE_OPENED = 1, + DAMSTATE_DAMAGED = 2, + DAMSTATE_OPENED_DAMAGED = 3, + DAMSTATE_NOTPRESENT = 4 +}; + +enum PLUGIN_API tComponent { + COMPONENT_WHEEL_LF = 1, + COMPONENT_WHEEL_RF = 2, + COMPONENT_WHEEL_LR = 3, + COMPONENT_WHEEL_RR = 4, + COMPONENT_BONNET = 5, + COMPONENT_BOOT = 6, + COMPONENT_DOOR_LF = 7, + COMPONENT_DOOR_RF = 8, + COMPONENT_DOOR_LR = 9, + COMPONENT_DOOR_RR = 10, + COMPONENT_WING_LF = 11, + COMPONENT_WING_RF = 12, + COMPONENT_WING_LR = 13, + COMPONENT_WING_RR = 14, + COMPONENT_WINDSCREEN = 15, + COMPONENT_BUMP_FRONT = 16, + COMPONENT_BUMP_REAR = 17 +}; + +enum PLUGIN_API tComponentGroup { + COMPGROUP_PANEL = 0, + COMPGROUP_WHEEL = 1, + COMPGROUP_DOOR = 2, + COMPGROUP_BONNET = 3, + COMPGROUP_BOOT = 4, + COMPGROUP_LIGHT = 5, + COMPGROUP_NA = 6 +}; + +enum PLUGIN_API eWheels { + WHEEL_FRONT_LEFT = 0, + WHEEL_REAR_LEFT = 1, + WHEEL_FRONT_RIGHT = 2, + WHEEL_REAR_RIGHT = 3 +}; + +enum PLUGIN_API ePanels { + WING_FRONT_LEFT = 0, + WING_FRONT_RIGHT = 1, + WINDSCREEN = 4, + BUMP_FRONT = 5, + BUMP_REAR = 6 +}; + +enum PLUGIN_API eDoors { + BONNET = 0, + BOOT = 1, + DOOR_FRONT_LEFT = 2, + DOOR_FRONT_RIGHT = 3, + DOOR_REAR_LEFT = 4, + DOOR_REAR_RIGHT = 5 +}; + +enum PLUGIN_API eLights { + LIGHT_FRONT_LEFT = 0, + LIGHT_FRONT_RIGHT = 1, + LIGHT_REAR_RIGHT = 2, + LIGHT_REAR_LEFT = 3 +}; + +class PLUGIN_API CDamageManager { +public: + float m_fWheelDamageEffect; + unsigned char m_nEngineStatus; + union { + unsigned char m_anWheelsStatus[4]; + struct { + unsigned char m_nRightRearWheelsStatus; + unsigned char m_nRightFrontWheelsStatus; + unsigned char m_nLeftRearWheelsStatus; + unsigned char m_nLeftFrontWheelsStatus; + }; + }; + union { + unsigned char m_anDoorsStatus[6]; + struct { + unsigned char m_nBonnetStatus; + unsigned char m_nBootStatus; + unsigned char m_nLeftFrontDoorStatus; + unsigned char m_nRightFrontDoorStatus; + unsigned char m_nLeftRearDoorStatus; + unsigned char m_nRightRearDoorStatus; + }; + }; + union { + unsigned int m_nLightsStatus; + struct { + unsigned int m_nLeftFrontLightStatus : 2; + unsigned int m_nRightFrontLightStatus : 2; + unsigned int m_nRightRearLightStatus : 2; + unsigned int m_nLeftRearLightStatus : 2; + }; + }; + unsigned int m_nPanelsStatus; + + //funcs + + // damageCompId - eLights/ePanel/... id for this component + bool GetComponentGroup(tComponent component, tComponentGroup* group, unsigned char* damageCompId); + void ResetDamageStatus(); + void SetLightStatus(eLights light, unsigned int status); + unsigned int GetLightStatus(eLights light); + void SetPanelStatus(int panel, unsigned int status); + unsigned int GetPanelStatus(int arg0); + void SetWheelStatus(int wheel, unsigned int status); + unsigned int GetWheelStatus(int wheel); + void SetDoorStatus(eDoors door, unsigned int status); + void SetDoorStatus(int doorNodeIndex, unsigned int status); + unsigned int GetDoorStatus(int doorNodeIndex); + unsigned int GetDoorStatus(eDoors door); + // Status is a value between 0-250 + void SetEngineStatus(unsigned int status); + // Status is a value between 0-250 + unsigned int GetEngineStatus(); + void SetAeroplaneCompStatus(int component, unsigned int status); + unsigned int GetAeroplaneCompStatus(int component); + // damageCompId - eLights/ePanel/... id for this component + bool ProgressDoorDamage(unsigned char damageCompId, CAutomobile* car); + // Empty function + bool ProgressEngineDamage(float arg0); + // Set next level of damage to panel + bool ProgressPanelDamage(unsigned char panel); + // Set next level of damage to panel + bool ProgressWheelDamage(unsigned char wheel); + // Set next level of damage to aeroplane component + bool ProgressAeroplaneDamage(unsigned char component); + bool ApplyDamage(CAutomobile* car, tComponent component, float intensity, float arg3); + void FuckCarCompletely(bool skipWheels); + // returns -1 if no node for this panel + int GetCarNodeIndexFromPanel(ePanels panel); + // returns -1 if no node for this door + int GetCarNodeIndexFromDoor(eDoors door); + void Reset(); +}; + +VALIDATE_SIZE(CDamageManager, 0x18); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDarkel.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CDarkel.cpp new file mode 100644 index 00000000..565fb04a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDarkel.cpp @@ -0,0 +1,107 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CDarkel.h" + +short** CDarkel::RegisteredKills = (short**)0x969A50; +char* CDarkel::pStartMessage = (char*)0x96A6D0; +unsigned int& CDarkel::AmmoInterruptedWeapon = *(unsigned int*)0x96A6D4; +eWeaponType& CDarkel::InterruptedWeaponType = *(eWeaponType*)0x96A6D8; +eWeaponType& CDarkel::InterruptedWeaponTypeSelected = *(eWeaponType*)0x96A6DC; +unsigned int& CDarkel::TimeOfFrenzyStart = *(unsigned int*)0x96A6E0; +int* CDarkel::ModelToKill = (int*)0x96A6F0; +eWeaponType& CDarkel::WeaponType = *(eWeaponType*)0x96A700; +short& CDarkel::Status = *(short*)0x96A704; + +bool CDarkel::FrenzyOnGoing() +{ + return ((bool (__cdecl *)())0x43D1F0)(); +} + +// Converted from cdecl void CDarkel::Init(void) 0x43CEB0 +void CDarkel::Init() { + plugin::Call<0x43CEB0>(); +} + +// Converted from cdecl void CDarkel::DrawMessages(void) 0x43CEC0 +void CDarkel::DrawMessages() { + plugin::Call<0x43CEC0>(); +} + +// Converted from cdecl short CDarkel::ReadStatus(void) 0x43D1E0 +short CDarkel::ReadStatus() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CDarkel::RegisterKillNotByPlayer(CPed const*pKilledPed) 0x43D210 +void CDarkel::RegisterKillNotByPlayer(CPed const* pKilledPed) { + plugin::Call<0x43D210, CPed const*>(pKilledPed); +} + +// Converted from cdecl bool CDarkel::ThisPedShouldBeKilledForFrenzy(CPed const*pPed) 0x43D2F0 +bool CDarkel::ThisPedShouldBeKilledForFrenzy(CPed const* pPed) { + return plugin::CallAndReturn(pPed); +} + +// Converted from cdecl bool CDarkel::ThisVehicleShouldBeKilledForFrenzy(CVehicle const*pVehicle) 0x43D350 +bool CDarkel::ThisVehicleShouldBeKilledForFrenzy(CVehicle const* pVehicle) { + return plugin::CallAndReturn(pVehicle); +} + +// Converted from cdecl void CDarkel::StartFrenzy(eWeaponType weapontype,int Timelimit,ushort KillsNeeded,int ModelToKill,ushort *pStartMessage,int ModelToKill2, int ModelToKill3,int ModelToKill4,bool bStandardSoundAndMessages, bool bNeedHeadShot) 0x43D3B0 +void CDarkel::StartFrenzy(eWeaponType weapontype, int Timelimit, unsigned short KillsNeeded, int ModelToKill, unsigned short* pStartMessage, int ModelToKill2, int ModelToKill3, int ModelToKill4, bool bStandardSoundAndMessages, bool bNeedHeadShot) { + plugin::Call<0x43D3B0, eWeaponType, int, unsigned short, int, unsigned short*, int, int, int, bool, bool>(weapontype, Timelimit, KillsNeeded, ModelToKill, pStartMessage, ModelToKill2, ModelToKill3, ModelToKill4, bStandardSoundAndMessages, bNeedHeadShot); +} + +// Converted from cdecl void CDarkel::ResetModelsKilledByPlayer(int playerid) 0x43D6A0 +void CDarkel::ResetModelsKilledByPlayer(int playerid) { + plugin::Call<0x43D6A0, int>(playerid); +} + +// Converted from cdecl int CDarkel::QueryModelsKilledByPlayer(int player,int modelid) 0x43D6C0 +int CDarkel::QueryModelsKilledByPlayer(int player, int modelid) { + return plugin::CallAndReturn(player, modelid); +} + +// Converted from cdecl int CDarkel::FindTotalPedsKilledByPlayer(int player) 0x43D6E0 +int CDarkel::FindTotalPedsKilledByPlayer(int player) { + return plugin::CallAndReturn(player); +} + +// Converted from cdecl void CDarkel::DealWithWeaponChangeAtEndOfFrenzy(void) 0x43D7A0 +void CDarkel::DealWithWeaponChangeAtEndOfFrenzy() { + plugin::Call<0x43D7A0>(); +} + +// Converted from cdecl bool CDarkel::CheckDamagedWeaponType(int damageWeaponID, int expectedDamageWeaponID) 0x43D9E0 +bool CDarkel::CheckDamagedWeaponType(int damageWeaponID, int expectedDamageWeaponID) { + return plugin::CallAndReturn(damageWeaponID, expectedDamageWeaponID); +} + +// Converted from cdecl void CDarkel::Update(void) 0x43DAC0 +void CDarkel::Update() { + plugin::Call<0x43DAC0>(); +} + +// Converted from cdecl void CDarkel::ResetOnPlayerDeath(void) 0x43DC10 +void CDarkel::ResetOnPlayerDeath() { + plugin::Call<0x43DC10>(); +} + +// Converted from cdecl void CDarkel::FailKillFrenzy(void) 0x43DC60 +void CDarkel::FailKillFrenzy() { + plugin::Call<0x43DC60>(); +} + +// Converted from cdecl void CDarkel::RegisterKillByPlayer(CPed const*pKilledPed,eWeaponType damageWeaponID,bool bHeadShotted,int arg4) 0x43DCD0 +void CDarkel::RegisterKillByPlayer(CPed const* pKilledPed, eWeaponType damageWeaponID, bool bHeadShotted, int arg4) { + plugin::Call<0x43DCD0, CPed const*, eWeaponType, bool, int>(pKilledPed, damageWeaponID, bHeadShotted, arg4); +} + +// Converted from cdecl void CDarkel::RegisterCarBlownUpByPlayer(CVehicle *pVehicle,int arg2) 0x43DF20 +void CDarkel::RegisterCarBlownUpByPlayer(CVehicle* pVehicle, int arg2) { + plugin::Call<0x43DF20, CVehicle*, int>(pVehicle, arg2); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDarkel.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDarkel.h new file mode 100644 index 00000000..2cc10ee8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDarkel.h @@ -0,0 +1,42 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVehicle.h" + +class PLUGIN_API CDarkel { +public: + static short** RegisteredKills; // short RegisteredKills[800][2]; + static char* pStartMessage; + static unsigned int& AmmoInterruptedWeapon; + static eWeaponType& InterruptedWeaponType; + static eWeaponType& InterruptedWeaponTypeSelected; + static unsigned int& TimeOfFrenzyStart; + static int* ModelToKill; // int CDarkel::ModelToKill[4]; + static eWeaponType& WeaponType; + static short& Status; + + static bool FrenzyOnGoing(); + static void Init(); + static void DrawMessages(); + static short ReadStatus(); + static void RegisterKillNotByPlayer(CPed const* pKilledPed); + static bool ThisPedShouldBeKilledForFrenzy(CPed const* pPed); + static bool ThisVehicleShouldBeKilledForFrenzy(CVehicle const* pVehicle); + static void StartFrenzy(eWeaponType weapontype, int Timelimit, unsigned short KillsNeeded, int ModelToKill, unsigned short* pStartMessage, int ModelToKill2, int ModelToKill3, int ModelToKill4, bool bStandardSoundAndMessages, bool bNeedHeadShot); + static void ResetModelsKilledByPlayer(int playerid); + static int QueryModelsKilledByPlayer(int player, int modelid); + static int FindTotalPedsKilledByPlayer(int player); + static void DealWithWeaponChangeAtEndOfFrenzy(); + static bool CheckDamagedWeaponType(int damageWeaponID, int expectedDamageWeaponID); + static void Update(); + static void ResetOnPlayerDeath(); + static void FailKillFrenzy(); + static void RegisterKillByPlayer(CPed const* pKilledPed, eWeaponType damageWeaponID, bool bHeadShotted, int arg4); + static void RegisterCarBlownUpByPlayer(CVehicle* pVehicle, int arg2); +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDate.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CDate.cpp new file mode 100644 index 00000000..137dad2b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDate.cpp @@ -0,0 +1,44 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CDate.h" + +PLUGIN_SOURCE_FILE + +int ctor_addr(CDate) = ADDRESS_BY_VERSION(0x618D10, 0, 0, 0, 0, 0); +int ctor_gaddr(CDate) = GLOBAL_ADDRESS_BY_VERSION(0x618D10, 0, 0, 0, 0, 0); + +CDate::CDate() { + plugin::CallMethodDynGlobal(ctor_gaddr(CDate), this); +} + +int addrof(CDate::operator<) = ADDRESS_BY_VERSION(0x618D90, 0, 0, 0, 0, 0); +int gaddrof(CDate::operator<) = GLOBAL_ADDRESS_BY_VERSION(0x618D90, 0, 0, 0, 0, 0); + +bool CDate::operator<(CDate const &rhs) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CDate::operator<), this, rhs); +} + +int addrof(CDate::operator==) = ADDRESS_BY_VERSION(0x618DF0, 0, 0, 0, 0, 0); +int gaddrof(CDate::operator==) = GLOBAL_ADDRESS_BY_VERSION(0x618DF0, 0, 0, 0, 0, 0); + +bool CDate::operator==(CDate const &rhs) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CDate::operator==), this, rhs); +} + +int addrof(CDate::operator>) = ADDRESS_BY_VERSION(0x618D30, 0, 0, 0, 0, 0); +int gaddrof(CDate::operator>) = GLOBAL_ADDRESS_BY_VERSION(0x618D30, 0, 0, 0, 0, 0); + +bool CDate::operator>(CDate const &rhs) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CDate::operator>), this, rhs); +} + +int addrof(CDate::PopulateDateFields) = ADDRESS_BY_VERSION(0x618E30, 0, 0, 0, 0, 0); +int gaddrof(CDate::PopulateDateFields) = GLOBAL_ADDRESS_BY_VERSION(0x618E30, 0, 0, 0, 0, 0); + +void CDate::PopulateDateFields(char const &seconds, char const &minutes, char const &hours, char const &day, char const &month, short year) { + plugin::CallMethodDynGlobal(gaddrof(CDate::PopulateDateFields), this, seconds, minutes, hours, day, month, year); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDate.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDate.h new file mode 100644 index 00000000..a91abe41 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDate.h @@ -0,0 +1,31 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CDate { +public: + int seconds; + int minutes; + int hours; + int day; + int month; + int year; + + SUPPORTED_10US CDate(); + + SUPPORTED_10US bool operator<(CDate const &rhs); + SUPPORTED_10US bool operator==(CDate const &rhs); + SUPPORTED_10US bool operator>(CDate const &rhs); + + SUPPORTED_10US void PopulateDateFields(char const &seconds, char const &minutes, char const &hours, char const &day, char const &month, short year); +}; + +VALIDATE_SIZE(CDate, 0x18); + +#include "meta/meta.CDate.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDecision.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CDecision.cpp new file mode 100644 index 00000000..e69de29b diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDecision.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDecision.h new file mode 100644 index 00000000..e9448418 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDecision.h @@ -0,0 +1,37 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +/* + https://www.gtamodding.com/wiki/Decision_Maker +*/ + +enum eDecisionTypes { + DECISION_ON_FOOT = 0, + DECISION_IN_VEHICLE = 1 +}; + +enum eDecisionRelationship { + DECISION_RELATIONSHIP_NEUTRAL = 0, + DECISION_RELATIONSHIP_PLAYER = 1, + DECISION_RELATIONSHIP_FRIEND = 2, + DECISION_RELATIONSHIP_THREAT = 3 +}; + +class PLUGIN_API CDecision { +public: + int m_anTaskTypes[6]; // see eTaskType + unsigned char m_anResponseChances[6][4]; // 4 different relationships : see eDecisionRelationship + unsigned char m_anTypeFlags[2][6]; // 2 different types : see eDecisionTypes + + inline CDecision() { // @0x6040C0 + //SetDefault(); + } +}; + +VALIDATE_SIZE(CDecision, 0x3C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDecisionMaker.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDecisionMaker.h new file mode 100644 index 00000000..f681b7a7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDecisionMaker.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CDecision.h" +#include "eDecisionMakerEvents.h" + +class PLUGIN_API CDecisionMaker { +public: + CDecision m_decision[DM_TOTAL_NUM_EVENTS]; + + inline CDecisionMaker() { // @0x4650A0 + for (unsigned int i = 0; i < DM_TOTAL_NUM_EVENTS; ++i) { + //m_decision[i].SetDefault(); + } + } +}; + +VALIDATE_SIZE(CDecisionMaker, 0x99C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDecisionSimple.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CDecisionSimple.cpp new file mode 100644 index 00000000..f9dcdc0e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDecisionSimple.cpp @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CDecisionSimple.h" + +// Converted from thiscall void CDecisionSimple::Set(int *taskTypes,uchar *chances,int count) 0x600730 +void CDecisionSimple::Set(int* taskTypes, unsigned char* chances, int count) { + plugin::CallMethod<0x600730, CDecisionSimple *, int*, unsigned char*, int>(this, taskTypes, chances, count); +} + +// Converted from thiscall void CDecisionSimple::MakeDecision(int taskType,short &outTaskType,int &outDecisionIndex) 0x6007A0 +void CDecisionSimple::MakeDecision(int taskType, short& outTaskType, int& outDecisionIndex) { + plugin::CallMethod<0x6007A0, CDecisionSimple *, int, short&, int&>(this, taskType, outTaskType, outDecisionIndex); +} + +// Converted from thiscall void CDecisionSimple::SetDefault(void) 0x604220 +void CDecisionSimple::SetDefault() { + plugin::CallMethod<0x604220, CDecisionSimple *>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDecisionSimple.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDecisionSimple.h new file mode 100644 index 00000000..7e6fb0b9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDecisionSimple.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +class PLUGIN_API CDecisionSimple { +public: + int m_anTasks[6]; // task types, see eTaskType + float m_afChances[6]; + unsigned int m_nCount; // tasks count (max 6) + + void Set(int* taskTypes, unsigned char* chances, int count); + void MakeDecision(int taskType, short& outTaskType, int& outDecisionIndex); + void SetDefault(); +}; + +VALIDATE_SIZE(CDecisionSimple, 0x34); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDirectory.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CDirectory.cpp new file mode 100644 index 00000000..438702ff --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDirectory.cpp @@ -0,0 +1,57 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CDirectory.h" + +// Converted from thiscall void CDirectory::CDirectory(void) 0x532290 +CDirectory::CDirectory() { + plugin::CallMethod<0x532290, CDirectory *>(this); +} + +// Converted from thiscall void CDirectory::CDirectory(int capacity) 0x5322A0 +CDirectory::CDirectory(int capacity) { + plugin::CallMethod<0x5322A0, CDirectory *, int>(this, capacity); +} + +// Converted from thiscall void CDirectory::~CDirectory() 0x5322D0 +CDirectory::~CDirectory() { + plugin::CallMethod<0x5322D0, CDirectory *>(this); +} + +// Converted from thiscall void CDirectory::Init(int capacity,void *entries) 0x5322F0 +void CDirectory::Init(int capacity, void* entries) { + plugin::CallMethod<0x5322F0, CDirectory *, int, void*>(this, capacity, entries); +} + +// Converted from thiscall void CDirectory::AddItem(DirectoryInfo const&entry) 0x532310 +void CDirectory::AddItem(DirectoryInfo const& entry) { + plugin::CallMethod<0x532310, CDirectory *, DirectoryInfo const&>(this, entry); +} + +// Converted from thiscall void CDirectory::ReadDirFile(char const*filename) 0x532350 +void CDirectory::ReadDirFile(char const* filename) { + plugin::CallMethod<0x532350, CDirectory *, char const*>(this, filename); +} + +// Converted from thiscall bool CDirectory::WriteDirFile(char const*filename) 0x532410 +bool CDirectory::WriteDirFile(char const* filename) { + return plugin::CallMethodAndReturn(this, filename); +} + +// Converted from thiscall DirectoryInfo* CDirectory::FindItem(char const*name) 0x532450 +CDirectory::DirectoryInfo* CDirectory::FindItem(char const* name) { + return plugin::CallMethodAndReturn(this, name); +} + +// Converted from thiscall DirectoryInfo* CDirectory::FindItem(char const*name,uint &outOffset,uint &outStreamingSize) 0x5324A0 +CDirectory::DirectoryInfo* CDirectory::FindItem(char const* name, unsigned int& outOffset, unsigned int& outStreamingSize) { + return plugin::CallMethodAndReturn(this, name, outOffset, outStreamingSize); +} + +// Converted from thiscall DirectoryInfo* CDirectory::FindItem(uint key,uint &outOffset,uint &outStreamingSize) 0x5324D0 +CDirectory::DirectoryInfo* CDirectory::FindItem(unsigned int key, unsigned int& outOffset, unsigned int& outStreamingSize) { + return plugin::CallMethodAndReturn(this, key, outOffset, outStreamingSize); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDirectory.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDirectory.h new file mode 100644 index 00000000..59c3a435 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDirectory.h @@ -0,0 +1,44 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +/* + http://www.gtamodding.com/wiki/IMG_archive +*/ + +class PLUGIN_API CDirectory { +public: + struct DirectoryInfo { + unsigned int m_nOffset; + unsigned short m_nStreamingSize; + unsigned short m_nSizeInArchive; + char m_szName[24]; + }; + + DirectoryInfo *m_pEntries; + unsigned int m_nCapacity; + unsigned int m_nNumEntries; + bool m_bOwnsEntries; +private: + char _padD[3]; +public: + + CDirectory(); + CDirectory(int capacity); + ~CDirectory(); + void Init(int capacity, void* entries); + void AddItem(DirectoryInfo const& entry); + void ReadDirFile(char const* filename); + bool WriteDirFile(char const* filename); + DirectoryInfo* FindItem(char const* name); + DirectoryInfo* FindItem(char const* name, unsigned int& outOffset, unsigned int& outStreamingSize); + DirectoryInfo* FindItem(unsigned int key, unsigned int& outOffset, unsigned int& outStreamingSize); +}; + +VALIDATE_SIZE(CDirectory, 0x10); +VALIDATE_SIZE(CDirectory::DirectoryInfo, 0x20); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDoor.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CDoor.cpp new file mode 100644 index 00000000..17b528cd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDoor.cpp @@ -0,0 +1,39 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CDoor.h" + +float &CDoor::DOOR_SPEED_MAX_CAPPED = *(float *)0x8D3950; + +// Converted from thiscall bool CDoor::Process(CVehicle *vehicle,CVector &,CVector &,CVector &) 0x6F4040 +bool CDoor::Process(CVehicle* vehicle, CVector& arg1, CVector& arg2, CVector& arg3) { + return plugin::CallMethodAndReturn(this, vehicle, arg1, arg2, arg3); +} + +// Converted from thiscall bool CDoor::ProcessImpact(CVehicle *vehicle,CVector &,CVector &,CVector &) 0x6F4540 +bool CDoor::ProcessImpact(CVehicle* vehicle, CVector& arg1, CVector& arg2, CVector& arg3) { + return plugin::CallMethodAndReturn(this, vehicle, arg1, arg2, arg3); +} + +// Converted from thiscall void CDoor::Open(float openRatio) 0x6F4790 +void CDoor::Open(float openRatio) { + plugin::CallMethod<0x6F4790, CDoor *, float>(this, openRatio); +} + +// Converted from thiscall float CDoor::GetAngleOpenRatio(void) 0x6F47E0 +float CDoor::GetAngleOpenRatio() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CDoor::IsClosed(void) 0x6F4800 +bool CDoor::IsClosed() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CDoor::IsFullyOpen(void) 0x6F4820 +bool CDoor::IsFullyOpen() { + return plugin::CallMethodAndReturn(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDoor.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDoor.h new file mode 100644 index 00000000..fa67c30a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDoor.h @@ -0,0 +1,44 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class CVehicle; + +enum eDoorState : unsigned char +{ + DOOR_NOTHING, + DOOR_HIT_MAX_END, + DOOR_HIT_MIN_END, + DOOR_POP_OPEN, + DOOR_SLAM_SHUT +}; + +class PLUGIN_API CDoor { +public: + float m_fOpenAngle; + float m_fClosedAngle; + short m_nDirn; + unsigned char m_nAxis; + eDoorState m_nDoorState; + float m_fAngle; + float m_fPrevAngle; + float m_fAngVel; + + static float &DOOR_SPEED_MAX_CAPPED; // 0.5 + + bool Process(CVehicle* vehicle, CVector& arg1, CVector& arg2, CVector& arg3); + bool ProcessImpact(CVehicle* vehicle, CVector& arg1, CVector& arg2, CVector& arg3); + void Open(float openRatio); + float GetAngleOpenRatio(); + bool IsClosed(); + bool IsFullyOpen(); +}; + +VALIDATE_SIZE(CDoor, 0x18); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDraw.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CDraw.cpp new file mode 100644 index 00000000..b5227acb --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDraw.cpp @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CDraw.h" + +float &CDraw::ms_fFOV = *(float *)0x8D5038; +float &CDraw::ms_fLODDistance = *(float *)0xC3EF98; +float &CDraw::ms_fFarClipZ = *(float *)0xC3EF9C; +float &CDraw::ms_fNearClipZ = *(float *)0xC3EFA0; +float &CDraw::ms_fAspectRatio = *(float *)0xC3EFA4; +unsigned char &CDraw::FadeRed = *(unsigned char *)0xC3EFA8; +unsigned char &CDraw::FadeGreen = *(unsigned char *)0xC3EFA9; +unsigned char &CDraw::FadeBlue = *(unsigned char *)0xC3EFAA; +unsigned char &CDraw::FadeValue = *(unsigned char *)0xC3EFAB; + +// Converted from cdecl void CDraw::SetFOV(float fovValue) 0x6FF410 +void CDraw::SetFOV(float fovValue) { + plugin::Call<0x6FF410, float>(fovValue); +} + +// Converted from cdecl float CDraw::CalculateAspectRatio(void) 0x6FF420 +float CDraw::CalculateAspectRatio() { + return plugin::CallAndReturn(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDraw.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDraw.h new file mode 100644 index 00000000..4a3fca70 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDraw.h @@ -0,0 +1,24 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +class PLUGIN_API CDraw { +public: + static float &ms_fFOV; // default 45.0 + static float &ms_fLODDistance; + static float &ms_fFarClipZ; + static float &ms_fNearClipZ; + static float &ms_fAspectRatio; + static unsigned char &FadeRed; + static unsigned char &FadeGreen; + static unsigned char &FadeBlue; + static unsigned char &FadeValue; + + static void SetFOV(float fovValue); + static float CalculateAspectRatio(); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDummy.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CDummy.cpp new file mode 100644 index 00000000..4c5996fb --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDummy.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CDummy.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDummy.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDummy.h new file mode 100644 index 00000000..58cfc7a4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDummy.h @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CEntity.h" + + +class PLUGIN_API CDummy : public CEntity { +public: +}; + + +VALIDATE_SIZE(CDummy, 0x38); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDummyObject.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CDummyObject.cpp new file mode 100644 index 00000000..938ed0ea --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDummyObject.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CDummyObject.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDummyObject.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDummyObject.h new file mode 100644 index 00000000..e30842f1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDummyObject.h @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CDummy.h" + + +class PLUGIN_API CDummyObject : public CDummy { +public: +}; + + +VALIDATE_SIZE(CDummyObject, 0x38); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDummyPed.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CDummyPed.cpp new file mode 100644 index 00000000..6d8d9415 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDummyPed.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CDummyPed.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CDummyPed.h b/third-party/plugin-sdk/plugin_sa/game_sa/CDummyPed.h new file mode 100644 index 00000000..1ac848e7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CDummyPed.h @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CDummy.h" + + +class PLUGIN_API CDummyPed : public CDummy { +public: +}; + + +VALIDATE_SIZE(CDummyPed, 0x38); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CEmergencyPed.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CEmergencyPed.cpp new file mode 100644 index 00000000..4ee130af --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CEmergencyPed.cpp @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CEmergencyPed.h" + +CEmergencyPed::CEmergencyPed(unsigned int pedType, unsigned int modelIndex) : CPed(plugin::dummy) { + ((void(__thiscall *)(CEmergencyPed *, unsigned int, unsigned int))0x5DE340)(this, pedType, modelIndex); +} + +bool CEmergencyPed::InRange(CPed *ped) +{ + return ((bool (__thiscall *)(CPed *, CPed *))0x5DE470)(this, ped); +} + +void CEmergencyPed::ProcessControl() +{ + ((void(__thiscall *)(CEmergencyPed *))0x5DE400)(this); + +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CEmergencyPed.h b/third-party/plugin-sdk/plugin_sa/game_sa/CEmergencyPed.h new file mode 100644 index 00000000..3b41306d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CEmergencyPed.h @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPed.h" + +class PLUGIN_API CEmergencyPed : public CPed +{ +public: + CEmergencyPed(unsigned int pedType, unsigned int modelIndex); + + bool InRange(CPed *ped); + + void ProcessControl(); +}; + +VALIDATE_SIZE(CEmergencyPed, 0x79C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CEntity.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CEntity.cpp new file mode 100644 index 00000000..fac37677 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CEntity.cpp @@ -0,0 +1,372 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CEntity.h" + +// vtable functions + +void CEntity::Add(CRect &rect) +{ + ((void (__thiscall *)(CEntity *, CRect &))(unsigned int)(*(void ***)this)[1])(this, rect); +} + +void CEntity::Add() +{ + ((void (__thiscall *)(CEntity *))(*(void ***)this)[2])(this); +} + +void CEntity::Remove() +{ + ((void (__thiscall *)(CEntity *))(*(void ***)this)[3])(this); +} + +void CEntity::SetIsStatic(bool isStatic) +{ + ((void (__thiscall *)(CEntity *, bool))(*(void ***)this)[4])(this, isStatic); +} + +void CEntity::SetModelIndex(unsigned int index) +{ + ((void (__thiscall *)(CEntity *, unsigned int))(*(void ***)this)[5])(this, index); +} + +void CEntity::SetModelIndexNoCreate(unsigned int index) +{ + ((void (__thiscall *)(CEntity *, unsigned int))(*(void ***)this)[6])(this, index); +} + +void CEntity::CreateRwObject() +{ + ((void (__thiscall *)(CEntity *))(*(void ***)this)[7])(this); +} + +void CEntity::DeleteRwObject() +{ + ((void (__thiscall *)(CEntity *))(*(void ***)this)[8])(this); +} + +CRect* CEntity::GetBoundRect(CRect* rect) +{ + return ((CRect* (__thiscall *)(CEntity *, CRect*))(*(void ***)this)[9])(this, rect); +} + +void CEntity::ProcessControl() +{ + ((void (__thiscall *)(CEntity *))(*(void ***)this)[10])(this); +} + +void CEntity::ProcessCollision() +{ + ((void (__thiscall *)(CEntity *))(*(void ***)this)[11])(this); +} + +void CEntity::ProcessShift() +{ + ((void (__thiscall *)(CEntity *))(*(void ***)this)[12])(this); +} + +bool CEntity::TestCollision() +{ + return ((bool (__thiscall *)(CEntity *))(*(void ***)this)[13])(this); +} + +void CEntity::Teleport(CVector destination, bool resetRotation) +{ + ((void (__thiscall *)(CEntity *, CVector, bool))(*(void ***)this)[14])(this, destination, resetRotation); +} + +void CEntity::SpecialEntityPreCollisionStuff(CEntity *colEntity, bool unk1, unsigned char *unk2, unsigned char *unk3, unsigned char *unk4, unsigned char *unk5) +{ + ((void (__thiscall *)(CEntity *, CEntity *, bool, unsigned char *, unsigned char *, unsigned char *, unsigned char *))(*(void ***)this)[15])(this, colEntity, unk1, unk2, unk3, unk4, unk5); +} + +void CEntity::SpecialEntityCalcCollisionSteps(unsigned char *unk1, unsigned char *unk2) +{ + ((void (__thiscall *)(CEntity *, unsigned char *, unsigned char *))(*(void ***)this)[16])(this, unk1, unk2); +} + +void CEntity::PreRender() +{ + ((void (__thiscall *)(CEntity *))(*(void ***)this)[17])(this); +} + +void CEntity::Render() +{ + ((void (__thiscall *)(CEntity *))(*(void ***)this)[18])(this); +} + +bool CEntity::SetupLighting() +{ + return ((bool (__thiscall *)(CEntity *))(*(void ***)this)[19])(this); +} + +void CEntity::RemoveLighting() +{ + ((void (__thiscall *)(CEntity *))(*(void ***)this)[20])(this); +} + +void CEntity::FlagToDestroyWhenNextProcessed() +{ + ((void (__thiscall *)(CEntity *))(*(void ***)this)[21])(this); +} + +// Converted from thiscall void CEntity::UpdateRwFrame(void) 0x532B00 +void CEntity::UpdateRwFrame() +{ + ((void (__thiscall *)(CEntity*))0x532B00)(this); +} + +// Converted from thiscall void CEntity::UpdateRwMatrix(void) 0x446F90 +void CEntity::UpdateRwMatrix() +{ + ((void(__thiscall*)(CEntity*))0x446F90)(this); +} + +// Converted from thiscall void CEntity::UpdateRpHAnim(void) 0x532B20 +void CEntity::UpdateRpHAnim() +{ + ((void (__thiscall *)(CEntity*))0x532B20)(this); +} + +// Converted from thiscall bool CEntity::HasPreRenderEffects(void) 0x532B70 +bool CEntity::HasPreRenderEffects() +{ + return ((bool (__thiscall *)(CEntity*))0x532B70)(this); +} + +// Converted from thiscall bool CEntity::DoesNotCollideWithFlyers(void) 0x532D40 +bool CEntity::DoesNotCollideWithFlyers() +{ + return ((bool (__thiscall *)(CEntity*))0x532D40)(this); +} + +// Converted from stdcall RpMaterial* MaterialUpdateUVAnimCB(RpMaterial *material,void *data) 0x532D70 +RpMaterial* MaterialUpdateUVAnimCB(RpMaterial* material, void* data) +{ + return ((RpMaterial* (__cdecl *)(RpMaterial*, void*))0x532D70)(material, data); +} + +// Converted from thiscall void CEntity::ModifyMatrixForPoleInWind(void) 0x532DB0 +void CEntity::ModifyMatrixForPoleInWind() +{ + ((void (__thiscall *)(CEntity*))0x532DB0)(this); +} + +// Converted from thiscall bool CEntity::LivesInThisNonOverlapSector(int sectorX,int sectorY) 0x533050 +bool CEntity::LivesInThisNonOverlapSector(int sectorX, int sectorY) +{ + return ((bool (__thiscall *)(CEntity*, int, int))0x533050)(this, sectorX, sectorY); +} + +// Converted from thiscall void CEntity::SetupBigBuilding(void) 0x533150 +void CEntity::SetupBigBuilding() +{ + ((void (__thiscall *)(CEntity*))0x533150)(this); +} + +// Converted from thiscall void CEntity::ModifyMatrixForCrane(void) 0x533170 +void CEntity::ModifyMatrixForCrane() +{ + ((void (__thiscall *)(CEntity*))0x533170)(this); +} + +// Converted from thiscall void CEntity::PreRenderForGlassWindow(void) 0x533240 +void CEntity::PreRenderForGlassWindow() +{ + ((void (__thiscall *)(CEntity*))0x533240)(this); +} + +// Converted from thiscall void CEntity::SetRwObjectAlpha(int alpha) 0x5332C0 +void CEntity::SetRwObjectAlpha(int alpha) +{ + ((void (__thiscall *)(CEntity*, int))0x5332C0)(this, alpha); +} + +// Converted from stdcall bool IsEntityPointerValid(CEntity *entity) 0x533310 +bool IsEntityPointerValid(CEntity* entity) +{ + return ((bool (__cdecl *)(CEntity*))0x533310)(entity); +} + +// Converted from thiscall CVector CEntity::FindTriggerPointCoors(int triggerIndex) 0x533380 +CVector CEntity::FindTriggerPointCoors(int triggerIndex) +{ + CVector result; + ((void (__thiscall *)(CEntity*, CVector*, int))0x533380)(this, &result, triggerIndex); + return result; +} + +// Converted from thiscall C2dEffect* CEntity::GetRandom2dEffect(int effectType,uchar) 0x533410 +C2dEffect* CEntity::GetRandom2dEffect(int effectType, unsigned char arg1) +{ + return ((C2dEffect* (__thiscall *)(CEntity*, int, unsigned char))0x533410)(this, effectType, arg1); +} + +// Converted from thiscall CVector CEntity::TransformFromObjectSpace(CVector const &offset) 0x5334F0 +CVector CEntity::TransformFromObjectSpace(CVector const& offset) +{ + CVector result; + ((void (__thiscall *)(CEntity*, CVector*, CVector const&))0x5334F0)(this, &result, offset); + return result; +} + +// Converted from thiscall void CEntity::TransformFromObjectSpace(CVector &outPosn,CVector const &offset) 0x533560 +void CEntity::TransformFromObjectSpace(CVector& outPosn, CVector const& offset) +{ + ((void (__thiscall *)(CEntity*, CVector&, CVector const&))0x533560)(this, outPosn, offset); +} + +// Converted from thiscall void CEntity::CreateEffects(void) 0x533790 +void CEntity::CreateEffects() +{ + ((void (__thiscall *)(CEntity*))0x533790)(this); +} + +// Converted from thiscall void CEntity::DestroyEffects(void) 0x533BF0 +void CEntity::DestroyEffects() +{ + ((void (__thiscall *)(CEntity*))0x533BF0)(this); +} + +// Converted from thiscall void CEntity::AttachToRwObject(RwObject *object, bool updateEntityMatrix) 0x533ED0 +void CEntity::AttachToRwObject(RwObject* object, bool updateEntityMatrix) +{ + ((void (__thiscall *)(CEntity*, RwObject*, bool))0x533ED0)(this, object, updateEntityMatrix); +} + +// Converted from thiscall void CEntity::DetachFromRwObject(void) 0x533FB0 +void CEntity::DetachFromRwObject() +{ + ((void (__thiscall *)(CEntity*))0x533FB0)(this); +} + +// Converted from thiscall CVector CEntity::GetBoundCentre(void) 0x534250 +CVector CEntity::GetBoundCentre() +{ + CVector result; + ((void (__thiscall *)(CEntity*, CVector*))0x534250)(this, &result); + return result; +} + +// Converted from thiscall void CEntity::GetBoundCentre(CVector &outCentre) 0x534290 +void CEntity::GetBoundCentre(CVector& outCentre) +{ + ((void (__thiscall *)(CEntity*, CVector&))0x534290)(this, outCentre); +} + +// Converted from thiscall void CEntity::RenderEffects(void) 0x5342B0 +void CEntity::RenderEffects() +{ + ((void (__thiscall *)(CEntity*))0x5342B0)(this); +} + +// Converted from thiscall bool CEntity::GetIsTouching(CEntity *entity) 0x5343F0 +bool CEntity::GetIsTouching(CEntity* entity) +{ + return ((bool (__thiscall *)(CEntity*, CEntity*))0x5343F0)(this, entity); +} + +// Converted from thiscall bool CEntity::GetIsTouching(CVector const ¢re,float radius) 0x5344B0 +bool CEntity::GetIsTouching(CVector const& centre, float radius) +{ + return ((bool (__thiscall *)(CEntity*, CVector const&, float))0x5344B0)(this, centre, radius); +} + +// Converted from thiscall bool CEntity::GetIsOnScreen(void) 0x534540 +bool CEntity::GetIsOnScreen() +{ + return ((bool (__thiscall *)(CEntity*))0x534540)(this); +} + +// Converted from thiscall bool CEntity::GetIsBoundingBoxOnScreen(void) 0x5345D0 +bool CEntity::GetIsBoundingBoxOnScreen() +{ + return ((bool (__thiscall *)(CEntity*))0x5345D0)(this); +} + +// Converted from thiscall void CEntity::ModifyMatrixForTreeInWind(void) 0x534E90 +void CEntity::ModifyMatrixForTreeInWind() +{ + ((void (__thiscall *)(CEntity*))0x534E90)(this); +} + +// Converted from thiscall void CEntity::ModifyMatrixForBannerInWind(void) 0x535040 +void CEntity::ModifyMatrixForBannerInWind() +{ + ((void (__thiscall *)(CEntity*))0x535040)(this); +} + +// Converted from thiscall CColModel* CEntity::GetColModel(void) 0x535300 +CColModel* CEntity::GetColModel() +{ + return ((CColModel* (__thiscall *)(CEntity*))0x535300)(this); +} + +// Converted from thiscall void CEntity::CalculateBBProjection(CVector *,CVector *,CVector *,CVector *) 0x535340 +void CEntity::CalculateBBProjection(CVector* arg0, CVector* arg1, CVector* arg2, CVector* arg3) +{ + ((void (__thiscall *)(CEntity*, CVector*, CVector*, CVector*, CVector*))0x535340)(this, arg0, arg1, arg2, arg3); +} + +// Converted from thiscall void CEntity::UpdateAnim(void) 0x535F00 +void CEntity::UpdateAnim() +{ + ((void (__thiscall *)(CEntity*))0x535F00)(this); +} + +// Converted from thiscall bool CEntity::IsVisible(void) 0x536BC0 +bool CEntity::IsVisible() +{ + return ((bool (__thiscall *)(CEntity*))0x536BC0)(this); +} + +// Converted from thiscall float CEntity::GetDistanceFromCentreOfMassToBaseOfModel(void) 0x536BE0 +float CEntity::GetDistanceFromCentreOfMassToBaseOfModel() +{ + return ((float (__thiscall *)(CEntity*))0x536BE0)(this); +} + +// Converted from thiscall void CEntity::CleanUpOldReference(CEntity** entity) 0x571A00 +void CEntity::CleanUpOldReference(CEntity** entity) +{ + ((void (__thiscall *)(CEntity*, CEntity**))0x571A00)(this, entity); +} + +// Converted from thiscall void CEntity::ResolveReferences(void) 0x571A40 +void CEntity::ResolveReferences() +{ + ((void (__thiscall *)(CEntity*))0x571A40)(this); +} + +// Converted from thiscall void CEntity::PruneReferences(void) 0x571A90 +void CEntity::PruneReferences() +{ + ((void (__thiscall *)(CEntity*))0x571A90)(this); +} + +// Converted from thiscall void CEntity::RegisterReference(CEntity** entity) 0x571B70 +void CEntity::RegisterReference(CEntity** entity) +{ + ((void (__thiscall *)(CEntity*, CEntity**))0x571B70)(this, entity); +} + +// Converted from thiscall void CEntity::ProcessLightsForEntity(void) 0x6FC7A0 +void CEntity::ProcessLightsForEntity() +{ + ((void (__thiscall *)(CEntity*))0x6FC7A0)(this); +} + +// Converted from thiscall void CEntity::RemoveEscalatorsForEntity(void) 0x717900 +void CEntity::RemoveEscalatorsForEntity() +{ + ((void (__thiscall *)(CEntity*))0x717900)(this); +} + +// Converted from thiscall bool CEntity::IsEntityOccluded(void) 0x71FAE0 +bool CEntity::IsEntityOccluded() +{ + return ((bool (__thiscall *)(CEntity*))0x71FAE0)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CEntity.h new file mode 100644 index 00000000..b1d994ac --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CEntity.h @@ -0,0 +1,150 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CPlaceable.h" +#include "CReference.h" +#include "eEntityType.h" +#include "eEntityStatus.h" +#include "CRect.h" +#include "CColModel.h" +#include "C2dEffect.h" + +class PLUGIN_API CEntity : public CPlaceable { +protected: + CEntity(plugin::dummy_func_t) : CPlaceable(plugin::dummy) {} +public: + union { + struct RwObject *m_pRwObject; + struct RpClump *m_pRwClump; + struct RpAtomic *m_pRwAtomic; + }; + /* https://code.google.com/p/mtasa-blue/source/browse/trunk/MTA10/game_sa/CEntitySA.h */ + unsigned int m_bUsesCollision : 1; // does entity use collision + unsigned int m_bCollisionProcessed : 1; // has object been processed by a ProcessEntityCollision function + unsigned int m_bIsStatic : 1; // is entity static + unsigned int m_bHasContacted : 1; // has entity processed some contact forces + unsigned int m_bIsStuck : 1; // is entity stuck + unsigned int m_bIsInSafePosition : 1; // is entity in a collision free safe position + unsigned int m_bWasPostponed : 1; // was entity control processing postponed + unsigned int m_bIsVisible : 1; //is the entity visible + + unsigned int m_bIsBIGBuilding : 1; // Set if this entity is a big building + unsigned int m_bRenderDamaged : 1; // use damaged LOD models for objects with applicable damage + unsigned int m_bStreamingDontDelete : 1; // Dont let the streaming remove this + unsigned int m_bRemoveFromWorld : 1; // remove this entity next time it should be processed + unsigned int m_bHasHitWall : 1; // has collided with a building (changes subsequent collisions) + unsigned int m_bImBeingRendered : 1; // don't delete me because I'm being rendered + unsigned int m_bDrawLast :1; // draw object last + unsigned int m_bDistanceFade :1; // Fade entity because it is far away + + unsigned int m_bDontCastShadowsOn : 1; // Dont cast shadows on this object + unsigned int m_bOffscreen : 1; // offscreen flag. This can only be trusted when it is set to true + unsigned int m_bIsStaticWaitingForCollision : 1; // this is used by script created entities - they are static until the collision is loaded below them + unsigned int m_bDontStream : 1; // tell the streaming not to stream me + unsigned int m_bUnderwater : 1; // this object is underwater change drawing order + unsigned int m_bHasPreRenderEffects : 1; // Object has a prerender effects attached to it + unsigned int m_bIsTempBuilding : 1; // whether or not the building is temporary (i.e. can be created and deleted more than once) + unsigned int m_bDontUpdateHierarchy : 1; // Don't update the aniamtion hierarchy this frame + + unsigned int m_bHasRoadsignText : 1; // entity is roadsign and has some 2deffect text stuff to be rendered + unsigned int m_bDisplayedSuperLowLOD : 1; + unsigned int m_bIsProcObject : 1; // set object has been generate by procedural object generator + unsigned int m_bBackfaceCulled : 1; // has backface culling on + unsigned int m_bLightObject : 1; // light object with directional lights + unsigned int m_bUnimportantStream : 1; // set that this object is unimportant, if streaming is having problems + unsigned int m_bTunnel : 1; // Is this model part of a tunnel + unsigned int m_bTunnelTransition : 1; // This model should be rendered from within and outside of the tunnel + /* */ + unsigned short m_nRandomSeed; + unsigned short m_nModelIndex; + CReference *m_pReferences; + void *m_pStreamingLink; + short m_nScanCode; + char m_nIplIndex; + unsigned char m_nAreaCode; + union { + int m_nLodIndex; // -1 - without LOD model + CEntity *m_pLod; + }; + unsigned char m_nNumLodChildren; + unsigned char m_nNumLodChildrenRendered; + unsigned char m_nType : 3; // see eEntityType + unsigned char m_nStatus : 5; // see eEntityStatus + + // originally virtual functions + void Add(CRect &rect); + void Add(); // similar to previous, but with entity bound rect + void Remove(); + void SetIsStatic(bool isStatic); + void SetModelIndex(unsigned int index); + void SetModelIndexNoCreate(unsigned int index); + void CreateRwObject(); + void DeleteRwObject(); + CRect* GetBoundRect(CRect* rect); + void ProcessControl(); + void ProcessCollision(); + void ProcessShift(); + bool TestCollision(); + void Teleport(CVector destination, bool resetRotation); + void SpecialEntityPreCollisionStuff(class CEntity *colEntity, bool unk1, unsigned char *unk2, unsigned char *unk3, unsigned char *unk4, unsigned char *unk5); + void SpecialEntityCalcCollisionSteps(unsigned char *unk1, unsigned char *unk2); + void PreRender(); + void Render(); + bool SetupLighting(); + void RemoveLighting(); + void FlagToDestroyWhenNextProcessed(); + + // funcs + void UpdateRwFrame(); + void UpdateRwMatrix(); + void UpdateRpHAnim(); + bool HasPreRenderEffects(); + bool DoesNotCollideWithFlyers(); + void ModifyMatrixForPoleInWind(); + bool LivesInThisNonOverlapSector(int sectorX, int sectorY); + void SetupBigBuilding(); + void ModifyMatrixForCrane(); + void PreRenderForGlassWindow(); + void SetRwObjectAlpha(int alpha); + CVector FindTriggerPointCoors(int triggerIndex); + C2dEffect* GetRandom2dEffect(int effectType, unsigned char arg1); + CVector TransformFromObjectSpace(CVector const& offset); + void TransformFromObjectSpace(CVector& outPosn, CVector const& offset); + void CreateEffects(); + void DestroyEffects(); + void AttachToRwObject(RwObject* object, bool updateEntityMatrix); + void DetachFromRwObject(); + CVector GetBoundCentre(); + void GetBoundCentre(CVector& outCentre); + void RenderEffects(); + // is entity touching entity + bool GetIsTouching(CEntity* entity); + // is entity touching sphere + bool GetIsTouching(CVector const& , float radius); + bool GetIsOnScreen(); + bool GetIsBoundingBoxOnScreen(); + void ModifyMatrixForTreeInWind(); + void ModifyMatrixForBannerInWind(); + CColModel* GetColModel(); + void CalculateBBProjection(CVector* arg0, CVector* arg1, CVector* arg2, CVector* arg3); + void UpdateAnim(); + bool IsVisible(); + float GetDistanceFromCentreOfMassToBaseOfModel(); + void CleanUpOldReference(CEntity** entity); + void ResolveReferences(); + void PruneReferences(); + void RegisterReference(CEntity** entity); + void ProcessLightsForEntity(); + void RemoveEscalatorsForEntity(); + bool IsEntityOccluded(); +}; + +VALIDATE_SIZE(CEntity, 0x38); + +PLUGIN_API bool IsEntityPointerValid(CEntity* entity); +PLUGIN_API struct RpMaterial* MaterialUpdateUVAnimCB(struct RpMaterial* material, void* data); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CEntityScanner.h b/third-party/plugin-sdk/plugin_sa/game_sa/CEntityScanner.h new file mode 100644 index 00000000..b44749e8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CEntityScanner.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CEntityScanner { +protected: + void *vtable; +public: + int field_4; + unsigned int m_nCount; + class CEntity *m_apEntities[16]; + int field_4C; +}; + +VALIDATE_SIZE(CEntityScanner, 0x50); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CEntryExit.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CEntryExit.cpp new file mode 100644 index 00000000..b9e30194 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CEntryExit.cpp @@ -0,0 +1,79 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CEntryExit.h" + +PLUGIN_SOURCE_FILE + +PLUGIN_VARIABLE bool &CEntryExit::ms_bWarping = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A7B8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CObject *&CEntryExit::ms_pDoor = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A7BC, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CEntryExit *&CEntryExit::ms_spawnPoint = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A7C0, 0, 0, 0, 0, 0)); + +int ctor_addr(CEntryExit) = ADDRESS_BY_VERSION(0x43F130, 0, 0, 0, 0, 0); +int ctor_gaddr(CEntryExit) = GLOBAL_ADDRESS_BY_VERSION(0x43F130, 0, 0, 0, 0, 0); + +int addrof(CEntryExit::GenerateAmbientPeds) = ADDRESS_BY_VERSION(0x43E8B0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExit::GenerateAmbientPeds) = GLOBAL_ADDRESS_BY_VERSION(0x43E8B0, 0, 0, 0, 0, 0); + +void CEntryExit::GenerateAmbientPeds(CVector const &position) { + plugin::CallMethodDynGlobal(gaddrof(CEntryExit::GenerateAmbientPeds), this, position); +} + +int addrof(CEntryExit::GetEntryExitToDisplayNameOf) = ADDRESS_BY_VERSION(0x43E650, 0, 0, 0, 0, 0); +int gaddrof(CEntryExit::GetEntryExitToDisplayNameOf) = GLOBAL_ADDRESS_BY_VERSION(0x43E650, 0, 0, 0, 0, 0); + +char *CEntryExit::GetEntryExitToDisplayNameOf() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CEntryExit::GetEntryExitToDisplayNameOf), this); +} + +int addrof(CEntryExit::GetPositionRelativeToOutsideWorld) = ADDRESS_BY_VERSION(0x43EA00, 0, 0, 0, 0, 0); +int gaddrof(CEntryExit::GetPositionRelativeToOutsideWorld) = GLOBAL_ADDRESS_BY_VERSION(0x43EA00, 0, 0, 0, 0, 0); + +void CEntryExit::GetPositionRelativeToOutsideWorld(CVector &positionInOut) { + plugin::CallMethodDynGlobal(gaddrof(CEntryExit::GetPositionRelativeToOutsideWorld), this, positionInOut); +} + +int addrof(CEntryExit::IsInArea) = ADDRESS_BY_VERSION(0x43E460, 0, 0, 0, 0, 0); +int gaddrof(CEntryExit::IsInArea) = GLOBAL_ADDRESS_BY_VERSION(0x43E460, 0, 0, 0, 0, 0); + +bool CEntryExit::IsInArea(CVector const &position) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CEntryExit::IsInArea), this, position); +} + +int addrof(CEntryExit::RequestAmbientPeds) = ADDRESS_BY_VERSION(0x43E6D0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExit::RequestAmbientPeds) = GLOBAL_ADDRESS_BY_VERSION(0x43E6D0, 0, 0, 0, 0, 0); + +void CEntryExit::RequestAmbientPeds() { + plugin::CallMethodDynGlobal(gaddrof(CEntryExit::RequestAmbientPeds), this); +} + +int addrof(CEntryExit::RequestObjectsInFrustum) = ADDRESS_BY_VERSION(0x43E690, 0, 0, 0, 0, 0); +int gaddrof(CEntryExit::RequestObjectsInFrustum) = GLOBAL_ADDRESS_BY_VERSION(0x43E690, 0, 0, 0, 0, 0); + +void CEntryExit::RequestObjectsInFrustum() { + plugin::CallMethodDynGlobal(gaddrof(CEntryExit::RequestObjectsInFrustum), this); +} + +int addrof(CEntryExit::TransitionFinished) = ADDRESS_BY_VERSION(0x4404A0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExit::TransitionFinished) = GLOBAL_ADDRESS_BY_VERSION(0x4404A0, 0, 0, 0, 0, 0); + +bool CEntryExit::TransitionFinished(CPed *player) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CEntryExit::TransitionFinished), this, player); +} + +int addrof(CEntryExit::TransitionStarted) = ADDRESS_BY_VERSION(0x43FFD0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExit::TransitionStarted) = GLOBAL_ADDRESS_BY_VERSION(0x43FFD0, 0, 0, 0, 0, 0); + +bool CEntryExit::TransitionStarted(CPed *player) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CEntryExit::TransitionStarted), this, player); +} + +int addrof(CEntryExit::WarpGangWithPlayer) = ADDRESS_BY_VERSION(0x43F1F0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExit::WarpGangWithPlayer) = GLOBAL_ADDRESS_BY_VERSION(0x43F1F0, 0, 0, 0, 0, 0); + +void CEntryExit::WarpGangWithPlayer(CPed *player) { + plugin::CallMethodDynGlobal(gaddrof(CEntryExit::WarpGangWithPlayer), this, player); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CEntryExit.h b/third-party/plugin-sdk/plugin_sa/game_sa/CEntryExit.h new file mode 100644 index 00000000..356f01bf --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CEntryExit.h @@ -0,0 +1,72 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CRect.h" +#include "CVector.h" +#include "CObject.h" + +class CPed; + +class PLUGIN_API CEntryExit { + PLUGIN_NO_DEFAULT_CONSTRUCTION(CEntryExit) + +public: + char m_szName[8]; + CRect m_recEntrance; + float m_fEntranceZ; + float m_fEntranceAngle; + CVector m_vecExitPos; + float m_fExitAngle; + struct { + unsigned short bUnknownInterior : 1; + unsigned short bUnknownPairing : 1; + unsigned short bCreateLinkedPair : 1; + unsigned short bRewardInterior : 1; + unsigned short bUsedRewardEntrance : 1; + unsigned short bCarsAndAircraft : 1; + unsigned short bBikesAndMotorcycles : 1; + unsigned short bDisableOnFoot : 1; + + unsigned short bAcceptNpcGroup : 1; + unsigned short bFoodDateFlag : 1; + unsigned short bUnknownBurglary : 1; + unsigned short bDisableExit : 1; + unsigned short bBurglaryAccess : 1; + unsigned short bEnteredWithoutExit : 1; + unsigned short bEnableAccess : 1; + unsigned short bDeleteEnex : 1; + } m_nFlags; + unsigned char m_nArea; + unsigned char m_nSkyColor; + unsigned char m_nTimeOn; + unsigned char m_nTimeOff; + unsigned char m_nNumberOfPeds; +private: + char _pad37; +public: + CEntryExit *m_pLink; + + SUPPORTED_10US static bool &ms_bWarping; + SUPPORTED_10US static CObject *&ms_pDoor; + SUPPORTED_10US static CEntryExit *&ms_spawnPoint; + + SUPPORTED_10US void GenerateAmbientPeds(CVector const &position); + SUPPORTED_10US char *GetEntryExitToDisplayNameOf(); + SUPPORTED_10US void GetPositionRelativeToOutsideWorld(CVector &positionInOut); + SUPPORTED_10US bool IsInArea(CVector const &position); + SUPPORTED_10US void RequestAmbientPeds(); + SUPPORTED_10US void RequestObjectsInFrustum(); + SUPPORTED_10US bool TransitionFinished(CPed *player); + SUPPORTED_10US bool TransitionStarted(CPed *player); + SUPPORTED_10US void WarpGangWithPlayer(CPed *player); +}; + +VALIDATE_SIZE(CEntryExit, 0x3C); + +#include "meta/meta.CEntryExit.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CEntryExitManager.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CEntryExitManager.cpp new file mode 100644 index 00000000..3e790ddb --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CEntryExitManager.cpp @@ -0,0 +1,217 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CEntryExitManager.h" + +PLUGIN_SOURCE_FILE + +PLUGIN_VARIABLE CEntryExit *(&CEntryExitManager::ms_entryExitStack)[4] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A720, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CEntryExitManager::ms_bBurglaryHousesEnabled = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A730, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE int &CEntryExitManager::ms_oldAreaCode = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A734, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CEntity *(&CEntryExitManager::ms_visibleEntityList)[32] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A738, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE int &CEntryExitManager::ms_entryExitStackPosn = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A7C4, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CEntryExitManager::ms_bDisabled = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A7C8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE int &CEntryExitManager::ms_exitEnterState = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A7CC, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CQuadTreeNode *&CEntryExitManager::mp_QuadTree = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A7D0, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CEntryExit *&CEntryExitManager::mp_Active = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A7D4, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CPool *&CEntryExitManager::mp_poolEntryExits = *reinterpret_cast **>(GLOBAL_ADDRESS_BY_VERSION(0x96A7D8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned int &CEntryExitManager::ms_numVisibleEntities = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96A7DC, 0, 0, 0, 0, 0)); + +int addrof(CEntryExitManager::AddEntryExitToStack) = ADDRESS_BY_VERSION(0x43E410, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::AddEntryExitToStack) = GLOBAL_ADDRESS_BY_VERSION(0x43E410, 0, 0, 0, 0, 0); + +void CEntryExitManager::AddEntryExitToStack(CEntryExit *a1) { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::AddEntryExitToStack), a1); +} + +int addrof(CEntryExitManager::AddOne) = ADDRESS_BY_VERSION(0x43FA00, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::AddOne) = GLOBAL_ADDRESS_BY_VERSION(0x43FA00, 0, 0, 0, 0, 0); + +int CEntryExitManager::AddOne(float entranceX, float entranceY, float entranceZ, float entranceAngle, float entranceRangeX, float entranceRangeY, int unused, float exitX, float exitY, float exitZ, float exitAngle, int area, int flags, int skyColor, int timeOn, int timeOff, int numberOfPeds, char const *name) { + return plugin::CallAndReturnDynGlobal(gaddrof(CEntryExitManager::AddOne), entranceX, entranceY, entranceZ, entranceAngle, entranceRangeX, entranceRangeY, unused, exitX, exitY, exitZ, exitAngle, area, flags, skyColor, timeOn, timeOff, numberOfPeds, name); +} + +int addrof(CEntryExitManager::DeleteOne) = ADDRESS_BY_VERSION(0x43FD50, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::DeleteOne) = GLOBAL_ADDRESS_BY_VERSION(0x43FD50, 0, 0, 0, 0, 0); + +void CEntryExitManager::DeleteOne(int index) { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::DeleteOne), index); +} + +int addrof(CEntryExitManager::EnableBurglaryHouses) = ADDRESS_BY_VERSION(0x43F180, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::EnableBurglaryHouses) = GLOBAL_ADDRESS_BY_VERSION(0x43F180, 0, 0, 0, 0, 0); + +void CEntryExitManager::EnableBurglaryHouses(bool enable) { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::EnableBurglaryHouses), enable); +} + +int addrof(CEntryExitManager::FindNearestDoor) = ADDRESS_BY_VERSION(0x43F630, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::FindNearestDoor) = GLOBAL_ADDRESS_BY_VERSION(0x43F630, 0, 0, 0, 0, 0); + +CEntity *CEntryExitManager::FindNearestDoor(CEntryExit const &entryExit, float range) { + return plugin::CallAndReturnDynGlobal(gaddrof(CEntryExitManager::FindNearestDoor), entryExit, range); +} + +int addrof(CEntryExitManager::FindNearestEntryExit) = ADDRESS_BY_VERSION(0x43F4B0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::FindNearestEntryExit) = GLOBAL_ADDRESS_BY_VERSION(0x43F4B0, 0, 0, 0, 0, 0); + +int CEntryExitManager::FindNearestEntryExit(CVector2D const &position, float range, int ignoreArea) { + return plugin::CallAndReturnDynGlobal(gaddrof(CEntryExitManager::FindNearestEntryExit), position, range, ignoreArea); +} + +int addrof(CEntryExitManager::GetEntryExit) = ADDRESS_BY_VERSION(0x43EF00, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::GetEntryExit) = GLOBAL_ADDRESS_BY_VERSION(0x43EF00, 0, 0, 0, 0, 0); + +CEntryExit *CEntryExitManager::GetEntryExit(int index) { + return plugin::CallAndReturnDynGlobal(gaddrof(CEntryExitManager::GetEntryExit), index); +} + +int addrof(CEntryExitManager::GetEntryExitIndex) = ADDRESS_BY_VERSION(0x43EFD0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::GetEntryExitIndex) = GLOBAL_ADDRESS_BY_VERSION(0x43EFD0, 0, 0, 0, 0, 0); + +int CEntryExitManager::GetEntryExitIndex(char const *name, unsigned short enabledFlags, unsigned short disabledFlags) { + return plugin::CallAndReturnDynGlobal(gaddrof(CEntryExitManager::GetEntryExitIndex), name, enabledFlags, disabledFlags); +} + +int addrof(CEntryExitManager::GetPositionRelativeToOutsideWorld) = ADDRESS_BY_VERSION(0x43F150, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::GetPositionRelativeToOutsideWorld) = GLOBAL_ADDRESS_BY_VERSION(0x43F150, 0, 0, 0, 0, 0); + +void CEntryExitManager::GetPositionRelativeToOutsideWorld(CVector &positionInOut) { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::GetPositionRelativeToOutsideWorld), positionInOut); +} + +int addrof(CEntryExitManager::GotoEntryExit) = ADDRESS_BY_VERSION(0x43FDB0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::GotoEntryExit) = GLOBAL_ADDRESS_BY_VERSION(0x43FDB0, 0, 0, 0, 0, 0); + +void CEntryExitManager::GotoEntryExit(CEntryExit *entryExit) { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::GotoEntryExit), entryExit); +} + +int addrof(CEntryExitManager::GotoEntryExitVC) = ADDRESS_BY_VERSION(0x43FEA0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::GotoEntryExitVC) = GLOBAL_ADDRESS_BY_VERSION(0x43FEA0, 0, 0, 0, 0, 0); + +void CEntryExitManager::GotoEntryExitVC(char const *name) { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::GotoEntryExitVC), name); +} + +int addrof(CEntryExitManager::GotoNextEntryExit) = ADDRESS_BY_VERSION(0x43FEF0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::GotoNextEntryExit) = GLOBAL_ADDRESS_BY_VERSION(0x43FEF0, 0, 0, 0, 0, 0); + +void CEntryExitManager::GotoNextEntryExit() { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::GotoNextEntryExit)); +} + +int addrof(CEntryExitManager::GotoPreviousEntryExit) = ADDRESS_BY_VERSION(0x43FF60, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::GotoPreviousEntryExit) = GLOBAL_ADDRESS_BY_VERSION(0x43FF60, 0, 0, 0, 0, 0); + +void CEntryExitManager::GotoPreviousEntryExit() { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::GotoPreviousEntryExit)); +} + +int addrof(CEntryExitManager::Init) = ADDRESS_BY_VERSION(0x43F880, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::Init) = GLOBAL_ADDRESS_BY_VERSION(0x43F880, 0, 0, 0, 0, 0); + +void CEntryExitManager::Init() { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::Init)); +} + +int addrof(CEntryExitManager::LinkEntryExit) = ADDRESS_BY_VERSION(0x43F050, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::LinkEntryExit) = GLOBAL_ADDRESS_BY_VERSION(0x43F050, 0, 0, 0, 0, 0); + +void CEntryExitManager::LinkEntryExit(CEntryExit *entryExit) { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::LinkEntryExit), entryExit); +} + +int addrof(CEntryExitManager::Load) = ADDRESS_BY_VERSION(0x5D55C0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::Load) = GLOBAL_ADDRESS_BY_VERSION(0x5D55C0, 0, 0, 0, 0, 0); + +bool CEntryExitManager::Load() { + return plugin::CallAndReturnDynGlobal(gaddrof(CEntryExitManager::Load)); +} + +int addrof(CEntryExitManager::PostEntryExitsCreation) = ADDRESS_BY_VERSION(0x43F0A0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::PostEntryExitsCreation) = GLOBAL_ADDRESS_BY_VERSION(0x43F0A0, 0, 0, 0, 0, 0); + +void CEntryExitManager::PostEntryExitsCreation() { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::PostEntryExitsCreation)); +} + +int addrof(CEntryExitManager::ResetAreaCodeForVisibleObjects) = ADDRESS_BY_VERSION(0x43ED80, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::ResetAreaCodeForVisibleObjects) = GLOBAL_ADDRESS_BY_VERSION(0x43ED80, 0, 0, 0, 0, 0); + +void CEntryExitManager::ResetAreaCodeForVisibleObjects() { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::ResetAreaCodeForVisibleObjects)); +} + +int addrof(CEntryExitManager::Save) = ADDRESS_BY_VERSION(0x5D5970, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::Save) = GLOBAL_ADDRESS_BY_VERSION(0x5D5970, 0, 0, 0, 0, 0); + +bool CEntryExitManager::Save() { + return plugin::CallAndReturnDynGlobal(gaddrof(CEntryExitManager::Save)); +} + +int addrof(CEntryExitManager::SetAreaCodeForVisibleObjects) = ADDRESS_BY_VERSION(0x43ECF0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::SetAreaCodeForVisibleObjects) = GLOBAL_ADDRESS_BY_VERSION(0x43ECF0, 0, 0, 0, 0, 0); + +void CEntryExitManager::SetAreaCodeForVisibleObjects() { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::SetAreaCodeForVisibleObjects)); +} + +int addrof(CEntryExitManager::SetEnabled) = ADDRESS_BY_VERSION(0x43F9D0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::SetEnabled) = GLOBAL_ADDRESS_BY_VERSION(0x43F9D0, 0, 0, 0, 0, 0); + +void CEntryExitManager::SetEnabled(int index, bool enable) { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::SetEnabled), index, enable); +} + +int addrof(CEntryExitManager::SetEnabledByName) = ADDRESS_BY_VERSION(0x43F9B0, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::SetEnabledByName) = GLOBAL_ADDRESS_BY_VERSION(0x43F9B0, 0, 0, 0, 0, 0); + +void CEntryExitManager::SetEnabledByName(char const *name, bool enable) { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::SetEnabledByName), name, enable); +} + +int addrof(CEntryExitManager::SetEntryExitFlag) = ADDRESS_BY_VERSION(0x43EF20, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::SetEntryExitFlag) = GLOBAL_ADDRESS_BY_VERSION(0x43EF20, 0, 0, 0, 0, 0); + +void CEntryExitManager::SetEntryExitFlag(char const *name, unsigned int flag, bool enable) { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::SetEntryExitFlag), name, flag, enable); +} + +int addrof(CEntryExitManager::SetEntryExitFlagWithIndex) = ADDRESS_BY_VERSION(0x43EF90, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::SetEntryExitFlagWithIndex) = GLOBAL_ADDRESS_BY_VERSION(0x43EF90, 0, 0, 0, 0, 0); + +void CEntryExitManager::SetEntryExitFlagWithIndex(int index, unsigned int flag, bool enable) { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::SetEntryExitFlagWithIndex), index, flag, enable); +} + +int addrof(CEntryExitManager::Shutdown) = ADDRESS_BY_VERSION(0x440B90, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::Shutdown) = GLOBAL_ADDRESS_BY_VERSION(0x440B90, 0, 0, 0, 0, 0); + +void CEntryExitManager::Shutdown() { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::Shutdown)); +} + +int addrof(CEntryExitManager::ShutdownForRestart) = ADDRESS_BY_VERSION(0x440C40, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::ShutdownForRestart) = GLOBAL_ADDRESS_BY_VERSION(0x440C40, 0, 0, 0, 0, 0); + +void CEntryExitManager::ShutdownForRestart() { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::ShutdownForRestart)); +} + +int addrof(CEntryExitManager::Update) = ADDRESS_BY_VERSION(0x440D10, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::Update) = GLOBAL_ADDRESS_BY_VERSION(0x440D10, 0, 0, 0, 0, 0); + +void CEntryExitManager::Update() { + plugin::CallDynGlobal(gaddrof(CEntryExitManager::Update)); +} + +int addrof(CEntryExitManager::WeAreInInteriorTransition) = ADDRESS_BY_VERSION(0x43E400, 0, 0, 0, 0, 0); +int gaddrof(CEntryExitManager::WeAreInInteriorTransition) = GLOBAL_ADDRESS_BY_VERSION(0x43E400, 0, 0, 0, 0, 0); + +bool CEntryExitManager::WeAreInInteriorTransition() { + return plugin::CallAndReturnDynGlobal(gaddrof(CEntryExitManager::WeAreInInteriorTransition)); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CEntryExitManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/CEntryExitManager.h new file mode 100644 index 00000000..7946a9cf --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CEntryExitManager.h @@ -0,0 +1,60 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CEntryExit.h" +#include "CVector.h" +#include "CVector2D.h" +#include "CEntity.h" +#include "CQuadTreeNode.h" + +class PLUGIN_API CEntryExitManager { +public: + SUPPORTED_10US static CEntryExit *(&ms_entryExitStack)[4]; // static CEntryExit *ms_entryExitStack[4] + SUPPORTED_10US static bool &ms_bBurglaryHousesEnabled; + SUPPORTED_10US static int &ms_oldAreaCode; + SUPPORTED_10US static CEntity *(&ms_visibleEntityList)[32]; // static CEntity *ms_visibleEntityList[32] + SUPPORTED_10US static int &ms_entryExitStackPosn; + SUPPORTED_10US static bool &ms_bDisabled; + SUPPORTED_10US static int &ms_exitEnterState; + SUPPORTED_10US static CQuadTreeNode *&mp_QuadTree; + SUPPORTED_10US static CEntryExit *&mp_Active; + SUPPORTED_10US static CPool *&mp_poolEntryExits; + SUPPORTED_10US static unsigned int &ms_numVisibleEntities; + + SUPPORTED_10US static void AddEntryExitToStack(CEntryExit *a1); + SUPPORTED_10US static int AddOne(float entranceX, float entranceY, float entranceZ, float entranceAngle, float entranceRangeX, float entranceRangeY, int unused, float exitX, float exitY, float exitZ, float exitAngle, int area, int flags, int skyColor, int timeOn, int timeOff, int numberOfPeds, char const *name); + SUPPORTED_10US static void DeleteOne(int index); + SUPPORTED_10US static void EnableBurglaryHouses(bool enable); + SUPPORTED_10US static CEntity *FindNearestDoor(CEntryExit const &entryExit, float range); + SUPPORTED_10US static int FindNearestEntryExit(CVector2D const &position, float range, int ignoreArea); + SUPPORTED_10US static CEntryExit *GetEntryExit(int index); + SUPPORTED_10US static int GetEntryExitIndex(char const *name, unsigned short enabledFlags, unsigned short disabledFlags); + SUPPORTED_10US static void GetPositionRelativeToOutsideWorld(CVector &positionInOut); + SUPPORTED_10US static void GotoEntryExit(CEntryExit *entryExit); + SUPPORTED_10US static void GotoEntryExitVC(char const *name); + SUPPORTED_10US static void GotoNextEntryExit(); + SUPPORTED_10US static void GotoPreviousEntryExit(); + SUPPORTED_10US static void Init(); + SUPPORTED_10US static void LinkEntryExit(CEntryExit *entryExit); + SUPPORTED_10US static bool Load(); + SUPPORTED_10US static void PostEntryExitsCreation(); + SUPPORTED_10US static void ResetAreaCodeForVisibleObjects(); + SUPPORTED_10US static bool Save(); + SUPPORTED_10US static void SetAreaCodeForVisibleObjects(); + SUPPORTED_10US static void SetEnabled(int index, bool enable); + SUPPORTED_10US static void SetEnabledByName(char const *name, bool enable); + SUPPORTED_10US static void SetEntryExitFlag(char const *name, unsigned int flag, bool enable); + SUPPORTED_10US static void SetEntryExitFlagWithIndex(int index, unsigned int flag, bool enable); + SUPPORTED_10US static void Shutdown(); + SUPPORTED_10US static void ShutdownForRestart(); + SUPPORTED_10US static void Update(); + SUPPORTED_10US static bool WeAreInInteriorTransition(); +}; + +#include "meta/meta.CEntryExitManager.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CEventGroup.h b/third-party/plugin-sdk/plugin_sa/game_sa/CEventGroup.h new file mode 100644 index 00000000..56d32df0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CEventGroup.h @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CEventGroup { +protected: + void *vtable; +public: + class CPed *m_pPed; + unsigned int m_dwCount; + void *m_apEvents[16]; +}; + +VALIDATE_SIZE(CEventGroup, 0x4C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CEventHandler.h b/third-party/plugin-sdk/plugin_sa/game_sa/CEventHandler.h new file mode 100644 index 00000000..2e800ced --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CEventHandler.h @@ -0,0 +1,30 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CEventHandler { +public: + class CPed *m_pPed; + int field_4; + int field_8; + int field_C; + int field_10; + int field_14; + int field_18; + char field_1C; + char field_1D; + short field_1E; + int field_20; + int field_24; + int field_28; + int field_2C; + int field_30; +}; + +VALIDATE_SIZE(CEventHandler, 0x34); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CEventScanner.h b/third-party/plugin-sdk/plugin_sa/game_sa/CEventScanner.h new file mode 100644 index 00000000..9d98c585 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CEventScanner.h @@ -0,0 +1,28 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskTimer.h" +#include "CAttractorScanner.h" + +class PLUGIN_API CEventScanner { +public: + int field_0; + CTaskTimer field_4; + CTaskTimer field_10; + CAttractorScanner m_attractorScanner; + CTaskTimer field_AC; + char field_B8; + char field_B9; + char field_BA; + char field_BB; + CTaskTimer field_BC; + CTaskTimer field_C8; +}; + +VALIDATE_SIZE(CEventScanner, 0xD4); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CExplosion.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CExplosion.cpp new file mode 100644 index 00000000..8df8aa69 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CExplosion.cpp @@ -0,0 +1,71 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CExplosion.h" + +CAEExplosionAudioEntity &CExplosion::m_ExplosionAudioEntity = *(CAEExplosionAudioEntity *)0xC888D0; +unsigned int MAX_EXPLOSIONS = 16; // default 16 +CExplosion *aExplosions = (CExplosion *)0xC88950; + +// Converted from cdecl void CExplosion::ClearAllExplosions(void) 0x736840 +void CExplosion::ClearAllExplosions() { + plugin::Call<0x736840>(); +} + +// Converted from cdecl void CExplosion::Shutdown(void) 0x7368F0 +void CExplosion::Shutdown() { + plugin::Call<0x7368F0>(); +} + +// Converted from cdecl uchar CExplosion::GetExplosionActiveCounter(uchar explosionId) 0x736900 +unsigned char CExplosion::GetExplosionActiveCounter(unsigned char explosionId) { + return plugin::CallAndReturn(explosionId); +} + +// Converted from cdecl void CExplosion::ResetExplosionActiveCounter(uchar explosionId) 0x736910 +void CExplosion::ResetExplosionActiveCounter(unsigned char explosionId) { + plugin::Call<0x736910, unsigned char>(explosionId); +} + +// Converted from cdecl bool CExplosion::DoesExplosionMakeSound(uchar explosionId) 0x736920 +bool CExplosion::DoesExplosionMakeSound(unsigned char explosionId) { + return plugin::CallAndReturn(explosionId); +} + +// Converted from cdecl uint CExplosion::GetExplosionType(uchar explosionId) 0x736930 +unsigned int CExplosion::GetExplosionType(unsigned char explosionId) { + return plugin::CallAndReturn(explosionId); +} + +// Converted from cdecl CVector* CExplosion::GetExplosionPosition(uchar explosionId) 0x736940 +CVector* CExplosion::GetExplosionPosition(unsigned char explosionId) { + return plugin::CallAndReturn(explosionId); +} + +// Converted from cdecl bool CExplosion::TestForExplosionInArea(eExplosionType explosionType,float x1,float y1,float z1,float x2,float y2,float z2) 0x736950 +bool CExplosion::TestForExplosionInArea(eExplosionType explosionType, float x1, float y1, float z1, float x2, float y2, float z2) { + return plugin::CallAndReturn(explosionType, x1, y1, z1, x2, y2, z2); +} + +// Converted from cdecl void CExplosion::RemoveAllExplosionsInArea(CVector posn,float radius) 0x7369E0 +void CExplosion::RemoveAllExplosionsInArea(CVector posn, float radius) { + plugin::Call<0x7369E0, CVector, float>(posn, radius); +} + +// Converted from cdecl void CExplosion::Initialise(void) 0x736A40 +void CExplosion::Initialise() { + plugin::Call<0x736A40>(); +} + +// Converted from cdecl bool CExplosion::AddExplosion(CEntity *victim,CEntity *creator,eExplosionType explosionType,CVector const&posn,uint time,uchar makeSound,float camShake,uchar visibility) 0x736A50 +bool CExplosion::AddExplosion(CEntity* victim, CEntity* creator, eExplosionType explosionType, CVector const& posn, unsigned int time, unsigned char makeSound, float camShake, unsigned char visibility) { + return plugin::CallAndReturn(victim, creator, explosionType, posn, time, makeSound, camShake, visibility); +} + +// Converted from cdecl void CExplosion::Update(void) 0x737620 +void CExplosion::Update() { + plugin::Call<0x737620>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CExplosion.h b/third-party/plugin-sdk/plugin_sa/game_sa/CExplosion.h new file mode 100644 index 00000000..42d71fde --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CExplosion.h @@ -0,0 +1,73 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" +#include "CAEExplosionAudioEntity.h" + +enum eExplosionType { + EXPLOSION_GRENADE, + EXPLOSION_MOLOTOV, + EXPLOSION_ROCKET, + EXPLOSION_WEAK_ROCKET, + EXPLOSION_CAR, + EXPLOSION_QUICK_CAR, + EXPLOSION_BOAT, + EXPLOSION_AIRCRAFT, + EXPLOSION_MINE, + EXPLOSION_OBJECT, + EXPLOSION_TANK_FIRE, + EXPLOSION_SMALL, + EXPLOSION_RC_VEHICLE +}; + +class CEntity; + +class PLUGIN_API CExplosion { +public: + unsigned int m_nType; // see eExplosionType + CVector m_vecPosition; + float m_fRadius; + float m_fPropagationRate; + CEntity *m_pCreator; + CEntity *m_pVictim; + int m_nExpireTime; + float m_fDamagePercentage; + bool m_bIsActive; + unsigned char m_nActiveCounter; + bool m_bMakeSound; + int m_nCreatedTime; + int m_nParticlesExpireTime; + float m_fVisibleDistance; + float m_fGroundZ; + int m_nFuelTimer; // goes down + CVector m_vecFuelDirection[3]; + float m_fFuelOffsetDistance[3]; + float m_fFuelSpeed[3]; + + static CAEExplosionAudioEntity &m_ExplosionAudioEntity; + + static void ClearAllExplosions(); + // dummy function + static void Shutdown(); + static unsigned char GetExplosionActiveCounter(unsigned char explosionId); + static void ResetExplosionActiveCounter(unsigned char explosionId); + static bool DoesExplosionMakeSound(unsigned char explosionId); + static unsigned int GetExplosionType(unsigned char explosionId); + static CVector* GetExplosionPosition(unsigned char explosionId); + static bool TestForExplosionInArea(eExplosionType explosionType, float x1, float y1, float z1, float x2, float y2, float z2); + static void RemoveAllExplosionsInArea(CVector posn, float radius); + static void Initialise(); + static bool AddExplosion(CEntity* victim, CEntity* creator, eExplosionType explosionType, CVector const& posn, unsigned int time, unsigned char makeSound, float camShake, unsigned char visibility); + static void Update(); +}; + +VALIDATE_SIZE(CExplosion, 0x7C); + +extern unsigned int MAX_EXPLOSIONS; // default 16 +extern CExplosion *aExplosions; // CExplosion aExplosions[MAX_EXPLOSIONS] \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFileCarGenerator.h b/third-party/plugin-sdk/plugin_sa/game_sa/CFileCarGenerator.h new file mode 100644 index 00000000..54bb7564 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFileCarGenerator.h @@ -0,0 +1,46 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +#pragma pack(push, 1) +class PLUGIN_API CFileCarGenerator { +public: + CVector m_vecPosn; + float m_fAngle; + unsigned int m_nModelId; + unsigned short m_nColor1; +private: + unsigned char _pad16[2]; +public: + unsigned short m_nColor2; +private: + unsigned char _pad1A[2]; +public: + unsigned char m_nFlags; +private: + unsigned char _pad1D[3]; +public: + unsigned char m_nAlarm; +private: + unsigned char _pad21[3]; +public: + unsigned char m_nDoorLock; +private: + unsigned char _pad25[3]; +public: + unsigned short m_nMinDelay; +private: + unsigned char _pad2A[2]; +public: + unsigned short m_nMaxDelay; +}; +#pragma pack(pop) + +VALIDATE_SIZE(CFileCarGenerator, 0x2E); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFileLoader.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CFileLoader.cpp new file mode 100644 index 00000000..24402d81 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFileLoader.cpp @@ -0,0 +1,404 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CFileLoader.h" + +PLUGIN_SOURCE_FILE + +char(&CFileLoader::ms_line)[512] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB71848, 0, 0, 0, 0, 0)); +unsigned int &gAtomicModelId = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB71840, 0, 0, 0, 0, 0)); + +int addrof(CFileLoader::AddTexDictionaries) = ADDRESS_BY_VERSION(0x5B3910, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::AddTexDictionaries) = GLOBAL_ADDRESS_BY_VERSION(0x5B3910, 0, 0, 0, 0, 0); + +void CFileLoader::AddTexDictionaries(RwTexDictionary *dictionary, RwTexDictionary *baseDictionary) { + plugin::CallDynGlobal(gaddrof(CFileLoader::AddTexDictionaries), dictionary, baseDictionary); +} + +int addrof(CFileLoader::FindRelatedModelInfoCB) = ADDRESS_BY_VERSION(0x5B3930, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::FindRelatedModelInfoCB) = GLOBAL_ADDRESS_BY_VERSION(0x5B3930, 0, 0, 0, 0, 0); + +RpAtomic *CFileLoader::FindRelatedModelInfoCB(RpAtomic *atomic, void *data) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::FindRelatedModelInfoCB), atomic, data); +} + +int addrof(CFileLoader::FinishLoadClumpFile) = ADDRESS_BY_VERSION(0x537450, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::FinishLoadClumpFile) = GLOBAL_ADDRESS_BY_VERSION(0x537450, 0, 0, 0, 0, 0); + +bool CFileLoader::FinishLoadClumpFile(RwStream *stream, unsigned int modelIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::FinishLoadClumpFile), stream, modelIndex); +} + +int addrof(CFileLoader::LoadAnimatedClumpObject) = ADDRESS_BY_VERSION(0x5B40C0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadAnimatedClumpObject) = GLOBAL_ADDRESS_BY_VERSION(0x5B40C0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadAnimatedClumpObject(char const *line) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadAnimatedClumpObject), line); +} + +int addrof_o(CFileLoader::LoadAtomicFile, void (*)(RwStream *, unsigned int)) = ADDRESS_BY_VERSION(0x5371F0, 0, 0, 0, 0, 0); +int gaddrof_o(CFileLoader::LoadAtomicFile, void (*)(RwStream *, unsigned int)) = GLOBAL_ADDRESS_BY_VERSION(0x5371F0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadAtomicFile(RwStream *stream, unsigned int modelIndex) { + plugin::CallDynGlobal(gaddrof_o(CFileLoader::LoadAtomicFile, void (*)(RwStream *, unsigned int)), stream, modelIndex); +} + +int addrof_o(CFileLoader::LoadAtomicFile, void (*)(char const *)) = ADDRESS_BY_VERSION(0x5B39D0, 0, 0, 0, 0, 0); +int gaddrof_o(CFileLoader::LoadAtomicFile, void (*)(char const *)) = GLOBAL_ADDRESS_BY_VERSION(0x5B39D0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadAtomicFile(char const *filename) { + plugin::CallDynGlobal(gaddrof_o(CFileLoader::LoadAtomicFile, void (*)(char const *)), filename); +} + +int addrof(CFileLoader::LoadAtomicFile2Return) = ADDRESS_BY_VERSION(0x537060, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadAtomicFile2Return) = GLOBAL_ADDRESS_BY_VERSION(0x537060, 0, 0, 0, 0, 0); + +RpClump *CFileLoader::LoadAtomicFile2Return(char const *filename) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::LoadAtomicFile2Return), filename); +} + +int addrof(CFileLoader::LoadAudioZone) = ADDRESS_BY_VERSION(0x5B4D70, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadAudioZone) = GLOBAL_ADDRESS_BY_VERSION(0x5B4D70, 0, 0, 0, 0, 0); + +void CFileLoader::LoadAudioZone(char const *line) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadAudioZone), line); +} + +int addrof(CFileLoader::LoadBoundingBox) = ADDRESS_BY_VERSION(0x5374B0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadBoundingBox) = GLOBAL_ADDRESS_BY_VERSION(0x5374B0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadBoundingBox(unsigned char *data, CBoundingBox &outBoundBox) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadBoundingBox), data, outBoundBox); +} + +int addrof_o(CFileLoader::LoadCarGenerator, void (*)(CFileCarGenerator *, int)) = ADDRESS_BY_VERSION(0x537990, 0, 0, 0, 0, 0); +int gaddrof_o(CFileLoader::LoadCarGenerator, void (*)(CFileCarGenerator *, int)) = GLOBAL_ADDRESS_BY_VERSION(0x537990, 0, 0, 0, 0, 0); + +void CFileLoader::LoadCarGenerator(CFileCarGenerator *carGen, int iplId) { + plugin::CallDynGlobal(gaddrof_o(CFileLoader::LoadCarGenerator, void (*)(CFileCarGenerator *, int)), carGen, iplId); +} + +int addrof_o(CFileLoader::LoadCarGenerator, void (*)(char const *, int)) = ADDRESS_BY_VERSION(0x5B4740, 0, 0, 0, 0, 0); +int gaddrof_o(CFileLoader::LoadCarGenerator, void (*)(char const *, int)) = GLOBAL_ADDRESS_BY_VERSION(0x5B4740, 0, 0, 0, 0, 0); + +void CFileLoader::LoadCarGenerator(char const *line, int iplId) { + plugin::CallDynGlobal(gaddrof_o(CFileLoader::LoadCarGenerator, void (*)(char const *, int)), line, iplId); +} + +int addrof(CFileLoader::LoadCarPathNode) = ADDRESS_BY_VERSION(0x5B4380, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadCarPathNode) = GLOBAL_ADDRESS_BY_VERSION(0x5B4380, 0, 0, 0, 0, 0); + +void CFileLoader::LoadCarPathNode(char const *line, int objModelIndex, int pathEntryIndex, bool a4) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadCarPathNode), line, objModelIndex, pathEntryIndex, a4); +} + +int addrof_o(CFileLoader::LoadClumpFile, bool (*)(RwStream *, unsigned int)) = ADDRESS_BY_VERSION(0x5372D0, 0, 0, 0, 0, 0); +int gaddrof_o(CFileLoader::LoadClumpFile, bool (*)(RwStream *, unsigned int)) = GLOBAL_ADDRESS_BY_VERSION(0x5372D0, 0, 0, 0, 0, 0); + +bool CFileLoader::LoadClumpFile(RwStream *stream, unsigned int modelIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof_o(CFileLoader::LoadClumpFile, bool (*)(RwStream *, unsigned int)), stream, modelIndex); +} + +int addrof_o(CFileLoader::LoadClumpFile, void (*)(char const *)) = ADDRESS_BY_VERSION(0x5B3A30, 0, 0, 0, 0, 0); +int gaddrof_o(CFileLoader::LoadClumpFile, void (*)(char const *)) = GLOBAL_ADDRESS_BY_VERSION(0x5B3A30, 0, 0, 0, 0, 0); + +void CFileLoader::LoadClumpFile(char const *filename) { + plugin::CallDynGlobal(gaddrof_o(CFileLoader::LoadClumpFile, void (*)(char const *)), filename); +} + +int addrof(CFileLoader::LoadClumpObject) = ADDRESS_BY_VERSION(0x5B4040, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadClumpObject) = GLOBAL_ADDRESS_BY_VERSION(0x5B4040, 0, 0, 0, 0, 0); + +int CFileLoader::LoadClumpObject(char const *line) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::LoadClumpObject), line); +} + +int addrof_o(CFileLoader::LoadCollisionFile, bool (*)(unsigned char *, unsigned int, unsigned char)) = ADDRESS_BY_VERSION(0x538440, 0, 0, 0, 0, 0); +int gaddrof_o(CFileLoader::LoadCollisionFile, bool (*)(unsigned char *, unsigned int, unsigned char)) = GLOBAL_ADDRESS_BY_VERSION(0x538440, 0, 0, 0, 0, 0); + +bool CFileLoader::LoadCollisionFile(unsigned char *data, unsigned int dataSize, unsigned char colId) { + return plugin::CallAndReturnDynGlobal(gaddrof_o(CFileLoader::LoadCollisionFile, bool (*)(unsigned char *, unsigned int, unsigned char)), data, dataSize, colId); +} + +int addrof_o(CFileLoader::LoadCollisionFile, void (*)(char const *, unsigned char)) = ADDRESS_BY_VERSION(0x5B4E60, 0, 0, 0, 0, 0); +int gaddrof_o(CFileLoader::LoadCollisionFile, void (*)(char const *, unsigned char)) = GLOBAL_ADDRESS_BY_VERSION(0x5B4E60, 0, 0, 0, 0, 0); + +void CFileLoader::LoadCollisionFile(char const *filename, unsigned char colId) { + plugin::CallDynGlobal(gaddrof_o(CFileLoader::LoadCollisionFile, void (*)(char const *, unsigned char)), filename, colId); +} + +int addrof(CFileLoader::LoadCollisionFileFirstTime) = ADDRESS_BY_VERSION(0x5B5000, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadCollisionFileFirstTime) = GLOBAL_ADDRESS_BY_VERSION(0x5B5000, 0, 0, 0, 0, 0); + +bool CFileLoader::LoadCollisionFileFirstTime(unsigned char *data, unsigned int dataSize, unsigned char colId) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::LoadCollisionFileFirstTime), data, dataSize, colId); +} + +int addrof(CFileLoader::LoadCollisionModel) = ADDRESS_BY_VERSION(0x537580, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadCollisionModel) = GLOBAL_ADDRESS_BY_VERSION(0x537580, 0, 0, 0, 0, 0); + +void CFileLoader::LoadCollisionModel(unsigned char *data, CColModel &outColModel) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadCollisionModel), data, outColModel); +} + +int addrof(CFileLoader::LoadCollisionModelVer2) = ADDRESS_BY_VERSION(0x537EE0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadCollisionModelVer2) = GLOBAL_ADDRESS_BY_VERSION(0x537EE0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadCollisionModelVer2(unsigned char *data, unsigned int dataSize, CColModel &outColModel, char const *modelName) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadCollisionModelVer2), data, dataSize, outColModel, modelName); +} + +int addrof(CFileLoader::LoadCollisionModelVer3) = ADDRESS_BY_VERSION(0x537CE0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadCollisionModelVer3) = GLOBAL_ADDRESS_BY_VERSION(0x537CE0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadCollisionModelVer3(unsigned char *data, unsigned int dataSize, CColModel &outColModel, char const *modelName) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadCollisionModelVer3), data, dataSize, outColModel, modelName); +} + +int addrof(CFileLoader::LoadCollisionModelVer4) = ADDRESS_BY_VERSION(0x537AE0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadCollisionModelVer4) = GLOBAL_ADDRESS_BY_VERSION(0x537AE0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadCollisionModelVer4(void *data, unsigned int dataSize, CColModel &outColModel, char const *modelName) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadCollisionModelVer4), data, dataSize, outColModel, modelName); +} + +int addrof(CFileLoader::LoadCullZone) = ADDRESS_BY_VERSION(0x5B4B40, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadCullZone) = GLOBAL_ADDRESS_BY_VERSION(0x5B4B40, 0, 0, 0, 0, 0); + +void CFileLoader::LoadCullZone(char const *line) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadCullZone), line); +} + +int addrof(CFileLoader::LoadEntryExit) = ADDRESS_BY_VERSION(0x5B8030, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadEntryExit) = GLOBAL_ADDRESS_BY_VERSION(0x5B8030, 0, 0, 0, 0, 0); + +void CFileLoader::LoadEntryExit(char const *line) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadEntryExit), line); +} + +int addrof(CFileLoader::LoadGarage) = ADDRESS_BY_VERSION(0x5B4530, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadGarage) = GLOBAL_ADDRESS_BY_VERSION(0x5B4530, 0, 0, 0, 0, 0); + +void CFileLoader::LoadGarage(char const *line) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadGarage), line); +} + +int addrof(CFileLoader::LoadLevel) = ADDRESS_BY_VERSION(0x5B9030, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadLevel) = GLOBAL_ADDRESS_BY_VERSION(0x5B9030, 0, 0, 0, 0, 0); + +void CFileLoader::LoadLevel(char const *filename) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadLevel), filename); +} + +int addrof_o(CFileLoader::LoadLine, char *(*)(FILESTREAM)) = ADDRESS_BY_VERSION(0x536F80, 0, 0, 0, 0, 0); +int gaddrof_o(CFileLoader::LoadLine, char *(*)(FILESTREAM)) = GLOBAL_ADDRESS_BY_VERSION(0x536F80, 0, 0, 0, 0, 0); + +char *CFileLoader::LoadLine(FILESTREAM file) { + return plugin::CallAndReturnDynGlobal(gaddrof_o(CFileLoader::LoadLine, char *(*)(FILESTREAM)), file); +} + +int addrof_o(CFileLoader::LoadLine, char *(*)(char **, int &)) = ADDRESS_BY_VERSION(0x536FE0, 0, 0, 0, 0, 0); +int gaddrof_o(CFileLoader::LoadLine, char *(*)(char **, int &)) = GLOBAL_ADDRESS_BY_VERSION(0x536FE0, 0, 0, 0, 0, 0); + +char *CFileLoader::LoadLine(char **outLine, int &outSize) { + return plugin::CallAndReturnDynGlobal(gaddrof_o(CFileLoader::LoadLine, char *(*)(char **, int &)), outLine, outSize); +} + +int addrof(CFileLoader::LoadObject) = ADDRESS_BY_VERSION(0x5B3C60, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadObject) = GLOBAL_ADDRESS_BY_VERSION(0x5B3C60, 0, 0, 0, 0, 0); + +int CFileLoader::LoadObject(char const *line) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::LoadObject), line); +} + +int addrof_o(CFileLoader::LoadObjectInstance, CEntity *(*)(CFileObjectInstance *, char const *)) = ADDRESS_BY_VERSION(0x538090, 0, 0, 0, 0, 0); +int gaddrof_o(CFileLoader::LoadObjectInstance, CEntity *(*)(CFileObjectInstance *, char const *)) = GLOBAL_ADDRESS_BY_VERSION(0x538090, 0, 0, 0, 0, 0); + +CEntity *CFileLoader::LoadObjectInstance(CFileObjectInstance *objInstance, char const *modelname) { + return plugin::CallAndReturnDynGlobal(gaddrof_o(CFileLoader::LoadObjectInstance, CEntity *(*)(CFileObjectInstance *, char const *)), objInstance, modelname); +} + +int addrof_o(CFileLoader::LoadObjectInstance, CEntity *(*)(char const *)) = ADDRESS_BY_VERSION(0x538690, 0, 0, 0, 0, 0); +int gaddrof_o(CFileLoader::LoadObjectInstance, CEntity *(*)(char const *)) = GLOBAL_ADDRESS_BY_VERSION(0x538690, 0, 0, 0, 0, 0); + +CEntity *CFileLoader::LoadObjectInstance(char const *line) { + return plugin::CallAndReturnDynGlobal(gaddrof_o(CFileLoader::LoadObjectInstance, CEntity *(*)(char const *)), line); +} + +int addrof(CFileLoader::LoadObjectTypes) = ADDRESS_BY_VERSION(0x5B8400, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadObjectTypes) = GLOBAL_ADDRESS_BY_VERSION(0x5B8400, 0, 0, 0, 0, 0); + +void CFileLoader::LoadObjectTypes(char const *filename) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadObjectTypes), filename); +} + +int addrof(CFileLoader::LoadOcclusionVolume) = ADDRESS_BY_VERSION(0x5B4C80, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadOcclusionVolume) = GLOBAL_ADDRESS_BY_VERSION(0x5B4C80, 0, 0, 0, 0, 0); + +void CFileLoader::LoadOcclusionVolume(char const *line, char const *filename) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadOcclusionVolume), line, filename); +} + +int addrof(CFileLoader::LoadPathHeader) = ADDRESS_BY_VERSION(0x5B41C0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadPathHeader) = GLOBAL_ADDRESS_BY_VERSION(0x5B41C0, 0, 0, 0, 0, 0); + +int CFileLoader::LoadPathHeader(char const *line, int &outPathType) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::LoadPathHeader), line, outPathType); +} + +int addrof(CFileLoader::LoadPedObject) = ADDRESS_BY_VERSION(0x5B7420, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadPedObject) = GLOBAL_ADDRESS_BY_VERSION(0x5B7420, 0, 0, 0, 0, 0); + +int CFileLoader::LoadPedObject(char const *line) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::LoadPedObject), line); +} + +int addrof(CFileLoader::LoadPedPathNode) = ADDRESS_BY_VERSION(0x5B41F0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadPedPathNode) = GLOBAL_ADDRESS_BY_VERSION(0x5B41F0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadPedPathNode(char const *line, int objModelIndex, int pathEntryIndex) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadPedPathNode), line, objModelIndex, pathEntryIndex); +} + +int addrof(CFileLoader::LoadPickup) = ADDRESS_BY_VERSION(0x5B47B0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadPickup) = GLOBAL_ADDRESS_BY_VERSION(0x5B47B0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadPickup(char const *line) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadPickup), line); +} + +int addrof(CFileLoader::LoadScene) = ADDRESS_BY_VERSION(0x5B8700, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadScene) = GLOBAL_ADDRESS_BY_VERSION(0x5B8700, 0, 0, 0, 0, 0); + +void CFileLoader::LoadScene(char const *filename) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadScene), filename); +} + +int addrof(CFileLoader::LoadStuntJump) = ADDRESS_BY_VERSION(0x5B45D0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadStuntJump) = GLOBAL_ADDRESS_BY_VERSION(0x5B45D0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadStuntJump(char const *line) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadStuntJump), line); +} + +int addrof(CFileLoader::LoadTXDParent) = ADDRESS_BY_VERSION(0x5B75E0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadTXDParent) = GLOBAL_ADDRESS_BY_VERSION(0x5B75E0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadTXDParent(char const *line) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadTXDParent), line); +} + +int addrof(CFileLoader::LoadTexDictionary) = ADDRESS_BY_VERSION(0x5B3860, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadTexDictionary) = GLOBAL_ADDRESS_BY_VERSION(0x5B3860, 0, 0, 0, 0, 0); + +RwTexDictionary *CFileLoader::LoadTexDictionary(char const *filename) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::LoadTexDictionary), filename); +} + +int addrof(CFileLoader::LoadTimeCyclesModifier) = ADDRESS_BY_VERSION(0x5B81D0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadTimeCyclesModifier) = GLOBAL_ADDRESS_BY_VERSION(0x5B81D0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadTimeCyclesModifier(char const *line) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadTimeCyclesModifier), line); +} + +int addrof(CFileLoader::LoadTimeObject) = ADDRESS_BY_VERSION(0x5B3DE0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadTimeObject) = GLOBAL_ADDRESS_BY_VERSION(0x5B3DE0, 0, 0, 0, 0, 0); + +int CFileLoader::LoadTimeObject(char const *line) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::LoadTimeObject), line); +} + +int addrof(CFileLoader::LoadVehicleObject) = ADDRESS_BY_VERSION(0x5B6F30, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadVehicleObject) = GLOBAL_ADDRESS_BY_VERSION(0x5B6F30, 0, 0, 0, 0, 0); + +int CFileLoader::LoadVehicleObject(char const *line) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::LoadVehicleObject), line); +} + +int addrof(CFileLoader::LoadWeaponObject) = ADDRESS_BY_VERSION(0x5B3FB0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadWeaponObject) = GLOBAL_ADDRESS_BY_VERSION(0x5B3FB0, 0, 0, 0, 0, 0); + +int CFileLoader::LoadWeaponObject(char const *line) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::LoadWeaponObject), line); +} + +int addrof(CFileLoader::LoadZone) = ADDRESS_BY_VERSION(0x5B4AB0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::LoadZone) = GLOBAL_ADDRESS_BY_VERSION(0x5B4AB0, 0, 0, 0, 0, 0); + +void CFileLoader::LoadZone(char const *line) { + plugin::CallDynGlobal(gaddrof(CFileLoader::LoadZone), line); +} + +int addrof(CFileLoader::ReloadObjectTypes) = ADDRESS_BY_VERSION(0x5B3AC0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::ReloadObjectTypes) = GLOBAL_ADDRESS_BY_VERSION(0x5B3AC0, 0, 0, 0, 0, 0); + +void CFileLoader::ReloadObjectTypes(char const *arg1) { + plugin::CallDynGlobal(gaddrof(CFileLoader::ReloadObjectTypes), arg1); +} + +int addrof(CFileLoader::ReloadPaths) = ADDRESS_BY_VERSION(0x5B6E10, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::ReloadPaths) = GLOBAL_ADDRESS_BY_VERSION(0x5B6E10, 0, 0, 0, 0, 0); + +void CFileLoader::ReloadPaths(char const *filename) { + plugin::CallDynGlobal(gaddrof(CFileLoader::ReloadPaths), filename); +} + +int addrof(CFileLoader::SaveTexDictionary) = ADDRESS_BY_VERSION(0x5B38C0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::SaveTexDictionary) = GLOBAL_ADDRESS_BY_VERSION(0x5B38C0, 0, 0, 0, 0, 0); + +void CFileLoader::SaveTexDictionary(RwTexDictionary *dictionary, char const *filename) { + plugin::CallDynGlobal(gaddrof(CFileLoader::SaveTexDictionary), dictionary, filename); +} + +int addrof(CFileLoader::SetRelatedModelInfoCB) = ADDRESS_BY_VERSION(0x537150, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::SetRelatedModelInfoCB) = GLOBAL_ADDRESS_BY_VERSION(0x537150, 0, 0, 0, 0, 0); + +RpAtomic *CFileLoader::SetRelatedModelInfoCB(RpAtomic *atomic, void *data) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::SetRelatedModelInfoCB), atomic, data); +} + +int addrof(CFileLoader::StartLoadClumpFile) = ADDRESS_BY_VERSION(0x5373F0, 0, 0, 0, 0, 0); +int gaddrof(CFileLoader::StartLoadClumpFile) = GLOBAL_ADDRESS_BY_VERSION(0x5373F0, 0, 0, 0, 0, 0); + +bool CFileLoader::StartLoadClumpFile(RwStream *stream, unsigned int modelIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFileLoader::StartLoadClumpFile), stream, modelIndex); +} + +int addrof(GetNameAndDamage) = ADDRESS_BY_VERSION(0x5370A0, 0, 0, 0, 0, 0); +int gaddrof(GetNameAndDamage) = GLOBAL_ADDRESS_BY_VERSION(0x5370A0, 0, 0, 0, 0, 0); + +void GetNameAndDamage(char const *nodeName, char *outName, bool &outDamage) { + plugin::CallDynGlobal(gaddrof(GetNameAndDamage), nodeName, outName, outDamage); +} + +int addrof(CloneAtomicToClumpCB) = ADDRESS_BY_VERSION(0x537290, 0, 0, 0, 0, 0); +int gaddrof(CloneAtomicToClumpCB) = GLOBAL_ADDRESS_BY_VERSION(0x537290, 0, 0, 0, 0, 0); + +RpAtomic *CloneAtomicToClumpCB(RpAtomic *atomic, void *data) { + return plugin::CallAndReturnDynGlobal(gaddrof(CloneAtomicToClumpCB), atomic, data); +} + +int addrof(GetFilename) = ADDRESS_BY_VERSION(0x5B3660, 0, 0, 0, 0, 0); +int gaddrof(GetFilename) = GLOBAL_ADDRESS_BY_VERSION(0x5B3660, 0, 0, 0, 0, 0); + +char const *GetFilename(char const *filepath) { + return plugin::CallAndReturnDynGlobal(gaddrof(GetFilename), filepath); +} + +int addrof(LoadingScreenLoadingFile) = ADDRESS_BY_VERSION(0x5B3680, 0, 0, 0, 0, 0); +int gaddrof(LoadingScreenLoadingFile) = GLOBAL_ADDRESS_BY_VERSION(0x5B3680, 0, 0, 0, 0, 0); + +void LoadingScreenLoadingFile(char const *filename) { + plugin::CallDynGlobal(gaddrof(LoadingScreenLoadingFile), filename); +} + +int addrof(AddTextureCB) = ADDRESS_BY_VERSION(0x5B38F0, 0, 0, 0, 0, 0); +int gaddrof(AddTextureCB) = GLOBAL_ADDRESS_BY_VERSION(0x5B38F0, 0, 0, 0, 0, 0); + +RwTexture *AddTextureCB(RwTexture *texture, void *data) { + return plugin::CallAndReturnDynGlobal(gaddrof(AddTextureCB), texture, data); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFileLoader.h b/third-party/plugin-sdk/plugin_sa/game_sa/CFileLoader.h new file mode 100644 index 00000000..5ec8058c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFileLoader.h @@ -0,0 +1,97 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CBoundingBox.h" +#include "CColModel.h" +#include "CFileCarGenerator.h" +#include "CEntity.h" +#include "CFileObjectInstance.h" +#include "CFileMgr.h" + +class PLUGIN_API CFileLoader { +public: + SUPPORTED_10US static char(&ms_line)[512]; // static char ms_line[512] + + //! copy textures from dictionary to baseDictionary + SUPPORTED_10US static void AddTexDictionaries(RwTexDictionary *dictionary, RwTexDictionary *baseDictionary); + SUPPORTED_10US static RpAtomic *FindRelatedModelInfoCB(RpAtomic *atomic, void *data); + SUPPORTED_10US static bool FinishLoadClumpFile(RwStream *stream, unsigned int modelIndex); + SUPPORTED_10US static void LoadAnimatedClumpObject(char const *line); + SUPPORTED_10US static void LoadAtomicFile(RwStream *stream, unsigned int modelIndex); + SUPPORTED_10US static void LoadAtomicFile(char const *filename); + SUPPORTED_10US static RpClump *LoadAtomicFile2Return(char const *filename); + SUPPORTED_10US static void LoadAudioZone(char const *line); + SUPPORTED_10US static void LoadBoundingBox(unsigned char *data, CBoundingBox &outBoundBox); + SUPPORTED_10US static void LoadCarGenerator(CFileCarGenerator *carGen, int iplId); + SUPPORTED_10US static void LoadCarGenerator(char const *line, int iplId); + SUPPORTED_10US static void LoadCarPathNode(char const *line, int objModelIndex, int pathEntryIndex, bool a4); + SUPPORTED_10US static bool LoadClumpFile(RwStream *stream, unsigned int modelIndex); + SUPPORTED_10US static void LoadClumpFile(char const *filename); + SUPPORTED_10US static int LoadClumpObject(char const *line); + SUPPORTED_10US static bool LoadCollisionFile(unsigned char *data, unsigned int dataSize, unsigned char colId); + SUPPORTED_10US static void LoadCollisionFile(char const *filename, unsigned char colId); + SUPPORTED_10US static bool LoadCollisionFileFirstTime(unsigned char *data, unsigned int dataSize, unsigned char colId); + SUPPORTED_10US static void LoadCollisionModel(unsigned char *data, CColModel &outColModel); + SUPPORTED_10US static void LoadCollisionModelVer2(unsigned char *data, unsigned int dataSize, CColModel &outColModel, char const *modelName); + SUPPORTED_10US static void LoadCollisionModelVer3(unsigned char *data, unsigned int dataSize, CColModel &outColModel, char const *modelName); + SUPPORTED_10US static void LoadCollisionModelVer4(void *data, unsigned int dataSize, CColModel &outColModel, char const *modelName); + SUPPORTED_10US static void LoadCullZone(char const *line); + SUPPORTED_10US static void LoadEntryExit(char const *line); + SUPPORTED_10US static void LoadGarage(char const *line); + SUPPORTED_10US static void LoadLevel(char const *filename); + SUPPORTED_10US static char *LoadLine(FILESTREAM file); + SUPPORTED_10US static char *LoadLine(char **outLine, int &outSize); + SUPPORTED_10US static int LoadObject(char const *line); + SUPPORTED_10US static CEntity *LoadObjectInstance(CFileObjectInstance *objInstance, char const *modelname); + SUPPORTED_10US static CEntity *LoadObjectInstance(char const *line); + SUPPORTED_10US static void LoadObjectTypes(char const *filename); + SUPPORTED_10US static void LoadOcclusionVolume(char const *line, char const *filename); + SUPPORTED_10US static int LoadPathHeader(char const *line, int &outPathType); + SUPPORTED_10US static int LoadPedObject(char const *line); + SUPPORTED_10US static void LoadPedPathNode(char const *line, int objModelIndex, int pathEntryIndex); + SUPPORTED_10US static void LoadPickup(char const *line); + SUPPORTED_10US static void LoadScene(char const *filename); + SUPPORTED_10US static void LoadStuntJump(char const *line); + SUPPORTED_10US static void LoadTXDParent(char const *line); + //! load txd from file + SUPPORTED_10US static RwTexDictionary *LoadTexDictionary(char const *filename); + SUPPORTED_10US static void LoadTimeCyclesModifier(char const *line); + SUPPORTED_10US static int LoadTimeObject(char const *line); + SUPPORTED_10US static int LoadVehicleObject(char const *line); + SUPPORTED_10US static int LoadWeaponObject(char const *line); + SUPPORTED_10US static void LoadZone(char const *line); + //! dummy function + SUPPORTED_10US static void ReloadObjectTypes(char const *arg1); + SUPPORTED_10US static void ReloadPaths(char const *filename); + //! save txd to file + SUPPORTED_10US static void SaveTexDictionary(RwTexDictionary *dictionary, char const *filename); + SUPPORTED_10US static RpAtomic *SetRelatedModelInfoCB(RpAtomic *atomic, void *data); + SUPPORTED_10US static bool StartLoadClumpFile(RwStream *stream, unsigned int modelIndex); +}; + +//! global variable to be used in a callback +SUPPORTED_10US extern unsigned int &gAtomicModelId; + +SUPPORTED_10US void GetNameAndDamage(char const *nodeName, char *outName, bool &outDamage); +//! Makes a copy of atomic and adds it to clump +//! @param atomic callback atomic +//! @param data clump object (RpClump *) +//! @return callback atomic +SUPPORTED_10US RpAtomic *CloneAtomicToClumpCB(RpAtomic *atomic, void *data); +//! Gets file name from a path +SUPPORTED_10US char const *GetFilename(char const *filepath); +SUPPORTED_10US void LoadingScreenLoadingFile(char const *filename); +//! Adds texture to the dictionary +//! @param texture callback texture +//! @param data texture dictionary (RwTexDictionary *) +//! @return callback texture +SUPPORTED_10US RwTexture *AddTextureCB(RwTexture *texture, void *data); + +#include "meta/meta.CFileLoader.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFileMgr.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CFileMgr.cpp new file mode 100644 index 00000000..e554e86c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFileMgr.cpp @@ -0,0 +1,90 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CFileMgr.h" + +char *CFileMgr::ms_dirName = (char *)0xB71A60; +char *CFileMgr::ms_rootDirName = (char *)0xB71AE0; +// functions +void CFileMgr::Initialise() +{ + ((void (__cdecl *)())0x5386F0)(); +} + +int CFileMgr::ChangeDir(const char *path) +{ + return ((int (__cdecl *)(const char *))0x538730)(path); +} + +int CFileMgr::SetDir(const char *path) +{ + return ((int (__cdecl *)(const char *))0x5387D0)(path); +} + +int CFileMgr::SetDirMyDocuments() +{ + return ((int (__cdecl *)())0x538860)(); +} + +int CFileMgr::LoadFile(const char *path, unsigned char *buf, int size, const char *mode) +{ + return ((int (__cdecl *)(const char *, unsigned char *, int, const char *))0x538890)(path, buf, size, mode); +} + +FILESTREAM CFileMgr::OpenFile(const char *path, const char *mode) +{ + return ((FILESTREAM (__cdecl *)(const char *, const char *))0x538900)(path, mode); +} + +FILESTREAM CFileMgr::OpenFileForWriting(const char *path) +{ + return ((FILESTREAM (__cdecl *)(const char *))0x538910)(path); +} + +FILESTREAM CFileMgr::OpenFileForAppending(const char *path) +{ + return ((FILESTREAM (__cdecl *)(const char *))0x538930)(path); +} + +int CFileMgr::Read(FILESTREAM file, char *buf, int size) +{ + return ((int (__cdecl *)(FILESTREAM, char *, int))0x538950)(file, buf, size); +} + +int CFileMgr::Write(FILESTREAM file, char *buf, int size) +{ + return ((int (__cdecl *)(FILESTREAM, char *, int))0x538970)(file, buf, size); +} + +char CFileMgr::Seek(FILESTREAM file, int offset, int origin) +{ + return ((char (__cdecl *)(FILESTREAM, int, int))0x538990)(file, offset, origin); +} + +char CFileMgr::ReadLine(FILESTREAM file, char *str, int num) +{ + return ((char (__cdecl *)(FILESTREAM, char *, int))0x5389B0)(file, str, num); +} + +int CFileMgr::CloseFile(FILESTREAM file) +{ + return ((int (__cdecl *)(FILESTREAM))0x5389D0)(file); +} + +int CFileMgr::GetFileLength(FILESTREAM file) +{ + return ((int (__cdecl *)(FILESTREAM))0x5389E0)(file); +} + +int CFileMgr::Tell(FILESTREAM file) +{ + return ((int (__cdecl *)(FILESTREAM))0x538A20)(file); +} + +bool CFileMgr::GetErrorReadWrite(FILESTREAM file) +{ + return ((bool (__cdecl *)(FILESTREAM))0x538A50)(file); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFileMgr.h b/third-party/plugin-sdk/plugin_sa/game_sa/CFileMgr.h new file mode 100644 index 00000000..29d90c87 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFileMgr.h @@ -0,0 +1,39 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +#define FILESTREAM int + +#define DIRNAMELENGTH 128 + +class PLUGIN_API CFileMgr +{ +public: + // variables + // length: 128 + static char *ms_dirName; + // length: 128 + static char *ms_rootDirName; + // functions + static void Initialise(); + static int ChangeDir(const char *path); + static int SetDir(const char *path); + static int SetDirMyDocuments(); + static int LoadFile(const char *path, unsigned char *buf, int size, const char *mode); + static FILESTREAM OpenFile(const char *path, const char *mode); + static FILESTREAM OpenFileForWriting(const char *path); + static FILESTREAM OpenFileForAppending(const char *path); + static int Read(FILESTREAM file, char *buf, int size); + static int Write(FILESTREAM file, char *buf, int size); + static char Seek(FILESTREAM file, int offset, int origin); + static char ReadLine(FILESTREAM file, char *str, int num); + static int CloseFile(FILESTREAM file); + static int GetFileLength(FILESTREAM file); + static int Tell(FILESTREAM file); + static bool GetErrorReadWrite(FILESTREAM file); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFileObjectInstance.h b/third-party/plugin-sdk/plugin_sa/game_sa/CFileObjectInstance.h new file mode 100644 index 00000000..eed732bc --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFileObjectInstance.h @@ -0,0 +1,33 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" +#include "CQuaternion.h" + +class PLUGIN_API CFileObjectInstance { +public: + CVector m_vecPosition; + CQuaternion m_qRotation; + int m_nModelId; + union { + struct { // CFileObjectInstanceType + unsigned int m_nAreaCode : 8; + unsigned int m_bRedundantStream : 1; + unsigned int m_bDontStream : 1; // Merely assumed, no countercheck possible. + unsigned int m_bUnderwater : 1; + unsigned int m_bTunnel : 1; + unsigned int m_bTunnelTransition : 1; + unsigned int m_nReserved : 19; + }; + unsigned int m_nInstanceType; + }; + int m_nLodInstanceIndex; // -1 - without LOD model +}; + +VALIDATE_SIZE(CFileObjectInstance, 0x28); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFire.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CFire.cpp new file mode 100644 index 00000000..94f3f3f0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFire.cpp @@ -0,0 +1,37 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CFire.h" + +// Converted from thiscall void CFire::Initialise(void) 0x538B30 +void CFire::Initialise() { + ((void(__thiscall *)(CFire*))0x538B30)(this); +} + +// Converted from thiscall void CFire::~CFire() 0x538BA0 +CFire::~CFire() { + ((void(__thiscall *)(CFire*))0x538BA0)(this); +} + +// Converted from thiscall void CFire::CreateFxSysForStrength(RwV3d *point,RwMatrixTag *matrix) 0x539360 +void CFire::CreateFxSysForStrength(RwV3d* point, RwMatrixTag* matrix) { + ((void(__thiscall *)(CFire*, RwV3d*, RwMatrixTag*))0x539360)(this, point, matrix); +} + +// Converted from thiscall void CFire::Extinguish(void) 0x5393F0 +void CFire::Extinguish() { + ((void(__thiscall *)(CFire*))0x5393F0)(this); +} + +// Converted from thiscall void CFire::CFire(void) 0x539D90 +CFire::CFire() { + ((void(__thiscall *)(CFire*))0x539D90)(this); +} + +// Converted from thiscall void CFire::ProcessFire(void) 0x53A570 +void CFire::ProcessFire() { + ((void(__thiscall *)(CFire*))0x53A570)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFire.h b/third-party/plugin-sdk/plugin_sa/game_sa/CFire.h new file mode 100644 index 00000000..9f947417 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFire.h @@ -0,0 +1,46 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CEntity.h" +#include "FxSystem_c.h" + +class PLUGIN_API CFire { +public: + struct { + unsigned char bActive : 1; + unsigned char bCreatedByScript : 1; + unsigned char bMakesNoise : 1; + unsigned char bBeingExtinguished : 1; + unsigned char bFirstGeneration : 1; + } m_nFlags; +private: + char _pad0; +public: + short m_nScriptReferenceIndex; + CVector m_vecPosition; + CEntity *m_pEntityTarget; + CEntity *m_pEntityCreator; + unsigned int m_nTimeToBurn; + float m_fStrength; + char m_nNumGenerationsAllowed; + unsigned char m_nRemovalDist; +private: + char _pad1[2]; +public: + FxSystem_c *m_pFxSystem; + + CFire(); + ~CFire(); + void Initialise(); + void CreateFxSysForStrength(RwV3d* point, RwMatrixTag* matrix); + void Extinguish(); + void ProcessFire(); +}; + +VALIDATE_SIZE(CFire, 0x28); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFireManager.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CFireManager.cpp new file mode 100644 index 00000000..1e77e253 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFireManager.cpp @@ -0,0 +1,129 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CFireManager.h" + +CFireManager &gFireManager = *(CFireManager *)0xB71F80; + +// Converted from thiscall void CFireManager::~CFireManager() 0x538BB0 +CFireManager::~CFireManager() { + ((void(__thiscall *)(CFireManager*))0x538BB0)(this); +} + +// Converted from thiscall void CFireManager::Init(void) 0x538BC0 +void CFireManager::Init() { + ((void(__thiscall *)(CFireManager*))0x538BC0)(this); +} + +// Converted from thiscall uint CFireManager::GetNumOfNonScriptFires(void) 0x538F10 +unsigned int CFireManager::GetNumOfNonScriptFires() { + return ((unsigned int(__thiscall *)(CFireManager*))0x538F10)(this); +} + +// Converted from thiscall CFire* CFireManager::FindNearestFire(CVector const& position,bool notBeingExtinguished,bool notScript) 0x538F40 +CFire* CFireManager::FindNearestFire(CVector const& position, bool notBeingExtinguished, bool notScript) { + return ((CFire* (__thiscall *)(CFireManager*, CVector const&, bool, bool))0x538F40)(this, position, notBeingExtinguished, notScript); +} + +// Converted from thiscall bool CFireManager::PlentyFiresAvailable(void) 0x539340 +bool CFireManager::PlentyFiresAvailable() { + return ((bool(__thiscall *)(CFireManager*))0x539340)(this); +} + +// Converted from thiscall void CFireManager::ExtinguishPoint(CVector point,float range) 0x539450 +void CFireManager::ExtinguishPoint(CVector point, float range) { + ((void(__thiscall *)(CFireManager*, CVector, float))0x539450)(this, point, range); +} + +// Converted from thiscall bool CFireManager::ExtinguishPointWithWater(CVector point,float range,float fireSizeMp) 0x5394C0 +bool CFireManager::ExtinguishPointWithWater(CVector point, float range, float fireSizeMp) { + return ((bool(__thiscall *)(CFireManager*, CVector, float, float))0x5394C0)(this, point, range, fireSizeMp); +} + +// Converted from thiscall bool CFireManager::IsScriptFireExtinguished(short fireIndex) 0x5396E0 +bool CFireManager::IsScriptFireExtinguished(short fireIndex) { + return ((bool(__thiscall *)(CFireManager*, short))0x5396E0)(this, fireIndex); +} + +// Converted from thiscall void CFireManager::RemoveScriptFire(short fireIndex) 0x539700 +void CFireManager::RemoveScriptFire(short fireIndex) { + ((void(__thiscall *)(CFireManager*, short))0x539700)(this, fireIndex); +} + +// Converted from thiscall void CFireManager::RemoveAllScriptFires(void) 0x539720 +void CFireManager::RemoveAllScriptFires() { + ((void(__thiscall *)(CFireManager*))0x539720)(this); +} + +// Converted from thiscall void CFireManager::ClearAllScriptFireFlags(void) 0x5397A0 +void CFireManager::ClearAllScriptFireFlags() { + ((void(__thiscall *)(CFireManager*))0x5397A0)(this); +} + +// Converted from thiscall void CFireManager::SetScriptFireAudio(short fireIndex,bool enable) 0x5397B0 +void CFireManager::SetScriptFireAudio(short fireIndex, bool enable) { + ((void(__thiscall *)(CFireManager*, short, bool))0x5397B0)(this, fireIndex, enable); +} + +// Converted from thiscall CVector* CFireManager::GetScriptFireCoords(short fireIndex) 0x5397E0 +CVector* CFireManager::GetScriptFireCoords(short fireIndex) { + return ((CVector* (__thiscall *)(CFireManager*, short))0x5397E0)(this, fireIndex); +} + +// Converted from thiscall uint CFireManager::GetNumFiresInRange(CVector *point,float range) 0x5397F0 +unsigned int CFireManager::GetNumFiresInRange(CVector* point, float range) { + return ((unsigned int(__thiscall *)(CFireManager*, CVector*, float))0x5397F0)(this, point, range); +} + +// Converted from thiscall uint CFireManager::GetNumFiresInArea(float cornerA_x,float cornerA_y,float cornerA_z,float cornerB_x,float cornerB_y,float cornerB_z) 0x539860 +unsigned int CFireManager::GetNumFiresInArea(float cornerA_x, float cornerA_y, float cornerA_z, float cornerB_x, float cornerB_y, float cornerB_z) { + return ((unsigned int(__thiscall *)(CFireManager*, float, float, float, float, float, float))0x539860)(this, cornerA_x, cornerA_y, cornerA_z, cornerB_x, cornerB_y, cornerB_z); +} + +// Converted from thiscall void CFireManager::DestroyAllFxSystems(void) 0x539D10 +void CFireManager::DestroyAllFxSystems() { + ((void(__thiscall *)(CFireManager*))0x539D10)(this); +} + +// Converted from thiscall void CFireManager::CreateAllFxSystems(void) 0x539D50 +void CFireManager::CreateAllFxSystems() { + ((void(__thiscall *)(CFireManager*))0x539D50)(this); +} + +// Converted from thiscall void CFireManager::CFireManager(void) 0x539DA0 +CFireManager::CFireManager() { + ((void(__thiscall *)(CFireManager*))0x539DA0)(this); +} + +// Converted from thiscall void CFireManager::Shutdown(void) 0x539DD0 +void CFireManager::Shutdown() { + ((void(__thiscall *)(CFireManager*))0x539DD0)(this); +} + +// Converted from thiscall void CFireManager::GetNextFreeFire(uchar bAllowDeletingOldFire) 0x539E50 +void CFireManager::GetNextFreeFire(unsigned char bAllowDeletingOldFire) { + ((void(__thiscall *)(CFireManager*, unsigned char))0x539E50)(this, bAllowDeletingOldFire); +} + +// Converted from thiscall CFire* CFireManager::StartFire(CVector point,float size,uchar,CEntity *creator,uint time,signed char numGenerations,uchar) 0x539F00 +CFire* CFireManager::StartFire(CVector point, _IGNORED_ float size, _IGNORED_ unsigned char arg2, CEntity* creator, unsigned int time, signed char numGenerations, _IGNORED_ unsigned char arg6) { + return ((CFire* (__thiscall *)(CFireManager*, CVector, float, unsigned char, CEntity*, unsigned int, signed char, unsigned char))0x539F00)(this, point, size, arg2, creator, time, numGenerations, arg6); +} + +// Converted from thiscall CFire* CFireManager::StartFire(CEntity *target,CEntity *creator,float size,uchar,uint time,signed char numGenerations) 0x53A050 +CFire* CFireManager::StartFire(CEntity* target, CEntity* creator, _IGNORED_ float size, _IGNORED_ unsigned char arg3, unsigned int time, signed char numGenerations) { + return ((CFire* (__thiscall *)(CFireManager*, CEntity*, CEntity*, float, unsigned char, unsigned int, signed char))0x53A050)(this, target, creator, size, arg3, time, numGenerations); +} + +// Converted from thiscall int CFireManager::StartScriptFire(CVector const&point,CEntity *target,float,uchar,signed char numGenerations,int size) 0x53A270 +int CFireManager::StartScriptFire(CVector const& point, CEntity* target, _IGNORED_ float arg2, _IGNORED_ unsigned char arg3, signed char numGenerations, int size) { + return ((int(__thiscall *)(CFireManager*, CVector const&, CEntity*, float, unsigned char, signed char, int))0x53A270)(this, point, target, arg2, arg3, numGenerations, size); +} + +// Converted from thiscall void CFireManager::Update(void) 0x53AF00 +void CFireManager::Update() { + ((void(__thiscall *)(CFireManager*))0x53AF00)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFireManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/CFireManager.h new file mode 100644 index 00000000..454eb8f6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFireManager.h @@ -0,0 +1,47 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CFire.h" + +#define MAX_NUM_FIRES 60 + +class PLUGIN_API CFireManager { +public: + CFire m_aFires[MAX_NUM_FIRES]; + unsigned int m_nMaxFireGenerationsAllowed; // initialised with 999999 in Init() + + CFireManager(); + ~CFireManager(); + void Init(); + unsigned int GetNumOfNonScriptFires(); + CFire* FindNearestFire(CVector const& position, bool notBeingExtinguished, bool notScript); + bool PlentyFiresAvailable(); + void ExtinguishPoint(CVector point, float range); + bool ExtinguishPointWithWater(CVector point, float range, float fireSizeMp); + bool IsScriptFireExtinguished(short fireIndex); + void RemoveScriptFire(short fireIndex); + void RemoveAllScriptFires(); + void ClearAllScriptFireFlags(); + void SetScriptFireAudio(short fireIndex, bool enable); + CVector* GetScriptFireCoords(short fireIndex); + unsigned int GetNumFiresInRange(CVector* point, float range); + unsigned int GetNumFiresInArea(float cornerA_x, float cornerA_y, float cornerA_z, float cornerB_x, float cornerB_y, float cornerB_z); + void DestroyAllFxSystems(); + void CreateAllFxSystems(); + void Shutdown(); + void GetNextFreeFire(unsigned char bAllowDeletingOldFire); // bAllowDeletingOldFire - allow deleting old fire if no free slots available + CFire* StartFire(CVector point, _IGNORED_ float size, _IGNORED_ unsigned char arg2, CEntity* creator, unsigned int time, signed char numGenerations, _IGNORED_ unsigned char arg6); + CFire* StartFire(CEntity* target, CEntity* creator, _IGNORED_ float size, _IGNORED_ unsigned char arg3, unsigned int time, signed char numGenerations); + int StartScriptFire(CVector const& point, CEntity* target, _IGNORED_ float arg2, _IGNORED_ unsigned char arg3, signed char numGenerations, int size); + void Update(); +}; + +VALIDATE_SIZE(CFireManager, 0x964); + +extern CFireManager &gFireManager; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFont.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CFont.cpp new file mode 100644 index 00000000..96c32ab6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFont.cpp @@ -0,0 +1,205 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CFont.h" + +CSprite2d *CFont::Sprite = (CSprite2d *)0xC71AD0; +CSprite2d *CFont::ButtonSprite = (CSprite2d *)0xC71AD8; +unsigned char& CFont::m_nExtraFontSymbolId = *(unsigned char *)0xC71A54; +bool& CFont::m_bNewLine = *(bool *)0xC71A55; +CRGBA *CFont::m_Color = (CRGBA *)0xC71A60; +CVector2D *CFont::m_Scale = (CVector2D *)0xC71A64; +float& CFont::m_fSlant = *(float *)0xC71A6C; +CVector2D *CFont::m_fSlantRefPoint = (CVector2D *)0xC71A70; +bool& CFont::m_bFontJustify = *(bool *)0xC71A78; +bool& CFont::m_bFontCentreAlign = *(bool *)0xC71A79; +bool& CFont::m_bFontRightAlign = *(bool *)0xC71A7A; +bool& CFont::m_bFontBackground = *(bool *)0xC71A7B; +bool& CFont::m_bEnlargeBackgroundBox = *(bool *)0xC71A7C; +bool& CFont::m_bFontPropOn = *(bool *)0xC71A7D; +bool& CFont::m_bFontIsBlip = *(bool *)0xC71A7E; +unsigned int CFont::m_dwFontAlpha = *(unsigned int *)0xC71A80; +CRGBA *CFont::m_FontBackgroundColor = (CRGBA *)0xC71A84; +float& CFont::m_fWrapx = *(float *)0xC71A88; +float& CFont::m_fFontCentreSize = *(float *)0xC71A8C; +float& CFont::m_fRightJustifyWrap = *(float *)0xC71A90; +unsigned char& CFont::m_FontTextureId = *(unsigned char *)0xC71A94; +unsigned char& CFont::m_FontStyle = *(unsigned char *)0xC71A95; +unsigned char& CFont::m_nFontShadow = *(unsigned char *)0xC71A96; +CRGBA *CFont::m_FontDropColor = (CRGBA *)0xC71A97; +unsigned char& CFont::m_nFontOutlineSize = *(unsigned char *)0xC71A9B; +unsigned char& CFont::m_nFontOutline = *(unsigned char *)0xC71A9C; + +tFontData *gFontData = (tFontData *)0xC718B0; + +void CFont::Initialise() +{ + ((void (__cdecl *)())0x5BA690)(); +} + +void CFont::Shutdown() +{ + ((void (__cdecl *)())0x7189B0)(); +} + +void CFont::PrintChar(float x, float y, char character) +{ + ((void (__cdecl *)(float, float, char))0x718A10)(x, y, character); +} + +char *CFont::ParseToken(char *text, CRGBA & color, bool isBlip, char *tag) +{ + return ((char *(__cdecl *)(char *, CRGBA &, bool, char *))0x718F00)(text, color, isBlip, tag); +} + +void CFont::SetScale(float w, float h) +{ + ((void (__cdecl *)(float, float))0x719380)(w, h); +} + +void CFont::SetScaleForCurrentlanguage(float w, float h) +{ + ((void (__cdecl *)(float, float))0x7193A0)(w, h); +} + +void CFont::SetSlantRefPoint(float x, float y) +{ + ((void (__cdecl *)(float, float))0x719400)(x, y); +} + +void CFont::SetSlant(float value) +{ + ((void (__cdecl *)(float))0x719420)(value); +} + +void CFont::SetColor(CRGBA color) +{ + ((void (__cdecl *)(CRGBA))0x719430)(color); +} + +void CFont::SetFontStyle(short style) +{ + ((void (__cdecl *)(short))0x719490)(style); +} + +void CFont::SetWrapx(float value) +{ + ((void (__cdecl *)(float))0x7194D0)(value); +} + +void CFont::SetCentreSize(float value) +{ + ((void (__cdecl *)(float))0x7194E0)(value); +} + +void CFont::SetRightJustifyWrap(float value) +{ + ((void (__cdecl *)(float))0x7194F0)(value); +} + +void CFont::SetAlphaFade(float alpha) +{ + ((void (__cdecl *)(float))0x719500)(alpha); +} + +void CFont::SetDropColor(CRGBA color) +{ + ((void (__cdecl *)(CRGBA))0x719510)(color); +} + +void CFont::SetDropShadowPosition(short value) +{ + ((void (__cdecl *)(short))0x719570)(value); +} + +void CFont::SetEdge(short value) +{ + ((void (__cdecl *)(short))0x719590)(value); +} + + +#ifdef SetProp +#define SET_PROP_USED +#undef SetProp +#endif +void CFont::SetProportional(bool on) +{ + ((void (__cdecl *)(bool))0x7195B0)(on); +} +#ifdef SET_PROP_USED +#undef SET_PROP_USED +#define SetProp SetPropA +#endif + +void CFont::SetBackground(bool enable, bool includeWrap) +{ + ((void (__cdecl *)(bool, bool))0x7195C0)(enable, includeWrap); +} + +void CFont::SetBackgroundColor(CRGBA color) +{ + ((void (__cdecl *)(CRGBA))0x7195E0)(color); +} + +void CFont::SetJustify(bool on) +{ + ((void (__cdecl *)(bool))0x719600)(on); +} + +void CFont::SetOrientation(eFontAlignment alignment) +{ + ((void (__cdecl *)(eFontAlignment))0x719610)(alignment); +} + +void CFont::InitPerFrame() +{ + ((void (__cdecl *)())0x719800)(); +} + +void CFont::RenderFontBuffer() +{ + ((void (__cdecl *)())0x719840)(); +} + +float CFont::GetStringWidth(const char *string, bool unk1, bool unk2) +{ + return ((float (__cdecl *)(const char *, bool, bool))0x71A0E0)(string, unk1, unk2); +} + +void CFont::DrawFonts() +{ + ((void (__cdecl *)())0x71A210)(); +} + +short CFont::ProcessCurrentString(bool print, float x, float y, const char *text) +{ + return ((short (__cdecl *)(bool, float, float, const char *))0x71A220)(print, x, y, text); +} + +short CFont::GetNumberLines(float x, float y, const char *text) +{ + return ((short (__cdecl *)(float, float, const char *))0x71A5E0)(x, y, text); +} + +short CFont::ProcessStringToDisplay(float x, float y, const char *text) +{ + return ((short (__cdecl *)(float, float, const char *))0x71A600)(x, y, text); +} + +void CFont::GetTextRect(CRect *rect, float x, float y, const char *text) +{ + ((void (__cdecl *)(CRect *, float, float, const char *))0x71A620)(rect, x, y, text); +} + +void CFont::PrintString(float x, float y, const char *text) +{ + ((void (__cdecl *)(float, float, const char *))0x71A700)(x, y, text); +} + +void CFont::PrintStringFromBottom(float x, float y, const char *text) +{ + ((void (__cdecl *)(float, float, const char *))0x71A820)(x, y, text); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFont.h b/third-party/plugin-sdk/plugin_sa/game_sa/CFont.h new file mode 100644 index 00000000..5ed961b4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFont.h @@ -0,0 +1,132 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CRGBA.h" +#include "CRect.h" +#include "CSprite2d.h" + +#define MAX_FONT_SPRITES 2 +#define MAX_FONT_BUTTON_SPRITES 15 + +struct PLUGIN_API tFontData { + char m_propValues[208]; + char m_spaceValue; + char m_unpropValue; +}; + +enum PLUGIN_API eFontAlignment : unsigned char { + ALIGN_CENTER, + ALIGN_LEFT, + ALIGN_RIGHT +}; + +enum PLUGIN_API eFontStyle : unsigned char { + FONT_GOTHIC, + FONT_SUBTITLES, + FONT_MENU, + FONT_PRICEDOWN +}; + +class PLUGIN_API CFont { +public: + // static variables + + // font textures array. Num of elements: MAX_FONT_SPRITES (2) + static CSprite2d *Sprite; + // button textures array. Num of elements: MAX_FONT_BUTTON_SPRITES (15) + static CSprite2d *ButtonSprite; + static unsigned char& m_nExtraFontSymbolId; + static bool& m_bNewLine; + static CRGBA *m_Color; + static CVector2D *m_Scale; + static float& m_fSlant; + static CVector2D *m_fSlantRefPoint; + static bool& m_bFontJustify; + static bool& m_bFontCentreAlign; + static bool& m_bFontRightAlign; + static bool& m_bFontBackground; + static bool& m_bEnlargeBackgroundBox; + static bool& m_bFontPropOn; + static bool& m_bFontIsBlip; + static unsigned int m_dwFontAlpha; + static CRGBA *m_FontBackgroundColor; + static float& m_fWrapx; + static float& m_fFontCentreSize; + static float& m_fRightJustifyWrap; + static unsigned char& m_FontTextureId; + static unsigned char& m_FontStyle; + static unsigned char& m_nFontShadow; + static CRGBA *m_FontDropColor; + static unsigned char& m_nFontOutlineSize; + static unsigned char& m_nFontOutline; + + // static functions + + // CFont initialisation + static void Initialise(); + // CFont closing + static void Shutdown(); + // this adds a single character into rendering buffer + static void PrintChar(float x, float y, char character); + // get next ' ' character in a string + static char *GetNextSpace(char *string); + // tags processing + static char *ParseToken(char *text, CRGBA & color, bool isBlip, char *tag); + // text scaling + static void SetScale(float w, float h); + // text scaling depends on current language + static void SetScaleForCurrentlanguage(float w, float h); + // set text rotation point + static void SetSlantRefPoint(float x, float y); + // set text rotation angle + static void SetSlant(float value); + // set text color + static void SetColor(CRGBA color); + // set text style + static void SetFontStyle(short style); + // set line width at right + static void SetWrapx(float value); + // set line width at center + static void SetCentreSize(float value); + static void SetRightJustifyWrap(float value); + // like a 'global' font alpha, multiplied with each text alpha (from SetColor) + static void SetAlphaFade(float alpha); + // drop color is used for text shadow and text outline + static void SetDropColor(CRGBA color); + // set shadow size + static void SetDropShadowPosition(short value); + // set outline size + static void SetEdge(short value); + // toggles character proportions in text +#ifdef SetProp +#undef SetProp +#endif + static void SetProportional(bool on); + // setups text background + static void SetBackground(bool enable, bool includeWrap); + // sets background color + static void SetBackgroundColor(CRGBA color); + static void SetJustify(bool on); + static void SetOrientation(eFontAlignment alignment); + // need to call this each frame + static void InitPerFrame(); + // draw text we have in buffer + static void RenderFontBuffer(); + static float GetStringWidth(const char *string, bool unk1, bool unk2); + // same as RenderFontBuffer() + static void DrawFonts(); + static short ProcessCurrentString(bool print, float x, float y, const char *text); + static short GetNumberLines(float x, float y, const char *text); + static short ProcessStringToDisplay(float x, float y, const char *text); + static void GetTextRect(CRect *rect, float x, float y, const char *text); + static void PrintString(float x, float y, const char *text); + static void PrintStringFromBottom(float x, float y, const char *text); +}; + +extern tFontData *gFontData; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CForbiddenArea.h b/third-party/plugin-sdk/plugin_sa/game_sa/CForbiddenArea.h new file mode 100644 index 00000000..7663af45 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CForbiddenArea.h @@ -0,0 +1,26 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CForbiddenArea { +public: + float m_fX1; + float m_fX2; + float m_fY1; + float m_fY2; + float m_fZ1; + float m_fZ2; + bool m_bEnable; + unsigned char m_nType; +private: + char _pad1A[2]; +public: +}; + +VALIDATE_SIZE(CForbiddenArea, 0x1C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFormation.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CFormation.cpp new file mode 100644 index 00000000..6a0b5e39 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFormation.cpp @@ -0,0 +1,85 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CFormation.h" + +PLUGIN_SOURCE_FILE + +int(&CFormation::m_aFinalPedLinkToDestinations)[8] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC1A2C0, 0, 0, 0, 0, 0)); +int(&CFormation::m_aPedLinkToDestinations)[8] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC1A2E0, 0, 0, 0, 0, 0)); +CPointList &CFormation::m_Destinations = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC1A318, 0, 0, 0, 0, 0)); +CPedList &CFormation::m_DestinationPeds = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC1A458, 0, 0, 0, 0, 0)); +CPedList &CFormation::m_Peds = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC1A4D8, 0, 0, 0, 0, 0)); + +int addrof(CFormation::DistributeDestinations) = ADDRESS_BY_VERSION(0x69B240, 0, 0, 0, 0, 0); +int gaddrof(CFormation::DistributeDestinations) = GLOBAL_ADDRESS_BY_VERSION(0x69B240, 0, 0, 0, 0, 0); + +void CFormation::DistributeDestinations(CPedList *pedlist) { + plugin::CallDynGlobal(gaddrof(CFormation::DistributeDestinations), pedlist); +} + +int addrof(CFormation::DistributeDestinations_CoverPoints) = ADDRESS_BY_VERSION(0x69B5B0, 0, 0, 0, 0, 0); +int gaddrof(CFormation::DistributeDestinations_CoverPoints) = GLOBAL_ADDRESS_BY_VERSION(0x69B5B0, 0, 0, 0, 0, 0); + +void CFormation::DistributeDestinations_CoverPoints(CPedList *pedlist, CVector pos) { + plugin::CallDynGlobal(gaddrof(CFormation::DistributeDestinations_CoverPoints), pedlist, pos); +} + +int addrof(CFormation::DistributeDestinations_PedsToAttack) = ADDRESS_BY_VERSION(0x69B700, 0, 0, 0, 0, 0); +int gaddrof(CFormation::DistributeDestinations_PedsToAttack) = GLOBAL_ADDRESS_BY_VERSION(0x69B700, 0, 0, 0, 0, 0); + +void CFormation::DistributeDestinations_PedsToAttack(CPedList *pedlist) { + plugin::CallDynGlobal(gaddrof(CFormation::DistributeDestinations_PedsToAttack), pedlist); +} + +int addrof(CFormation::FindCoverPoints) = ADDRESS_BY_VERSION(0x69B860, 0, 0, 0, 0, 0); +int gaddrof(CFormation::FindCoverPoints) = GLOBAL_ADDRESS_BY_VERSION(0x69B860, 0, 0, 0, 0, 0); + +void CFormation::FindCoverPoints(CVector pos, float radius) { + plugin::CallDynGlobal(gaddrof(CFormation::FindCoverPoints), pos, radius); +} + +int addrof(CFormation::FindCoverPointsBehindBox) = ADDRESS_BY_VERSION(0x699FF0, 0, 0, 0, 0, 0); +int gaddrof(CFormation::FindCoverPointsBehindBox) = GLOBAL_ADDRESS_BY_VERSION(0x699FF0, 0, 0, 0, 0, 0); + +void CFormation::FindCoverPointsBehindBox(CPointList *pointlist, CVector Pos, CMatrix *coverEntityMatrix, CVector const *vecCenter, CVector const *vecMin, CVector const *vecMax, float radius) { + plugin::CallDynGlobal(gaddrof(CFormation::FindCoverPointsBehindBox), pointlist, Pos, coverEntityMatrix, vecCenter, vecMin, vecMax, radius); +} + +int addrof(CFormation::FindNearestAvailableDestination) = ADDRESS_BY_VERSION(0x69B1B0, 0, 0, 0, 0, 0); +int gaddrof(CFormation::FindNearestAvailableDestination) = GLOBAL_ADDRESS_BY_VERSION(0x69B1B0, 0, 0, 0, 0, 0); + +signed int CFormation::FindNearestAvailableDestination(CVector pos, float *pOutDistance) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFormation::FindNearestAvailableDestination), pos, pOutDistance); +} + +int addrof(CFormation::GenerateGatherDestinations) = ADDRESS_BY_VERSION(0x69A620, 0, 0, 0, 0, 0); +int gaddrof(CFormation::GenerateGatherDestinations) = GLOBAL_ADDRESS_BY_VERSION(0x69A620, 0, 0, 0, 0, 0); + +void CFormation::GenerateGatherDestinations(CPedList *pedList, CPed *ped) { + plugin::CallDynGlobal(gaddrof(CFormation::GenerateGatherDestinations), pedList, ped); +} + +int addrof(CFormation::GenerateGatherDestinations_AroundCar) = ADDRESS_BY_VERSION(0x69A770, 0, 0, 0, 0, 0); +int gaddrof(CFormation::GenerateGatherDestinations_AroundCar) = GLOBAL_ADDRESS_BY_VERSION(0x69A770, 0, 0, 0, 0, 0); + +void CFormation::GenerateGatherDestinations_AroundCar(CPedList *pedlist, CVehicle *vehicle) { + plugin::CallDynGlobal(gaddrof(CFormation::GenerateGatherDestinations_AroundCar), pedlist, vehicle); +} + +int addrof(CFormation::ReturnDestinationForPed) = ADDRESS_BY_VERSION(0x699FA0, 0, 0, 0, 0, 0); +int gaddrof(CFormation::ReturnDestinationForPed) = GLOBAL_ADDRESS_BY_VERSION(0x699FA0, 0, 0, 0, 0, 0); + +bool CFormation::ReturnDestinationForPed(CPed *ped, CVector *pos) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFormation::ReturnDestinationForPed), ped, pos); +} + +int addrof(CFormation::ReturnTargetPedForPed) = ADDRESS_BY_VERSION(0x699F50, 0, 0, 0, 0, 0); +int gaddrof(CFormation::ReturnTargetPedForPed) = GLOBAL_ADDRESS_BY_VERSION(0x699F50, 0, 0, 0, 0, 0); + +int CFormation::ReturnTargetPedForPed(CPed *ped, CPed **pOutTargetPed) { + return plugin::CallAndReturnDynGlobal(gaddrof(CFormation::ReturnTargetPedForPed), ped, pOutTargetPed); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CFormation.h b/third-party/plugin-sdk/plugin_sa/game_sa/CFormation.h new file mode 100644 index 00000000..2aceab56 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CFormation.h @@ -0,0 +1,37 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPed.h" +#include "CVector.h" +#include "CPointList.h" +#include "CMatrix.h" +#include "CPedList.h" +#include "CVehicle.h" + +class PLUGIN_API CFormation { +public: + SUPPORTED_10US static int(&m_aFinalPedLinkToDestinations)[8]; // static int m_aFinalPedLinkToDestinations[8] + SUPPORTED_10US static int(&m_aPedLinkToDestinations)[8]; // static int m_aPedLinkToDestinations[8] + SUPPORTED_10US static CPointList &m_Destinations; + SUPPORTED_10US static CPedList &m_DestinationPeds; + SUPPORTED_10US static CPedList &m_Peds; + + SUPPORTED_10US static void DistributeDestinations(CPedList *pedlist); + SUPPORTED_10US static void DistributeDestinations_CoverPoints(CPedList *pedlist, CVector pos); + SUPPORTED_10US static void DistributeDestinations_PedsToAttack(CPedList *pedlist); + SUPPORTED_10US static void FindCoverPoints(CVector pos, float radius); + SUPPORTED_10US static void FindCoverPointsBehindBox(CPointList *pointlist, CVector Pos, CMatrix *coverEntityMatrix, CVector const *vecCenter, CVector const *vecMin, CVector const *vecMax, float radius); + SUPPORTED_10US static signed int FindNearestAvailableDestination(CVector pos, float *pOutDistance); + SUPPORTED_10US static void GenerateGatherDestinations(CPedList *pedList, CPed *ped); + SUPPORTED_10US static void GenerateGatherDestinations_AroundCar(CPedList *pedlist, CVehicle *vehicle); + SUPPORTED_10US static bool ReturnDestinationForPed(CPed *ped, CVector *pos); + SUPPORTED_10US static int ReturnTargetPedForPed(CPed *ped, CPed **pOutTargetPed); +}; + +#include "meta/meta.CFormation.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGame.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CGame.cpp new file mode 100644 index 00000000..0977e098 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGame.cpp @@ -0,0 +1,220 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CGame.h" + +PLUGIN_SOURCE_FILE + +char(&CGame::aDatFile)[32] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB728EC, 0, 0, 0, 0, 0)); +int &CGame::currLevel = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB7290C, 0, 0, 0, 0, 0)); +unsigned char &CGame::bMissionPackGame = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB72910, 0, 0, 0, 0, 0)); +int &CGame::currArea = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB72914, 0, 0, 0, 0, 0)); +RwMatrix *&CGame::m_pWorkingMatrix1 = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB72920, 0, 0, 0, 0, 0)); +RwMatrix *&CGame::m_pWorkingMatrix2 = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB72924, 0, 0, 0, 0, 0)); +int &gameTxdSlot = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xB728E8, 0, 0, 0, 0, 0)); + +int addrof(CGame::CanSeeOutSideFromCurrArea) = ADDRESS_BY_VERSION(0x53C4A0, 0, 0, 0, 0, 0); +int gaddrof(CGame::CanSeeOutSideFromCurrArea) = GLOBAL_ADDRESS_BY_VERSION(0x53C4A0, 0, 0, 0, 0, 0); + +bool CGame::CanSeeOutSideFromCurrArea() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGame::CanSeeOutSideFromCurrArea)); +} + +int addrof(CGame::CanSeeWaterFromCurrArea) = ADDRESS_BY_VERSION(0x53C4B0, 0, 0, 0, 0, 0); +int gaddrof(CGame::CanSeeWaterFromCurrArea) = GLOBAL_ADDRESS_BY_VERSION(0x53C4B0, 0, 0, 0, 0, 0); + +bool CGame::CanSeeWaterFromCurrArea() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGame::CanSeeWaterFromCurrArea)); +} + +int addrof(CGame::DrasticTidyUpMemory) = ADDRESS_BY_VERSION(0x53C810, 0, 0, 0, 0, 0); +int gaddrof(CGame::DrasticTidyUpMemory) = GLOBAL_ADDRESS_BY_VERSION(0x53C810, 0, 0, 0, 0, 0); + +void CGame::DrasticTidyUpMemory(bool a1) { + plugin::CallDynGlobal(gaddrof(CGame::DrasticTidyUpMemory), a1); +} + +int addrof(CGame::FinalShutdown) = ADDRESS_BY_VERSION(0x53BC30, 0, 0, 0, 0, 0); +int gaddrof(CGame::FinalShutdown) = GLOBAL_ADDRESS_BY_VERSION(0x53BC30, 0, 0, 0, 0, 0); + +void CGame::FinalShutdown() { + plugin::CallDynGlobal(gaddrof(CGame::FinalShutdown)); +} + +int addrof(CGame::GenerateTempPedAtStartOfNetworkGame) = ADDRESS_BY_VERSION(0x53C240, 0, 0, 0, 0, 0); +int gaddrof(CGame::GenerateTempPedAtStartOfNetworkGame) = GLOBAL_ADDRESS_BY_VERSION(0x53C240, 0, 0, 0, 0, 0); + +void CGame::GenerateTempPedAtStartOfNetworkGame() { + plugin::CallDynGlobal(gaddrof(CGame::GenerateTempPedAtStartOfNetworkGame)); +} + +int addrof(CGame::Init1) = ADDRESS_BY_VERSION(0x5BF840, 0, 0, 0, 0, 0); +int gaddrof(CGame::Init1) = GLOBAL_ADDRESS_BY_VERSION(0x5BF840, 0, 0, 0, 0, 0); + +bool CGame::Init1(char const *datFile) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGame::Init1), datFile); +} + +int addrof(CGame::Init2) = ADDRESS_BY_VERSION(0x5BA1A0, 0, 0, 0, 0, 0); +int gaddrof(CGame::Init2) = GLOBAL_ADDRESS_BY_VERSION(0x5BA1A0, 0, 0, 0, 0, 0); + +bool CGame::Init2(char const *datFile) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGame::Init2), datFile); +} + +int addrof(CGame::Init3) = ADDRESS_BY_VERSION(0x5BA400, 0, 0, 0, 0, 0); +int gaddrof(CGame::Init3) = GLOBAL_ADDRESS_BY_VERSION(0x5BA400, 0, 0, 0, 0, 0); + +bool CGame::Init3(char const *datFile) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGame::Init3), datFile); +} + +int addrof(CGame::InitAfterLostFocus) = ADDRESS_BY_VERSION(0x53BC60, 0, 0, 0, 0, 0); +int gaddrof(CGame::InitAfterLostFocus) = GLOBAL_ADDRESS_BY_VERSION(0x53BC60, 0, 0, 0, 0, 0); + +void CGame::InitAfterLostFocus() { + plugin::CallDynGlobal(gaddrof(CGame::InitAfterLostFocus)); +} + +int addrof(CGame::Initialise) = ADDRESS_BY_VERSION(0x53BC80, 0, 0, 0, 0, 0); +int gaddrof(CGame::Initialise) = GLOBAL_ADDRESS_BY_VERSION(0x53BC80, 0, 0, 0, 0, 0); + +bool CGame::Initialise(char const *datFile) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGame::Initialise), datFile); +} + +int addrof(CGame::InitialiseCoreDataAfterRW) = ADDRESS_BY_VERSION(0x5BFA90, 0, 0, 0, 0, 0); +int gaddrof(CGame::InitialiseCoreDataAfterRW) = GLOBAL_ADDRESS_BY_VERSION(0x5BFA90, 0, 0, 0, 0, 0); + +bool CGame::InitialiseCoreDataAfterRW() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGame::InitialiseCoreDataAfterRW)); +} + +int addrof(CGame::InitialiseEssentialsAfterRW) = ADDRESS_BY_VERSION(0x5BA160, 0, 0, 0, 0, 0); +int gaddrof(CGame::InitialiseEssentialsAfterRW) = GLOBAL_ADDRESS_BY_VERSION(0x5BA160, 0, 0, 0, 0, 0); + +bool CGame::InitialiseEssentialsAfterRW() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGame::InitialiseEssentialsAfterRW)); +} + +int addrof(CGame::InitialiseOnceBeforeRW) = ADDRESS_BY_VERSION(0x53BB50, 0, 0, 0, 0, 0); +int gaddrof(CGame::InitialiseOnceBeforeRW) = GLOBAL_ADDRESS_BY_VERSION(0x53BB50, 0, 0, 0, 0, 0); + +bool CGame::InitialiseOnceBeforeRW() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGame::InitialiseOnceBeforeRW)); +} + +int addrof(CGame::InitialiseRenderWare) = ADDRESS_BY_VERSION(0x5BD600, 0, 0, 0, 0, 0); +int gaddrof(CGame::InitialiseRenderWare) = GLOBAL_ADDRESS_BY_VERSION(0x5BD600, 0, 0, 0, 0, 0); + +bool CGame::InitialiseRenderWare() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGame::InitialiseRenderWare)); +} + +int addrof(CGame::InitialiseWhenRestarting) = ADDRESS_BY_VERSION(0x53C680, 0, 0, 0, 0, 0); +int gaddrof(CGame::InitialiseWhenRestarting) = GLOBAL_ADDRESS_BY_VERSION(0x53C680, 0, 0, 0, 0, 0); + +void CGame::InitialiseWhenRestarting() { + plugin::CallDynGlobal(gaddrof(CGame::InitialiseWhenRestarting)); +} + +int addrof(CGame::Process) = ADDRESS_BY_VERSION(0x53BEE0, 0, 0, 0, 0, 0); +int gaddrof(CGame::Process) = GLOBAL_ADDRESS_BY_VERSION(0x53BEE0, 0, 0, 0, 0, 0); + +void CGame::Process() { + plugin::CallDynGlobal(gaddrof(CGame::Process)); +} + +int addrof(CGame::ReInitGameObjectVariables) = ADDRESS_BY_VERSION(0x53BCF0, 0, 0, 0, 0, 0); +int gaddrof(CGame::ReInitGameObjectVariables) = GLOBAL_ADDRESS_BY_VERSION(0x53BCF0, 0, 0, 0, 0, 0); + +void CGame::ReInitGameObjectVariables() { + plugin::CallDynGlobal(gaddrof(CGame::ReInitGameObjectVariables)); +} + +int addrof(CGame::ReloadIPLs) = ADDRESS_BY_VERSION(0x53BED0, 0, 0, 0, 0, 0); +int gaddrof(CGame::ReloadIPLs) = GLOBAL_ADDRESS_BY_VERSION(0x53BED0, 0, 0, 0, 0, 0); + +void CGame::ReloadIPLs() { + plugin::CallDynGlobal(gaddrof(CGame::ReloadIPLs)); +} + +int addrof(CGame::ShutDownForRestart) = ADDRESS_BY_VERSION(0x53C550, 0, 0, 0, 0, 0); +int gaddrof(CGame::ShutDownForRestart) = GLOBAL_ADDRESS_BY_VERSION(0x53C550, 0, 0, 0, 0, 0); + +void CGame::ShutDownForRestart() { + plugin::CallDynGlobal(gaddrof(CGame::ShutDownForRestart)); +} + +int addrof(CGame::Shutdown) = ADDRESS_BY_VERSION(0x53C900, 0, 0, 0, 0, 0); +int gaddrof(CGame::Shutdown) = GLOBAL_ADDRESS_BY_VERSION(0x53C900, 0, 0, 0, 0, 0); + +bool CGame::Shutdown() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGame::Shutdown)); +} + +int addrof(CGame::ShutdownRenderWare) = ADDRESS_BY_VERSION(0x53BB80, 0, 0, 0, 0, 0); +int gaddrof(CGame::ShutdownRenderWare) = GLOBAL_ADDRESS_BY_VERSION(0x53BB80, 0, 0, 0, 0, 0); + +void CGame::ShutdownRenderWare() { + plugin::CallDynGlobal(gaddrof(CGame::ShutdownRenderWare)); +} + +int addrof(CGame::TidyUpMemory) = ADDRESS_BY_VERSION(0x53C500, 0, 0, 0, 0, 0); +int gaddrof(CGame::TidyUpMemory) = GLOBAL_ADDRESS_BY_VERSION(0x53C500, 0, 0, 0, 0, 0); + +void CGame::TidyUpMemory(bool a1, bool clearD3Dmem) { + plugin::CallDynGlobal(gaddrof(CGame::TidyUpMemory), a1, clearD3Dmem); +} + +int addrof(MoveMem) = ADDRESS_BY_VERSION(0x53C250, 0, 0, 0, 0, 0); +int gaddrof(MoveMem) = GLOBAL_ADDRESS_BY_VERSION(0x53C250, 0, 0, 0, 0, 0); + +bool MoveMem(void **pMem) { + return plugin::CallAndReturnDynGlobal(gaddrof(MoveMem), pMem); +} + +int addrof(MoveColModelMemory) = ADDRESS_BY_VERSION(0x53C290, 0, 0, 0, 0, 0); +int gaddrof(MoveColModelMemory) = GLOBAL_ADDRESS_BY_VERSION(0x53C290, 0, 0, 0, 0, 0); + +bool MoveColModelMemory(CColModel &colModel, bool a2) { + return plugin::CallAndReturnDynGlobal(gaddrof(MoveColModelMemory), colModel, a2); +} + +int addrof(MoveGeometryMemory) = ADDRESS_BY_VERSION(0x53C3E0, 0, 0, 0, 0, 0); +int gaddrof(MoveGeometryMemory) = GLOBAL_ADDRESS_BY_VERSION(0x53C3E0, 0, 0, 0, 0, 0); + +RpGeometry *MoveGeometryMemory(RpGeometry *geometry) { + return plugin::CallAndReturnDynGlobal(gaddrof(MoveGeometryMemory), geometry); +} + +int addrof(TidyUpModelInfo2) = ADDRESS_BY_VERSION(0x53C440, 0, 0, 0, 0, 0); +int gaddrof(TidyUpModelInfo2) = GLOBAL_ADDRESS_BY_VERSION(0x53C440, 0, 0, 0, 0, 0); + +bool TidyUpModelInfo2(CEntity *entity, bool a2) { + return plugin::CallAndReturnDynGlobal(gaddrof(TidyUpModelInfo2), entity, a2); +} + +int addrof(ValidateVersion) = ADDRESS_BY_VERSION(0x5BA060, 0, 0, 0, 0, 0); +int gaddrof(ValidateVersion) = GLOBAL_ADDRESS_BY_VERSION(0x5BA060, 0, 0, 0, 0, 0); + +void ValidateVersion() { + plugin::CallDynGlobal(gaddrof(ValidateVersion)); +} + +int addrof(D3DDeviceRestoreCallback) = ADDRESS_BY_VERSION(0x5BA120, 0, 0, 0, 0, 0); +int gaddrof(D3DDeviceRestoreCallback) = GLOBAL_ADDRESS_BY_VERSION(0x5BA120, 0, 0, 0, 0, 0); + +void D3DDeviceRestoreCallback() { + plugin::CallDynGlobal(gaddrof(D3DDeviceRestoreCallback)); +} + +int addrof(DoHaspChecks) = ADDRESS_BY_VERSION(0x5BA150, 0, 0, 0, 0, 0); +int gaddrof(DoHaspChecks) = GLOBAL_ADDRESS_BY_VERSION(0x5BA150, 0, 0, 0, 0, 0); + +bool DoHaspChecks() { + return plugin::CallAndReturnDynGlobal(gaddrof(DoHaspChecks)); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGame.h b/third-party/plugin-sdk/plugin_sa/game_sa/CGame.h new file mode 100644 index 00000000..b49cfee4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGame.h @@ -0,0 +1,60 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CColModel.h" +#include "CEntity.h" + +class PLUGIN_API CGame { +public: + //! Current number of area + SUPPORTED_10US static char(&aDatFile)[32]; // static char aDatFile[32] + SUPPORTED_10US static int &currLevel; + SUPPORTED_10US static unsigned char &bMissionPackGame; + SUPPORTED_10US static int &currArea; + SUPPORTED_10US static RwMatrix *&m_pWorkingMatrix1; + SUPPORTED_10US static RwMatrix *&m_pWorkingMatrix2; + + SUPPORTED_10US static bool CanSeeOutSideFromCurrArea(); + SUPPORTED_10US static bool CanSeeWaterFromCurrArea(); + SUPPORTED_10US static void DrasticTidyUpMemory(bool a1); + SUPPORTED_10US static void FinalShutdown(); + //! dummy function + SUPPORTED_10US static void GenerateTempPedAtStartOfNetworkGame(); + SUPPORTED_10US static bool Init1(char const *datFile); + SUPPORTED_10US static bool Init2(char const *datFile); + SUPPORTED_10US static bool Init3(char const *datFile); + SUPPORTED_10US static void InitAfterLostFocus(); + SUPPORTED_10US static bool Initialise(char const *datFile); + SUPPORTED_10US static bool InitialiseCoreDataAfterRW(); + SUPPORTED_10US static bool InitialiseEssentialsAfterRW(); + SUPPORTED_10US static bool InitialiseOnceBeforeRW(); + SUPPORTED_10US static bool InitialiseRenderWare(); + SUPPORTED_10US static void InitialiseWhenRestarting(); + SUPPORTED_10US static void Process(); + SUPPORTED_10US static void ReInitGameObjectVariables(); + //! dummy function + SUPPORTED_10US static void ReloadIPLs(); + SUPPORTED_10US static void ShutDownForRestart(); + SUPPORTED_10US static bool Shutdown(); + SUPPORTED_10US static void ShutdownRenderWare(); + SUPPORTED_10US static void TidyUpMemory(bool a1, bool clearD3Dmem); +}; + +SUPPORTED_10US extern int &gameTxdSlot; + +SUPPORTED_10US bool MoveMem(void **pMem); +SUPPORTED_10US bool MoveColModelMemory(CColModel &colModel, bool a2); +SUPPORTED_10US RpGeometry *MoveGeometryMemory(RpGeometry *geometry); +SUPPORTED_10US bool TidyUpModelInfo2(CEntity *entity, bool a2); +SUPPORTED_10US void ValidateVersion(); +SUPPORTED_10US void D3DDeviceRestoreCallback(); +SUPPORTED_10US bool DoHaspChecks(); + +#include "meta/meta.CGame.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGameLogic.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CGameLogic.cpp new file mode 100644 index 00000000..6d05d68e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGameLogic.cpp @@ -0,0 +1,108 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CGameLogic.h" + +bool &CGameLogic::bFinishedByScript = *(bool*)0x96A894; +CVehicle* &CGameLogic::SkipVehicle = *(CVehicle**)0x96A898; +unsigned int &CGameLogic::SkipTimer = *(unsigned int*)0x96A89C; +int &CGameLogic::SkipState = *(int*)0x96A8A0; +float &CGameLogic::fSkipAngle = *(float*)0x96A8A4; +bool &CGameLogic::bScriptCoopGameGoingOn = *(bool*)0x96A8A8; +unsigned int &CGameLogic::TimeOfLastEvent = *(unsigned int*)0x96A8AC; +char &CGameLogic::GameState = *(char*)0x96A8B0; +char &CGameLogic::bPlayersCannotTargetEachother = *(char*)0x96A8B2; + + +//Converted from int __cdecl CGameLogic::InitAtStartOfGame() 0x441210 +void CGameLogic::InitAtStartOfGame() { + plugin::Call<0x441210>(); +} + +//Converted from bool __cdecl CGameLogic::IsCoopGameGoingOn() 0x441390 +bool CGameLogic::IsCoopGameGoingOn() { + return plugin::CallAndReturn(); +} + +//Converted from CPed *CGameLogic::Remove2ndPlayerIfPresent() 0x4413C0 +void CGameLogic::Remove2ndPlayerIfPresent() { + plugin::Call<0x4413C0>(); +} + +//Converted from void __cdecl CGameLogic::SortOutStreamingAndMemory(CVector *translation, float angle) 0x441440 +void CGameLogic::SortOutStreamingAndMemory(CVector *translation, float angle) { + plugin::Call<0x441440, CVector*, float>(translation, angle); +} + +//Converted from void __cdecl CGameLogic::PassTime(unsigned int time) 0x4414C0 +void CGameLogic::PassTime(unsigned int time) { + plugin::Call<0x4414C0, unsigned int>(time); +} + +//Converted from CPad *__cdecl CGameLogic::ClearSkip(char a1) 0x441560 +void CGameLogic::ClearSkip(char a1) { + plugin::Call<0x441560, char>(a1); +} + +//Converted from bool __cdecl CGameLogic::SkipCanBeActivated() 0x4415C0 +bool CGameLogic::SkipCanBeActivated() { + return plugin::CallAndReturn(); +} + +//Converted from int __cdecl CGameLogic::IsPointWithinLineArea(int a1, signed int a2, float a3, float a4) 0x4416E0 +int CGameLogic::IsPointWithinLineArea(RwV3d* vectors, signed int sizeofvectors, float x, float y) { + return plugin::CallAndReturn(vectors, sizeofvectors, x, y); +} + +//Converted from void __cdecl CGameLogic::SetPlayerWantedLevelForForbiddenTerritories(char townNumber) 0x441770 +void CGameLogic::SetPlayerWantedLevelForForbiddenTerritories(char townNumber) { + plugin::Call<0x441770, char>(townNumber); +} + +//Converted from long double __cdecl CGameLogic::CalcDistanceToForbiddenTrainCrossing(float a1, float a2, float a3, float a4, float a5, float a6, char a7, int a8) 0x4418E0 +long double CGameLogic::CalcDistanceToForbiddenTrainCrossing(float x1, float y1, float z1, float x2, float y2, float z2, char a7, CVector* a8) { + return plugin::CallAndReturn(x1, y1, z1, x2, y2, z2, a7, a8); +} + +//Converted from bool __cdecl CGameLogic::LaRiotsActiveHere() 0x441C10 +bool CGameLogic::LaRiotsActiveHere() { + return plugin::CallAndReturn(); +} + +//Converted from signed int __cdecl CGameLogic::RestorePedsWeapons(int a1) 0x441D30 +signed int CGameLogic::RestorePedsWeapons(int a1) { + return plugin::CallAndReturn(a1); +} + +//Converted from char __cdecl CGameLogic::IsPlayerAllowedToGoInThisDirection(CPed *a1, float a2, float a3, float a4, float a5) 0x441E10 +bool CGameLogic::IsPlayerAllowedToGoInThisDirection(CPed *a1, float a2, float a3, float a4, float a5) { + return plugin::CallAndReturn(a1, a2, a3, a4, a5); +} + +//Converted from void __cdecl CGameLogic::RestorePlayerStuffDuringResurrection(CPlayerPed *player, float x, float y, float z, float fAngle) 0x442060 +void CGameLogic::RestorePlayerStuffDuringResurrection(CPlayerPed *player, float x, float y, float z, float fAngle) { + plugin::Call<0x442060, CPlayerPed*, float, float, float, float>(player, x, y, z, fAngle); +} + +//Converted from char CGameLogic::UpdateSkip() 0x442480 +void CGameLogic::UpdateSkip() { + plugin::Call<0x442480>(); +} + +//Converted from void CGameLogic::ResetStuffUponResurrection() 0x442980 +void CGameLogic::ResetStuffUponResurrection() { + plugin::Call<0x442980>(); +} + +//Converted from void CGameLogic::Update() 0x442AD0 +void CGameLogic::Update() { + plugin::Call<0x442AD0>(); +} + +//Converted from char CGameLogic::Save() 0x5D33C0 +void CGameLogic::Save() { + plugin::Call<0x5D33C0>(); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGameLogic.h b/third-party/plugin-sdk/plugin_sa/game_sa/CGameLogic.h new file mode 100644 index 00000000..a1a7eaab --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGameLogic.h @@ -0,0 +1,42 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVehicle.h" +#include "CPlayerPed.h" + +class PLUGIN_API CGameLogic { +public: + static bool &bFinishedByScript; + static CVehicle* &SkipVehicle; + static unsigned int &SkipTimer; + static int &SkipState; + static float &fSkipAngle; + static bool &bScriptCoopGameGoingOn; + static unsigned int &TimeOfLastEvent; + static char &GameState; + static char &bPlayersCannotTargetEachother; + + static void InitAtStartOfGame(); + static bool IsCoopGameGoingOn(); + static void Remove2ndPlayerIfPresent(); + static void SortOutStreamingAndMemory(CVector *translation, float angle); + static void PassTime(unsigned int time); + static void ClearSkip(char a1); + static bool SkipCanBeActivated(); + static int IsPointWithinLineArea(RwV3d* areas, signed int sizeofareas, float x, float y); + static void SetPlayerWantedLevelForForbiddenTerritories(char townNumber); + static long double CalcDistanceToForbiddenTrainCrossing(float x1, float y1, float z1, float x2, float y2, float z2, char a7, CVector* a8); + static bool LaRiotsActiveHere(); + static signed int RestorePedsWeapons(int a1); + static bool IsPlayerAllowedToGoInThisDirection(CPed *a1, float a2, float a3, float a4, float a5); + static void RestorePlayerStuffDuringResurrection(CPlayerPed *player, float x, float y, float z, float fAngle); + static void UpdateSkip(); + static void ResetStuffUponResurrection(); + static void Update(); + static void Save(); +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGamma.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CGamma.cpp new file mode 100644 index 00000000..25f359f8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGamma.cpp @@ -0,0 +1,14 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CGamma.h" + +CGamma &gamma = *(CGamma *)0xC92134; + +void CGamma::SetGamma(float arg1, char arg2) +{ + ((void (__thiscall *)(CGamma *, float, char))0x747200)(this, arg1, arg2); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGamma.h b/third-party/plugin-sdk/plugin_sa/game_sa/CGamma.h new file mode 100644 index 00000000..c6e812d9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGamma.h @@ -0,0 +1,24 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CGamma +{ +public: + unsigned int field_0; + float field_4; + float field_8; + float field_C; + + void SetGamma(float arg1, char arg2); +}; + +VALIDATE_SIZE(CGamma, 0x10); + +extern PLUGIN_API CGamma γ \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGangInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CGangInfo.cpp new file mode 100644 index 00000000..a9d21ccc --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGangInfo.cpp @@ -0,0 +1,15 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CGangInfo.h" + +PLUGIN_SOURCE_FILE + +int ctor_addr(CGangInfo) = ADDRESS_BY_VERSION(0x5DE520, 0, 0, 0, 0, 0); +int ctor_gaddr(CGangInfo) = GLOBAL_ADDRESS_BY_VERSION(0x5DE520, 0, 0, 0, 0, 0); + +int dtor_addr(CGangInfo) = ADDRESS_BY_VERSION(0x5DE540, 0, 0, 0, 0, 0); +int dtor_gaddr(CGangInfo) = GLOBAL_ADDRESS_BY_VERSION(0x5DE540, 0, 0, 0, 0, 0); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGangInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CGangInfo.h new file mode 100644 index 00000000..b3d27d12 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGangInfo.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CGangInfo { + PLUGIN_NO_DEFAULT_CONSTRUCTION(CGangInfo) + +public: + signed char m_nPedModelOverride; + int m_nGangWeapons[3]; +}; + +VALIDATE_SIZE(CGangInfo, 0x10); + +#include "meta/meta.CGangInfo.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGangWars.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CGangWars.cpp new file mode 100644 index 00000000..1e8da25b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGangWars.cpp @@ -0,0 +1,282 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CGangWars.h" + +PLUGIN_SOURCE_FILE + +int &CGangWars::ZoneInfoForTraining = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5F40, 0, 0, 0, 0, 0)); +int(&CGangWars::GangRatingStrength)[3] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB2C, 0, 0, 0, 0, 0)); +int(&CGangWars::GangRatings)[3] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB38, 0, 0, 0, 0, 0)); +int &CGangWars::FightTimer = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB44, 0, 0, 0, 0, 0)); +float &CGangWars::TimeTillNextAttack = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB48, 0, 0, 0, 0, 0)); +eGangAttackState &CGangWars::State2 = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB4C, 0, 0, 0, 0, 0)); +int &CGangWars::Gang2 = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB50, 0, 0, 0, 0, 0)); +unsigned int &CGangWars::LastTimeInArea = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB54, 0, 0, 0, 0, 0)); +int &CGangWars::WarFerocity = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB58, 0, 0, 0, 0, 0)); +float &CGangWars::Provocation = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB5C, 0, 0, 0, 0, 0)); +unsigned int &CGangWars::TimeStarted = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB60, 0, 0, 0, 0, 0)); +eGangWarState &CGangWars::State = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB64, 0, 0, 0, 0, 0)); +int(&CGangWars::aSpecificZones)[6] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB68, 0, 0, 0, 0, 0)); +float &CGangWars::Difficulty = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB80, 0, 0, 0, 0, 0)); +int &CGangWars::Gang1 = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB84, 0, 0, 0, 0, 0)); +CZone *&CGangWars::pZoneToFightOver = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB88, 0, 0, 0, 0, 0)); +CZoneInfo *&CGangWars::pZoneInfoToFightOver = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB8C, 0, 0, 0, 0, 0)); +bool &CGangWars::bGangWarsActive = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB90, 0, 0, 0, 0, 0)); +bool &CGangWars::bTrainingMission = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB91, 0, 0, 0, 0, 0)); +bool &CGangWars::bPlayerIsCloseby = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB92, 0, 0, 0, 0, 0)); +bool &CGangWars::bCanTriggerGangWarWhenOnAMission = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB93, 0, 0, 0, 0, 0)); +int &CGangWars::NumSpecificZones = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB94, 0, 0, 0, 0, 0)); +CRadar *&CGangWars::RadarBlip = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB98, 0, 0, 0, 0, 0)); +float &CGangWars::TerritoryUnderControlPercentage = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96AB9C, 0, 0, 0, 0, 0)); +bool &CGangWars::bIsPlayerOnAMission = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96ABA0, 0, 0, 0, 0, 0)); +CVector &CGangWars::CoorsOfPlayerAtStartOfWar = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96ABBC, 0, 0, 0, 0, 0)); +CVector &CGangWars::PointOfAttack = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x96ABC8, 0, 0, 0, 0, 0)); + +int addrof(CGangWars::AddKillToProvocation) = ADDRESS_BY_VERSION(0x443950, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::AddKillToProvocation) = GLOBAL_ADDRESS_BY_VERSION(0x443950, 0, 0, 0, 0, 0); + +void CGangWars::AddKillToProvocation(int Pedtype) { + plugin::CallDynGlobal(gaddrof(CGangWars::AddKillToProvocation), Pedtype); +} + +int addrof(CGangWars::AttackWaveOvercome) = ADDRESS_BY_VERSION(0x445B30, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::AttackWaveOvercome) = GLOBAL_ADDRESS_BY_VERSION(0x445B30, 0, 0, 0, 0, 0); + +bool CGangWars::AttackWaveOvercome() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::AttackWaveOvercome)); +} + +int addrof(CGangWars::CalculateTimeTillNextAttack) = ADDRESS_BY_VERSION(0x443DB0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::CalculateTimeTillNextAttack) = GLOBAL_ADDRESS_BY_VERSION(0x443DB0, 0, 0, 0, 0, 0); + +unsigned int CGangWars::CalculateTimeTillNextAttack() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::CalculateTimeTillNextAttack)); +} + +int addrof(CGangWars::CanPlayerStartAGangWarHere) = ADDRESS_BY_VERSION(0x443F80, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::CanPlayerStartAGangWarHere) = GLOBAL_ADDRESS_BY_VERSION(0x443F80, 0, 0, 0, 0, 0); + +bool CGangWars::CanPlayerStartAGangWarHere(CZoneInfo *zoneInfo) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::CanPlayerStartAGangWarHere), zoneInfo); +} + +int addrof(CGangWars::CheerVictory) = ADDRESS_BY_VERSION(0x444040, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::CheerVictory) = GLOBAL_ADDRESS_BY_VERSION(0x444040, 0, 0, 0, 0, 0); + +void CGangWars::CheerVictory() { + plugin::CallDynGlobal(gaddrof(CGangWars::CheerVictory)); +} + +int addrof(CGangWars::ClearSpecificZonesToTriggerGangWar) = ADDRESS_BY_VERSION(0x443FF0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::ClearSpecificZonesToTriggerGangWar) = GLOBAL_ADDRESS_BY_VERSION(0x443FF0, 0, 0, 0, 0, 0); + +void CGangWars::ClearSpecificZonesToTriggerGangWar() { + plugin::CallDynGlobal(gaddrof(CGangWars::ClearSpecificZonesToTriggerGangWar)); +} + +int addrof(CGangWars::ClearTheStreets) = ADDRESS_BY_VERSION(0x4444B0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::ClearTheStreets) = GLOBAL_ADDRESS_BY_VERSION(0x4444B0, 0, 0, 0, 0, 0); + +void CGangWars::ClearTheStreets() { + plugin::CallDynGlobal(gaddrof(CGangWars::ClearTheStreets)); +} + +int addrof(CGangWars::CreateAttackWave) = ADDRESS_BY_VERSION(0x444810, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::CreateAttackWave) = GLOBAL_ADDRESS_BY_VERSION(0x444810, 0, 0, 0, 0, 0); + +bool CGangWars::CreateAttackWave(int warFerocity, int waveID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::CreateAttackWave), warFerocity, waveID); +} + +int addrof(CGangWars::CreateDefendingGroup) = ADDRESS_BY_VERSION(0x4453D0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::CreateDefendingGroup) = GLOBAL_ADDRESS_BY_VERSION(0x4453D0, 0, 0, 0, 0, 0); + +bool CGangWars::CreateDefendingGroup(int unsued) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::CreateDefendingGroup), unsued); +} + +int addrof(CGangWars::DoStuffWhenPlayerVictorious) = ADDRESS_BY_VERSION(0x446400, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::DoStuffWhenPlayerVictorious) = GLOBAL_ADDRESS_BY_VERSION(0x446400, 0, 0, 0, 0, 0); + +void CGangWars::DoStuffWhenPlayerVictorious() { + plugin::CallDynGlobal(gaddrof(CGangWars::DoStuffWhenPlayerVictorious)); +} + +int addrof(CGangWars::DoesPlayerControlThisZone) = ADDRESS_BY_VERSION(0x443AE0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::DoesPlayerControlThisZone) = GLOBAL_ADDRESS_BY_VERSION(0x443AE0, 0, 0, 0, 0, 0); + +bool CGangWars::DoesPlayerControlThisZone(CZoneInfo *zoneinfo) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::DoesPlayerControlThisZone), zoneinfo); +} + +int addrof(CGangWars::DontCreateCivilians) = ADDRESS_BY_VERSION(0x4439C0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::DontCreateCivilians) = GLOBAL_ADDRESS_BY_VERSION(0x4439C0, 0, 0, 0, 0, 0); + +bool CGangWars::DontCreateCivilians() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::DontCreateCivilians)); +} + +int addrof(CGangWars::EndGangWar) = ADDRESS_BY_VERSION(0x4464C0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::EndGangWar) = GLOBAL_ADDRESS_BY_VERSION(0x4464C0, 0, 0, 0, 0, 0); + +void CGangWars::EndGangWar(bool bEnd) { + plugin::CallDynGlobal(gaddrof(CGangWars::EndGangWar), bEnd); +} + +int addrof(CGangWars::GangWarFightingGoingOn) = ADDRESS_BY_VERSION(0x443AC0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::GangWarFightingGoingOn) = GLOBAL_ADDRESS_BY_VERSION(0x443AC0, 0, 0, 0, 0, 0); + +bool CGangWars::GangWarFightingGoingOn() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::GangWarFightingGoingOn)); +} + +int addrof(CGangWars::GangWarGoingOn) = ADDRESS_BY_VERSION(0x443AA0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::GangWarGoingOn) = GLOBAL_ADDRESS_BY_VERSION(0x443AA0, 0, 0, 0, 0, 0); + +bool CGangWars::GangWarGoingOn() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::GangWarGoingOn)); +} + +int addrof(CGangWars::InitAtStartOfGame) = ADDRESS_BY_VERSION(0x443920, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::InitAtStartOfGame) = GLOBAL_ADDRESS_BY_VERSION(0x443920, 0, 0, 0, 0, 0); + +void CGangWars::InitAtStartOfGame() { + plugin::CallDynGlobal(gaddrof(CGangWars::InitAtStartOfGame)); +} + +int addrof(CGangWars::Load) = ADDRESS_BY_VERSION(0x5D3EB0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::Load) = GLOBAL_ADDRESS_BY_VERSION(0x5D3EB0, 0, 0, 0, 0, 0); + +void CGangWars::Load() { + plugin::CallDynGlobal(gaddrof(CGangWars::Load)); +} + +int addrof(CGangWars::MakeEnemyGainInfluenceInZone) = ADDRESS_BY_VERSION(0x445FD0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::MakeEnemyGainInfluenceInZone) = GLOBAL_ADDRESS_BY_VERSION(0x445FD0, 0, 0, 0, 0, 0); + +void CGangWars::MakeEnemyGainInfluenceInZone(int GangID, int GangDensityIncreaser) { + plugin::CallDynGlobal(gaddrof(CGangWars::MakeEnemyGainInfluenceInZone), GangID, GangDensityIncreaser); +} + +int addrof(CGangWars::MakePlayerGainInfluenceInZone) = ADDRESS_BY_VERSION(0x445E80, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::MakePlayerGainInfluenceInZone) = GLOBAL_ADDRESS_BY_VERSION(0x445E80, 0, 0, 0, 0, 0); + +bool CGangWars::MakePlayerGainInfluenceInZone(float remove_mult) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::MakePlayerGainInfluenceInZone), remove_mult); +} + +int addrof(CGangWars::PedStreamedInForThisGang) = ADDRESS_BY_VERSION(0x4439D0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::PedStreamedInForThisGang) = GLOBAL_ADDRESS_BY_VERSION(0x4439D0, 0, 0, 0, 0, 0); + +bool CGangWars::PedStreamedInForThisGang(int gangID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::PedStreamedInForThisGang), gangID); +} + +int addrof(CGangWars::PickStreamedInPedForThisGang) = ADDRESS_BY_VERSION(0x443A20, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::PickStreamedInPedForThisGang) = GLOBAL_ADDRESS_BY_VERSION(0x443A20, 0, 0, 0, 0, 0); + +bool CGangWars::PickStreamedInPedForThisGang(int gangID, int *outPedID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::PickStreamedInPedForThisGang), gangID, outPedID); +} + +int addrof(CGangWars::PickZoneToAttack) = ADDRESS_BY_VERSION(0x443B00, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::PickZoneToAttack) = GLOBAL_ADDRESS_BY_VERSION(0x443B00, 0, 0, 0, 0, 0); + +bool CGangWars::PickZoneToAttack() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::PickZoneToAttack)); +} + +int addrof(CGangWars::ReleaseCarsInAttackWave) = ADDRESS_BY_VERSION(0x445E20, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::ReleaseCarsInAttackWave) = GLOBAL_ADDRESS_BY_VERSION(0x445E20, 0, 0, 0, 0, 0); + +void CGangWars::ReleaseCarsInAttackWave() { + plugin::CallDynGlobal(gaddrof(CGangWars::ReleaseCarsInAttackWave)); +} + +int addrof(CGangWars::ReleasePedsInAttackWave) = ADDRESS_BY_VERSION(0x445C30, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::ReleasePedsInAttackWave) = GLOBAL_ADDRESS_BY_VERSION(0x445C30, 0, 0, 0, 0, 0); + +int CGangWars::ReleasePedsInAttackWave(bool IsEndOfWar, bool RestoreGangPedsAcquaintance) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangWars::ReleasePedsInAttackWave), IsEndOfWar, RestoreGangPedsAcquaintance); +} + +int addrof(CGangWars::Save) = ADDRESS_BY_VERSION(0x5D5530, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::Save) = GLOBAL_ADDRESS_BY_VERSION(0x5D5530, 0, 0, 0, 0, 0); + +void CGangWars::Save() { + plugin::CallDynGlobal(gaddrof(CGangWars::Save)); +} + +int addrof(CGangWars::SetGangWarsActive) = ADDRESS_BY_VERSION(0x446570, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::SetGangWarsActive) = GLOBAL_ADDRESS_BY_VERSION(0x446570, 0, 0, 0, 0, 0); + +void CGangWars::SetGangWarsActive(bool bActive) { + plugin::CallDynGlobal(gaddrof(CGangWars::SetGangWarsActive), bActive); +} + +int addrof(CGangWars::SetSpecificZoneToTriggerGangWar) = ADDRESS_BY_VERSION(0x444010, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::SetSpecificZoneToTriggerGangWar) = GLOBAL_ADDRESS_BY_VERSION(0x444010, 0, 0, 0, 0, 0); + +void CGangWars::SetSpecificZoneToTriggerGangWar(int zoneId) { + plugin::CallDynGlobal(gaddrof(CGangWars::SetSpecificZoneToTriggerGangWar), zoneId); +} + +int addrof(CGangWars::StartDefensiveGangWar) = ADDRESS_BY_VERSION(0x444300, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::StartDefensiveGangWar) = GLOBAL_ADDRESS_BY_VERSION(0x444300, 0, 0, 0, 0, 0); + +void CGangWars::StartDefensiveGangWar() { + plugin::CallDynGlobal(gaddrof(CGangWars::StartDefensiveGangWar)); +} + +int addrof(CGangWars::StartOffensiveGangWar) = ADDRESS_BY_VERSION(0x446050, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::StartOffensiveGangWar) = GLOBAL_ADDRESS_BY_VERSION(0x446050, 0, 0, 0, 0, 0); + +void CGangWars::StartOffensiveGangWar() { + plugin::CallDynGlobal(gaddrof(CGangWars::StartOffensiveGangWar)); +} + +int addrof(CGangWars::StrengthenPlayerInfluenceInZone) = ADDRESS_BY_VERSION(0x445F50, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::StrengthenPlayerInfluenceInZone) = GLOBAL_ADDRESS_BY_VERSION(0x445F50, 0, 0, 0, 0, 0); + +void CGangWars::StrengthenPlayerInfluenceInZone(int GroveDensityIncreaser) { + plugin::CallDynGlobal(gaddrof(CGangWars::StrengthenPlayerInfluenceInZone), GroveDensityIncreaser); +} + +int addrof(CGangWars::SwitchGangWarsActive) = ADDRESS_BY_VERSION(0x4465F0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::SwitchGangWarsActive) = GLOBAL_ADDRESS_BY_VERSION(0x4465F0, 0, 0, 0, 0, 0); + +void CGangWars::SwitchGangWarsActive() { + plugin::CallDynGlobal(gaddrof(CGangWars::SwitchGangWarsActive)); +} + +int addrof(CGangWars::TellGangMembersTo) = ADDRESS_BY_VERSION(0x444530, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::TellGangMembersTo) = GLOBAL_ADDRESS_BY_VERSION(0x444530, 0, 0, 0, 0, 0); + +void CGangWars::TellGangMembersTo(int bIsGangWarEnding) { + plugin::CallDynGlobal(gaddrof(CGangWars::TellGangMembersTo), bIsGangWarEnding); +} + +int addrof(CGangWars::TellStreamingWhichGangsAreNeeded) = ADDRESS_BY_VERSION(0x443D50, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::TellStreamingWhichGangsAreNeeded) = GLOBAL_ADDRESS_BY_VERSION(0x443D50, 0, 0, 0, 0, 0); + +void CGangWars::TellStreamingWhichGangsAreNeeded(int *GangsBitFlags) { + plugin::CallDynGlobal(gaddrof(CGangWars::TellStreamingWhichGangsAreNeeded), GangsBitFlags); +} + +int addrof(CGangWars::Update) = ADDRESS_BY_VERSION(0x446610, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::Update) = GLOBAL_ADDRESS_BY_VERSION(0x446610, 0, 0, 0, 0, 0); + +void CGangWars::Update() { + plugin::CallDynGlobal(gaddrof(CGangWars::Update)); +} + +int addrof(CGangWars::UpdateTerritoryUnderControlPercentage) = ADDRESS_BY_VERSION(0x443DE0, 0, 0, 0, 0, 0); +int gaddrof(CGangWars::UpdateTerritoryUnderControlPercentage) = GLOBAL_ADDRESS_BY_VERSION(0x443DE0, 0, 0, 0, 0, 0); + +void CGangWars::UpdateTerritoryUnderControlPercentage() { + plugin::CallDynGlobal(gaddrof(CGangWars::UpdateTerritoryUnderControlPercentage)); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGangWars.h b/third-party/plugin-sdk/plugin_sa/game_sa/CGangWars.h new file mode 100644 index 00000000..d3ae2fe1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGangWars.h @@ -0,0 +1,101 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CZoneInfo.h" +#include "CZone.h" +#include "CRadar.h" +#include "CVector.h" + +enum PLUGIN_API eGangAttackState { + NO_ATTACK = 0, + WAR_NOTIFIED = 0X1, + PLAYER_CAME_TO_WAR = 0X2 +}; + +enum PLUGIN_API eGangWarState { + NOT_IN_WAR = 0, + PREFIRST_WAVE = 0X1, + FIRST_WAVE = 0X2, + PRESECOND_WAVE = 0X3, + SECOND_WAVE = 0X4, + PRETHIRD_WAVE = 0X5, + THIRD_WAVE = 0X6 +}; + +class PLUGIN_API CGangWars { +public: + SUPPORTED_10US static int &ZoneInfoForTraining; + SUPPORTED_10US static int(&GangRatingStrength)[3]; // static int GangRatingStrength[3] + SUPPORTED_10US static int(&GangRatings)[3]; // static int GangRatings[3] + SUPPORTED_10US static int &FightTimer; + SUPPORTED_10US static float &TimeTillNextAttack; + SUPPORTED_10US static eGangAttackState &State2; + SUPPORTED_10US static int &Gang2; + SUPPORTED_10US static unsigned int &LastTimeInArea; + SUPPORTED_10US static int &WarFerocity; + SUPPORTED_10US static float &Provocation; + SUPPORTED_10US static unsigned int &TimeStarted; + SUPPORTED_10US static eGangWarState &State; + SUPPORTED_10US static int(&aSpecificZones)[6]; // static int aSpecificZones[6] + SUPPORTED_10US static float &Difficulty; + SUPPORTED_10US static int &Gang1; + SUPPORTED_10US static CZone *&pZoneToFightOver; + SUPPORTED_10US static CZoneInfo *&pZoneInfoToFightOver; + SUPPORTED_10US static bool &bGangWarsActive; + SUPPORTED_10US static bool &bTrainingMission; + SUPPORTED_10US static bool &bPlayerIsCloseby; + SUPPORTED_10US static bool &bCanTriggerGangWarWhenOnAMission; + SUPPORTED_10US static int &NumSpecificZones; + SUPPORTED_10US static CRadar *&RadarBlip; + SUPPORTED_10US static float &TerritoryUnderControlPercentage; + SUPPORTED_10US static bool &bIsPlayerOnAMission; + SUPPORTED_10US static CVector &CoorsOfPlayerAtStartOfWar; + SUPPORTED_10US static CVector &PointOfAttack; + + SUPPORTED_10US static void AddKillToProvocation(int Pedtype); + SUPPORTED_10US static bool AttackWaveOvercome(); + SUPPORTED_10US static unsigned int CalculateTimeTillNextAttack(); + SUPPORTED_10US static bool CanPlayerStartAGangWarHere(CZoneInfo *zoneInfo); + SUPPORTED_10US static void CheerVictory(); + SUPPORTED_10US static void ClearSpecificZonesToTriggerGangWar(); + SUPPORTED_10US static void ClearTheStreets(); + SUPPORTED_10US static bool CreateAttackWave(int warFerocity, int waveID); + SUPPORTED_10US static bool CreateDefendingGroup(int unsued); + SUPPORTED_10US static void DoStuffWhenPlayerVictorious(); + //! unused + SUPPORTED_10US static bool DoesPlayerControlThisZone(CZoneInfo *zoneinfo); + SUPPORTED_10US static bool DontCreateCivilians(); + SUPPORTED_10US static void EndGangWar(bool bEnd); + SUPPORTED_10US static bool GangWarFightingGoingOn(); + SUPPORTED_10US static bool GangWarGoingOn(); + SUPPORTED_10US static void InitAtStartOfGame(); + SUPPORTED_10US static void Load(); + SUPPORTED_10US static void MakeEnemyGainInfluenceInZone(int GangID, int GangDensityIncreaser); + SUPPORTED_10US static bool MakePlayerGainInfluenceInZone(float remove_mult); + SUPPORTED_10US static bool PedStreamedInForThisGang(int gangID); + SUPPORTED_10US static bool PickStreamedInPedForThisGang(int gangID, int *outPedID); + SUPPORTED_10US static bool PickZoneToAttack(); + SUPPORTED_10US static void ReleaseCarsInAttackWave(); + //! return num of released peds + SUPPORTED_10US static int ReleasePedsInAttackWave(bool IsEndOfWar, bool RestoreGangPedsAcquaintance); + SUPPORTED_10US static void Save(); + SUPPORTED_10US static void SetGangWarsActive(bool bActive); + SUPPORTED_10US static void SetSpecificZoneToTriggerGangWar(int zoneId); + SUPPORTED_10US static void StartDefensiveGangWar(); + SUPPORTED_10US static void StartOffensiveGangWar(); + SUPPORTED_10US static void StrengthenPlayerInfluenceInZone(int GroveDensityIncreaser); + //! unused + SUPPORTED_10US static void SwitchGangWarsActive(); + SUPPORTED_10US static void TellGangMembersTo(int bIsGangWarEnding); + SUPPORTED_10US static void TellStreamingWhichGangsAreNeeded(int *GangsBitFlags); + SUPPORTED_10US static void Update(); + SUPPORTED_10US static void UpdateTerritoryUnderControlPercentage(); +}; + +#include "meta/meta.CGangWars.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGangWarsSaveStructure.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CGangWarsSaveStructure.cpp new file mode 100644 index 00000000..5a1d3a30 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGangWarsSaveStructure.cpp @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CGangWarsSaveStructure.h" + +PLUGIN_SOURCE_FILE + +int addrof(CGangWarsSaveStructure::Construct) = ADDRESS_BY_VERSION(0x5D2620, 0, 0, 0, 0, 0); +int gaddrof(CGangWarsSaveStructure::Construct) = GLOBAL_ADDRESS_BY_VERSION(0x5D2620, 0, 0, 0, 0, 0); + +void CGangWarsSaveStructure::Construct() { + plugin::CallMethodDynGlobal(gaddrof(CGangWarsSaveStructure::Construct), this); +} + +int addrof(CGangWarsSaveStructure::Extract) = ADDRESS_BY_VERSION(0x5D2740, 0, 0, 0, 0, 0); +int gaddrof(CGangWarsSaveStructure::Extract) = GLOBAL_ADDRESS_BY_VERSION(0x5D2740, 0, 0, 0, 0, 0); + +void CGangWarsSaveStructure::Extract() { + plugin::CallMethodDynGlobal(gaddrof(CGangWarsSaveStructure::Extract), this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGangWarsSaveStructure.h b/third-party/plugin-sdk/plugin_sa/game_sa/CGangWarsSaveStructure.h new file mode 100644 index 00000000..147773a3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGangWarsSaveStructure.h @@ -0,0 +1,45 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class PLUGIN_API CGangWarsSaveStructure { +public: + bool bGangWarsActive; +private: + char _pad1[3]; +public: + unsigned int State; + unsigned int TimeStarted; + unsigned int GangWarZoneInfoIndex; + unsigned int GangWarNavigationZoneIndex; + CVector CoorsOfPlayerAtStartOfWar; + unsigned int Gang1; + unsigned int Gang2; + unsigned int WarFerocity; + unsigned int LastTimeInArea; + unsigned int State2; + float TimeTillNextAttack; + CVector PointOfAttack; + unsigned int FightTimer; + unsigned int RadarBlip; + bool bPlayerIsCloseby; +private: + char _pad4D[3]; +public: + float TerritoryUnderControlPercentage; + float Difficulty; + + SUPPORTED_10US void Construct(); + SUPPORTED_10US void Extract(); +}; + +VALIDATE_SIZE(CGangWarsSaveStructure, 0x58); + +#include "meta/meta.CGangWarsSaveStructure.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGangs.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CGangs.cpp new file mode 100644 index 00000000..bd66df5a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGangs.cpp @@ -0,0 +1,68 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CGangs.h" + +PLUGIN_SOURCE_FILE + +bool(&CGangs::GangAttackWithCops)[16] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC091DC, 0, 0, 0, 0, 0)); +CGangInfo(&CGangs::Gang)[10] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC091F0, 0, 0, 0, 0, 0)); + +int addrof(CGangs::ChooseGangPedModel) = ADDRESS_BY_VERSION(0x5DE5A0, 0, 0, 0, 0, 0); +int gaddrof(CGangs::ChooseGangPedModel) = GLOBAL_ADDRESS_BY_VERSION(0x5DE5A0, 0, 0, 0, 0, 0); + +signed int CGangs::ChooseGangPedModel(short gangID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangs::ChooseGangPedModel), gangID); +} + +int addrof(CGangs::GetWillAttackPlayerWithCops) = ADDRESS_BY_VERSION(0x5DE500, 0, 0, 0, 0, 0); +int gaddrof(CGangs::GetWillAttackPlayerWithCops) = GLOBAL_ADDRESS_BY_VERSION(0x5DE500, 0, 0, 0, 0, 0); + +bool CGangs::GetWillAttackPlayerWithCops(ePedType gangID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGangs::GetWillAttackPlayerWithCops), gangID); +} + +int addrof(CGangs::Initialise) = ADDRESS_BY_VERSION(0x5DE680, 0, 0, 0, 0, 0); +int gaddrof(CGangs::Initialise) = GLOBAL_ADDRESS_BY_VERSION(0x5DE680, 0, 0, 0, 0, 0); + +void CGangs::Initialise() { + plugin::CallDynGlobal(gaddrof(CGangs::Initialise)); +} + +int addrof(CGangs::Load) = ADDRESS_BY_VERSION(0x5D3A90, 0, 0, 0, 0, 0); +int gaddrof(CGangs::Load) = GLOBAL_ADDRESS_BY_VERSION(0x5D3A90, 0, 0, 0, 0, 0); + +void CGangs::Load() { + plugin::CallDynGlobal(gaddrof(CGangs::Load)); +} + +int addrof(CGangs::Save) = ADDRESS_BY_VERSION(0x5D3A60, 0, 0, 0, 0, 0); +int gaddrof(CGangs::Save) = GLOBAL_ADDRESS_BY_VERSION(0x5D3A60, 0, 0, 0, 0, 0); + +void CGangs::Save() { + plugin::CallDynGlobal(gaddrof(CGangs::Save)); +} + +int addrof(CGangs::SetGangPedModelOverride) = ADDRESS_BY_VERSION(0x5DE580, 0, 0, 0, 0, 0); +int gaddrof(CGangs::SetGangPedModelOverride) = GLOBAL_ADDRESS_BY_VERSION(0x5DE580, 0, 0, 0, 0, 0); + +void CGangs::SetGangPedModelOverride(short gangID, signed char PedModelOverride) { + plugin::CallDynGlobal(gaddrof(CGangs::SetGangPedModelOverride), gangID, PedModelOverride); +} + +int addrof(CGangs::SetGangWeapons) = ADDRESS_BY_VERSION(0x5DE550, 0, 0, 0, 0, 0); +int gaddrof(CGangs::SetGangWeapons) = GLOBAL_ADDRESS_BY_VERSION(0x5DE550, 0, 0, 0, 0, 0); + +void CGangs::SetGangWeapons(short gangID, int weapID1, int weapID2, int weapID3) { + plugin::CallDynGlobal(gaddrof(CGangs::SetGangWeapons), gangID, weapID1, weapID2, weapID3); +} + +int addrof(CGangs::SetWillAttackPlayerWithCops) = ADDRESS_BY_VERSION(0x5DE4E0, 0, 0, 0, 0, 0); +int gaddrof(CGangs::SetWillAttackPlayerWithCops) = GLOBAL_ADDRESS_BY_VERSION(0x5DE4E0, 0, 0, 0, 0, 0); + +void CGangs::SetWillAttackPlayerWithCops(ePedType gangID, bool bAttackPlayerWithCops) { + plugin::CallDynGlobal(gaddrof(CGangs::SetWillAttackPlayerWithCops), gangID, bAttackPlayerWithCops); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGangs.h b/third-party/plugin-sdk/plugin_sa/game_sa/CGangs.h new file mode 100644 index 00000000..3ca1f580 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGangs.h @@ -0,0 +1,31 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "ePedType.h" +#include "CGangInfo.h" + +class PLUGIN_API CGangs { +public: + SUPPORTED_10US static bool(&GangAttackWithCops)[16]; // static bool GangAttackWithCops[16] + SUPPORTED_10US static CGangInfo(&Gang)[10]; // static CGangInfo Gang[10] + + SUPPORTED_10US static signed int ChooseGangPedModel(short gangID); + //! unused + SUPPORTED_10US static bool GetWillAttackPlayerWithCops(ePedType gangID); + SUPPORTED_10US static void Initialise(); + SUPPORTED_10US static void Load(); + SUPPORTED_10US static void Save(); + //! unused + SUPPORTED_10US static void SetGangPedModelOverride(short gangID, signed char PedModelOverride); + SUPPORTED_10US static void SetGangWeapons(short gangID, int weapID1, int weapID2, int weapID3); + //! unused + SUPPORTED_10US static void SetWillAttackPlayerWithCops(ePedType gangID, bool bAttackPlayerWithCops); +}; + +#include "meta/meta.CGangs.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGarages.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CGarages.cpp new file mode 100644 index 00000000..3fa07dd3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGarages.cpp @@ -0,0 +1,11 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CGarages.h" + +char *CGarages::MessageIDString = (char *)0x96C014; +int& CGarages::MessageNumberInString = *(int*)0x96C010; +int& CGarages::MessageNumberInString2 = *(int*)0x96C00C; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGarages.h b/third-party/plugin-sdk/plugin_sa/game_sa/CGarages.h new file mode 100644 index 00000000..da6fee08 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGarages.h @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CGarages +{ +public: + // static char MessageIDString[8]; + static char *MessageIDString; + static int& MessageNumberInString; + static int& MessageNumberInString2; + +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGeneral.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CGeneral.cpp new file mode 100644 index 00000000..fc9ae02e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGeneral.cpp @@ -0,0 +1,57 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CGeneral.h" + +// Converted from cdecl float CGeneral::LimitAngle(float angle) 0x53CB00 +float CGeneral::LimitAngle(float angle) { + return ((float(__cdecl *)(float))0x53CB00)(angle); +} + +// Converted from cdecl float CGeneral::LimitRadianAngle(float angle) 0x53CB50 +float CGeneral::LimitRadianAngle(float angle) { + return ((float(__cdecl *)(float))0x53CB50)(angle); +} + +// Converted from cdecl float CGeneral::GetRadianAngleBetweenPoints(float x1,float y1,float x2,float y2) 0x53CBE0 +float CGeneral::GetRadianAngleBetweenPoints(float x1, float y1, float x2, float y2) { + return ((float(__cdecl *)(float, float, float, float))0x53CBE0)(x1, y1, x2, y2); +} + +// Converted from cdecl float CGeneral::GetATanOfXY(float x,float y) 0x53CC70 +float CGeneral::GetATanOfXY(float x, float y) { + return ((float(__cdecl *)(float, float))0x53CC70)(x, y); +} + +// Converted from cdecl uchar CGeneral::GetNodeHeadingFromVector(float x,float y) 0x53CDC0 +unsigned char CGeneral::GetNodeHeadingFromVector(float x, float y) { + return ((unsigned char(__cdecl *)(float, float))0x53CDC0)(x, y); +} + +// Converted from cdecl bool CGeneral::SolveQuadratic(float a,float b,float c,float &x1,float &x2) 0x53CE30 +bool CGeneral::SolveQuadratic(float a, float b, float c, float& x1, float& x2) { + return ((bool(__cdecl *)(float, float, float, float&, float&))0x53CE30)(a, b, c, x1, x2); +} + +// Converted from cdecl float CGeneral::GetAngleBetweenPoints(float x1,float y1,float x2,float y2) 0x53CEA0 +float CGeneral::GetAngleBetweenPoints(float x1, float y1, float x2, float y2) { + return ((float(__cdecl *)(float, float, float, float))0x53CEA0)(x1, y1, x2, y2); +} + +// Converted from cdecl uint CGeneral::GetRandomNumberInRange(int min, int max) 0x407180 +unsigned int CGeneral::GetRandomNumberInRange(int min, int max) { + return ((unsigned int(__cdecl *)(int, int))0x407180)(min, max); +} + +// Converted from cdecl float CGeneral::GetRandomNumberInRange(float min,float max) 0x41BD90 +float CGeneral::GetRandomNumberInRange(float min, float max) { + return ((float(__cdecl *)(float, float))0x41BD90)(min, max); +} + +void CGeneral::CamShakeNoPos(CCamera *camera, float strength) +{ + ((void(__cdecl *)(CCamera*, float))0x50A970)(camera, strength); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGeneral.h b/third-party/plugin-sdk/plugin_sa/game_sa/CGeneral.h new file mode 100644 index 00000000..fff3dd67 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGeneral.h @@ -0,0 +1,24 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CCamera.h" + +class PLUGIN_API CGeneral { +public: + static float LimitAngle(float angle); + static float LimitRadianAngle(float angle); + static float GetRadianAngleBetweenPoints(float x1, float y1, float x2, float y2); + static float GetATanOfXY(float x, float y); + static unsigned char GetNodeHeadingFromVector(float x, float y); + static bool SolveQuadratic(float a, float b, float c, float& x1, float& x2); + static float GetAngleBetweenPoints(float x1, float y1, float x2, float y2); + static unsigned int GetRandomNumberInRange(int min, int max); // returns random int in range [min;max) + static float GetRandomNumberInRange(float min, float max); // returns random float in range [min;max) + static void CamShakeNoPos(CCamera *camera, float strength); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGenericGameStorage.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CGenericGameStorage.cpp new file mode 100644 index 00000000..118a5298 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGenericGameStorage.cpp @@ -0,0 +1,172 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CGenericGameStorage.h" + +PLUGIN_SOURCE_FILE + +char *CGenericGameStorage::ms_LoadFileNameWithPath = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC15F60, 0, 0, 0, 0, 0)); +char *CGenericGameStorage::ms_LoadFileName = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC15FC8, 0, 0, 0, 0, 0)); +char *CGenericGameStorage::ms_SaveFileNameJustSaved = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16030, 0, 0, 0, 0, 0)); +int &CGenericGameStorage::ms_CheckSum = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16134, 0, 0, 0, 0, 0)); +tSlotSaveDate *CGenericGameStorage::ms_SlotSaveDate = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16138, 0, 0, 0, 0, 0)); +tSlotFileName *CGenericGameStorage::ms_SlotFileName = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16368, 0, 0, 0, 0, 0)); +char *CGenericGameStorage::ms_ValidSaveName = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16DB8, 0, 0, 0, 0, 0)); +int *CGenericGameStorage::ms_Slots = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16EB8, 0, 0, 0, 0, 0)); +void *&CGenericGameStorage::ms_WorkBuffer = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16EE8, 0, 0, 0, 0, 0)); +int &CGenericGameStorage::ms_WorkBufferPos = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16EEC, 0, 0, 0, 0, 0)); +FILE *&CGenericGameStorage::ms_FileHandle = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16EF0, 0, 0, 0, 0, 0)); +int &CGenericGameStorage::ms_FilePos = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16EF4, 0, 0, 0, 0, 0)); +int &CGenericGameStorage::ms_FileSize = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16EF8, 0, 0, 0, 0, 0)); +bool &CGenericGameStorage::ms_bFailed = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16EFC, 0, 0, 0, 0, 0)); +bool &CGenericGameStorage::ms_bLoading = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC16EFD, 0, 0, 0, 0, 0)); + +int addrof(CGenericGameStorage::CheckDataNotCorrupt) = ADDRESS_BY_VERSION(0x5D1170, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::CheckDataNotCorrupt) = GLOBAL_ADDRESS_BY_VERSION(0x5D1170, 0, 0, 0, 0, 0); + +bool CGenericGameStorage::CheckDataNotCorrupt(int saveID, char *saveGameFilename) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::CheckDataNotCorrupt), saveID, saveGameFilename); +} + +int addrof(CGenericGameStorage::CheckSlotDataValid) = ADDRESS_BY_VERSION(0x5D1380, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::CheckSlotDataValid) = GLOBAL_ADDRESS_BY_VERSION(0x5D1380, 0, 0, 0, 0, 0); + +bool CGenericGameStorage::CheckSlotDataValid(int saveID, bool unused) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::CheckSlotDataValid), saveID, unused); +} + +int addrof(CGenericGameStorage::DoGameSpecificStuffAfterSucessLoad) = ADDRESS_BY_VERSION(0x618E90, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::DoGameSpecificStuffAfterSucessLoad) = GLOBAL_ADDRESS_BY_VERSION(0x618E90, 0, 0, 0, 0, 0); + +void CGenericGameStorage::DoGameSpecificStuffAfterSucessLoad() { + plugin::CallDynGlobal(gaddrof(CGenericGameStorage::DoGameSpecificStuffAfterSucessLoad)); +} + +int addrof(CGenericGameStorage::DoGameSpecificStuffBeforeSave) = ADDRESS_BY_VERSION(0x618F50, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::DoGameSpecificStuffBeforeSave) = GLOBAL_ADDRESS_BY_VERSION(0x618F50, 0, 0, 0, 0, 0); + +void CGenericGameStorage::DoGameSpecificStuffBeforeSave() { + plugin::CallDynGlobal(gaddrof(CGenericGameStorage::DoGameSpecificStuffBeforeSave)); +} + +int addrof(CGenericGameStorage::GenericLoad) = ADDRESS_BY_VERSION(0x5D17B0, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::GenericLoad) = GLOBAL_ADDRESS_BY_VERSION(0x5D17B0, 0, 0, 0, 0, 0); + +bool CGenericGameStorage::GenericLoad(bool *arg1) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::GenericLoad), arg1); +} + +int addrof(CGenericGameStorage::GenericSave) = ADDRESS_BY_VERSION(0x5D13E0, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::GenericSave) = GLOBAL_ADDRESS_BY_VERSION(0x5D13E0, 0, 0, 0, 0, 0); + +bool CGenericGameStorage::GenericSave(int unused) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::GenericSave), unused); +} + +int addrof(CGenericGameStorage::GetCurrentVersionNumber) = ADDRESS_BY_VERSION(0x5D0F50, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::GetCurrentVersionNumber) = GLOBAL_ADDRESS_BY_VERSION(0x5D0F50, 0, 0, 0, 0, 0); + +int CGenericGameStorage::GetCurrentVersionNumber() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::GetCurrentVersionNumber)); +} + +int addrof(CGenericGameStorage::GetNameOfSavedGame) = ADDRESS_BY_VERSION(0x5D0F40, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::GetNameOfSavedGame) = GLOBAL_ADDRESS_BY_VERSION(0x5D0F40, 0, 0, 0, 0, 0); + +char *CGenericGameStorage::GetNameOfSavedGame(int saveID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::GetNameOfSavedGame), saveID); +} + +int addrof(CGenericGameStorage::GetNameOfSavedGame_Alt) = ADDRESS_BY_VERSION(0x619030, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::GetNameOfSavedGame_Alt) = GLOBAL_ADDRESS_BY_VERSION(0x619030, 0, 0, 0, 0, 0); + +char *CGenericGameStorage::GetNameOfSavedGame_Alt(int saveID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::GetNameOfSavedGame_Alt), saveID); +} + +int addrof(CGenericGameStorage::GetSavedRadioStationPosition) = ADDRESS_BY_VERSION(0x618E80, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::GetSavedRadioStationPosition) = GLOBAL_ADDRESS_BY_VERSION(0x618E80, 0, 0, 0, 0, 0); + +int CGenericGameStorage::GetSavedRadioStationPosition() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::GetSavedRadioStationPosition)); +} + +int addrof(CGenericGameStorage::InitNewSettingsAfterLoad) = ADDRESS_BY_VERSION(0x618FF0, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::InitNewSettingsAfterLoad) = GLOBAL_ADDRESS_BY_VERSION(0x618FF0, 0, 0, 0, 0, 0); + +void CGenericGameStorage::InitNewSettingsAfterLoad() { + plugin::CallDynGlobal(gaddrof(CGenericGameStorage::InitNewSettingsAfterLoad)); +} + +int addrof(CGenericGameStorage::InitRadioStationPositionList) = ADDRESS_BY_VERSION(0x618E70, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::InitRadioStationPositionList) = GLOBAL_ADDRESS_BY_VERSION(0x618E70, 0, 0, 0, 0, 0); + +void CGenericGameStorage::InitRadioStationPositionList() { + plugin::CallDynGlobal(gaddrof(CGenericGameStorage::InitRadioStationPositionList)); +} + +int addrof(CGenericGameStorage::LoadWorkBuffer) = ADDRESS_BY_VERSION(0x5D10B0, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::LoadWorkBuffer) = GLOBAL_ADDRESS_BY_VERSION(0x5D10B0, 0, 0, 0, 0, 0); + +bool CGenericGameStorage::LoadWorkBuffer() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::LoadWorkBuffer)); +} + +int addrof(CGenericGameStorage::MakeValidSaveName) = ADDRESS_BY_VERSION(0x5D0E90, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::MakeValidSaveName) = GLOBAL_ADDRESS_BY_VERSION(0x5D0E90, 0, 0, 0, 0, 0); + +void CGenericGameStorage::MakeValidSaveName(int saveNum) { + plugin::CallDynGlobal(gaddrof(CGenericGameStorage::MakeValidSaveName), saveNum); +} + +int addrof(CGenericGameStorage::OpenFileForReading) = ADDRESS_BY_VERSION(0x5D0D20, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::OpenFileForReading) = GLOBAL_ADDRESS_BY_VERSION(0x5D0D20, 0, 0, 0, 0, 0); + +bool CGenericGameStorage::OpenFileForReading(char *saveGameFilename, unsigned int *saveID) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::OpenFileForReading), saveGameFilename, saveID); +} + +int addrof(CGenericGameStorage::OpenFileForWriting) = ADDRESS_BY_VERSION(0x5D0DD0, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::OpenFileForWriting) = GLOBAL_ADDRESS_BY_VERSION(0x5D0DD0, 0, 0, 0, 0, 0); + +bool CGenericGameStorage::OpenFileForWriting() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::OpenFileForWriting)); +} + +int addrof(CGenericGameStorage::ReportError) = ADDRESS_BY_VERSION(0x5D08C0, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::ReportError) = GLOBAL_ADDRESS_BY_VERSION(0x5D08C0, 0, 0, 0, 0, 0); + +void CGenericGameStorage::ReportError(eSaveLoadBlocks block, eSaveLoadError errorType) { + plugin::CallDynGlobal(gaddrof(CGenericGameStorage::ReportError),block,errorType); +} + +int addrof(CGenericGameStorage::RestoreForStartLoad) = ADDRESS_BY_VERSION(0x619000, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::RestoreForStartLoad) = GLOBAL_ADDRESS_BY_VERSION(0x619000, 0, 0, 0, 0, 0); + +char CGenericGameStorage::RestoreForStartLoad() { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::RestoreForStartLoad)); +} + +int addrof(CGenericGameStorage::SaveWorkBuffer) = ADDRESS_BY_VERSION(0x5D0F80, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::SaveWorkBuffer) = GLOBAL_ADDRESS_BY_VERSION(0x5D0F80, 0, 0, 0, 0, 0); + +bool CGenericGameStorage::SaveWorkBuffer(bool a1) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::SaveWorkBuffer), a1); +} + +int addrof(CGenericGameStorage::_LoadDataFromWorkBuffer) = ADDRESS_BY_VERSION(0x5D1300, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::_LoadDataFromWorkBuffer) = GLOBAL_ADDRESS_BY_VERSION(0x5D1300, 0, 0, 0, 0, 0); + +bool CGenericGameStorage::_LoadDataFromWorkBuffer(void *pData, int size) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::_LoadDataFromWorkBuffer), pData, size); +} + +int addrof(CGenericGameStorage::_SaveDataToWorkBuffer) = ADDRESS_BY_VERSION(0x5D1270, 0, 0, 0, 0, 0); +int gaddrof(CGenericGameStorage::_SaveDataToWorkBuffer) = GLOBAL_ADDRESS_BY_VERSION(0x5D1270, 0, 0, 0, 0, 0); + +bool CGenericGameStorage::_SaveDataToWorkBuffer(void *pData, int Size) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGenericGameStorage::_SaveDataToWorkBuffer), pData, Size); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGenericGameStorage.h b/third-party/plugin-sdk/plugin_sa/game_sa/CGenericGameStorage.h new file mode 100644 index 00000000..18b537da --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGenericGameStorage.h @@ -0,0 +1,107 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +enum PLUGIN_API eSaveLoadBlocks { + BLOCK_SIMPLE_VARIABLES = 0, + BLOCK_SCRIPTS = 0x1, + BLOCK_POOLS = 0x2, + BLOCK_GARAGES = 0x3, + BLOCK_GAMELOGIC = 0x4, + BLOCK_PATHS = 0x5, + BLOCK_PICKUPS = 0x6, + BLOCK_PHONEINFO = 0x7, + BLOCK_RESTART = 0x8, + BLOCK_RADAR = 0x9, + BLOCK_ZONES = 0xA, + BLOCK_GANGS = 0xB, + BLOCK_CAR_GENERATORS = 0xC, + BLOCK_PED_GENERATORS = 0xD, + BLOCK_AUDIO_SCRIPT_OBJECT = 0xE, + BLOCK_PLAYERINFO = 0xF, + BLOCK_STATS = 0x10, + BLOCK_SET_PIECES = 0x11, + BLOCK_STREAMING = 0x12, + BLOCK_PED_TYPES = 0x13, + BLOCK_TAGS = 0x14, + BLOCK_IPLS = 0x15, + BLOCK_SHOPPING = 0x16, + BLOCK_GANGWARS = 0x17, + BLOCK_STUNTJUMPS = 0x18, + BLOCK_USER3DMARKERS = 0x1B +}; + +enum PLUGIN_API eSaveLoadError { + LOADING_SYNC_ERROR = 0, + LOADING_ERROR = 0x1, + SAVING_ERROR = 0x2 +}; + +struct PLUGIN_API tSlotSaveDate { + char m_sSavedGameDateAndTime[70]; +}; + +struct PLUGIN_API tSlotFileName { + char m_sSavedGameName[260]; +}; + +VALIDATE_SIZE(tSlotSaveDate, 0x46); +VALIDATE_SIZE(tSlotFileName, 0x104); + +class PLUGIN_API CGenericGameStorage { +public: + SUPPORTED_10US static char *ms_LoadFileNameWithPath; // static char ms_LoadFileNameWithPath[104] + SUPPORTED_10US static char *ms_LoadFileName; // static char ms_LoadFileName[104] + SUPPORTED_10US static char *ms_SaveFileNameJustSaved; // static char ms_SaveFileNameJustSaved[260] + SUPPORTED_10US static int &ms_CheckSum; + SUPPORTED_10US static tSlotSaveDate *ms_SlotSaveDate; // static tSlotSaveDate ms_SlotSaveDate[8] + SUPPORTED_10US static tSlotFileName *ms_SlotFileName; // static tSlotFileName ms_SlotFileName[8] + SUPPORTED_10US static char *ms_ValidSaveName; // static char ms_ValidSaveName[256] + SUPPORTED_10US static int *ms_Slots; // static int ms_Slots[9] + SUPPORTED_10US static void *&ms_WorkBuffer; + SUPPORTED_10US static int &ms_WorkBufferPos; + SUPPORTED_10US static FILE *&ms_FileHandle; + SUPPORTED_10US static int &ms_FilePos; + SUPPORTED_10US static int &ms_FileSize; + SUPPORTED_10US static bool &ms_bFailed; + SUPPORTED_10US static bool &ms_bLoading; + + SUPPORTED_10US static bool CheckDataNotCorrupt(int saveID, char *saveGameFilename); + SUPPORTED_10US static bool CheckSlotDataValid(int saveID, bool unused); + SUPPORTED_10US static void DoGameSpecificStuffAfterSucessLoad(); + SUPPORTED_10US static void DoGameSpecificStuffBeforeSave(); + SUPPORTED_10US static bool GenericLoad(bool *arg1); + SUPPORTED_10US static bool GenericSave(int unused); + SUPPORTED_10US static int GetCurrentVersionNumber(); + SUPPORTED_10US static char *GetNameOfSavedGame(int saveID); + //! unused + SUPPORTED_10US static char *GetNameOfSavedGame_Alt(int saveID); + //! unused + //! does nothing (return 0) + SUPPORTED_10US static int GetSavedRadioStationPosition(); + //! unused + //! does nothing (NOP) + SUPPORTED_10US static void InitNewSettingsAfterLoad(); + //! does nothing (NOP) + SUPPORTED_10US static void InitRadioStationPositionList(); + SUPPORTED_10US static bool LoadWorkBuffer(); + SUPPORTED_10US static void MakeValidSaveName(int saveNum); + SUPPORTED_10US static bool OpenFileForReading(char *saveGameFilename, unsigned int *saveID); + SUPPORTED_10US static bool OpenFileForWriting(); + SUPPORTED_10US static void ReportError(eSaveLoadBlocks block, eSaveLoadError errorType); + //! does nothing (return 0) + SUPPORTED_10US static char RestoreForStartLoad(); + SUPPORTED_10US static bool SaveWorkBuffer(bool a1); + SUPPORTED_10US static bool _LoadDataFromWorkBuffer(void *pData, int size); + SUPPORTED_10US static bool _SaveDataToWorkBuffer(void *pData, int Size); +}; + + + +#include "meta/meta.CGenericGameStorage.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGridRef.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CGridRef.cpp new file mode 100644 index 00000000..4872d71f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGridRef.cpp @@ -0,0 +1,46 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CGridRef.h" + +PLUGIN_SOURCE_FILE + +PLUGIN_VARIABLE char(&GridRefList)[10][10][32] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC72FB0, 0, 0, 0, 0, 0)); + +int addrof(CGridRef::GetAreaName) = ADDRESS_BY_VERSION(0x71D650, 0, 0, 0, 0, 0); +int gaddrof(CGridRef::GetAreaName) = GLOBAL_ADDRESS_BY_VERSION(0x71D650, 0, 0, 0, 0, 0); + +char *CGridRef::GetAreaName(unsigned char sectorX, unsigned char sectorY) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGridRef::GetAreaName), sectorX, sectorY); +} + +int addrof(CGridRef::GetArtistBugstarID) = ADDRESS_BY_VERSION(0x71D670, 0, 0, 0, 0, 0); +int gaddrof(CGridRef::GetArtistBugstarID) = GLOBAL_ADDRESS_BY_VERSION(0x71D670, 0, 0, 0, 0, 0); + +unsigned int CGridRef::GetArtistBugstarID(unsigned char sectorX, unsigned char sectorY) { + return plugin::CallAndReturnDynGlobal(gaddrof(CGridRef::GetArtistBugstarID), sectorX, sectorY); +} + +int addrof_o(CGridRef::GetGridRefPositions, void (*)(CVector, unsigned char *, unsigned char *)) = ADDRESS_BY_VERSION(0x71D5A0, 0, 0, 0, 0, 0); +int gaddrof_o(CGridRef::GetGridRefPositions, void (*)(CVector, unsigned char *, unsigned char *)) = GLOBAL_ADDRESS_BY_VERSION(0x71D5A0, 0, 0, 0, 0, 0); + +void CGridRef::GetGridRefPositions(CVector posn, unsigned char *outSectorX, unsigned char *outSectorY) { + plugin::CallDynGlobal(gaddrof_o(CGridRef::GetGridRefPositions, void (*)(CVector, unsigned char *, unsigned char *)), posn, outSectorX, outSectorY); +} + +int addrof_o(CGridRef::GetGridRefPositions, void (*)(unsigned char *, unsigned char *)) = ADDRESS_BY_VERSION(0x71D5E0, 0, 0, 0, 0, 0); +int gaddrof_o(CGridRef::GetGridRefPositions, void (*)(unsigned char *, unsigned char *)) = GLOBAL_ADDRESS_BY_VERSION(0x71D5E0, 0, 0, 0, 0, 0); + +void CGridRef::GetGridRefPositions(unsigned char *outSectorX, unsigned char *outSectorY) { + plugin::CallDynGlobal(gaddrof_o(CGridRef::GetGridRefPositions, void (*)(unsigned char *, unsigned char *)), outSectorX, outSectorY); +} + +int addrof(CGridRef::Init) = ADDRESS_BY_VERSION(0x71D4E0, 0, 0, 0, 0, 0); +int gaddrof(CGridRef::Init) = GLOBAL_ADDRESS_BY_VERSION(0x71D4E0, 0, 0, 0, 0, 0); + +void CGridRef::Init() { + plugin::CallDynGlobal(gaddrof(CGridRef::Init)); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CGridRef.h b/third-party/plugin-sdk/plugin_sa/game_sa/CGridRef.h new file mode 100644 index 00000000..94a722fb --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CGridRef.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class PLUGIN_API CGridRef { +public: + SUPPORTED_10US static char *GetAreaName(unsigned char sectorX, unsigned char sectorY); + SUPPORTED_10US static unsigned int GetArtistBugstarID(unsigned char sectorX, unsigned char sectorY); + SUPPORTED_10US static void GetGridRefPositions(CVector posn, unsigned char *outSectorX, unsigned char *outSectorY); + SUPPORTED_10US static void GetGridRefPositions(unsigned char *outSectorX, unsigned char *outSectorY); + SUPPORTED_10US static void Init(); +}; + +SUPPORTED_10US extern char(&GridRefList)[10][10][32]; // char GridRefList[10][10][32] + +#include "meta/meta.CGridRef.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CHandObject.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CHandObject.cpp new file mode 100644 index 00000000..9f75fd9d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CHandObject.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CHandObject.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CHandObject.h b/third-party/plugin-sdk/plugin_sa/game_sa/CHandObject.h new file mode 100644 index 00000000..3d762763 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CHandObject.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CObject.h" + +class PLUGIN_API CHandObject : public CObject { +public: + class CPed *m_pPed; + unsigned int m_nBoneIndex; + RwTexture *m_pTexture; + bool m_bUpdatedMatricesArray; + char _pad[3]; +}; + +VALIDATE_SIZE(CHandObject, 0x18C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CHeli.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CHeli.cpp new file mode 100644 index 00000000..08336f58 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CHeli.cpp @@ -0,0 +1,91 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CHeli.h" + +bool& CHeli::bPoliceHelisAllowed = *(bool *)0x8D338C; +unsigned int& CHeli::TestForNewRandomHelisTimer = *(unsigned int *)0xC1C960; +CHeli** CHeli::pHelis = (CHeli**)0xC1C964; +unsigned int& CHeli::NumberOfSearchLights = *(unsigned int *)0xC1C96C; +bool& CHeli::bHeliControlsCheat = *(bool *)0xC1C970; +tHeliLight* CHeli::HeliSearchLights = (tHeliLight*)0xC1C990; + +// Converted from thiscall void CHeli::CHeli(int modelIndex,uchar createdBy) 0x6C4190 +CHeli::CHeli(int modelIndex, unsigned char createdBy) : CAutomobile(plugin::dummy) { + ((void(__thiscall *)(CHeli*, int, unsigned char))0x6C4190)(this, modelIndex, createdBy); +} + +// Converted from cdecl void CHeli::InitHelis(void) 0x6C4560 +void CHeli::InitHelis() { + ((void(__cdecl *)())0x6C4560)(); +} + +// Converted from cdecl void CHeli::AddHeliSearchLight(CVector const& origin,CVector const& target,float targetRadius,float power,uint coronaIndex,uchar unknownFlag,uchar drawShadow) 0x6C45B0 +void CHeli::AddHeliSearchLight(CVector const& origin, CVector const& target, float targetRadius, float power, unsigned int coronaIndex, unsigned char unknownFlag, unsigned char drawShadow) { + ((void(__cdecl *)(CVector const&, CVector const&, float, float, unsigned int, unsigned char, unsigned char))0x6C45B0)(origin, target, targetRadius, power, coronaIndex, unknownFlag, drawShadow); +} + +// Converted from thiscall void CHeli::PreRenderAlways(void) 0x6C4640 +void CHeli::PreRenderAlways() { + ((void(__thiscall *)(CHeli*))0x6C4640)(this); +} + +// Converted from cdecl void CHeli::Pre_SearchLightCone(void) 0x6C4650 +void CHeli::Pre_SearchLightCone() { + ((void(__cdecl *)())0x6C4650)(); +} + +// Converted from cdecl void CHeli::Post_SearchLightCone(void) 0x6C46E0 +void CHeli::Post_SearchLightCone() { + ((void(__cdecl *)())0x6C46E0)(); +} + +// Converted from cdecl void CHeli::SpecialHeliPreRender(void) 0x6C4750 +void CHeli::SpecialHeliPreRender() { + ((void(__cdecl *)())0x6C4750)(); +} + +// Converted from thiscall CVector CHeli::FindSwatPositionRelativeToHeli(int swatNumber) 0x6C4760 +CVector CHeli::FindSwatPositionRelativeToHeli(int swatNumber) { + CVector result; + ((void(__thiscall *)(CHeli*, CVector*, int))0x6C4760)(this, &result, swatNumber); + return result; +} + +// Converted from cdecl void CHeli::SwitchPoliceHelis(bool enable) 0x6C4800 +void CHeli::SwitchPoliceHelis(bool enable) { + ((void(__cdecl *)(bool))0x6C4800)(enable); +} + +// Converted from cdecl void CHeli::SearchLightCone(int coronaIndex,CVector origin,CVector target,float targetRadius,float power,uchar unknownFlag,uchar drawShadow,CVector* ,CVector* ,CVector* ,bool,float baseRadius) 0x6C58E0 +void CHeli::SearchLightCone(int coronaIndex, CVector origin, CVector target, float targetRadius, float power, unsigned char unknownFlag, unsigned char drawShadow, CVector* arg7, CVector* arg8, CVector* arg9, bool arg10, float baseRadius) { + ((void(__cdecl *)(int, CVector, CVector, float, float, unsigned char, unsigned char, CVector*, CVector*, CVector*, bool, float))0x6C58E0)(coronaIndex, origin, target, targetRadius, power, unknownFlag, drawShadow, arg7, arg8, arg9, arg10, baseRadius); +} + +// Converted from cdecl CHeli* CHeli::GenerateHeli(CPed *target,bool newsHeli) 0x6C6520 +CHeli* CHeli::GenerateHeli(CPed* target, bool newsHeli) { + return ((CHeli* (__cdecl *)(CPed*, bool))0x6C6520)(target, newsHeli); +} + +// Converted from cdecl bool CHeli::TestSniperCollision(CVector *origin,CVector *target) 0x6C6890 +bool CHeli::TestSniperCollision(CVector* origin, CVector* target) { + return ((bool(__cdecl *)(CVector*, CVector*))0x6C6890)(origin, target); +} + +// Converted from thiscall bool CHeli::SendDownSwat(void) 0x6C69C0 +bool CHeli::SendDownSwat() { + return ((bool(__thiscall *)(CHeli*))0x6C69C0)(this); +} + +// Converted from cdecl void CHeli::UpdateHelis(void) 0x6C79A0 +void CHeli::UpdateHelis() { + ((void(__cdecl *)())0x6C79A0)(); +} + +// Converted from cdecl void CHeli::RenderAllHeliSearchLights(void) 0x6C7C50 +void CHeli::RenderAllHeliSearchLights() { + ((void(__cdecl *)())0x6C7C50)(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CHeli.h b/third-party/plugin-sdk/plugin_sa/game_sa/CHeli.h new file mode 100644 index 00000000..e3fb081f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CHeli.h @@ -0,0 +1,114 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAutomobile.h" + +enum eHeliNodes { + HELI_NODE_NONE = 0, + HELI_CHASSIS = 1, + HELI_WHEEL_RF = 2, + HELI_WHEEL_RM = 3, + HELI_WHEEL_RB = 4, + HELI_WHEEL_LF = 5, + HELI_WHEEL_LM = 6, + HELI_WHEEL_LB = 7, + HELI_DOOR_RF = 8, + HELI_DOOR_RR = 9, + HELI_DOOR_LF = 10, + HELI_DOOR_LR = 11, + HELI_STATIC_ROTOR = 12, + HELI_MOVING_ROTOR = 13, + HELI_STATIC_ROTOR2 = 14, + HELI_MOVING_ROTOR2 = 15, + HELI_RUDDER = 16, + HELI_ELEVATORS = 17, + HELI_MISC_A = 18, + HELI_MISC_B = 19, + HELI_MISC_C = 20, + HELI_MISC_D = 21, + HELI_NUM_NODES +}; + +struct tHeliLight { + CVector m_vecOrigin; + CVector m_vecTarget; + float m_fTargetRadius; + float m_fPower; + int m_nCoronaIndex; + bool field_24; // unknown flag + bool m_bDrawShadow; + char _pad[2]; + CVector field_28[3]; +}; + +VALIDATE_SIZE(tHeliLight, 0x4C); + +class CHeli : public CAutomobile { +protected: + CHeli(plugin::dummy_func_t) : CAutomobile(plugin::dummy) {} +public: + char m_nHeliFlags; + char _pad1[3]; + float m_fLeftRightSkid; + float m_fSteeringUpDown; + float m_fSteeringLeftRight; + float m_fAccelerationBreakStatus; + int field_99C; + int m_fRotorZ; + int m_fSecondRotorZ; + float m_fMaxAltitude; + float field_9AC; + float m_fMinAltitude; + int field_9B4; + char field_9B8; + char m_nNumSwatOccupants; + char m_anSwatIDs[4]; + char _pad2[2]; + int field_9C0[4]; + int field_9D0; + class FxSystem_c **m_pParticlesList; + char field_9D8[24]; + int field_9F0; + CVector m_vecSearchLightTarget; + float m_fSearchLightIntensity; + int field_A04; + int field_A08; + class FxSystem_c **m_ppGunflashFx; + char m_nFiringMultiplier; + bool m_bSearchLightEnabled; + char _pad3[2]; + float field_A14; + + static bool& bPoliceHelisAllowed; // 1 + static unsigned int& TestForNewRandomHelisTimer; + static CHeli** pHelis; // CHeli* pHelis[2]; + static unsigned int& NumberOfSearchLights; + static bool& bHeliControlsCheat; + static tHeliLight* HeliSearchLights; // tHeliLight CHeli::HeliSearchLights[4] + + CHeli(int modelIndex, unsigned char createdBy); + + void PreRenderAlways(); // dummy function + CVector FindSwatPositionRelativeToHeli(int swatNumber); + bool SendDownSwat(); + + static void InitHelis(); + static void AddHeliSearchLight(CVector const& origin, CVector const& target, float targetRadius, float power, unsigned int coronaIndex, unsigned char unknownFlag, unsigned char drawShadow); + static void Pre_SearchLightCone(); + static void Post_SearchLightCone(); + static void SpecialHeliPreRender(); // dummy function + static void SwitchPoliceHelis(bool enable); + static void SearchLightCone(int coronaIndex, CVector origin, CVector target, float targetRadius, float power, unsigned char unknownFlag, unsigned char drawShadow, CVector* arg7, CVector* arg8, CVector* arg9, bool arg10, float baseRadius); + static CHeli* GenerateHeli(CPed* target, bool newsHeli); + static bool TestSniperCollision(CVector* origin, CVector* target); + static void UpdateHelis(); + static void RenderAllHeliSearchLights(); +}; + +VALIDATE_SIZE(CHeli, 0xA18); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CHud.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CHud.cpp new file mode 100644 index 00000000..ed6c1f67 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CHud.cpp @@ -0,0 +1,263 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CHud.h" + +char (*CHud::m_BigMessage)[128] = (char (*)[128])0xBAACC0; +bool &CHud::bScriptDontDisplayAreaName = *(bool *)0xBAA3F8; +bool &CHud::bScriptDontDisplayVehicleName = *(bool *)0xBAA3F9; +bool &CHud::bScriptForceDisplayWithCounters = *(bool *)0xBAA3FA; +bool &CHud::bScriptDontDisplayRadar = *(bool *)0xBAA3FB; +int &CHud::m_LastBreathTime = *(int *)0xBAA3FC; +bool &CHud::bDrawClock = *(bool *)0xBAA400; +int &CHud::m_WeaponState = *(int *)0xBAA404; +int &CHud::m_WeaponFadeTimer = *(int *)0xBAA408; +int &CHud::m_WeaponTimer = *(int *)0xBAA40C; +int &CHud::m_LastWeapon = *(int *)0xBAA410; +int &CHud::m_WantedState = *(int *)0xBAA414; +int &CHud::m_WantedFadeTimer = *(int *)0xBAA418; +int &CHud::m_WantedTimer = *(int *)0xBAA41C; +int &CHud::m_LastWanted = *(int *)0xBAA420; +int &CHud::m_DisplayScoreState = *(int *)0xBAA424; +int &CHud::m_DisplayScoreFadeTimer = *(int *)0xBAA428; +int &CHud::m_DisplayScoreTimer = *(int *)0xBAA42C; +int &CHud::m_LastDisplayScore = *(int *)0xBAA430; +int &CHud::m_EnergyLostState = *(int *)0xBAA434; +int &CHud::m_EnergyLostFadeTimer = *(int *)0xBAA438; +int &CHud::m_EnergyLostTimer = *(int *)0xBAA43C; +int &CHud::m_LastTimeEnergyLost = *(int *)0xBAA440; +char *&CHud::m_pVehicleNameToPrint = *(char **)0xBAA444; +int &CHud::m_VehicleState = *(int *)0xBAA448; +int &CHud::m_VehicleFadeTimer = *(int *)0xBAA44C; +int &CHud::m_VehicleNameTimer = *(int *)0xBAA450; +char *&CHud::m_pLastVehicleName = *(char **)0xBAA454; +char *&CHud::m_pVehicleName = *(char **)0xBAA458; +bool &CHud::m_bDraw3dMarkers = *(bool *)0xBAA45C; +bool &CHud::m_Wants_To_Draw_Hud = *(bool *)0xBAA45D; +float &CHud::m_fHelpMessageTime = *(float *)0xBAA460; +float &CHud::m_fHelpMessageBoxWidth = *(float *)0x8D0934; +bool &CHud::m_bHelpMessagePermanent = *(bool *)0xBAA464; +float &CHud::m_fHelpMessageStatUpdateValue = *(float *)0xBAA468; +unsigned short &CHud::m_nHelpMessageMaxStatValue = *(unsigned short *)0xBAA46C; +unsigned short &CHud::m_nHelpMessageStatId = *(unsigned short *)0xBAA470; +bool &CHud::m_bHelpMessageQuick = *(bool *)0xBAA472; +int &CHud::m_nHelpMessageState = *(int *)0xBAA474; +int &CHud::m_nHelpMessageFadeTimer = *(int *)0xBAA478; +int &CHud::m_nHelpMessageTimer = *(int *)0xBAA47C; +char *CHud::m_pHelpMessageToPrint = (char *)0xBAA480; +char *CHud::m_pLastHelpMessage = (char *)0xBAA610; +char *CHud::m_pHelpMessage = (char *)0xBAA7A0; +int &CHud::m_ZoneState = *(int *)0xBAA930; +int &CHud::m_ZoneFadeTimer = *(int *)0xBAA934; +int &CHud::m_ZoneNameTimer = *(int *)0xBAA938; +char *CHud::m_Message = (char *)0xBAB040; +char *&CHud::m_ZoneToPrint = *(char **)0xBAB1D0; +char *&CHud::m_pLastZoneName = *(char **)0xBAB1D4; +char *&CHud::m_pZoneName = *(char **)0xBAB1D8; +short &CHud::m_ItemToFlash = *(short *)0xBAB1DC; +bool &CHud::bDrawingVitalStats = *(bool *)0xBAB1DE; +CSprite2d *CHud::Sprites = (CSprite2d *)0xBAB1FC; +short &TimerMainCounterHideState = *(short *)0xBAA388; +bool &TimerMainCounterWasDisplayed = *(bool *)0xBAA38A; +short *TimerCounterHideState = (short *)0xBAA38C; +short *TimerCounterWasDisplayed = (short *)0xBAA394; +int &OddJob2OffTimer = *(int *)0xBAA398; +float &OddJob2XOffset = *(float *)0xBAA39C; +int &OddJob2Timer = *(int *)0xBAA3A0; +float *BigMessageAlpha = (float *)0xBAA3A4; +float *BigMessageInUse = (float *)0xBAA3C0; +float *BigMessageX = (float *)0xBAA3DC; +char *LastBigMessage = (char *)0xBAABC0; +unsigned short &OddJob2On = *(unsigned short *)0xBAB1E0; +float &PagerXOffset = *(float *)0x8D0938; + +// Converted from cdecl void CHud::Draw(void) 0x58FAE0 +void CHud::Draw() { + plugin::Call<0x58FAE0>(); +} + +// Converted from cdecl void CHud::DrawAfterFade(void) 0x58D490 +void CHud::DrawAfterFade() { + plugin::Call<0x58D490>(); +} + +// Converted from cdecl void CHud::DrawAreaName(void) 0x58AA50 +void CHud::DrawAreaName() { + plugin::Call<0x58AA50>(); +} + +// Converted from cdecl void CHud::DrawBustedWastedMessage(void) 0x58CA50 +void CHud::DrawBustedWastedMessage() { + plugin::Call<0x58CA50>(); +} + +// Converted from cdecl void CHud::DrawCrossHairs(void) 0x58E020 +void CHud::DrawCrossHairs() { + plugin::Call<0x58E020>(); +} + +// Converted from cdecl float CHud::DrawFadeState(DRAW_FADE_STATE fadeState,int) 0x58D580 +float CHud::DrawFadeState(DRAW_FADE_STATE fadeState, int arg1) { + return plugin::CallAndReturn(fadeState, arg1); +} + +// Converted from cdecl void CHud::DrawHelpText(void) 0x58B6E0 +void CHud::DrawHelpText() { + plugin::Call<0x58B6E0>(); +} + +// Converted from cdecl void CHud::DrawMissionTimers(void) 0x58B180 +void CHud::DrawMissionTimers() { + plugin::Call<0x58B180>(); +} + +// Converted from cdecl void CHud::DrawMissionTitle(void) 0x58D240 +void CHud::DrawMissionTitle() { + plugin::Call<0x58D240>(); +} + +// Converted from cdecl void CHud::DrawOddJobMessage(uchar priority) 0x58CC80 +void CHud::DrawOddJobMessage(unsigned char priority) { + plugin::Call<0x58CC80, unsigned char>(priority); +} + +// Converted from cdecl void CHud::DrawRadar(void) 0x58A330 +void CHud::DrawRadar() { + plugin::Call<0x58A330>(); +} + +// Converted from cdecl void CHud::DrawScriptText(uchar priority) 0x58C080 +void CHud::DrawScriptText(unsigned char priority) { + plugin::Call<0x58C080, unsigned char>(priority); +} + +// Converted from cdecl void CHud::DrawSubtitles(void) 0x58C250 +void CHud::DrawSubtitles() { + plugin::Call<0x58C250>(); +} + +// Converted from cdecl void CHud::DrawSuccessFailedMessage(void) 0x58C6A0 +void CHud::DrawSuccessFailedMessage() { + plugin::Call<0x58C6A0>(); +} + +// Converted from cdecl void CHud::DrawVehicleName(void) 0x58AEA0 +void CHud::DrawVehicleName() { + plugin::Call<0x58AEA0>(); +} + +// Converted from cdecl void CHud::DrawVitalStats(void) 0x589650 +void CHud::DrawVitalStats() { + plugin::Call<0x589650>(); +} + +// Converted from cdecl void CHud::GetRidOfAllHudMessages(uchar) 0x588A50 +void CHud::GetRidOfAllHudMessages(unsigned char arg0) { + plugin::Call<0x588A50, unsigned char>(arg0); +} + +// Converted from cdecl float CHud::GetYPosBasedOnHealth(uchar playerId,float pos,signed char offset) 0x588B60 +float CHud::GetYPosBasedOnHealth(unsigned char playerId, float pos, char offset) { + return plugin::CallAndReturn(playerId, pos, offset); +} + +bool CHud::HelpMessageDisplayed() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CHud::Initialise(void) 0x5BA850 +void CHud::Initialise() { + plugin::Call<0x5BA850>(); +} + +// Converted from cdecl void CHud::ReInitialise(void) 0x588880 +void CHud::ReInitialise() { + plugin::Call<0x588880>(); +} + +// Converted from cdecl void CHud::ResetWastedText(void) 0x589070 +void CHud::ResetWastedText() { + plugin::Call<0x589070>(); +} + +// Converted from cdecl void CHud::SetBigMessage(char *text,ushort style) 0x588FC0 +void CHud::SetBigMessage(char* text, unsigned short style) { + plugin::Call<0x588FC0, char*, unsigned short>(text, style); +} + +// Converted from cdecl void CHud::SetHelpMessage(char const*text,bool quickMessage,bool permanent,bool addToBrief) 0x588BE0 +void CHud::SetHelpMessage(char const* text, bool quickMessage, bool permanent, bool addToBrief) { + plugin::Call<0x588BE0, char const*, bool, bool, bool>(text, quickMessage, permanent, addToBrief); +} + +// Converted from cdecl void CHud::SetHelpMessageStatUpdate(uchar state,ushort statId,float diff,float max) 0x588D40 +void CHud::SetHelpMessageStatUpdate(unsigned char state, unsigned short statId, float diff, float max) { + plugin::Call<0x588D40, unsigned char, unsigned short, float, float>(state, statId, diff, max); +} + +void CHud::SetHelpMessageWithNumber(char const* text, int number, bool quickMessage, bool permanent) { + plugin::Call<0x588E30, char const*, int, bool, bool>(text, number, quickMessage, permanent); +} + +// Converted from cdecl void CHud::SetMessage(char *text) 0x588F60 +void CHud::SetMessage(char* text) { + plugin::Call<0x588F60, char*>(text); +} + +// Converted from cdecl void CHud::SetVehicleName(char *name) 0x588F50 +void CHud::SetVehicleName(char* name) { + plugin::Call<0x588F50, char*>(name); +} + +// Converted from cdecl void CHud::SetZoneName(char *name,uchar displayState) 0x588BB0 +void CHud::SetZoneName(char* name, unsigned char displayState) { + plugin::Call<0x588BB0, char*, unsigned char>(name, displayState); +} + +// Converted from cdecl void CHud::Shutdown(void) 0x588850 +void CHud::Shutdown() { + plugin::Call<0x588850>(); +} + +// Converted from cdecl void CHud::DrawAmmo(CPed *ped, int x, int y, float alpha) 0x5893B0 +void CHud::DrawAmmo(CPed* ped, int x, int y, float alpha) { + plugin::Call<0x5893B0, CPed*, int, int, float>(ped, x, y, alpha); +} + +// Converted from cdecl void CHud::DrawPlayerInfo(void) 0x58EAF0 +void CHud::DrawPlayerInfo() { + plugin::Call<0x58EAF0>(); +} + +// Converted from cdecl void CHud::DrawTripSkip(void) 0x58A160 +void CHud::DrawTripSkip() { + plugin::Call<0x58A160>(); +} + +// Converted from cdecl void CHud::DrawWanted(void) 0x58D9A0 +void CHud::DrawWanted() { + plugin::Call<0x58D9A0>(); +} + +// Converted from cdecl void CHud::DrawWeaponIcon(CPed *ped, int x, int y, float alpha) 0x58D7D0 +void CHud::DrawWeaponIcon(CPed* ped, int x, int y, float alpha) { + plugin::Call<0x58D7D0, CPed*, int, int, float>(ped, x, y, alpha); +} + +// Converted from cdecl void CHud::RenderArmorBar(int playerId, int x, int y) 0x5890A0 +void CHud::RenderArmorBar(int playerId, int x, int y) { + plugin::Call<0x5890A0, int, int, int>(playerId, x, y); +} + +// Converted from cdecl void CHud::RenderBreathBar(int playerId, int x, int y) 0x589190 +void CHud::RenderBreathBar(int playerId, int x, int y) { + plugin::Call<0x589190, int, int, int>(playerId, x, y); +} + +// Converted from cdecl void CHud::RenderHealthBar(int playerId, int x, int y) 0x589270 +void CHud::RenderHealthBar(int playerId, int x, int y) { + plugin::Call<0x589270, int, int, int>(playerId, x, y); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CHud.h b/third-party/plugin-sdk/plugin_sa/game_sa/CHud.h new file mode 100644 index 00000000..beedef97 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CHud.h @@ -0,0 +1,143 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CSprite2d.h" + +enum DRAW_FADE_STATE { + +}; + +enum eItems { + ITEM_NONE = -1, + ITEM_ARMOUR = 3, + ITEM_HEALTH = 4, + ITEM_RADAR = 8 +}; + +enum eHudSprites { + HUDSPRITE_FIST, + HUDSPRITE_SITEM16, + HUDSPRITE_SITEROCKET, + HUDSPRITE_RADARDISC, + HUDSPRITE_RADARRINGPLANE, + HUDSPRITE_SKIPICON +}; + +class CPed; + +class PLUGIN_API CHud { +public: + static char(*m_BigMessage)[128]; // static char m_BigMessage[7][128] + static bool &bScriptDontDisplayAreaName; + static bool &bScriptDontDisplayVehicleName; + static bool &bScriptForceDisplayWithCounters; + static bool &bScriptDontDisplayRadar; + static int &m_LastBreathTime; + static bool &bDrawClock; + static int &m_WeaponState; + static int &m_WeaponFadeTimer; + static int &m_WeaponTimer; + static int &m_LastWeapon; + static int &m_WantedState; + static int &m_WantedFadeTimer; + static int &m_WantedTimer; + static int &m_LastWanted; + static int &m_DisplayScoreState; + static int &m_DisplayScoreFadeTimer; + static int &m_DisplayScoreTimer; + static int &m_LastDisplayScore; + static int &m_EnergyLostState; + static int &m_EnergyLostFadeTimer; + static int &m_EnergyLostTimer; + static int &m_LastTimeEnergyLost; + static char *&m_pVehicleNameToPrint; + static int &m_VehicleState; + static int &m_VehicleFadeTimer; + static int &m_VehicleNameTimer; + static char *&m_pLastVehicleName; + static char *&m_pVehicleName; + static bool &m_bDraw3dMarkers; + static bool &m_Wants_To_Draw_Hud; + static float &m_fHelpMessageTime; // in seconds + static float &m_fHelpMessageBoxWidth; // default 200.0 + static bool &m_bHelpMessagePermanent; + static float &m_fHelpMessageStatUpdateValue; + static unsigned short &m_nHelpMessageMaxStatValue; + static unsigned short &m_nHelpMessageStatId; + static bool &m_bHelpMessageQuick; + static int &m_nHelpMessageState; + static int &m_nHelpMessageFadeTimer; + static int &m_nHelpMessageTimer; + static char *m_pHelpMessageToPrint; // static char m_pHelpMessageToPrint[400] + static char *m_pLastHelpMessage; // static char m_pLastHelpMessage[400] + static char *m_pHelpMessage; // static char m_pHelpMessage[400] + static int &m_ZoneState; + static int &m_ZoneFadeTimer; + static int &m_ZoneNameTimer; + static char *m_Message; // static char m_Message[400] + static char *&m_ZoneToPrint; + static char *&m_pLastZoneName; + static char *&m_pZoneName; + static short &m_ItemToFlash; // -1 - no item + static bool &bDrawingVitalStats; + static CSprite2d *Sprites; // static CSprite2d Sprites[6] + + static void Draw(); // called each frame from Render2dStuff() + static void DrawAfterFade(); + static void DrawAreaName(); + static void DrawBustedWastedMessage(); + static void DrawCrossHairs(); + static float DrawFadeState(DRAW_FADE_STATE fadeState, int arg1); + static void DrawHelpText(); + static void DrawMissionTimers(); + static void DrawMissionTitle(); + static void DrawOddJobMessage(unsigned char priority); + static void DrawRadar(); + static void DrawScriptText(unsigned char priority); + static void DrawSubtitles(); + static void DrawSuccessFailedMessage(); + static void DrawVehicleName(); + static void DrawVitalStats(); + static void GetRidOfAllHudMessages(unsigned char arg0); + static float GetYPosBasedOnHealth(unsigned char playerId, float pos, char offset); + static bool HelpMessageDisplayed(); + static void Initialise(); + static void ReInitialise(); + static void ResetWastedText(); + static void SetBigMessage(char* text, unsigned short style); + static void SetHelpMessage(char const* text, bool quickMessage, bool permanent, bool addToBrief); + static void SetHelpMessageStatUpdate(unsigned char state, unsigned short statId, float diff, float max); // for 'state', see enum eStatUpdateState (CStats.h) + static void SetHelpMessageWithNumber(char const* text, int number, bool quickMessage, bool permanent); + static void SetMessage(char* text); + static void SetVehicleName(char* name); + static void SetZoneName(char* name, unsigned char displayState); + static void Shutdown(); + static void DrawAmmo(CPed* ped, int x, int y, float alpha); + static void DrawPlayerInfo(); + static void DrawTripSkip(); + static void DrawWanted(); + static void DrawWeaponIcon(CPed* ped, int x, int y, float alpha); + static void RenderArmorBar(int playerId, int x, int y); + static void RenderBreathBar(int playerId, int x, int y); + static void RenderHealthBar(int playerId, int x, int y); +}; + +extern short &TimerMainCounterHideState; +extern bool &TimerMainCounterWasDisplayed; +extern short *TimerCounterHideState; // short TimerCounterHideState[4] +extern short *TimerCounterWasDisplayed; // short TimerCounterWasDisplayed[4] +extern int &OddJob2OffTimer; +extern float &OddJob2XOffset; +extern int &OddJob2Timer; +extern float *BigMessageAlpha; // float BigMessageAlpha[7] +extern float *BigMessageInUse; // float BigMessageInUse[7] +extern float *BigMessageX; // float BigMessageX[7] +extern char *LastBigMessage; // char LastBigMessage[256] +extern unsigned short &OddJob2On; +extern float &PagerXOffset; // default 150.0 \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CHudColours.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CHudColours.cpp new file mode 100644 index 00000000..16e23918 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CHudColours.cpp @@ -0,0 +1,46 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CHudColours.h" + +CHudColours &HudColour = *(CHudColours *)0xBAB22C; + +CHudColours::CHudColours() +{ + ((void (__thiscall *)(CHudColours *))0x58FDA0)(this); +} + +CHudColours::~CHudColours() +{ + ((void (__thiscall *)(CHudColours *))0x58FD90)(this); +} + +void CHudColours::SetRGBAValue(unsigned char color, unsigned char red, unsigned char green, + unsigned char blue, unsigned char alpha) +{ + ((void (__thiscall *)(CHudColours *, unsigned char, unsigned char, unsigned char, unsigned char, + unsigned char))0x58FD20)(this, color, red, green, blue, alpha); +} + +unsigned int CHudColours::GetIntColour(unsigned char color) +{ + return ((unsigned int (__thiscall *)(CHudColours *, unsigned char))0x58FD50)(this, color); +} + +CRGBA CHudColours::GetRGB(unsigned char color, unsigned char alpha) +{ + CRGBA result; + ((void (__thiscall *)(CHudColours *, CRGBA *, unsigned char, unsigned char))0x58FEE0)(this, + &result, color, alpha); + return result; +} + +CRGBA CHudColours::GetRGBA(unsigned char color) +{ + CRGBA result; + ((void (__thiscall *)(CHudColours *, CRGBA *, unsigned char))0x58FEA0)(this, &result, color); + return result; +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CHudColours.h b/third-party/plugin-sdk/plugin_sa/game_sa/CHudColours.h new file mode 100644 index 00000000..d5502c4c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CHudColours.h @@ -0,0 +1,66 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CRGBA.h" + +enum eHudColours +{ + HUD_COLOUR_RED, + HUD_COLOUR_GREEN, + HUD_COLOUR_BLUEDARK, + HUD_COLOUR_BLUELIGHT, + HUD_COLOUR_WHITE, + HUD_COLOUR_BLACK, + HUD_COLOUR_ORANGE, + HUD_COLOUR_PURPLE, + HUD_COLOUR_GREY, + HUD_COLOUR_REDDARK, + HUD_COLOUR_GREENDARK, + HUD_COLOUR_ORANGELIGHT, + HUD_COLOUR_GREYDARK, + HUD_COLOUR_BLUE, + HUD_COLOUR_YELLOW, + HUD_COLOUR_NUM_COLOURS +}; + + +class PLUGIN_API CHudColour +{ +public: + unsigned char red, green, blue, alpha; +}; + + +VALIDATE_SIZE(CHudColour, 4); + + +class PLUGIN_API CHudColours +{ +public: + CHudColour m_aColours[15]; + + CHudColours(); + ~CHudColours(); + // setup the color in color table. "color" parameter - index of color in the table, see eHudColours + // enum. + void SetRGBAValue(unsigned char color, unsigned char red, unsigned char green, unsigned char blue, + unsigned char alpha); + // get color from color table as integer value. "color" parameter - index of color in the table, + // see eHudColours enum. + unsigned int GetIntColour(unsigned char color); + // get color RGB and set alpha manually. "color" parameter - index of color in the table, see + // eHudColours enum. + CRGBA GetRGB(unsigned char color, unsigned char alpha); + // get color RGBA. "color" parameter - index of color in the table, see eHudColours enum. + CRGBA GetRGBA(unsigned char color); +}; + + +VALIDATE_SIZE(CHudColours, 0x3C); + +extern PLUGIN_API CHudColours &HudColour; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CIniFile.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CIniFile.cpp new file mode 100644 index 00000000..b96b1e10 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CIniFile.cpp @@ -0,0 +1,15 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CIniFile.h" + +float &CIniFile::PedNumberMultiplier = *(float *)0x8CDF14; +float &CIniFile::CarNumberMultiplier = *(float *)0x8CDF18; + +// Converted from cdecl void CIniFile::LoadIniFile(void) 0x56D070 +void CIniFile::LoadIniFile() { + ((void(__cdecl *)())0x56D070)(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CIniFile.h b/third-party/plugin-sdk/plugin_sa/game_sa/CIniFile.h new file mode 100644 index 00000000..a3897966 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CIniFile.h @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CIniFile { +public: + static void LoadIniFile(); + + static float &PedNumberMultiplier; + static float &CarNumberMultiplier; +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CIplStore.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CIplStore.cpp new file mode 100644 index 00000000..57af7b4f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CIplStore.cpp @@ -0,0 +1,191 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CIplStore.h" + +CQuadTreeNode *&CIplStore::ms_pQuadTree = *(CQuadTreeNode **)0x8E3FAC; +CPool *&CIplStore::ms_pPool = *(CPool **)0x8E3FB0; + +unsigned int MAX_IPL_ENTITY_INDEX_ARRAYS = 40; +unsigned int MAX_IPL_INSTANCES = 1000; + +CEntity **ppCurrIplInstance = (CEntity **)0x8E3EFC; +unsigned int &NumIplEntityIndexArrays = *(unsigned int *)0x8E3F00; +int **IplEntityIndexArrays = (int **)0x8E3F08; +bool &gbIplsNeededAtPosn = *(bool *)0x8E3FA8; +CVector &gvecIplsNeededAtPosn = *(CVector *)0x8E3FD0; +unsigned int &gCurrIplInstancesCount = *(unsigned int *)0xBCC0D8; +CEntity **gCurrIplInstances = (CEntity **)0xBCC0E0; + +// Converted from cdecl int CIplStore::AddIplSlot(char const*name) 0x405AC0 +int CIplStore::AddIplSlot(char const* name) { + return plugin::CallAndReturn(name); +} + +// Converted from cdecl void CIplStore::AddIplsNeededAtPosn(CVector const&posn) 0x4045B0 +void CIplStore::AddIplsNeededAtPosn(CVector const& posn) { + plugin::Call<0x4045B0, CVector const&>(posn); +} + +// Converted from cdecl void CIplStore::ClearIplsNeededAtPosn(void) 0x4045E0 +void CIplStore::ClearIplsNeededAtPosn() { + plugin::Call<0x4045E0>(); +} + +// Converted from cdecl void CIplStore::EnableDynamicStreaming(int iplSlotIndex, bool enable) 0x404D30 +void CIplStore::EnableDynamicStreaming(int iplSlotIndex, bool enable) { + plugin::Call<0x404D30, int, bool>(iplSlotIndex, enable); +} + +// Converted from cdecl void CIplStore::EnsureIplsAreInMemory(CVector const&posn) 0x4053F0 +void CIplStore::EnsureIplsAreInMemory(CVector const& posn) { + plugin::Call<0x4053F0, CVector const&>(posn); +} + +// Converted from cdecl int CIplStore::FindIplSlot(char const*name) 0x404AC0 +int CIplStore::FindIplSlot(char const* name) { + return plugin::CallAndReturn(name); +} + +// Converted from cdecl CRect* CIplStore::GetBoundingBox(int iplSlotIndex) 0x404C70 +CRect* CIplStore::GetBoundingBox(int iplSlotIndex) { + return plugin::CallAndReturn(iplSlotIndex); +} + +// Converted from cdecl int* CIplStore::GetIplEntityIndexArray(int arrayIndex) 0x4047B0 +int* CIplStore::GetIplEntityIndexArray(int arrayIndex) { + return plugin::CallAndReturn(arrayIndex); +} + +// Converted from cdecl char* CIplStore::GetIplName(int iplSlotIndex) 0x404A60 +char* CIplStore::GetIplName(int iplSlotIndex) { + return plugin::CallAndReturn(iplSlotIndex); +} + +// Converted from cdecl int CIplStore::GetNewIplEntityIndexArray(int entitiesCount) 0x404780 +int CIplStore::GetNewIplEntityIndexArray(int entitiesCount) { + return plugin::CallAndReturn(entitiesCount); +} + +// Converted from cdecl bool CIplStore::HaveIplsLoaded(CVector const&coords, int playerNumber) 0x405600 +bool CIplStore::HaveIplsLoaded(CVector const& coords, int playerNumber) { + return plugin::CallAndReturn(coords, playerNumber); +} + +// Converted from cdecl void CIplStore::IncludeEntity(int iplSlotIndex, CEntity *entity) 0x404C90 +void CIplStore::IncludeEntity(int iplSlotIndex, CEntity* entity) { + plugin::Call<0x404C90, int, CEntity*>(iplSlotIndex, entity); +} + +// Converted from cdecl void CIplStore::Initialise(void) 0x405EC0 +void CIplStore::Initialise() { + plugin::Call<0x405EC0>(); +} + +// Converted from cdecl bool CIplStore::Load(void) 0x5D54A0 +bool CIplStore::Load() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CIplStore::LoadAllRemainingIpls(void) 0x405780 +void CIplStore::LoadAllRemainingIpls() { + plugin::Call<0x405780>(); +} + +// Converted from cdecl bool CIplStore::LoadIpl(int iplSlotIndex, uchar *data, int dataSize) 0x406080 +bool CIplStore::LoadIpl(int iplSlotIndex, unsigned char* data, int dataSize) { + return plugin::CallAndReturn(iplSlotIndex, data, dataSize); +} + +// Converted from cdecl bool CIplStore::LoadIplBoundingBox(int iplSlotIndex,uchar *data,int dataSize) 0x405C00 +bool CIplStore::LoadIplBoundingBox(int iplSlotIndex, unsigned char* data, int dataSize) { + return plugin::CallAndReturn(iplSlotIndex, data, dataSize); +} + +// Converted from cdecl void CIplStore::LoadIpls(CVector posn,bool) 0x405170 +void CIplStore::LoadIpls(CVector posn, bool arg1) { + plugin::Call<0x405170, CVector, bool>(posn, arg1); +} + +// Converted from cdecl void CIplStore::RemoveAllIpls(void) 0x405720 +void CIplStore::RemoveAllIpls() { + plugin::Call<0x405720>(); +} + +// Converted from cdecl void CIplStore::RemoveIpl(int iplSlotIndex) 0x404B20 +void CIplStore::RemoveIpl(int iplSlotIndex) { + plugin::Call<0x404B20, int>(iplSlotIndex); +} + +// Converted from cdecl void CIplStore::RemoveIplAndIgnore(int iplSlotIndex) 0x405890 +void CIplStore::RemoveIplAndIgnore(int iplSlotIndex) { + plugin::Call<0x405890, int>(iplSlotIndex); +} + +// Converted from cdecl void CIplStore::RemoveIplSlot(int iplSlotIndex) 0x405B60 +void CIplStore::RemoveIplSlot(int iplSlotIndex) { + plugin::Call<0x405B60, int>(iplSlotIndex); +} + +// Converted from cdecl void CIplStore::RemoveIplWhenFarAway(int iplSlotIndex) 0x4058D0 +void CIplStore::RemoveIplWhenFarAway(int iplSlotIndex) { + plugin::Call<0x4058D0, int>(iplSlotIndex); +} + +// Converted from cdecl void CIplStore::RemoveRelatedIpls(int entityArraysIndex) 0x405110 +void CIplStore::RemoveRelatedIpls(int entityArraysIndex) { + plugin::Call<0x405110, int>(entityArraysIndex); +} + +// Converted from cdecl void CIplStore::RequestIplAndIgnore(int iplSlotIndex) 0x405850 +void CIplStore::RequestIplAndIgnore(int iplSlotIndex) { + plugin::Call<0x405850, int>(iplSlotIndex); +} + +// Converted from cdecl void CIplStore::RequestIpls(CVector const&posn,int playerNumber) 0x405520 +void CIplStore::RequestIpls(CVector const& posn, int playerNumber) { + plugin::Call<0x405520, CVector const&, int>(posn, playerNumber); +} + +// Converted from cdecl bool CIplStore::Save(void) 0x5D5420 +bool CIplStore::Save() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CIplStore::SetIplsRequired(CVector const&posn,int playerNumber) 0x404700 +void CIplStore::SetIplsRequired(CVector const& posn, int playerNumber) { + plugin::Call<0x404700, CVector const&, int>(posn, playerNumber); +} + +// Converted from cdecl void CIplStore::SetIsInterior(int iplSlotIndex,bool isInterior) 0x404A90 +void CIplStore::SetIsInterior(int iplSlotIndex, bool isInterior) { + plugin::Call<0x404A90, int, bool>(iplSlotIndex, isInterior); +} + +// Converted from cdecl int CIplStore::SetupRelatedIpls(char const*iplName,int entityArraysIndex,CEntity **instances) 0x404DE0 +int CIplStore::SetupRelatedIpls(char const* iplName, int entityArraysIndex, CEntity** instances) { + return plugin::CallAndReturn(iplName, entityArraysIndex, instances); +} + +// Converted from cdecl void CIplStore::Shutdown(void) 0x405FA0 +void CIplStore::Shutdown() { + plugin::Call<0x405FA0>(); +} + +// Converted from cdecl void SetIfInteriorIplIsRequired(CVector2D const&posn,void *data) 0x4045F0 +void SetIfInteriorIplIsRequired(CVector2D const& posn, void* data) { + plugin::Call<0x4045F0, CVector2D const&, void*>(posn, data); +} + +// Converted from cdecl void SetIfIplIsRequired(CVector2D const&posn,void *data) 0x404660 +void SetIfIplIsRequired(CVector2D const& posn, void* data) { + plugin::Call<0x404660, CVector2D const&, void*>(posn, data); +} + +// Converted from cdecl void SetIfIplIsRequiredReducedBB(CVector2D const&posn,void *data) 0x404690 +void SetIfIplIsRequiredReducedBB(CVector2D const& posn, void* data) { + plugin::Call<0x404690, CVector2D const&, void*>(posn, data); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CIplStore.h b/third-party/plugin-sdk/plugin_sa/game_sa/CIplStore.h new file mode 100644 index 00000000..34fc84a7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CIplStore.h @@ -0,0 +1,69 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "IplDef.h" +#include "CEntity.h" +#include "CQuadTreeNode.h" +#include "CEntity.h" + +class PLUGIN_API CIplStore { +public: + static CQuadTreeNode *&ms_pQuadTree; + static CPool *&ms_pPool; + + // returns slot index + static int AddIplSlot(char const* name); + static void AddIplsNeededAtPosn(CVector const& posn); + static void ClearIplsNeededAtPosn(); + static void EnableDynamicStreaming(int iplSlotIndex, bool enable); + static void EnsureIplsAreInMemory(CVector const& posn); + // returns -1 if slot not found + static int FindIplSlot(char const* name); + static CRect* GetBoundingBox(int iplSlotIndex); + static int* GetIplEntityIndexArray(int arrayIndex); + static char* GetIplName(int iplSlotIndex); + // returns array index + static int GetNewIplEntityIndexArray(int entitiesCount); + static bool HaveIplsLoaded(CVector const& coords, int playerNumber); + static void IncludeEntity(int iplSlotIndex, CEntity* entity); + static void Initialise(); + static bool Load(); + static void LoadAllRemainingIpls(); + static bool LoadIpl(int iplSlotIndex, unsigned char* data, int dataSize); + static bool LoadIplBoundingBox(int iplSlotIndex, unsigned char* data, int dataSize); + static void LoadIpls(CVector posn, bool arg1); + static void RemoveAllIpls(); + static void RemoveIpl(int iplSlotIndex); + static void RemoveIplAndIgnore(int iplSlotIndex); + static void RemoveIplSlot(int iplSlotIndex); + static void RemoveIplWhenFarAway(int iplSlotIndex); + static void RemoveRelatedIpls(int entityArraysIndex); + static void RequestIplAndIgnore(int iplSlotIndex); + static void RequestIpls(CVector const& posn, int playerNumber); + static bool Save(); + static void SetIplsRequired(CVector const& posn, int playerNumber); + static void SetIsInterior(int iplSlotIndex, bool isInterior); + static int SetupRelatedIpls(char const* iplName, int entityArraysIndex, CEntity** instances); + static void Shutdown(); +}; + +extern unsigned int MAX_IPL_ENTITY_INDEX_ARRAYS; // default 40 +extern unsigned int MAX_IPL_INSTANCES; // default 1000 + +extern CEntity **ppCurrIplInstance; +extern unsigned int &NumIplEntityIndexArrays; +extern int **IplEntityIndexArrays; // int *IplEntityIndexArrays[40] +extern bool &gbIplsNeededAtPosn; +extern CVector &gvecIplsNeededAtPosn; +extern unsigned int &gCurrIplInstancesCount; +extern CEntity **gCurrIplInstances; // CEntity *gCurrIplInstances[1000] + +void SetIfInteriorIplIsRequired(CVector2D const& posn, void* data); +void SetIfIplIsRequired(CVector2D const& posn, void* data); +void SetIfIplIsRequiredReducedBB(CVector2D const& posn, void* data); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CKeyGen.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CKeyGen.cpp new file mode 100644 index 00000000..79bbbce0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CKeyGen.cpp @@ -0,0 +1,29 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CKeyGen.h" + +unsigned int *CKeyGen::keyTable = (unsigned int *)0x8CD068; + +// Converted from cdecl uint CKeyGen::GetKey(char const* str,int size) 0x53CED0 +unsigned int CKeyGen::GetKey(char const* str, int size) { + return ((unsigned int(__cdecl *)(char const*, int))0x53CED0)(str, size); +} + +// Converted from cdecl uint CKeyGen::GetKey(char const* str) 0x53CF00 +unsigned int CKeyGen::GetKey(char const*str) { + return ((unsigned int(__cdecl *)(char const*))0x53CF00)(str); +} + +// Converted from cdecl uint CKeyGen::GetUppercaseKey(char const* str) 0x53CF30 +unsigned int CKeyGen::GetUppercaseKey(char const*str) { + return ((unsigned int(__cdecl *)(char const*))0x53CF30)(str); +} + +// Converted from cdecl uint CKeyGen::AppendStringToKey(uint key,char const* str) 0x53CF70 +unsigned int CKeyGen::AppendStringToKey(unsigned int key, char const*str) { + return ((unsigned int(__cdecl *)(unsigned int, char const*))0x53CF70)(key, str); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CKeyGen.h b/third-party/plugin-sdk/plugin_sa/game_sa/CKeyGen.h new file mode 100644 index 00000000..a916ec30 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CKeyGen.h @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class CKeyGen { +public: + static unsigned int *keyTable; + + static unsigned int GetKey(char const* str, int size); + static unsigned int GetKey(char const* str); + static unsigned int GetUppercaseKey(char const* str); + static unsigned int AppendStringToKey(unsigned int key, char const* str); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CLink.h b/third-party/plugin-sdk/plugin_sa/game_sa/CLink.h new file mode 100644 index 00000000..a2e6bfe7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CLink.h @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +template +class CLink { +public: + T data; + CLink* prev; + CLink* next; +}; + +VALIDATE_SIZE(CLink, 0xC); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CLinkList.h b/third-party/plugin-sdk/plugin_sa/game_sa/CLinkList.h new file mode 100644 index 00000000..fb5e47f9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CLinkList.h @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CLink.h" + +template +class CLinkList { +public: + CLink usedListHead; + CLink usedListTail; + CLink freeListHead; + CLink freeListTail; + CLink* links; +}; + +VALIDATE_SIZE(CLinkList, 0x34); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CLoadedCarGroup.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CLoadedCarGroup.cpp new file mode 100644 index 00000000..ead42203 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CLoadedCarGroup.cpp @@ -0,0 +1,48 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CLoadedCarGroup.h" + +// Converted from thiscall void CLoadedCarGroup::SortBasedOnUsage(void) 0x611E10 +void CLoadedCarGroup::SortBasedOnUsage() { + plugin::CallMethod<0x611E10, CLoadedCarGroup *>(this); +} + +// Converted from thiscall int CLoadedCarGroup::RemoveMember(int modelindex) 0x611BD0 +int CLoadedCarGroup::RemoveMember(int modelindex) { + return plugin::CallMethodAndReturn(this, modelindex); +} + +// Converted from thiscall int CLoadedCarGroup::PickRandomCar(bool arg1,bool arg2) 0x611C50 +int CLoadedCarGroup::PickRandomCar(bool arg1, bool arg2) { + return plugin::CallMethodAndReturn(this, arg1, arg2); +} + +// Converted from thiscall int CLoadedCarGroup::PickLeastUsedModel(int minRefs) 0x611E90 +int CLoadedCarGroup::PickLeastUsedModel(int minRefs) { + return plugin::CallMethodAndReturn(this, minRefs); +} + +// Converted from thiscall int CLoadedCarGroup::GetMember(int count) 0x611C20 +int CLoadedCarGroup::GetMember(int count) { + return plugin::CallMethodAndReturn(this, count); +} + +// Converted from thiscall int CLoadedCarGroup::CountMembers(void) 0x611C30 +unsigned int CLoadedCarGroup::CountMembers() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CLoadedCarGroup::Clear(void) 0x611B90 +void CLoadedCarGroup::Clear() { + plugin::CallMethod<0x611B90, CLoadedCarGroup *>(this); +} + +// Converted from thiscall void CLoadedCarGroup::AddMember(int member) 0x611BB0 +void CLoadedCarGroup::AddMember(int member) { + plugin::CallMethod<0x611BB0, CLoadedCarGroup *, int>(this, member); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CLoadedCarGroup.h b/third-party/plugin-sdk/plugin_sa/game_sa/CLoadedCarGroup.h new file mode 100644 index 00000000..ac7591b8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CLoadedCarGroup.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +class PLUGIN_API CLoadedCarGroup { +public: + short m_members[22]; // model ids + short field_2C; + + void SortBasedOnUsage(); + int RemoveMember(int modelindex); + int PickRandomCar(bool arg1, bool arg2); + int PickLeastUsedModel(int minRefs); + int GetMember(int count); + unsigned int CountMembers(); + void Clear(); + void AddMember(int member); +}; + +VALIDATE_SIZE(CLoadedCarGroup, 0x2E); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CLoadingScreen.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CLoadingScreen.cpp new file mode 100644 index 00000000..4bbfff3a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CLoadingScreen.cpp @@ -0,0 +1,118 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CLoadingScreen.h" + +int &CLoadingScreen::m_currDisplayedSplash = *(int*)0x8D093C; +int &CLoadingScreen::m_numChunksLoaded = *(int*)0x8D0940; +int &CLoadingScreen::m_chunkBarAppeared = *(int*)0x8D0944; +char *CLoadingScreen::m_PopUpMessage = (char*)0xBAB268; +char *CLoadingScreen::m_LoadingGxtMsg2 = (char*)0xBAB278; +char *CLoadingScreen::m_LoadingGxtMsg1 = (char*)0xBAB2C8; +bool &CLoadingScreen::m_bActive = *(bool*)0xBAB318; +bool &CLoadingScreen::m_bPaused = *(bool*)0xBAB319; +bool &CLoadingScreen::m_bWantToPause = *(bool*)0xBAB31A; +bool &CLoadingScreen::m_bFading = *(bool*)0xBAB31C; +bool &CLoadingScreen::m_bLegalScreen = *(bool*)0xBAB31D; +bool &CLoadingScreen::m_bFadeInNextSplashFromBlack = *(bool*)0xBAB31E; +bool &CLoadingScreen::m_bFadeOutCurrSplashToBlack = *(bool*)0xBAB31F; +char &CLoadingScreen::m_FadeAlpha = *(char*)0xBAB320; +float &CLoadingScreen::m_StartFadeTime = *(float*)0xBAB324; +float &CLoadingScreen::m_ClockTimeOnPause = *(float*)0xBAB328; +float &CLoadingScreen::m_PauseTime = *(float*)0xBAB32C; +bool &CLoadingScreen::m_bReadyToDelete = *(bool*)0xBAB33D; +float &CLoadingScreen::m_timeSinceLastScreen = *(float*)0xBAB340; +CSprite2d *CLoadingScreen::m_aSplashes = (CSprite2d*)0xBAB35C; // CSprite2d CLoadingScreen::m_aSplashes[7] + +// Converted from cdecl void CLoadingScreen::Shutdown(void) 0x58FF10 +void CLoadingScreen::Shutdown() { + plugin::Call<0x58FF10>(); +} + +// Converted from cdecl void CLoadingScreen::RenderSplash(void) 0x58FF60 +void CLoadingScreen::RenderSplash() { + plugin::Call<0x58FF60>(); +} + +// Converted from cdecl void CLoadingScreen::LoadSplashes(uchar bStarting,uchar bNvidia) 0x5900B0 +void CLoadingScreen::LoadSplashes(unsigned char bStarting, unsigned char bNvidia) { + plugin::Call<0x5900B0, unsigned char, unsigned char>(bStarting, bNvidia); +} + +// Converted from cdecl void CLoadingScreen::DisplayMessage(char const *message) 0x590220 +void CLoadingScreen::DisplayMessage(char const* message) { + plugin::Call<0x590220, char const*>(message); +} + +// Converted from cdecl void CLoadingScreen::SetLoadingBarMsg(char const *msg1,char const *msg2) 0x590240 +void CLoadingScreen::SetLoadingBarMsg(char const* msg1, char const* msg2) { + plugin::Call<0x590240, char const*, char const*>(msg1, msg2); +} + +// Converted from cdecl double CLoadingScreen::GetClockTime(bool bIgnorePauseTime) 0x590280 +double CLoadingScreen::GetClockTime(bool bIgnorePauseTime) { + return plugin::CallAndReturn(bIgnorePauseTime); +} + +// Converted from cdecl void CLoadingScreen::Init(bool unusedflag,bool bLoaded) 0x5902B0 +void CLoadingScreen::Init(bool unusedflag, bool bLoaded) { + plugin::Call<0x5902B0, bool, bool>(unusedflag, bLoaded); +} + +// Converted from cdecl void CLoadingScreen::Continue(void) 0x590320 +void CLoadingScreen::Continue() { + plugin::Call<0x590320>(); +} + +// Converted from cdecl void CLoadingScreen::RenderLoadingBar(void) 0x590370 +void CLoadingScreen::RenderLoadingBar() { + plugin::Call<0x590370>(); +} + +// Converted from cdecl void CLoadingScreen::DisplayNextSplash(void) 0x5904D0 +void CLoadingScreen::DisplayNextSplash() { + plugin::Call<0x5904D0>(); +} + +// Converted from cdecl void CLoadingScreen::StartFading(void) 0x590530 +void CLoadingScreen::StartFading() { + plugin::Call<0x590530>(); +} + +// Converted from cdecl void CLoadingScreen::DisplayPCScreen(void) 0x590570 +void CLoadingScreen::DisplayPCScreen() { + plugin::Call<0x590570>(); +} + +// Converted from cdecl void CLoadingScreen::Update(void) 0x5905E0 +void CLoadingScreen::Update() { + plugin::Call<0x5905E0>(); +} + +// Converted from cdecl void CLoadingScreen::DoPCTitleFadeOut(void) 0x590990 +void CLoadingScreen::DoPCTitleFadeOut() { + plugin::Call<0x590990>(); +} + +// Converted from cdecl void CLoadingScreen::DoPCTitleFadeIn(void) 0x590860 +void CLoadingScreen::DoPCTitleFadeIn() { + plugin::Call<0x590860>(); +} + +// Converted from cdecl void CLoadingScreen::DoPCScreenChange(uint bFinish) 0x590AC0 +void CLoadingScreen::DoPCScreenChange(unsigned int bFinish) { + plugin::Call<0x590AC0, unsigned int>(bFinish); +} + +// Converted from cdecl void CLoadingScreen::NewChunkLoaded(void) 0x590D00 +void CLoadingScreen::NewChunkLoaded() { + plugin::Call<0x590D00>(); +} + + + + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CLoadingScreen.h b/third-party/plugin-sdk/plugin_sa/game_sa/CLoadingScreen.h new file mode 100644 index 00000000..3a0ceb84 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CLoadingScreen.h @@ -0,0 +1,58 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CSprite2d.h" + + + +class PLUGIN_API CLoadingScreen { +public: + + static int &m_currDisplayedSplash; // 0x8D093C + static int &m_numChunksLoaded; // 0x8D0940 + static int &m_chunkBarAppeared; // 0x8D0944 + static char *m_PopUpMessage; // m_PopUpMessage[16] + static char *m_LoadingGxtMsg2; // m_LoadingGxtMsg2[80] + static char *m_LoadingGxtMsg1; // m_LoadingGxtMsg1[80] + static bool &m_bActive; // 0xBAB318 + static bool &m_bPaused; // 0xBAB319 + static bool &m_bWantToPause; // 0xBAB31A + static bool &m_bFading; // 0xBAB31C + static bool &m_bLegalScreen; // 0xBAB31D + static bool &m_bFadeInNextSplashFromBlack; // 0xBAB31E + static bool &m_bFadeOutCurrSplashToBlack; // 0xBAB31F + static char &m_FadeAlpha; // 0xBAB320 + static float &m_StartFadeTime; // 0xBAB324 + static float &m_ClockTimeOnPause; // 0xBAB328 + static float &m_PauseTime; // 0xBAB32C + static bool &m_bReadyToDelete; // 0xBAB33D + static float &m_timeSinceLastScreen; // 0xBAB340 + static CSprite2d *m_aSplashes; // CSprite2d CLoadingScreen::m_aSplashes[7] 0xBAB35C + + + // funcs + + static void Shutdown(); + static void RenderSplash(); + static void LoadSplashes(unsigned char bStarting, unsigned char bNvidia); + static void DisplayMessage(char const* message); + static void SetLoadingBarMsg(char const* msg1, char const* msg2); + static double GetClockTime(bool bIgnorePauseTime); + static void Init(bool unusedflag, bool bLoaded); + static void Continue(); + static void RenderLoadingBar(); + static void DisplayNextSplash(); + static void StartFading(); + static void DisplayPCScreen(); + static void Update(); + static void DoPCTitleFadeOut(); + static void DoPCTitleFadeIn(); + static void DoPCScreenChange(unsigned int bFinish); + static void NewChunkLoaded(); + +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CLocalisation.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CLocalisation.cpp new file mode 100644 index 00000000..d7f0f238 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CLocalisation.cpp @@ -0,0 +1,101 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CLocalisation.h" + +bool &CLocalisation::nastyGame = *(bool *)0xB9B7EC; +bool &CLocalisation::germanGame = *(bool *)0xB9B7ED; +bool &CLocalisation::frenchGame = *(bool *)0xB9B7EE; + +// Converted from cdecl void CLocalisation::Initialise(void) 0x56D180 +void CLocalisation::Initialise() { + ((void(__cdecl *)())0x56D180)(); +} + +// Converted from cdecl void CLocalisation::SetNormalGame(void) 0x56D1A0 +void CLocalisation::SetNormalGame() { + ((void(__cdecl *)())0x56D1A0)(); +} + +// Converted from cdecl void CLocalisation::SetFrenchGame(void) 0x56D1C0 +void CLocalisation::SetFrenchGame() { + ((void(__cdecl *)())0x56D1C0)(); +} + +// Converted from cdecl void CLocalisation::SetGermanGame(void) 0x56D1E0 +void CLocalisation::SetGermanGame() { + ((void(__cdecl *)())0x56D1E0)(); +} + +// Converted from cdecl bool CLocalisation::GermanGame(void) 0x56D200 +bool CLocalisation::GermanGame() { + return ((bool(__cdecl *)())0x56D200)(); +} + +// Converted from cdecl bool CLocalisation::FrenchGame(void) 0x56D210 +bool CLocalisation::FrenchGame() { + return ((bool(__cdecl *)())0x56D210)(); +} + +// Converted from cdecl bool CLocalisation::Metric(void) 0x56D220 +bool CLocalisation::Metric() { + return ((bool(__cdecl *)())0x56D220)(); +} + +// Converted from cdecl bool CLocalisation::Blood(void) 0x56D230 +bool CLocalisation::Blood() { + return ((bool(__cdecl *)())0x56D230)(); +} + +// Converted from cdecl bool CLocalisation::Porn(void) 0x56D240 +bool CLocalisation::Porn() { + return ((bool(__cdecl *)())0x56D240)(); +} + +// Converted from cdecl bool CLocalisation::ScreamsFromKills(void) 0x56D250 +bool CLocalisation::ScreamsFromKills() { + return ((bool(__cdecl *)())0x56D250)(); +} + +// Converted from cdecl bool CLocalisation::Prostitutes(void) 0x56D260 +bool CLocalisation::Prostitutes() { + return ((bool(__cdecl *)())0x56D260)(); +} + +// Converted from cdecl bool CLocalisation::KickingWhenDown(void) 0x56D270 +bool CLocalisation::KickingWhenDown() { + return ((bool(__cdecl *)())0x56D270)(); +} + +// Converted from cdecl bool CLocalisation::ShootLimbs(void) 0x56D280 +bool CLocalisation::ShootLimbs() { + return ((bool(__cdecl *)())0x56D280)(); +} + +// Converted from cdecl bool CLocalisation::KnockDownPeds(void) 0x56D290 +bool CLocalisation::KnockDownPeds() { + return ((bool(__cdecl *)())0x56D290)(); +} + +// Converted from cdecl bool CLocalisation::KillFrenzy(void) 0x56D2A0 +bool CLocalisation::KillFrenzy() { + return ((bool(__cdecl *)())0x56D2A0)(); +} + +// Converted from cdecl bool CLocalisation::StealFromDeadPed(void) 0x56D2B0 +bool CLocalisation::StealFromDeadPed() { + return ((bool(__cdecl *)())0x56D2B0)(); +} + +// Converted from cdecl bool CLocalisation::KillPeds(void) 0x56D2C0 +bool CLocalisation::KillPeds() { + return ((bool(__cdecl *)())0x56D2C0)(); +} + +// Converted from cdecl bool CLocalisation::PedsOnFire(void) 0x56D2D0 +bool CLocalisation::PedsOnFire() { + return ((bool(__cdecl *)())0x56D2D0)(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CLocalisation.h b/third-party/plugin-sdk/plugin_sa/game_sa/CLocalisation.h new file mode 100644 index 00000000..c11ef7ac --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CLocalisation.h @@ -0,0 +1,35 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CLocalisation { +public: + static void Initialise(); + static void SetNormalGame(); + static void SetFrenchGame(); + static void SetGermanGame(); + static bool GermanGame(); + static bool FrenchGame(); + static bool Metric(); + static bool Blood(); + static bool Porn(); + static bool ScreamsFromKills(); + static bool Prostitutes(); + static bool KickingWhenDown(); + static bool ShootLimbs(); + static bool KnockDownPeds(); + static bool KillFrenzy(); + static bool StealFromDeadPed(); + static bool KillPeds(); + static bool PedsOnFire(); + + static bool &nastyGame; + static bool &germanGame; + static bool &frenchGame; +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMatrix.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CMatrix.cpp new file mode 100644 index 00000000..5d43c895 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMatrix.cpp @@ -0,0 +1,205 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CMatrix.h" + +CMatrix::CMatrix(CMatrix const& matrix) +{ + ((void (__thiscall *)(CMatrix *, CMatrix const&))0x59BCF0)(this, matrix); +} + +// like previous + attach +CMatrix::CMatrix(RwMatrix *matrix, bool temporary) +{ + ((void (__thiscall *)(CMatrix *, RwMatrix *, bool))0x59C050)(this, matrix, temporary); +} + +// destructor detaches matrix if attached +CMatrix::~CMatrix() +{ + ((void (__thiscall *)(CMatrix *))0x59ACD0)(this); +} + +void CMatrix::Attach(RwMatrix *matrix, bool temporary) +{ + ((void (__thiscall *)(CMatrix *, RwMatrix *, bool))0x59BD10)(this, matrix, temporary); +} + +void CMatrix::Detach() +{ + ((void (__thiscall *)(CMatrix *))0x59ACF0)(this); +} + +// copy base RwMatrix to another matrix +void CMatrix::CopyOnlyMatrix(CMatrix const& matrix) +{ + ((void (__thiscall *)(CMatrix *, CMatrix const&))0x59ADD0)(this, matrix); +} + +// update RwMatrix with attaching matrix. This doesn't check if attaching matrix is present, so use it only if you know it is present. +// Using UpdateRW() is more safe since it perform this check. +void CMatrix::Update() +{ + ((void (__thiscall *)(CMatrix *))0x59BB60)(this); +} + +// update RwMatrix with attaching matrix. +void CMatrix::UpdateRW() +{ + ((void (__thiscall *)(CMatrix *))0x59BBB0)(this); +} + +// update RwMatrix with this matrix +void CMatrix::UpdateRW(RwMatrix *matrix) +{ + ((void (__thiscall *)(CMatrix *, RwMatrix *))0x59AD70)(this, matrix); +} + +void CMatrix::SetUnity() +{ + ((void (__thiscall *)(CMatrix *))0x59AE70)(this); +} + +void CMatrix::ResetOrientation() +{ + ((void (__thiscall *)(CMatrix *))0x59AEA0)(this); +} + +void CMatrix::SetScale(float scale) +{ + ((void (__thiscall *)(CMatrix *, float))0x59AED0)(this, scale); +} + +// scale on three axes +void CMatrix::SetScale(float x, float y, float z) +{ + ((void (__thiscall *)(CMatrix *, float, float, float))0x59AF00)(this, x, y, z); +} + +void CMatrix::SetTranslateOnly(float x, float y, float z) +{ + ((void (__thiscall *)(CMatrix *, float, float, float))0x59AF80)(this, x, y, z); +} + +// like previous + reset orientation +void CMatrix::SetTranslate(float x, float y, float z) +{ + ((void (__thiscall *)(CMatrix *, float, float, float))0x59AF40)(this, x, y, z); +} + +void CMatrix::SetRotateXOnly(float angle) +{ + ((void (__thiscall *)(CMatrix *, float))0x59AFA0)(this, angle); +} + +void CMatrix::SetRotateYOnly(float angle) +{ + ((void (__thiscall *)(CMatrix *, float))0x59AFE0)(this, angle); +} + +void CMatrix::SetRotateZOnly(float angle) +{ + ((void (__thiscall *)(CMatrix *, float))0x59B020)(this, angle); +} + +void CMatrix::SetRotateX(float angle) +{ + ((void (__thiscall *)(CMatrix *, float))0x59B060)(this, angle); +} + +void CMatrix::SetRotateY(float angle) +{ + ((void (__thiscall *)(CMatrix *, float))0x59B0A0)(this, angle); +} + +void CMatrix::SetRotateZ(float angle) +{ + ((void (__thiscall *)(CMatrix *, float))0x59B0E0)(this, angle); +} + +// set rotate on 3 axes +void CMatrix::SetRotate(float x, float y, float z) +{ + ((void (__thiscall *)(CMatrix *, float, float, float))0x59B120)(this, x, y, z); +} + +void CMatrix::RotateX(float angle) +{ + ((void (__thiscall *)(CMatrix *, float))0x59B1E0)(this, angle); +} + +void CMatrix::RotateY(float angle) +{ + ((void (__thiscall *)(CMatrix *, float))0x59B2C0)(this, angle); +} + +void CMatrix::RotateZ(float angle) +{ + ((void (__thiscall *)(CMatrix *, float))0x59B390)(this, angle); +} + +// rotate on 3 axes +void CMatrix::Rotate(float x, float y, float z) +{ + ((void (__thiscall *)(CMatrix *, float, float, float))0x59B460)(this, x, y, z); +} + +void CMatrix::Reorthogonalise() +{ + ((void (__thiscall *)(CMatrix *))0x59B6A0)(this); +} + +// similar to UpdateRW(RwMatrixTag *) +void CMatrix::CopyToRwMatrix(RwMatrix *matrix) +{ + ((void (__thiscall *)(CMatrix *, RwMatrix *))0x59B8B0)(this, matrix); +} + +void CMatrix::SetRotate(CQuaternion const& quat) +{ + ((void (__thiscall *)(CMatrix *, CQuaternion const&))0x59BBF0)(this, quat); +} + +void CMatrix::Scale(float scale) { + plugin::CallMethod<0x459350, CMatrix *, float>(this, scale); +} + +void CMatrix::Scale(float x, float y, float z) { + plugin::CallMethod<0x459350, CMatrix *, float, float, float>(this, x, y, z); +} + +void CMatrix::operator=(CMatrix const& rvalue) +{ + ((void (__thiscall *)(CMatrix *, CMatrix const&))0x59BBC0)(this, rvalue); +} + +void CMatrix::operator+=(CMatrix const& rvalue) +{ + ((void (__thiscall *)(CMatrix *, CMatrix const&))0x59ADF0)(this, rvalue); +} + +void CMatrix::operator*=(CMatrix const& rvalue) +{ + ((void (__thiscall *)(CMatrix *, CMatrix const&))0x411A80)(this, rvalue); +} + +CMatrix operator*(CMatrix const&a, CMatrix const&b) { + CMatrix result; + ((void(__cdecl *)(CMatrix*, CMatrix const&, CMatrix const&))0x59BE30)(&result, a, b); + return result; +} + +CVector operator*(CMatrix const&a, CVector const&b) { + CVector result; + ((void(__cdecl *)(CVector*, CMatrix const&, CVector const&))0x59C890)(&result, a, b); + return result; +} + +CMatrix operator+(CMatrix const&a, CMatrix const&b) { + CMatrix result; + ((void(__cdecl *)(CMatrix*, CMatrix const&, CMatrix const&))0x59BFA0)(&result, a, b); + return result; +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMatrix.h b/third-party/plugin-sdk/plugin_sa/game_sa/CMatrix.h new file mode 100644 index 00000000..79beb750 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMatrix.h @@ -0,0 +1,86 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "RenderWare.h" +#include "CQuaternion.h" + +class CMatrix { +public: + // RwV3d-like: + CVector right; + unsigned int flags; + CVector up; + unsigned int pad1; + CVector at; + unsigned int pad2; + CVector pos; + unsigned int pad3; + + RwMatrix *m_pAttachMatrix; + bool m_bOwnsAttachedMatrix; // do we need to delete attaching matrix at detaching + + inline CMatrix() { + m_pAttachMatrix = nullptr; + m_bOwnsAttachedMatrix = false; + } + + CMatrix(plugin::dummy_func_t) {} + CMatrix(CMatrix const& matrix); + CMatrix(RwMatrix *matrix, bool temporary); // like previous + attach + ~CMatrix(); // destructor detaches matrix if attached + void Attach(RwMatrix *matrix, bool temporary); + void Detach(); + void CopyOnlyMatrix(CMatrix const& matrix); // copy base RwMatrix to another matrix + void Update(); // update RwMatrix with attaching matrix. This doesn't check if attaching matrix is present, so use it only if you know it is present. + // Using UpdateRW() is more safe since it perform this check. + void UpdateRW(); // update RwMatrix with attaching matrix. + void UpdateRW(RwMatrix *matrix); // update RwMatrix with this matrix + void SetUnity(); + void ResetOrientation(); + void SetScale(float scale); // set (scaled) + void SetScale(float x, float y, float z); // set (scaled) + void SetTranslateOnly(float x, float y, float z); + void SetTranslate(float x, float y, float z); // like previous + reset orientation + void SetRotateXOnly(float angle); + void SetRotateYOnly(float angle); + void SetRotateZOnly(float angle); + void SetRotateX(float angle); + void SetRotateY(float angle); + void SetRotateZ(float angle); + void SetRotate(float x, float y, float z); // set rotate on 3 axes + void RotateX(float angle); + void RotateY(float angle); + void RotateZ(float angle); + void Rotate(float x, float y, float z); // rotate on 3 axes + void Reorthogonalise(); + void CopyToRwMatrix(RwMatrix *matrix); // similar to UpdateRW(RwMatrixTag *) + void SetRotate(CQuaternion const& quat); + void Scale(float scale); + void Scale(float x, float y, float z); + void operator=(CMatrix const& right); + void operator+=(CMatrix const& right); + void operator*=(CMatrix const& right); + + CVector& GetRight() { return right; } + const CVector& GetRight() const { return right; } + + CVector& GetForward() { return up; } + const CVector& GetForward() const { return up; } + + CVector& GetUp() { return at; } + const CVector& GetUp() const { return at; } + + CVector& GetPosition() { return pos; } + const CVector& GetPosition() const { return pos; } +}; + +VALIDATE_SIZE(CMatrix, 0x48); + +CMatrix operator*(CMatrix const&a, CMatrix const&b); +CVector operator*(CMatrix const&a, CVector const&b); +CMatrix operator+(CMatrix const&a, CMatrix const&b); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMatrixLink.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CMatrixLink.cpp new file mode 100644 index 00000000..d2206e7a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMatrixLink.cpp @@ -0,0 +1,29 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CMatrixLink.h" + +PLUGIN_SOURCE_FILE + +int ctor_addr(CMatrixLink) = ADDRESS_BY_VERSION(0x54F0C0, 0, 0, 0, 0, 0); +int ctor_gaddr(CMatrixLink) = GLOBAL_ADDRESS_BY_VERSION(0x54F0C0, 0, 0, 0, 0, 0); + +int dtor_addr(CMatrixLink) = ADDRESS_BY_VERSION(0x54E8E0, 0, 0, 0, 0, 0); +int dtor_gaddr(CMatrixLink) = GLOBAL_ADDRESS_BY_VERSION(0x54E8E0, 0, 0, 0, 0, 0); + +int addrof(CMatrixLink::Insert) = ADDRESS_BY_VERSION(0x54E8F0, 0, 0, 0, 0, 0); +int gaddrof(CMatrixLink::Insert) = GLOBAL_ADDRESS_BY_VERSION(0x54E8F0, 0, 0, 0, 0, 0); + +void CMatrixLink::Insert(CMatrixLink *where) { + plugin::CallMethodDynGlobal(gaddrof(CMatrixLink::Insert), this, where); +} + +int addrof(CMatrixLink::Remove) = ADDRESS_BY_VERSION(0x54E910, 0, 0, 0, 0, 0); +int gaddrof(CMatrixLink::Remove) = GLOBAL_ADDRESS_BY_VERSION(0x54E910, 0, 0, 0, 0, 0); + +void CMatrixLink::Remove() { + plugin::CallMethodDynGlobal(gaddrof(CMatrixLink::Remove), this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMatrixLink.h b/third-party/plugin-sdk/plugin_sa/game_sa/CMatrixLink.h new file mode 100644 index 00000000..17d0a5f1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMatrixLink.h @@ -0,0 +1,28 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CMatrix.h" + +class CPlaceable; + +class PLUGIN_API CMatrixLink : public CMatrix { + PLUGIN_NO_DEFAULT_CONSTRUCTION(CMatrixLink) + +public: + CPlaceable *m_pOwner; + CMatrixLink *m_pPrev; + CMatrixLink *m_pNext; + + SUPPORTED_10US void Insert(CMatrixLink *where); + SUPPORTED_10US void Remove(); +}; + +VALIDATE_SIZE(CMatrixLink, 0x54); + +#include "meta/meta.CMatrixLink.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMenuManager.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CMenuManager.cpp new file mode 100644 index 00000000..3e21d515 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMenuManager.cpp @@ -0,0 +1,272 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#pragma warning(disable : 26495) +#include "CMenuManager.h" + +CMenuManager &FrontEndMenuManager = *(CMenuManager *)0xBA6748; + +bool& CMenuManager::bInvertMouseX = *(bool*)0xBA6744; +bool& CMenuManager::bInvertMouseY = *(bool*)0xBA6745; +int& CMenuManager::nLastMenuPage = *(int*)0x8CDFF0; + +char** frontend1TexNames = (char**)0x8CDF28; +char** frontend2TexNames = (char**)0x8CDF90; +char** frontend3TexNames = (char**)0x8CDFD0; +char** frontend4TexNames = (char**)0x8CDFE0; + +bool& bBriefHistoryAllowedToUpdate = *(bool*)0x8CDFF9; + +CMenuScreen* aScreens = (CMenuScreen*)0x8CE008; + +CMenuManager::CMenuManager() { + plugin::CallMethod<0x574350, CMenuManager*>(this); +} + +CMenuManager::~CMenuManager() { + plugin::CallMethod<0x579440, CMenuManager*>(this); +} + +char CMenuManager::AdditionalOptionInput(char input, char enter) { + return plugin::CallMethodAndReturn(this, input, enter); +} + +void CMenuManager::CentreMousePointer() { + plugin::CallMethod<0x57C520, CMenuManager*>(this); +} + +bool CMenuManager::CheckCodesForControls(int code) { + return plugin::CallMethodAndReturn(this, code); +} + +bool CMenuManager::CheckFrontEndDownInput() { + return plugin::CallMethodAndReturn(this); +} + +bool CMenuManager::CheckFrontEndLeftInput() { + return plugin::CallMethodAndReturn(this); +} + +bool CMenuManager::CheckFrontEndRightInput() { + return plugin::CallMethodAndReturn(this); +} + +bool CMenuManager::CheckFrontEndUpInput() { + return plugin::CallMethodAndReturn(this); +} + +bool CMenuManager::CheckHover(float x1, float x2, float y1, float y2) { + return plugin::CallMethodAndReturn(this, x1, x2, y1, y2); +} + +bool CMenuManager::CheckMissionPackValidMenu() { + return plugin::CallMethodAndReturn(this); +} + +bool CMenuManager::CheckRedefineControlInput() { + return plugin::CallMethodAndReturn(this); +} + +void CMenuManager::CheckSliderMovement(float input) { + plugin::CallMethod<0x57E4D0, CMenuManager*>(this, input); +} + +void CMenuManager::DisplayHelperText(char* text) { + plugin::CallMethod<0x57E4D0, CMenuManager*>(this, text); +} + +int CMenuManager::DisplaySlider(float posX, float posY, float beginHeight, float endHeight, float distBetweenRects, float filledAmount, CRGBA const& colour) { + return plugin::CallMethodAndReturn(this, posX, posY, beginHeight, endHeight, distBetweenRects, filledAmount, colour); +} + +signed int CMenuManager::DoSettingsBeforeStartingAGame() { + return plugin::CallMethodAndReturn(this); +} + +char CMenuManager::DrawBackground() { + return plugin::CallMethodAndReturn(this); +} + +char CMenuManager::DrawControllerScreenExtraText(int unk) { + return plugin::CallMethodAndReturn(this, unk); +} + +char CMenuManager::DrawControllerSetupScreen() { + return plugin::CallMethodAndReturn(this); +} + +void CMenuManager::DrawFrontEnd() { + plugin::CallMethod<0x57C290, CMenuManager*>(this); +} + +void CMenuManager::DrawQuitGameScreen(int unused) { + plugin::CallMethod<0x57D860, CMenuManager*>(this, unused); +} + +void CMenuManager::DrawStandardMenu(bool header) { + plugin::CallMethod<0x5794A0, CMenuManager*>(this, header); +} + +void CMenuManager::DrawWindow(const CRect& coords, const char* pKey, unsigned char nColour, CRGBA backColor, bool Unused, bool bBackground) { + plugin::CallMethod<0x573EE0, CMenuManager*>(this, coords, pKey, nColour, backColor, Unused, bBackground); +} + +void CMenuManager::DrawWindowedText(float x1, float y1, float x2, float y2, char* gxt, int align) { + plugin::CallMethod<0x578F50, CMenuManager*>(this, x1, y1, x2, y2, gxt, align); +} + +unsigned char CMenuManager::GetNumberOfMenuOptions() { + return plugin::CallMethodAndReturn(this); +} + +bool CMenuManager::HasLanguageChanged() { + return plugin::CallMethodAndReturn(this); +} + +void CMenuManager::Initialise() { + plugin::CallMethod<0x5744D0, CMenuManager*>(this); +} + +void CMenuManager::InitialiseChangedLanguageSettings(bool reInitControls) { + plugin::CallMethod<0x573260, CMenuManager*>(this, reInitControls); +} + +int CMenuManager::JumpToGenericMessageScreen(char screen, char* header, char* action) { + return plugin::CallMethodAndReturn(this, screen, header, action); +} + +void CMenuManager::LoadAllTextures() { + plugin::CallMethod<0x572EC0, CMenuManager*>(this); +} + +void CMenuManager::LoadSettings() { + plugin::CallMethod<0x57C8F0, CMenuManager*>(this); +} + +void CMenuManager::MessageScreen(char* message, CRGBA const& col, bool frame) { + plugin::CallMethod<0x579330, CMenuManager*>(this, message, col, frame); +} + +float CMenuManager::PrintBriefs() { + return plugin::CallMethodAndReturn(this); +} + +char CMenuManager::PrintMap() { + return plugin::CallMethodAndReturn(this); +} + +char CMenuManager::PrintRadioStationList() { + return plugin::CallMethodAndReturn(this); +} + +char CMenuManager::PrintStats() { + return plugin::CallMethodAndReturn(this); +} + +int CMenuManager::Process() { + return plugin::CallMethodAndReturn(this); +} + +void CMenuManager::ProcessFileActions() { + plugin::CallMethod<0x578D60, CMenuManager*>(this); +} + +void CMenuManager::ProcessMenuOptions(char input, char* exit, char enter) { + plugin::CallMethod<0x576FE0, CMenuManager*>(this, input, exit, enter); +} + +void CMenuManager::ProcessMissionPackNewGame() { + plugin::CallMethod<0x57D520, CMenuManager*>(this); +} + +char CMenuManager::ProcessPCMenuOptions(char input, char enter) { + return plugin::CallMethodAndReturn(this, input, enter); +} + +void CMenuManager::ProcessStreaming(bool all) { + plugin::CallMethod<0x573CF0, CMenuManager*>(this, all); +} + +void CMenuManager::ProcessUserInput(char down, char up, char enter, char exit, char input) { + plugin::CallMethod<0x57B480, CMenuManager*>(this, down, up, enter, exit, input); +} + +char CMenuManager::RedefineScreenUserInput(int enter, int exit) { + return plugin::CallMethodAndReturn(this, enter, exit); +} + +void CMenuManager::ResetHelperText() { + plugin::CallMethod<0x57CD30, CMenuManager*>(this); +} + +void CMenuManager::SaveLoadFileError_SetUpErrorScreen() { + plugin::CallMethod<0x57C490, CMenuManager*>(this); +} + +void CMenuManager::SaveSettings() { + plugin::CallMethod<0x57C660, CMenuManager*>(this); +} + +int CMenuManager::SaveStatsToFile() { + return plugin::CallMethodAndReturn(this); +} + +void CMenuManager::ScrollRadioStations(char input) { + plugin::CallMethod<0x573A00, CMenuManager*>(this, input); +} + +char CMenuManager::SetDefaultPreferences(char page) { + return plugin::CallMethodAndReturn(this, page); +} + +void CMenuManager::SetFrontEndRenderStates() { + plugin::CallMethod<0x573A60, CMenuManager*>(this); +} + +int CMenuManager::SetHelperText(int index) { + return plugin::CallMethodAndReturn(this, index); +} + +void CMenuManager::SmallMessageScreen(char* message) { + plugin::CallMethod<0x574010, CMenuManager*>(this, message); +} + +float CMenuManager::StretchX(float x) { + return plugin::CallMethodAndReturn(this, x); +} + +float CMenuManager::StretchY(float y) { + return plugin::CallMethodAndReturn(this, y); +} + +void CMenuManager::SwapTexturesRound(bool force) { + plugin::CallMethod<0x5730A0, CMenuManager*>(this, force); +} + +void CMenuManager::SwitchMenuOnAndOff() { + plugin::CallMethod<0x576B70, CMenuManager*>(this); +} + +char CMenuManager::SwitchToNewScreen(char page) { + return plugin::CallMethodAndReturn(this, page); +} + +void CMenuManager::UnloadTextures() { + plugin::CallMethod<0x574630, CMenuManager*>(this); +} + +void CMenuManager::UserInput() { + plugin::CallMethod<0x57FD70, CMenuManager*>(this); +} + +void CMenuManager::RequestFrontEndShutDown() { + m_bShutDownFrontEndRequested = true; +} + +void CMenuManager::RequestFrontEndStartUp() { + m_bStartUpFrontEndRequested = true; +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMenuManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/CMenuManager.h new file mode 100644 index 00000000..1d5a0bfe --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMenuManager.h @@ -0,0 +1,463 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector2D.h" +#include "CSprite2d.h" + +enum { + NUM_ENTRIES = 12 +}; + +// Menu entries action to perform +enum eMenuActions { // There's many actions @0x57702E and @0x57CD88 + MENUACTION_NOTHING = 0, + MENUACTION_LABEL = 1, // Some static text at the top of the page (works only on first entry) + MENUACTION_BACK = 2, // Back to previous menu + MENUACTION_YES = 3, // Used as YES in menus (also as NO, weird?) + MENUACTION_NO = 4, // Used as NO in menus (also as YES, weird?) + MENUACTION_CHANGEMENU = 5, // Switch to target menu + MENUACTION_TRACKSSCAN = 6, + MENUACTION_NEWGAME = 10, + MENUACTION_MPACK = 11, + MENUACTION_SKIP = 20, // Skip this entry (unselectable) + MENUACTION_STATSSCROLL = 21, + MENUACTION_FRAMELIMIT = 24, + MENUACTION_SUBTITLES = 25, + MENUACTION_WIDESCREEN = 26, + MENUACTION_BRIGHTNESS = 27, + MENUACTION_MUSICVOLUME = 28, + MENUACTION_SFXVOLUME = 29, + MENUACTION_RADIOEQ = 30, + MENUACTION_RADIOAUTOSELECT = 31, + MENUACTION_RADIO = 32, + MENUACTION_LEGEND = 33, + MENUACTION_RADARMODE = 34, + MENUACTION_HUD = 35, + MENUACTION_CHANGE_LANG = 36, + MENUACTION_LANG_ENG = 37, + MENUACTION_LANG_FRE = 38, + MENUACTION_LANG_GER = 39, + MENUACTION_LANG_ITA = 40, + MENUACTION_LANG_SPA = 41, + MENUACTION_FXQUALITY = 42, + MENUACTION_MIPMAP = 43, + MENUACTION_ANTIALIAS = 44, + MENUACTION_INVERTMOUSEHORIZONTALLY = 46, + MENUACTION_JOYINVERTX = 47, + MENUACTION_JOYINVERTY = 48, + MENUACTION_JOYINVERTX2 = 49, + MENUACTION_JOYINVERTY2 = 50, + MENUACTION_JOYSWAPAXIS1 = 51, + MENUACTION_JOYSWAPAXIS2 = 52, + MENUACTION_EXIT = 53, + MENUACTION_RESUME = 54, + MENUACTION_BACK_PC = 55, + MENUACTION_SCREENRES = 56, + MENUACTION_RESTOREDEF = 57, + MENUACTION_CTRLMETHOD = 58, + MENUACTION_MOUSESTEER = 59, + MENUACTION_MOUSEFLY = 60, + MENUACTION_DRAWDIST = 61, + MENUACTION_MOUSESENS = 62, + MENUACTION_TRACKSPLAYMODE = 63, + MENUACTION_TRACKSAUTOSCAN = 64, + MENUACTION_SAVEPHOTOS = 65, +}; + +// Type of menu entries +enum eMenuEntryType { + MENUENTRY_SAVE_1 = 1, + MENUENTRY_SAVE_2, + MENUENTRY_SAVE_3, + MENUENTRY_SAVE_4, + MENUENTRY_SAVE_5, + MENUENTRY_SAVE_6, + MENUENTRY_SAVE_7, + MENUENTRY_SAVE_8, + MENUENTRY_MISSIONPACK, + MENUENTRY_JOYMOUSE, + MENUENTRY_BUTTON, + MENUENTRY_OPTION, +}; + +enum eMenuPage { + MENUPAGE_NONE = -1, + MENUPAGE_STATS = 0, + MENUPAGE_NEW_GAME = 1, // New Game, Load Game, Delete Game + MENUPAGE_BRIEFS = 2, + MENUPAGE_SOUND_SETTINGS = 3, + MENUPAGE_DISPLAY_SETTINGS = 4, + MENUPAGE_MAP = 5, + MENUPAGE_NEW_GAME_ASK = 6, // Are you sure you want to start a new game? All current game progress will be lost. Proceed? + MENUPAGE_SELECT_GAME = 7, // Please select which new game you wish to start: + MENUPAGE_MISSIONPACK_LOADING_ASK = 8, // // Are you sure you want to load a San Andreas Mission Pack? All current game progress will be lost. Proceed? + MENUPAGE_CHOOSE_LOAD_SLOT = 9, // Select save file to load: + MENUPAGE_CHOOSE_DELETE_SLOT = 10, // Select save file to delete: + MENUPAGE_LOAD_GAME_ASK = 11, // All unsaved progress in your current game will be lost. Proceed with loading? + MENUPAGE_DELETE_GAME_ASK = 12, // Are you sure you wish to delete this save file? + MENUPAGE_LOAD_FIRST_SAVE = 13, + MENUPAGE_DELETE_FINISHED = 14, + MENUPAGE_DELETE_SUCCESSFUL = 15, // // Delete Successful. Select OK to continue. + MENUPAGE_CHOOSE_SAVE_SLOT = 16, // Select file you wish to save to: + MENUPAGE_SAVE_WRITE_ASK = 17, // Are you sure you wish to save? + MENUPAGE_SAVE_DONE_1 = 18, + MENUPAGE_SAVE_DONE_2 = 19, // Save Successful. Select OK to continue. + MENUPAGE_GAME_SAVED = 20, // OK + MENUPAGE_GAME_LOADED = 21, // OK + MENUPAGE_GAME_WARNING_DONT_SAVE = 22, // Warning! One or more cheats have been activated. This may affect your save game. It is recommended that you do not save this game. + MENUPAGE_ASK_DISPLAY_DEFAULT_SETS = 23, // Are you sure you want to reset your current settings to default? + MENUPAGE_ASK_AUDIO_DEFAULT_SETS = 24, // Are you sure you want to reset your current settings to default? + MENUPAGE_ASK_CONTROLLER_DEFAULT_SETS = 25, // Are you sure you want to reset your current settings to default? + MENUPAGE_USER_TRACKS_OPTIONS = 26, + MENUPAGE_DISPLAY_ADVANCED = 27, // DRAW DISTANCE, ... + MENUPAGE_LANGUAGE_SETTINGS = 28, // English, ... + MENUPAGE_SAVE_GAME_DONE = 29, // O.K + MENUPAGE_SAVE_GAME_FAILED = 30, // Save Unsuccessful., O.K. + MENUPAGE_SAVE_WRITE_FAILED = 31, // Save Unsuccessful. + MENUPAGE_SAVE_FAILED_FILE_ERROR = 32, // Load Unsuccessful. File Corrupted, Please delete. + MENUPAGE_OPTIONS = 33, // Controller Setup, Audio Setup ... + MENUPAGE_MAIN_MENU = 34, // Start Game, Options, Quit Game + MENUPAGE_EXIT = 35, // Are you sure you want to quit? All progress since the last save game will be lost. Proceed? + MENUPAGE_CONTROLLER_PC = 36, // CONFIGURATION, Redefine Controls ... + MENUPAGE_REDEFINE_CONTROLS = 37, // Foot Controls, Vehicle Controls + MENUPAGE_KEYBOARD_CONTROLS = 38, + MENUPAGE_MOUSE_SETTINGS = 39, + MENUPAGE_JOYPAD_SETTINGS = 40, + MENUPAGE_PAUSE_MENU = 41, // Resume, START NEW GAME ... + MENUPAGE_QUIT = 42, + MENUPAGE_EMPTY = 43, + NUM_MENU_PAGES +}; + +enum eMenuSprites { + MENUSPRITE_RADIO_TEXTURES_BEGIN, + MENUSPRITE_ARROW = MENUSPRITE_RADIO_TEXTURES_BEGIN, + MENUSPRITE_RADIO_PLAYBACK, + MENUSPRITE_RADIO_KROSE, + MENUSPRITE_RADIO_KDST, + MENUSPRITE_RADIO_BOUNCE, + MENUSPRITE_RADIO_SFUR, + MENUSPRITE_RADIO_RLS, + MENUSPRITE_RADIO_RADIOX, + MENUSPRITE_RADIO_CSR, + MENUSPRITE_RADIO_KJAH, + MENUSPRITE_RADIO_MASTERSOUND, + MENUSPRITE_RADIO_WCTR, + MENUSPRITE_RADIO_TPLAYER, + MENUSPRITE_RADIO_TEXTURES_END, + + MENUSPRITE_BACKGROUND_TEXTURES_BEGIN = MENUSPRITE_RADIO_TEXTURES_END, + MENUSPRITE_BACK2 = MENUSPRITE_BACKGROUND_TEXTURES_BEGIN, + MENUSPRITE_BACK3, + MENUSPRITE_BACK4, + MENUSPRITE_BACK5, + MENUSPRITE_BACK6, + MENUSPRITE_BACK7, + MENUSPRITE_BACK8, + MENUSPRITE_MAP, + MENUSPRITE_BACKGROUND_TEXTURES_END, + + MENUSPRITE_BACK8_TEXTURES_BEGIN = MENUSPRITE_BACKGROUND_TEXTURES_END, + MENUSPRITE_BACK8_TOP = MENUSPRITE_BACK8_TEXTURES_BEGIN, + MENUSPRITE_BACK8_RIGHT, + MENUSPRITE_BACK8_TEXTURES_END, + + MENUSPRITE_MOUSE_TEXTURES_BEGIN = MENUSPRITE_BACK8_TEXTURES_END, + MENUSPRITE_MOUSE = MENUSPRITE_MOUSE_TEXTURES_BEGIN, + MENUSPRITE_CROSSHAIR, + MENUSPRITE_MOUSE_TEXTURES_END, + + MENUSPRITE_TEXTURE_COUNT = MENUSPRITE_MOUSE_TEXTURES_END +}; + +struct PLUGIN_API CMenuScreen { + char m_ScreenName[8]; + char m_nPreviousPage; + char m_nParentEntry; + + struct PLUGIN_API CMenuEntry { + unsigned char m_nAction; + char m_EntryName[8]; + unsigned char m_nSaveSlot; + char m_nTargetMenu; + unsigned char pad; + unsigned short m_nX; + unsigned short m_nY; + unsigned char m_nAlign; + } m_aEntries[NUM_ENTRIES]; +}; + +class PLUGIN_API CMenuManager { +public: + char m_nStatsScrollDir; + char field_1[3]; + float m_fStatsScrollSpeed; + char field_8; + char field_9[23]; + bool m_bPrefsUseVibration; + bool m_bPrefsShowHud; + char field_22[2]; + int m_nPrefsRadarMode; + int field_28; + int m_nTargetBlipIndex; // blip script handle + char n_nMenuSystemPanelId; + char field_31; + bool m_bShutDownFrontEndRequested; + bool m_bStartUpFrontEndRequested; + bool m_bMenuAccessWidescreen; + char field_35; + char field_36[2]; + int m_nKeyPressedCode; + int m_nPrefsBrightness; + float m_fPrefsLOD; + bool m_bPrefsShowSubtitles; + bool m_bPrefsShowLocations; + bool m_bPrefsShowContacts; + bool m_bPrefsShowMission; + bool m_bPrefsShowOther; + bool m_bPrefsShowGangArea; + bool m_bPrefsShowLegends; + bool m_bPrefsUseWideScreen; + bool m_bPrefsVsync; + bool m_bPrefsRadioAutoSelect; + char field_4E; + char m_nPrefsSfxVolume; + char m_nPrefsMusicVolume; + bool m_bPrefsRadioEq; + char m_nPrefsRadioStation; + char field_53; + int m_nCurrentMenuEntry; + bool m_bQuitGameNoCD; + bool m_bDrawRadarOrMap; + bool m_bAllowNavigation; + bool m_bStreamingDone; + bool m_bMenuActive; + bool m_bWantToRestart; + bool m_bFirstTime; + bool m_bSaveMenuActive; + bool m_bWantToLoad; + char field_61[3]; + float m_fMapZoom; + float m_fMapBaseX; + float m_fMapBaseY; + CVector2D m_vMousePos; + bool m_bStandardInput; + char field_79[3]; + int m_nTitleLanguage; + int m_nTextLanguage; + char m_nPrefsLanguage; + char m_nPrefsPrevLanguage; + char field_86[2]; + int field_88; + bool m_bLanguageLoaded; + char field_8D[3]; + int field_90; + int field_94; + char *m_pJPegBuffer; //!< +0x98 \see JPegCompress file + char field_9C[16]; + int field_AC; + char m_nPrefsRadioMode; + bool m_bPrefsInvertPadX1; + bool m_bPrefsInvertPadY1; + bool m_bPrefsInvertPadX2; + bool m_bPrefsInvertPadY2; + bool m_bPrefsSwapPadAxis1; + bool m_bSwapPadAxis2; + bool m_bInVehicleControlsScreen; + bool m_bShowMouse; + char field_B9[3]; + int m_nMousePosX; + int m_nMousePosY; + bool m_bPrefsMipMapping; + bool m_bPrefsTracksAutoScan; + short field_C6; + int m_nPrefsAntiAliasing; + int m_nAntiAliasingLevel; + char m_nController; + char field_D1[3]; + int m_nPrefsVideoMode; + int m_nDisplayVideoMode; + int field_DC; + int m_nMouseTempPosX; + int m_nMouseTempPosY; + bool m_bPrefsSavePhotos; + bool m_bGameNotLoaded; + char m_nPlayerNumber; + bool m_bReinitLanguageSettings; + int field_EC; + int* pControlEdit; + bool m_bOnlySaveMenu; + char field_F5[3]; + CSprite2d m_aMenuSprites[MENUSPRITE_TEXTURE_COUNT]; + bool m_bTexturesLoaded; + char m_nCurrentMenuPage; + char m_nPreviousMenuPage; + char m_nSelectedSaveGame; + char m_nSelectedMissionPack; + char field_161; + char m_szMpackName[8]; + char field_16A[6486]; + int field_1AC0; + int field_1AC4; + int field_1AC8; + int field_1ACC; + int field_1AD0; + int field_1AD4; + int field_1AD8; + short field_1ADC; + bool m_bChangeVideoMode; + char field_1ADF; + int field_1AE0; + int field_1AE4; + char field_1AE8; + bool m_bAudioRetuneInProgress; + char field_1AEA; + bool m_bScanningUserTracks; + int m_nHelperTextFadingAlpha; + char field_1AF0; + char field_1AF1; + char field_1AF2; + char field_1AF3; + int field_1AF4; + int m_nMouseOldPosX; + int m_nMouseOldPosY; + int m_nHoverOption; + int field_1B04; + char field_1B08; + char field_1B09; + char field_1B0A; + char field_1B0B; + int field_1B0C; + char field_1B10; + char field_1B11; + char field_1B12; + char field_1B13; + char field_1B14; + char field_1B15; + char field_1B16; + char field_1B17; + int m_nHelperTextIndex; + int field_1B1C; + unsigned char m_nTexturesRound; + unsigned char m_nNumberOfMenuOptions; + short field_1B22; + int m_nStatBarPerformanceTimer; + bool m_bUpdateMap; + char field_1B29; + short field_1B2A; + int m_nMapTimer; + int m_nBriefHistoryTimer; + short m_nSavedPlayerControlsDisabledFlag; + short field_1B36; + int field_1B38; + char field_1B3C; + char field_1B3D; + char field_1B3E; + char field_1B3F; + int field_1B40; + bool m_bExitMenu; + char field_1B45; + short field_1B46; + int field_1B48; + int field_1B4C; + char m_nBackgroundSprite; + char field_1B51; + short field_1B52; + int field_1B54; + int m_nHelperTextFadingTimer; + char field_1B5C; + char field_1B5D; + short field_1B5E; + int field_1B60; + int field_1B64; + int m_nTimeSlideLeftMove; + int m_nTimeSlideRightMove; + int field_1B70; + int field_1B74; + + static int& nLastMenuPage; + static bool& bInvertMouseX; + static bool& bInvertMouseY; + +public: + CMenuManager(); + ~CMenuManager(); + + char AdditionalOptionInput(char input, char enter); + void CentreMousePointer(); + bool CheckCodesForControls(int code); + bool CheckFrontEndDownInput(); + bool CheckFrontEndLeftInput(); + bool CheckFrontEndRightInput(); + bool CheckFrontEndUpInput(); + bool CheckHover(float x1, float x2, float y1, float y2); + bool CheckMissionPackValidMenu(); + bool CheckRedefineControlInput(); + void CheckSliderMovement(float input); + void DisplayHelperText(char* text); + int DisplaySlider(float posX, float posY, float beginHeight, float endHeight, float distBetweenRects, float filledAmount, CRGBA const& colour); + signed int DoSettingsBeforeStartingAGame(); + char DrawBackground(); + char DrawControllerScreenExtraText(int unk); + char DrawControllerSetupScreen(); + void DrawFrontEnd(); + void DrawQuitGameScreen(int unused); + void DrawStandardMenu(bool header = true); + void DrawWindow(const CRect& coords, const char* pKey, unsigned char nColour, CRGBA backColor, bool Unused, bool bBackground); + void DrawWindowedText(float x1, float y1, float x2, float y2, char* gxt, int align); + unsigned char GetNumberOfMenuOptions(); + bool HasLanguageChanged(); + void Initialise(); + void InitialiseChangedLanguageSettings(bool reInitControls); + int JumpToGenericMessageScreen(char screen, char* header, char* action); + void LoadAllTextures(); + void LoadSettings(); + void MessageScreen(char* message, CRGBA const& col, bool frame); + float PrintBriefs(); + char PrintMap(); + char PrintRadioStationList(); + char PrintStats(); + int Process(); + void ProcessFileActions(); + void ProcessMenuOptions(char input, char* exit, char enter); + void ProcessMissionPackNewGame(); + char ProcessPCMenuOptions(char input, char enter); + void ProcessStreaming(bool all); + void ProcessUserInput(char down, char up, char enter, char exit, char input); + char RedefineScreenUserInput(int enter, int exit); + void ResetHelperText(); + void SaveLoadFileError_SetUpErrorScreen(); + void SaveSettings(); + int SaveStatsToFile(); + void ScrollRadioStations(char input); + char SetDefaultPreferences(char page); + void SetFrontEndRenderStates(); + int SetHelperText(int index); + void SmallMessageScreen(char* message); + float StretchX(float x); + float StretchY(float y); + void SwapTexturesRound(bool force); + void SwitchMenuOnAndOff(); + char SwitchToNewScreen(char page); + void UnloadTextures(); + void UserInput(); + void RequestFrontEndShutDown(); + void RequestFrontEndStartUp(); +}; + +VALIDATE_SIZE(CMenuManager, 0x1B78); + +extern CMenuManager &FrontEndMenuManager; + +extern char** frontend1TexNames; +extern char** frontend2TexNames; +extern char** frontend3TexNames; +extern char** frontend4TexNames; +extern bool& bBriefHistoryAllowedToUpdate; +extern CMenuScreen* aScreens; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMenuSystem.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CMenuSystem.cpp new file mode 100644 index 00000000..f99ccbe8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMenuSystem.cpp @@ -0,0 +1,122 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CMenuSystem.h" + +bool *CMenuSystem::MenuInUse = (bool *)0xBA82E0; +unsigned char &CMenuSystem::CurrentMenuInUse = *(unsigned char *)0xBA82E2; +unsigned char &CMenuSystem::num_menus_in_use = *(unsigned char *)0xBA82E3; +tMenuPanel **MenuNumber = (tMenuPanel **)0xBA82D8; + +void CMenuSystem::ActivateItems(unsigned char panelId, bool item1, bool item2, bool item3, bool item4, bool item5, bool item6, bool item7, bool item8, bool item9, bool item10, bool item11, bool item12) +{ + ((void (__cdecl *)(unsigned char, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool))0x581990)(panelId, item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12); +} + +void CMenuSystem::ActivateOneItem(unsigned char panelId, unsigned char rowId, bool enable) +{ + ((void (__cdecl *)(unsigned char, unsigned char, bool))0x580750)(panelId, rowId, enable); +} + +unsigned char CMenuSystem::CreateNewMenu(eMenuType type, char *pTitle, float posX, float posY, float width, char columns, bool interactive, bool background, eFontAlignment alignment) +{ + return ((unsigned char (__cdecl *)(eMenuType, char*, float, float, float, char, bool, bool, eFontAlignment))0x582300)(type, pTitle, posX, posY, width, columns, interactive, background, alignment); +} + +char CMenuSystem::CheckForAccept(unsigned char panelId) +{ + return ((char (__cdecl *)(unsigned char))0x5807C0)(panelId); +} + +char CMenuSystem::CheckForSelected(unsigned char panelId) +{ + return ((char (__cdecl *)(unsigned char))0x5807E0)(panelId); +} + +void CMenuSystem::Initialise() +{ + ((void (__cdecl *)())0x5822D0)(); +} + +void CMenuSystem::Process(unsigned char panelId) +{ + ((void (__cdecl *)(unsigned char))0x582630)(panelId); +} + +tMenuPanel* CMenuSystem::InputStandardMenu(unsigned char panelId) +{ + return ((tMenuPanel* (__cdecl *)(unsigned char))0x580800)(panelId); +} + +tMenuPanel* CMenuSystem::InputGridMenu(unsigned char panelId) +{ + return ((tMenuPanel* (__cdecl *)(unsigned char))0x580BD0)(panelId); +} + +void CMenuSystem::DisplayStandardMenu(unsigned char panelId, bool bBrightFont) +{ + ((void (__cdecl *)(unsigned char, bool))0x580E00)(panelId, bBrightFont); +} + +void CMenuSystem::DisplayGridMenu(unsigned char panelId, bool bBrightFont) +{ + ((void (__cdecl *)(unsigned char, bool))0x5816E0)(panelId, bBrightFont); +} + +void CMenuSystem::HighlightOneItem(unsigned char panelId, unsigned char itemId, bool bHighlight) +{ + ((void (__cdecl *)(unsigned char, unsigned char, bool))0x5816E0)(panelId, itemId, bHighlight); +} + +tMenuPanel** CMenuSystem::InsertMenu(unsigned char panelId, unsigned char columnId, char *pTitle, char *str1, char *str2, char *str3, char *str4, char *str5, char *str6, char *str7, char *str8, char *str9, char *str10, char *str11, char *str12) +{ + return ((tMenuPanel** (__cdecl *)(unsigned char, unsigned char, char*, char*, char*, char*, char*, char*, char*, char*, char*, char*, char*, char*, char*))0x581E00)(panelId, columnId, pTitle, str1, str2, str3, str4, str5, str6, str7, str8, str9, str10, str11, str12); +} + +tMenuPanel* CMenuSystem::InsertOneMenuItem(unsigned char panelId, unsigned char columnId, unsigned char rowId, char *str) +{ + return ((tMenuPanel* (__cdecl *)(unsigned char, unsigned char, unsigned char, char*))0x581CE0)(panelId, columnId, rowId, str); +} + +tMenuPanel* CMenuSystem::InsertOneMenuItemWithNumber(unsigned char panelId, unsigned char columnId, unsigned char rowId, char *str, int number1, int number2) +{ + return ((tMenuPanel* (__cdecl *)(unsigned char, unsigned char, unsigned char, char*, int, int))0x581D70)(panelId, columnId, rowId, str, number1, number2); +} + +void CMenuSystem::SetActiveMenuItem(unsigned char panelId, char rowId) +{ + ((void (__cdecl *)(unsigned char, char))0x582630)(panelId, rowId); +} + +void CMenuSystem::SetColumnHeader(unsigned char panelId, unsigned char columnId, char *str) +{ + ((void (__cdecl *)(unsigned char, unsigned char, char*))0x581C40)(panelId, columnId, str); +} + +void CMenuSystem::SetColumnOrientation(unsigned char panelId, unsigned char columnId, eFontAlignment alignment) +{ + ((void (__cdecl *)(unsigned char, unsigned char, eFontAlignment))0x582080)(panelId, columnId, alignment); +} + +void CMenuSystem::SetColumnWidth(unsigned char panelId, unsigned char columnId, unsigned short width) +{ + ((void (__cdecl *)(unsigned char, unsigned char, unsigned short))0x582050)(panelId, columnId, width); +} + +void CMenuSystem::SetDPadInput(unsigned char panelId, bool bEnable) +{ + ((void (__cdecl *)(unsigned char, bool))0x581C90)(panelId, bEnable); +} + +void CMenuSystem::SetHeaderOrientation(unsigned char panelId, unsigned char columnId, eFontAlignment alignment) +{ + ((void (__cdecl *)(unsigned char, unsigned char, eFontAlignment))0x5820A0)(panelId, columnId, alignment); +} + +void CMenuSystem::SwitchOffMenu(unsigned char panelId) +{ + ((void (__cdecl *)(unsigned char))0x580750)(panelId); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMenuSystem.h b/third-party/plugin-sdk/plugin_sa/game_sa/CMenuSystem.h new file mode 100644 index 00000000..7a701374 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMenuSystem.h @@ -0,0 +1,84 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CFont.h" + +enum eMenuType : unsigned char +{ + MENU_TYPE_DEFAULT, + MENU_TYPE_GRID, +}; + + +class PLUGIN_API tMenuPanel +{ +public: + char m_anUsedCarColors[64]; + unsigned char m_nType; // see eMenuType + char m_aaacRowTitles[4][12][10]; +private: + char _pad1[3]; +public: + int m_aadwNumberInRowTitle[4][12]; + int m_aadw2ndNumberInRowTitle[4][12]; + char m_aacColumnHeaders[4][10]; + char m_acTitle[10]; + bool m_abRowSelectable[12]; + bool m_abRowAlreadyBought[12]; + unsigned char m_anColumnAlignment[4]; // see eFontAlignment + unsigned char m_anColumnHeaderAlignment[4]; // see eFontAlignment + char m_nNumRows; + char m_nNumColumns; + bool m_abColumnInteractive[4]; + float m_afColumnWidth[4]; + CVector2D m_vPosn; + bool m_bColumnBackground; + char m_nSelectedRow; + char m_nAcceptedRow; +private: + char _pad2; +public: +}; + +VALIDATE_SIZE(tMenuPanel, 0x418); + +class PLUGIN_API CMenuSystem +{ +public: + static bool *MenuInUse; + static unsigned char &CurrentMenuInUse; + static unsigned char &num_menus_in_use; + + static void ActivateItems(unsigned char panelId, bool item1, bool item2, bool item3, bool item4, bool item5, bool item6, bool item7, bool item8, bool item9, bool item10, bool item11, bool item12); + static void ActivateOneItem(unsigned char panelId, unsigned char rowId, bool enable); + + // Returns panel Id + static unsigned char CreateNewMenu(eMenuType type, char *pTitle, float posX, float posY, float width, char columns, bool interactive, bool background, eFontAlignment alignment); + + static char CheckForAccept(unsigned char panelId); + static char CheckForSelected(unsigned char panelId); + static void Initialise(); + static void Process(unsigned char panelId); + static tMenuPanel* InputStandardMenu(unsigned char panelId); + static tMenuPanel* InputGridMenu(unsigned char panelId); + static void DisplayStandardMenu(unsigned char panelId, bool bBrightFont); + static void DisplayGridMenu(unsigned char panelId, bool bBrightFont); + static void HighlightOneItem(unsigned char panelId, unsigned char itemId, bool bHighlight = true); + static tMenuPanel** InsertMenu(unsigned char panelId, unsigned char columnId, char *pTitle, char *str1, char *str2, char *str3, char *str4, char *str5, char *str6, char *str7, char *str8, char *str9, char *str10, char *str11, char *str12); + static tMenuPanel* InsertOneMenuItem(unsigned char panelId, unsigned char columnId, unsigned char rowId, char *str); + static tMenuPanel* InsertOneMenuItemWithNumber(unsigned char panelId, unsigned char columnId, unsigned char rowId, char *str, int number1, int number2); + static void SetActiveMenuItem(unsigned char panelId, char rowId); + static void SetColumnHeader(unsigned char panelId, unsigned char columnId, char *str); + static void SetColumnOrientation(unsigned char panelId, unsigned char columnId, eFontAlignment alignment); + static void SetColumnWidth(unsigned char panelId, unsigned char columnId, unsigned short width); + static void SetDPadInput(unsigned char panelId, bool bEnable); + static void SetHeaderOrientation(unsigned char panelId, unsigned char columnId, eFontAlignment alignment); + static void SwitchOffMenu(unsigned char panelId); +}; + +extern tMenuPanel **MenuNumber; // tMenuPanel MenuNumber[2] \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMessages.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CMessages.cpp new file mode 100644 index 00000000..5bd1a470 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMessages.cpp @@ -0,0 +1,212 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CMessages.h" + +#define VAR_CMessages__PreviousBriefs = 0xC1A570 +#define VAR_CMessages__BriefMessages = 0xC1A7F0 +#define VAR_CMessages__BIGMessages = 0xC1A970 +#define FUNC_CMessages__GetStringLength 0x69DB50 +#define FUNC_CMessages__StringCopy 0x69DB70 +#define FUNC_CMessages__StringCompare 0x69DBD0 +#define FUNC_CMessages__CutString 0x69DC50 +#define FUNC_CMessages__ClearMessages 0x69DCD0 +#define FUNC_CMessages__ClearSmallMessagesOnly 0x69DD30 +#define FUNC_CMessages__AddToPreviousBriefArray 0x69DD50 +#define FUNC_CMessages__ClearPreviousBriefArray 0x69DE70 +#define FUNC_CMessages__InsertNumberInString 0x69DE90 +#define FUNC_CMessages__InsertStringInString 0x69E040 +#define FUNC_CMessages__InsertPlayerControlKeysInString 0x69E160 +#define FUNC_CMessages__AddMessageWithNumber 0x69E360 +#define FUNC_CMessages__AddMessageJumpQWithNumber 0x69E4E0 +#define FUNC_CMessages__AddBigMessageWithNumber 0x69E5F0 +#define FUNC_CMessages__AddBigMessageWithNumberQ 0x69E6E0 +#define FUNC_CMessages__AddMessageWithString 0x69E800 +#define FUNC_CMessages__AddMessageJumpQWithString 0x69E950 +#define FUNC_CMessages__ClearThisPrint 0x69EA30 +#define FUNC_CMessages__ClearThisBigPrint 0x69EBE0 +#define FUNC_CMessages__ClearThisPrintBigNow 0x69ED80 +#define FUNC_CMessages__Init 0x69EDC0 +#define FUNC_CMessages__ClearAllMessagesDisplayedByGame 0x69EE00 +#define FUNC_CMessages__Process 0x69EE60 +#define FUNC_CMessages__Display 0x69EFC0 +#define FUNC_CMessages__AddMessage 0x69F0B0 +#define FUNC_CMessages__AddMessageJumpQ 0x69F1E0 +#define FUNC_CMessages__AddBigMessage 0x69F2B0 +#define FUNC_CMessages__AddBigMessageQ 0x69F370 + +tPreviousBrief *CMessages::PreviousBriefs = (tPreviousBrief *)0xC1A570; + +tMessage *CMessages::BriefMessages = (tMessage *)0xC1A7F0; + +tBigMessage *CMessages::BIGMessages = (tBigMessage *)0xC1A970; + +// Returns length of a string +unsigned int CMessages::GetStringLength(char *string) +{ + return ((unsigned int (__cdecl *)(char *))FUNC_CMessages__GetStringLength)(string); +} + +// Copies string src to dest +void CMessages::StringCopy(char *dest, char *src, unsigned short len) +{ + ((void (__cdecl *)(char *, char *, unsigned short))FUNC_CMessages__StringCopy)(dest, src, len); +} + +// Compares 2 strings +unsigned char CMessages::StringCompare(char *str1, char *str2, unsigned short len) +{ + return ((unsigned char (__cdecl *)(char *, char *, unsigned short))FUNC_CMessages__StringCompare)(str1, str2, len); +} + +void CMessages::CutString(int count, char *str, char **dest) +{ + ((void (__cdecl *)(int, char *, char **))FUNC_CMessages__CutString)(count, str, dest); +} + +// Removes registered messages +void CMessages::ClearMessages(bool flag) +{ + ((void (__cdecl *)(bool))FUNC_CMessages__ClearMessages)(flag); +} + +// Removes small messages +void CMessages::ClearSmallMessagesOnly() +{ + ((void (__cdecl *)())FUNC_CMessages__ClearSmallMessagesOnly)(); +} + +// Adds message to previous brief +void CMessages::AddToPreviousBriefArray(char *text, int n1, int n2, int n3, int n4, int n5, int n6, char *string) +{ + ((void (__cdecl *)(char *, int, int, int, int, int, int, char *))FUNC_CMessages__AddToPreviousBriefArray)(text, n1, n2, n3, n4, n5, n6, string); +} + +// Removes messages from previous brief +void CMessages::ClearPreviousBriefArray() +{ + ((void (__cdecl *)())FUNC_CMessages__ClearPreviousBriefArray)(); +} + +// Inserts numbers into string +void CMessages::InsertNumberInString(char *src, int n1, int n2, int n3, int n4, int n5, int n6, char *dst) +{ + ((void (__cdecl *)(char *, int, int, int, int, int, int, char *))FUNC_CMessages__InsertNumberInString)(src, n1, n2, n3, n4, n5, n6, dst); +} + +// Inserts string into src +void CMessages::InsertStringInString(char *src, char *string) +{ + ((void (__cdecl *)(char *, char *))FUNC_CMessages__InsertStringInString)(src, string); +} + +// Inserts key events into string +void CMessages::InsertPlayerControlKeysInString(char *string) +{ + ((void (__cdecl *)(char *))FUNC_CMessages__InsertPlayerControlKeysInString)(string); +} + +// Adds message with numbers to queue +void CMessages::AddMessageWithNumber(char *text, unsigned int time, unsigned short flag, int n1, int n2, int n3, int n4, int n5, int n6, bool bPreviousBrief) +{ + ((void (__cdecl *)(char *, unsigned int, unsigned short, int, int, int, int, int, int, bool))FUNC_CMessages__AddMessageWithNumber)(text, time, flag, n1, n2, n3, n4, n5, n6, bPreviousBrief); +} + +// Adds message with numbers and shows it instantly +void CMessages::AddMessageJumpQWithNumber(char *text, unsigned int time, unsigned short flag, int n1, int n2, int n3, int n4, int n5, int n6, bool bPreviousBrief) +{ + ((void (__cdecl *)(char *, unsigned int, unsigned short, int, int, int, int, int, int, bool))FUNC_CMessages__AddMessageJumpQWithNumber)(text, time, flag, n1, n2, n3, n4, n5, n6, bPreviousBrief); +} + +// Adds big message with numbers and shows it instantly , see eMessageStyle +void CMessages::AddBigMessageWithNumber(char *text, unsigned int time, unsigned short style, int n1, int n2, int n3, int n4, int n5, int n6) +{ + ((void (__cdecl *)(char *, unsigned int, unsigned short, int, int, int, int, int, int))FUNC_CMessages__AddBigMessageWithNumber)(text, time, style, n1, n2, n3, n4, n5, n6); +} + +// Adds big message with numbers to queue , see eMessageStyle +void CMessages::AddBigMessageWithNumberQ(char *text, unsigned int time, unsigned short style, int n1, int n2, int n3, int n4, int n5, int n6) +{ + ((void (__cdecl *)(char *, unsigned int, unsigned short, int, int, int, int, int, int))FUNC_CMessages__AddBigMessageWithNumberQ)(text, time, style, n1, n2, n3, n4, n5, n6); +} + +// Adds message with string to queue +void CMessages::AddMessageWithString(char *text, unsigned int time, unsigned short flag, char *string, char bPreviousBrief) +{ + ((void (__cdecl *)(char *, unsigned int, unsigned short, char *, char))FUNC_CMessages__AddMessageWithString)(text, time, flag, string, bPreviousBrief); +} + +// Adds message with string and shows it instantly +void CMessages::AddMessageJumpQWithString(char *text, unsigned int time, unsigned short flag, char *string, char bPreviousBrief) +{ + ((void (__cdecl *)(char *, unsigned int, unsigned short, char *, char))FUNC_CMessages__AddMessageJumpQWithString)(text, time, flag, string, bPreviousBrief); +} + +// Removes small message with this text +void CMessages::ClearThisPrint(char *text) +{ + ((void (__cdecl *)(char *))FUNC_CMessages__ClearThisPrint)(text); +} + +// Removes big message with this text +void CMessages::ClearThisBigPrint(char *text) +{ + ((void (__cdecl *)(char *))FUNC_CMessages__ClearThisBigPrint)(text); +} + +// Removes first big message in messages stack , see eMessageStyle +void CMessages::ClearThisPrintBigNow(unsigned short style) +{ + ((void (__cdecl *)(unsigned short))FUNC_CMessages__ClearThisPrintBigNow)(style); +} + +// Initialises messages +void CMessages::Init(bool flag) +{ + ((void (__cdecl *)(bool))FUNC_CMessages__Init)(flag); +} + +// Removes all displayed messages +void CMessages::ClearAllMessagesDisplayedByGame() +{ + ((void (__cdecl *)())FUNC_CMessages__ClearAllMessagesDisplayedByGame)(); +} + +// Processing messages. This is called from CWorld::Process +void CMessages::Process() +{ + ((void (__cdecl *)())FUNC_CMessages__Process)(); +} + +// Displays messages +void CMessages::Display(bool flag) +{ + ((void (__cdecl *)(bool))FUNC_CMessages__Display)(flag); +} + +// Adds message to queue +void CMessages::AddMessage(char *text, unsigned int time, unsigned short flag, bool bPreviousBrief) +{ + ((void (__cdecl *)(char *, unsigned int, unsigned short, bool))FUNC_CMessages__AddMessage)(text, time, flag, bPreviousBrief); +} + +// Adds message and shows it instantly +void CMessages::AddMessageJumpQ(char *text, unsigned int time, unsigned short flag, bool bPreviousBrief) +{ + ((void (__cdecl *)(char *, unsigned int, unsigned short, bool))FUNC_CMessages__AddMessageJumpQ)(text, time, flag, bPreviousBrief); +} + +// Adds big message and shows it instantly , see eMessageStyle +void CMessages::AddBigMessage(char *text, unsigned int time, unsigned short style) +{ + ((void (__cdecl *)(char *, unsigned int, unsigned short))FUNC_CMessages__AddBigMessage)(text, time, style); +} + +// Adds big message to queue , see eMessageStyle +void CMessages::AddBigMessageQ(char *text, unsigned int time, unsigned short style) +{ + ((void (__cdecl *)(char *, unsigned int, unsigned short))FUNC_CMessages__AddBigMessageQ)(text, time, style); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMessages.h b/third-party/plugin-sdk/plugin_sa/game_sa/CMessages.h new file mode 100644 index 00000000..2b0eaf28 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMessages.h @@ -0,0 +1,108 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +enum eMessageStyle : unsigned short +{ + STYLE_MIDDLE, // InTheMiddle + STYLE_BOTTOM_RIGHT, // AtTheBottomRight + STYLE_WHITE_MIDDLE, // WhiteText_InTheMiddle + STYLE_MIDDLE_SMALLER, // InTheMiddle_Smaller + STYLE_MIDDLE_SMALLER_HIGHER, // InTheMiddle_Smaller_ABitHigherOnTheScreen + STYLE_WHITE_MIDDLE_SMALLER, // SmallWhiteText_InTheMiddleOfTheScreen + STYLE_LIGHTBLUE_TOP // LightBlueText_OnTopOfTheScreen +}; + +struct tMessage { + char * m_pText; + unsigned short m_wFlag; + char _pad1[2]; + unsigned int m_dwTime; + unsigned int m_dwStartTime; + int m_dwNumber[6]; + char *m_pString; + unsigned char m_bPreviousBrief; + char _pad2[3]; +}; + +struct tBigMessage { + tMessage m_Current; + tMessage m_Stack[3]; +}; + +struct tPreviousBrief { + char * m_pText; + int m_nNumber[6]; + char * m_pString; +}; + +class PLUGIN_API CMessages { +public: + // count: 20 + static tPreviousBrief *PreviousBriefs; + // count: 8 + static tMessage *BriefMessages; + // count: 7 (for each text style) + static tBigMessage *BIGMessages; + // Returns length of a string + static unsigned int GetStringLength(char *string); + // Copies string src to dest + static void StringCopy(char *dest, char *src, unsigned short len); + // Compares 2 strings + static unsigned char StringCompare(char *str1, char *str2, unsigned short len); + static void CutString(int count, char *str, char **dest); + // Removes registered messages + static void ClearMessages(bool flag); + // Removes small messages + static void ClearSmallMessagesOnly(); + // Adds message to previous brief + static void AddToPreviousBriefArray(char *text, int n1, int n2, int n3, int n4, int n5, int n6, char *string); + // Removes messages from previous brief + static void ClearPreviousBriefArray(); + // Inserts numbers into string + static void InsertNumberInString(char *src, int n1, int n2, int n3, int n4, int n5, int n6, char *dst); + // Inserts string into src + static void InsertStringInString(char *src, char *string); + // Inserts key events into string + static void InsertPlayerControlKeysInString(char *string); + // Adds message with numbers to queue + static void AddMessageWithNumber(char *text, unsigned int time, unsigned short flag, int n1, int n2, int n3, int n4, int n5, int n6, bool bPreviousBrief); + // Adds message with numbers and shows it instantly + static void AddMessageJumpQWithNumber(char *text, unsigned int time, unsigned short flag, int n1, int n2, int n3, int n4, int n5, int n6, bool bPreviousBrief); + // Adds big message with numbers and shows it instantly , see eMessageStyle + static void AddBigMessageWithNumber(char *text, unsigned int time, unsigned short style, int n1, int n2, int n3, int n4, int n5, int n6); + // Adds big message with numbers to queue , see eMessageStyle + static void AddBigMessageWithNumberQ(char *text, unsigned int time, unsigned short style, int n1, int n2, int n3, int n4, int n5, int n6); + // Adds message with string to queue + static void AddMessageWithString(char *text, unsigned int time, unsigned short flag, char *string, char bPreviousBrief); + // Adds message with string and shows it instantly + static void AddMessageJumpQWithString(char *text, unsigned int time, unsigned short flag, char *string, char bPreviousBrief); + // Removes small message with this text + static void ClearThisPrint(char *text); + // Removes big message with this text + static void ClearThisBigPrint(char *text); + // Removes first big message in messages stack , see eMessageStyle + static void ClearThisPrintBigNow(unsigned short style); + // Initialises messages + static void Init(bool flag); + // Removes all displayed messages + static void ClearAllMessagesDisplayedByGame(); + // Processing messages. This is called from CWorld::Process + static void Process(); + // Displays messages + static void Display(bool flag); + // Adds message to queue + static void AddMessage(char *text, unsigned int time, unsigned short flag, bool bPreviousBrief); + // Adds message and shows it instantly + static void AddMessageJumpQ(char *text, unsigned int time, unsigned short flag, bool bPreviousBrief); + // Adds big message and shows it instantly , see eMessageStyle + static void AddBigMessage(char *text, unsigned int time, unsigned short style); + // Adds big message to queue , see eMessageStyle + static void AddBigMessageQ(char *text, unsigned int time, unsigned short style); +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMirrors.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CMirrors.cpp new file mode 100644 index 00000000..8586f07f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMirrors.cpp @@ -0,0 +1,58 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CMirrors.h" + +RwRaster *&CMirrors::pBuffer = *(RwRaster **)0xC7C71C; +RwRaster *&CMirrors::pZBuffer = *(RwRaster **)0xC7C720; +unsigned int &CMirrors::TypeOfMirror = *(unsigned int *)0xC7C724; +bool &CMirrors::bRenderingReflection = *(bool *)0xC7C728; +bool &CMirrors::d3dRestored = *(bool *)0xC7C729; +unsigned int &CMirrors::MirrorFlags = *(unsigned int *)0xC7C618; +float &CMirrors::MirrorV = *(float *)0xC7C61C; +CVector &CMirrors::MirrorNormal = *(CVector *)0xC803D8; +bool &bFudgeNow = *(bool *)0xC7C72A; +float *Screens8Track = (float *)0x8D5DD8; + +// Converted from cdecl void CMirrors::BeforeConstructRenderList(void) 0x726DF0 +void CMirrors::BeforeConstructRenderList() { + plugin::Call<0x726DF0>(); +} + +// Converted from cdecl void CMirrors::BeforeMainRender(void) 0x727140 +void CMirrors::BeforeMainRender() { + plugin::Call<0x727140>(); +} + +// Converted from cdecl void CMirrors::BuildCamMatrix(CMatrix *mat,CVector pointA,CVector pointB) 0x723150 +void CMirrors::BuildCamMatrix(CMatrix* mat, CVector pointA, CVector pointB) { + plugin::Call<0x723150, CMatrix*, CVector, CVector>(mat, pointA, pointB); +} + +// Converted from cdecl void CMirrors::BuildCameraMatrixForScreens(CMatrix *mat) 0x7266B0 +void CMirrors::BuildCameraMatrixForScreens(CMatrix* mat) { + plugin::Call<0x7266B0, CMatrix*>(mat); +} + +// Converted from cdecl void CMirrors::CreateBuffer(void) 0x7230A0 +void CMirrors::CreateBuffer() { + plugin::Call<0x7230A0>(); +} + +// Converted from cdecl void CMirrors::Init(void) 0x723000 +void CMirrors::Init() { + plugin::Call<0x723000>(); +} + +// Converted from cdecl void CMirrors::RenderMirrorBuffer(void) 0x726090 +void CMirrors::RenderMirrorBuffer() { + plugin::Call<0x726090>(); +} + +// Converted from cdecl void CMirrors::ShutDown(void) 0x723050 +void CMirrors::ShutDown() { + plugin::Call<0x723050>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMirrors.h b/third-party/plugin-sdk/plugin_sa/game_sa/CMirrors.h new file mode 100644 index 00000000..039204e2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMirrors.h @@ -0,0 +1,33 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CMatrix.h" + +class PLUGIN_API CMirrors { +public: + static RwRaster *&pBuffer; + static RwRaster *&pZBuffer; + static unsigned int &TypeOfMirror; + static bool &bRenderingReflection; + static bool &d3dRestored; + static unsigned int &MirrorFlags; + static float &MirrorV; + static CVector &MirrorNormal; + + static void BeforeConstructRenderList(); + static void BeforeMainRender(); + static void BuildCamMatrix(CMatrix* mat, CVector pointA, CVector pointB); + static void BuildCameraMatrixForScreens(CMatrix* mat); + static void CreateBuffer(); + static void Init(); + static void RenderMirrorBuffer(); + static void ShutDown(); +}; + +extern bool &bFudgeNow; +extern float *Screens8Track; // float Screens8Track[24] \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMissionCleanup.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CMissionCleanup.cpp new file mode 100644 index 00000000..d7b3b8be --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMissionCleanup.cpp @@ -0,0 +1,49 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CMissionCleanup.h" + +// Default constructor +CMissionCleanup::CMissionCleanup() +{ + this -> Init(); +} + +// Initializes data +void CMissionCleanup::Init() +{ + ((void (__thiscall*)(CMissionCleanup*)) FUNC_CMissionCleanup__Init )(this); +} + +// Performs a clean-up +void CMissionCleanup::Process() +{ + ((void (__thiscall*)(CMissionCleanup*)) FUNC_CMissionCleanup__Process )(this); +} + +// Finds a free entity, returns NULL if no free entity can be found. +tMissionCleanupEntity* CMissionCleanup::FindFree() +{ + return ((tMissionCleanupEntity* (__thiscall*)(CMissionCleanup*)) FUNC_CMissionCleanup__FindFree )(this); +} + +// Adds entity to list +void CMissionCleanup::AddEntityToList(int handle, MissionCleanUpEntityType type) +{ + ((void (__thiscall*)(CMissionCleanup*, int, MissionCleanUpEntityType)) FUNC_CMissionCleanup__AddEntityToList )(this, handle, type); +} + +// Remotes entity from list +void CMissionCleanup::RemoveEntityFromList(int handle, MissionCleanUpEntityType type) +{ + ((void (__thiscall*)(CMissionCleanup*, int, MissionCleanUpEntityType)) FUNC_CMissionCleanup__RemoveEntityFromList )(this, handle, type); +} + +// Checks if collision has loaded for mission objects +void CMissionCleanup::CheckIfCollisionHasLoadedForMissionObjects() +{ + ((void (__thiscall*)(CMissionCleanup*)) FUNC_CMissionCleanup__CheckIfCollisionHasLoadedForMissionObjects )(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMissionCleanup.h b/third-party/plugin-sdk/plugin_sa/game_sa/CMissionCleanup.h new file mode 100644 index 00000000..3f23d048 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMissionCleanup.h @@ -0,0 +1,75 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +#define FUNC_CMissionCleanup__Init 0x4637A0 +#define FUNC_CMissionCleanup__Process 0x468560 +#define FUNC_CMissionCleanup__FindFree 0x4637C0 +#define FUNC_CMissionCleanup__AddEntityToList 0x4637E0 +#define FUNC_CMissionCleanup__RemoveEntityFromList 0x4654B0 +#define FUNC_CMissionCleanup__CheckIfCollisionHasLoadedForMissionObjects 0x4652D0 + +enum MissionCleanUpEntityType +{ + MISSION_CLEANUP_ENTITY_TYPE_EMPTY = 0, // free slot + + MISSION_CLEANUP_ENTITY_TYPE_VEHICLE = 1, + MISSION_CLEANUP_ENTITY_TYPE_PED = 2, + MISSION_CLEANUP_ENTITY_TYPE_OBJECT = 3, + MISSION_CLEANUP_ENTITY_TYPE_PARTICLE = 4, + MISSION_CLEANUP_ENTITY_TYPE_GROUP = 5, + MISSION_CLEANUP_ENTITY_TYPE_PED_QUEUE = 7, + MISSION_CLEANUP_ENTITY_TYPE_TASK_SEQUENCE = 8, + MISSION_CLEANUP_ENTITY_TYPE_DECISION_MAKER = 9, + // type 10 does not exist + MISSION_CLEANUP_ENTITY_TYPE_SEARCHLIGHT = 11, + MISSION_CLEANUP_ENTITY_TYPE_CHECKPOINT = 12, + MISSION_CLEANUP_ENTITY_TYPE_TXD = 13 +}; + + +struct PLUGIN_API tMissionCleanupEntity +{ + char type; + char __pad[3]; + int handle; +}; +VALIDATE_SIZE(tMissionCleanupEntity, 0x8); + + +class PLUGIN_API CMissionCleanup +{ +public: + tMissionCleanupEntity m_Objects[75]; + char m_Count; +private: + char _pad[3]; +public: + // Default constructor + CMissionCleanup(); + + // Initializes data + void Init(); + + // Performs a clean-up + void Process(); + + // Finds a free entity, returns NULL if no free entity can be found. + tMissionCleanupEntity* FindFree(); + + // Adds entity to list + void AddEntityToList(int handle, MissionCleanUpEntityType type); + + // Remotes entity from list + void RemoveEntityFromList(int handle, MissionCleanUpEntityType type); + + // Checks if collision has loaded for mission objects + void CheckIfCollisionHasLoadedForMissionObjects(); +}; + +VALIDATE_SIZE(CMissionCleanup, 0x25C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CModelInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CModelInfo.cpp new file mode 100644 index 00000000..d386f1b6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CModelInfo.cpp @@ -0,0 +1,187 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CModelInfo.h" + +CBaseModelInfo **CModelInfo::ms_modelInfoPtrs = (CBaseModelInfo**)0xA9B0C8; + +// Converted from stdcall void CModelInfo::ReInit2dEffects(void) 0x4C63B0 +void CModelInfo::ReInit2dEffects() +{ + ((void (__cdecl *)())0x4C63B0)(); +} + +// Converted from stdcall void CModelInfo::ShutDown(void) 0x4C63E0 +void CModelInfo::ShutDown() +{ + ((void (__cdecl *)())0x4C63E0)(); +} + +// Converted from stdcall CAtomicModelInfo* CModelInfo::AddAtomicModel(int index) 0x4C6620 +CAtomicModelInfo* CModelInfo::AddAtomicModel(int index) +{ + return ((CAtomicModelInfo* (__cdecl *)(int))0x4C6620)(index); +} + +// Converted from stdcall CDamageAtomicModelInfo* CModelInfo::AddDamageAtomicModel(int index) 0x4C6650 +CDamageAtomicModelInfo* CModelInfo::AddDamageAtomicModel(int index) +{ + return ((CDamageAtomicModelInfo* (__cdecl *)(int))0x4C6650)(index); +} + +// Converted from stdcall CLodAtomicModelInfo* CModelInfo::AddLodAtomicModel(int index) 0x4C6680 +CLodAtomicModelInfo* CModelInfo::AddLodAtomicModel(int index) +{ + return ((CLodAtomicModelInfo* (__cdecl *)(int))0x4C6680)(index); +} + +// Converted from stdcall CTimeModelInfo* CModelInfo::AddTimeModel(int index) 0x4C66B0 +CTimeModelInfo* CModelInfo::AddTimeModel(int index) +{ + return ((CTimeModelInfo* (__cdecl *)(int))0x4C66B0)(index); +} + +// Converted from stdcall CLodTimeModelInfo* CModelInfo::AddLodTimeModel(int index) 0x4C66E0 +CLodTimeModelInfo* CModelInfo::AddLodTimeModel(int index) +{ + return ((CLodTimeModelInfo* (__cdecl *)(int))0x4C66E0)(index); +} + +// Converted from stdcall CWeaponModelInfo* CModelInfo::AddWeaponModel(int index) 0x4C6710 +CWeaponModelInfo* CModelInfo::AddWeaponModel(int index) +{ + return ((CWeaponModelInfo* (__cdecl *)(int))0x4C6710)(index); +} + +// Converted from stdcall CClumpModelInfo* CModelInfo::AddClumpModel(int) index 0x4C6740 +CClumpModelInfo* CModelInfo::AddClumpModel(int index) +{ + return ((CClumpModelInfo* (__cdecl *)(int))0x4C6740)(index); +} + +// Converted from stdcall CVehicleModelInfo* CModelInfo::AddVehicleModel(int index) 0x4C6770 +CVehicleModelInfo* CModelInfo::AddVehicleModel(int index) +{ + return ((CVehicleModelInfo* (__cdecl *)(int))0x4C6770)(index); +} + +// Converted from stdcall CPedModelInfo* CModelInfo::AddPedModel(int index) 0x4C67A0 +CPedModelInfo* CModelInfo::AddPedModel(int index) +{ + return ((CPedModelInfo* (__cdecl *)(int))0x4C67A0)(index); +} + +// Converted from stdcall void CModelInfo::Initialise(void) 0x4C6810 +void CModelInfo::Initialise() +{ + ((void (__cdecl *)())0x4C6810)(); +} + +// Converted from stdcall CBaseModelInfo* CModelInfo::GetModelInfo(char* name,int *index) 0x4C5940 +CBaseModelInfo* CModelInfo::GetModelInfo(char* name, int* index) +{ + return ((CBaseModelInfo* (__cdecl *)(char*, int*))0x4C5940)(name, index); +} + +// Converted from stdcall CBaseModelInfo* CModelInfo::GetModelInfoFromHashKey(uint,int *index) 0x4C59B0 +CBaseModelInfo* CModelInfo::GetModelInfoFromHashKey(unsigned int arg0, int* index) +{ + return ((CBaseModelInfo* (__cdecl *)(unsigned int, int*))0x4C59B0)(arg0, index); +} + +// Converted from stdcall CBaseModelInfo* CModelInfo::GetModelInfoUInt16(char *name,ushort *int16index) 0x4C59F0 +CBaseModelInfo* CModelInfo::GetModelInfoUInt16(char* name, unsigned short* int16index) +{ + return ((CBaseModelInfo* (__cdecl *)(char*, unsigned short*))0x4C59F0)(name, int16index); +} + +// Converted from stdcall CBaseModelInfo* CModelInfo::GetModelInfo(char* name,int minIndex,int maxInedx) 0x4C5A20 +CBaseModelInfo* CModelInfo::GetModelInfo(char* name, int minIndex, int maxInedx) +{ + return ((CBaseModelInfo* (__cdecl *)(char*, int, int))0x4C5A20)(name, minIndex, maxInedx); +} + +// Converted from stdcall void* CModelInfo::Get2dEffectStore(void) 0x4C5A60 +int* CModelInfo::Get2dEffectStore() +{ + return ((int* (__cdecl *)())0x4C5A60)(); +} + +// Converted from stdcall bool CModelInfo::IsBoatModel(int index) 0x4C5A70 +bool CModelInfo::IsBoatModel(int index) +{ + return ((bool (__cdecl *)(int))0x4C5A70)(index); +} + +// Converted from stdcall bool CModelInfo::IsCarModel(int index) 0x4C5AA0 +bool CModelInfo::IsCarModel(int index) +{ + return ((bool (__cdecl *)(int))0x4C5AA0)(index); +} + +// Converted from stdcall bool CModelInfo::IsTrainModel(int index) 0x4C5AD0 +bool CModelInfo::IsTrainModel(int index) +{ + return ((bool (__cdecl *)(int))0x4C5AD0)(index); +} + +// Converted from stdcall bool CModelInfo::IsHeliModel(int index) 0x4C5B00 +bool CModelInfo::IsHeliModel(int index) +{ + return ((bool (__cdecl *)(int))0x4C5B00)(index); +} + +// Converted from stdcall bool CModelInfo::IsPlaneModel(int index) 0x4C5B30 +bool CModelInfo::IsPlaneModel(int index) +{ + return ((bool (__cdecl *)(int))0x4C5B30)(index); +} + +// Converted from stdcall bool CModelInfo::IsBikeModel(int index) 0x4C5B60 +bool CModelInfo::IsBikeModel(int index) +{ + return ((bool (__cdecl *)(int))0x4C5B60)(index); +} + +// Converted from stdcall bool CModelInfo::IsFakePlaneModel(int index) 0x4C5B90 +bool CModelInfo::IsFakePlaneModel(int index) +{ + return ((bool (__cdecl *)(int))0x4C5B90)(index); +} + +// Converted from stdcall bool CModelInfo::IsMonsterTruckModel(int index) 0x4C5BC0 +bool CModelInfo::IsMonsterTruckModel(int index) +{ + return ((bool (__cdecl *)(int))0x4C5BC0)(index); +} + +// Converted from stdcall bool CModelInfo::IsQuadBikeModel(int index) 0x4C5BF0 +bool CModelInfo::IsQuadBikeModel(int index) +{ + return ((bool (__cdecl *)(int))0x4C5BF0)(index); +} + +// Converted from stdcall bool CModelInfo::IsBmxModel(int index) 0x4C5C20 +bool CModelInfo::IsBmxModel(int index) +{ + return ((bool (__cdecl *)(int))0x4C5C20)(index); +} + +// Converted from stdcall bool CModelInfo::IsTrailerModel(int index) 0x4C5C50 +bool CModelInfo::IsTrailerModel(int index) +{ + return ((bool (__cdecl *)(int))0x4C5C50)(index); +} + +// Converted from stdcall int CModelInfo::IsVehicleModelType(int index) 0x4C5C80 +int CModelInfo::IsVehicleModelType(int index) +{ + return ((int (__cdecl *)(int))0x4C5C80)(index); +} + +CBaseModelInfo *CModelInfo::GetModelInfo(int index) { + return plugin::CallAndReturn(index); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CModelInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CModelInfo.h new file mode 100644 index 00000000..a08a48a5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CModelInfo.h @@ -0,0 +1,59 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CBaseModelInfo.h" +#include "CAtomicModelInfo.h" +#include "CVehicleModelInfo.h" +#include "CWeaponModelInfo.h" +#include "CTimeModelInfo.h" +#include "CDamageAtomicModelInfo.h" +#include "C2dEffect.h" +#include "CStore.h" + +class PLUGIN_API CModelInfo +{ +public: + // variables + //static CBaseModelInfo *ms_modelInfoPtrs[20000]; Use GetModelInfo(int index) to get model info by id + static CBaseModelInfo **ms_modelInfoPtrs; + + // functions + static void ReInit2dEffects(); + static void ShutDown(); + static CAtomicModelInfo* AddAtomicModel(int index); + static CDamageAtomicModelInfo* AddDamageAtomicModel(int index); + static class CLodAtomicModelInfo* AddLodAtomicModel(int index); + static CTimeModelInfo* AddTimeModel(int index); + static class CLodTimeModelInfo* AddLodTimeModel(int index); + static CWeaponModelInfo* AddWeaponModel(int index); + static CClumpModelInfo* AddClumpModel(int index); + static CVehicleModelInfo* AddVehicleModel(int index); + static class CPedModelInfo* AddPedModel(int index); + static void Initialise(); + static CBaseModelInfo* GetModelInfo(char* name, int* index); + static CBaseModelInfo* GetModelInfoFromHashKey(unsigned int arg0, int* index); + static CBaseModelInfo* GetModelInfoUInt16(char* name, unsigned short* int16index); + // get model in range (search for model only in range (min;max)) + static CBaseModelInfo* GetModelInfo(char* name, int minIndex, int maxInedx); + static int* Get2dEffectStore(); + static bool IsBoatModel(int index); + static bool IsCarModel(int index); + static bool IsTrainModel(int index); + static bool IsHeliModel(int index); + static bool IsPlaneModel(int index); + static bool IsBikeModel(int index); + static bool IsFakePlaneModel(int index); + static bool IsMonsterTruckModel(int index); + static bool IsQuadBikeModel(int index); + static bool IsBmxModel(int index); + static bool IsTrailerModel(int index); + // return -1 if model is not a vehicle model otherwise returns vehicle model type + static int IsVehicleModelType(int index); + + static CBaseModelInfo *GetModelInfo(int index); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CModelInfoAccelerator.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CModelInfoAccelerator.cpp new file mode 100644 index 00000000..dae3bb41 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CModelInfoAccelerator.cpp @@ -0,0 +1,62 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CModelInfoAccelerator.h" + +// Converted from thiscall void CModelInfoAccelerator::Init(void) 0x4C6A80 +void CModelInfoAccelerator::Init() { + plugin::CallMethod<0x4C6A80, CModelInfoAccelerator *>(this); +} + +// Converted from thiscall void CModelInfoAccelerator::AddModelInfoId(ushort modelId) 0x4C6AA0 +void CModelInfoAccelerator::AddModelInfoId(unsigned short modelId) { + plugin::CallMethod<0x4C6AA0, CModelInfoAccelerator *, unsigned short>(this, modelId); +} + +// Converted from thiscall ushort CModelInfoAccelerator::GetNextModelInfoId(void) 0x4C6AC0 +unsigned short CModelInfoAccelerator::GetNextModelInfoId() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CModelInfoAccelerator::AllocModelInfoIds(void) 0x4C6AE0 +void CModelInfoAccelerator::AllocModelInfoIds() { + plugin::CallMethod<0x4C6AE0, CModelInfoAccelerator *>(this); +} + +// Converted from thiscall void CModelInfoAccelerator::FreeModelInfoIds(void) 0x4C6B10 +void CModelInfoAccelerator::FreeModelInfoIds() { + plugin::CallMethod<0x4C6B10, CModelInfoAccelerator *>(this); +} + +// Converted from thiscall void CModelInfoAccelerator::GetEntry(CBaseModelInfo **,int *,char *) 0x4C6B30 +void CModelInfoAccelerator::GetEntry(CBaseModelInfo** arg0, int* arg1, char* arg2) { + plugin::CallMethod<0x4C6B30, CModelInfoAccelerator *, CBaseModelInfo**, int*, char*>(this, arg0, arg1, arg2); +} + +// Converted from thiscall void CModelInfoAccelerator::End(char *) 0x4C6B40 +void CModelInfoAccelerator::End(char* arg0) { + plugin::CallMethod<0x4C6B40, CModelInfoAccelerator *, char*>(this, arg0); +} + +// Converted from thiscall void CModelInfoAccelerator::CModelInfoAccelerator(void) 0x4C6B50 +CModelInfoAccelerator::CModelInfoAccelerator() { + plugin::CallMethod<0x4C6B50, CModelInfoAccelerator *>(this); +} + +// Converted from thiscall bool CModelInfoAccelerator::GetModelInfoIdFile(void) 0x4C6B70 +bool CModelInfoAccelerator::GetModelInfoIdFile() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CModelInfoAccelerator::EndOfLoadPhase(void) 0x4C6BD0 +void CModelInfoAccelerator::EndOfLoadPhase() { + plugin::CallMethod<0x4C6BD0, CModelInfoAccelerator *>(this); +} + +// Converted from thiscall bool CModelInfoAccelerator::Begin(char *filePath) 0x4C6C20 +bool CModelInfoAccelerator::Begin(char* filePath) { + return plugin::CallMethodAndReturn(this, filePath); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CModelInfoAccelerator.h b/third-party/plugin-sdk/plugin_sa/game_sa/CModelInfoAccelerator.h new file mode 100644 index 00000000..c8ad6f73 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CModelInfoAccelerator.h @@ -0,0 +1,33 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +class CBaseModelInfo; + +class PLUGIN_API CModelInfoAccelerator { +public: + unsigned short *m_pIDs; + unsigned short m_nNumIDs; + char m_szFilePath[20]; + char field_1A; + bool m_bFileRead; + + void Init(); + void AddModelInfoId(unsigned short modelId); + unsigned short GetNextModelInfoId(); + void AllocModelInfoIds(); + void FreeModelInfoIds(); + void GetEntry(CBaseModelInfo** arg0, int* arg1, char* arg2); + void End(char* arg0); + CModelInfoAccelerator(); + bool GetModelInfoIdFile(); + void EndOfLoadPhase(); + bool Begin(char* filePath); +}; + +VALIDATE_SIZE(CModelInfoAccelerator, 0x1C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMonsterTruck.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CMonsterTruck.cpp new file mode 100644 index 00000000..af28d1d2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMonsterTruck.cpp @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CMonsterTruck.h" + +float& CMonsterTruck::DUMPER_COL_ANGLEMULT = *(float *)0x8D33A8; +float& fWheelExtensionRate = *(float *)0x8D33AC; + +// Converted from thiscall void CMonsterTruck::CMonsterTruck(int modelIndex,uchar createdBy) 0x6C8D60 +CMonsterTruck::CMonsterTruck(int modelIndex, unsigned char createdBy) : CAutomobile(plugin::dummy) { + ((void(__thiscall *)(CMonsterTruck*, int, unsigned char))0x6C8D60)(this, modelIndex, createdBy); +} + +// Converted from thiscall void CMonsterTruck::ExtendSuspension(void) 0x6C7D80 +void CMonsterTruck::ExtendSuspension() { + ((void(__thiscall *)(CMonsterTruck*))0x6C7D80)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMonsterTruck.h b/third-party/plugin-sdk/plugin_sa/game_sa/CMonsterTruck.h new file mode 100644 index 00000000..dd084ef6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMonsterTruck.h @@ -0,0 +1,58 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAutomobile.h" + +enum eMonsterTruckNodes { + MONSTER_NODE_NONE = 0, + MONSTER_CHASSIS = 1, + MONSTER_WHEEL_RF = 2, + MONSTER_WHEEL_RM = 3, + MONSTER_WHEEL_RB = 4, + MONSTER_WHEEL_LF = 5, + MONSTER_WHEEL_LM = 6, + MONSTER_WHEEL_LB = 7, + MONSTER_DOOR_RF = 8, + MONSTER_DOOR_RR = 9, + MONSTER_DOOR_LF = 10, + MONSTER_DOOR_LR = 11, + MONSTER_BUMP_FRONT = 12, + MONSTER_BUMP_REAR = 13, + MONSTER_WING_RF = 14, + MONSTER_WING_LF = 15, + MONSTER_BONNET = 16, + MONSTER_BOOT = 17, + MONSTER_WINDSCREEN = 18, + MONSTER_TRANSMISSION_F = 19, + MONSTER_TRANSMISSION_R = 20, + MONSTER_LOADBAY = 21, + MONSTER_MISC_A = 22, + MONSTER_NUM_NODES +}; + +class CMonsterTruck : public CAutomobile { +protected: + CMonsterTruck(plugin::dummy_func_t) : CAutomobile(plugin::dummy) {} +public: + float field_988; + float field_98C; + float field_990; + float field_994; + float field_998; + + static float& DUMPER_COL_ANGLEMULT; // 0.0002 + + CMonsterTruck(int modelIndex, unsigned char createdBy); + + void ExtendSuspension(); +}; + +VALIDATE_SIZE(CMonsterTruck, 0x99C); + +extern float& fWheelExtensionRate; // 0.1 \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMotionBlurStreaks.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CMotionBlurStreaks.cpp new file mode 100644 index 00000000..e5149cce --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMotionBlurStreaks.cpp @@ -0,0 +1,31 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CMotionBlurStreaks.h" + +unsigned int MAX_NUM_MOTIONBLUR_STREAKS = 4; + +CRegisteredMotionBlurStreak *CMotionBlurStreaks::aStreaks = (CRegisteredMotionBlurStreak *)0xC7CA08; + +// Converted from cdecl void CMotionBlurStreaks::Update(void) 0x7240C0 +void CMotionBlurStreaks::Update() { + plugin::Call<0x7240C0>(); +} + +// Converted from cdecl void CMotionBlurStreaks::Render(void) 0x7240E0 +void CMotionBlurStreaks::Render() { + plugin::Call<0x7240E0>(); +} + +// Converted from cdecl void CMotionBlurStreaks::RegisterStreak(uint id, uchar red, uchar green, uchar blue, CVector leftPoint, CVector rightPoint) 0x721DC0 +void CMotionBlurStreaks::RegisterStreak(unsigned int id, unsigned char red, unsigned char green, unsigned char blue, CVector leftPoint, CVector rightPoint) { + plugin::Call<0x721DC0, unsigned int, unsigned char, unsigned char, unsigned char, CVector, CVector>(id, red, green, blue, leftPoint, rightPoint); +} + +// Converted from cdecl void CMotionBlurStreaks::Init(void) 0x721D90 +void CMotionBlurStreaks::Init() { + plugin::Call<0x721D90>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CMotionBlurStreaks.h b/third-party/plugin-sdk/plugin_sa/game_sa/CMotionBlurStreaks.h new file mode 100644 index 00000000..bc8f06ef --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CMotionBlurStreaks.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CRegisteredMotionBlurStreak.h" + +extern unsigned int MAX_NUM_MOTIONBLUR_STREAKS; // default 4 + +class CMotionBlurStreaks { +public: + static CRegisteredMotionBlurStreak *aStreaks; // static CRegisteredMotionBlurStreak aStreaks[4] + + static void Update(); + static void Render(); + static void RegisterStreak(unsigned int id, unsigned char red, unsigned char green, unsigned char blue, CVector leftPoint, CVector rightPoint); + static void Init(); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CNodeAddress.h b/third-party/plugin-sdk/plugin_sa/game_sa/CNodeAddress.h new file mode 100644 index 00000000..cc33c8ca --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CNodeAddress.h @@ -0,0 +1,47 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CNodeAddress { +public: + short m_nAreaId; + short m_nNodeId; + + inline CNodeAddress() { + Clear(); + } + + inline CNodeAddress(short areaId, short nodeId) { + Set(areaId, nodeId); + } + + inline void Set(short areaId, short nodeId) { + m_nAreaId = areaId; + m_nNodeId = nodeId; + } + + inline bool IsEmpty() const { + return m_nAreaId == -1 || m_nNodeId == -1; + } + + inline void Clear() { + m_nAreaId = -1; + m_nNodeId = -1; + } + + inline bool operator==(CNodeAddress const &rhs) const { + return m_nAreaId == rhs.m_nAreaId && m_nNodeId == rhs.m_nNodeId; + } + + inline bool operator!=(CNodeAddress const &rhs) const { + return m_nAreaId != rhs.m_nAreaId || m_nNodeId != rhs.m_nNodeId; + } +}; + +VALIDATE_SIZE(CNodeAddress, 0x4); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CObject.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CObject.cpp new file mode 100644 index 00000000..32bf9bae --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CObject.cpp @@ -0,0 +1,185 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CObject.h" + +// Converted from thiscall void CObject::ProcessGarageDoorBehaviour(void) 0x44A4D0 +void CObject::ProcessGarageDoorBehaviour() { + ((void(__thiscall *)(CObject*))0x44A4D0)(this); +} + +// Converted from thiscall bool CObject::CanBeDeleted(void) 0x59F120 +bool CObject::CanBeDeleted() { + return ((bool(__thiscall *)(CObject*))0x59F120)(this); +} + +// Converted from thiscall void CObject::SetRelatedDummy(CDummyObject *relatedDummy) 0x59F160 +void CObject::SetRelatedDummy(CDummyObject* relatedDummy) { + ((void(__thiscall *)(CObject*, CDummyObject*))0x59F160)(this, relatedDummy); +} + +// Converted from cdecl void CObject::SetMatrixForTrainCrossing(CMatrix *matrix,float) 0x59F200 +void CObject::SetMatrixForTrainCrossing(CMatrix* matrix, float arg1) { + ((void(__cdecl *)(CMatrix*, float))0x59F200)(matrix, arg1); +} + +// Converted from thiscall bool CObject::TryToExplode(void) 0x59F2D0 +bool CObject::TryToExplode() { + return ((bool(__thiscall *)(CObject*))0x59F2D0)(this); +} + +// Converted from thiscall void CObject::SetObjectTargettable(uchar targetable) 0x59F300 +void CObject::SetObjectTargettable(unsigned char targetable) { + ((void(__thiscall *)(CObject*, unsigned char))0x59F300)(this, targetable); +} + +// Converted from thiscall bool CObject::CanBeTargetted(void) 0x59F320 +bool CObject::CanBeTargetted() { + return ((bool(__thiscall *)(CObject*))0x59F320)(this); +} + +// Converted from thiscall void CObject::RefModelInfo(int modelIndex) 0x59F330 +void CObject::RefModelInfo(int modelIndex) { + ((void(__thiscall *)(CObject*, int))0x59F330)(this, modelIndex); +} + +// Converted from thiscall void CObject::SetRemapTexture(RwTexture *remapTexture, short txdIndex) 0x59F350 +void CObject::SetRemapTexture(RwTexture* remapTexture, short txdIndex) { + ((void(__thiscall *)(CObject*, RwTexture*, short))0x59F350)(this, remapTexture, txdIndex); +} + +// Converted from thiscall float CObject::GetRopeHeight(void) 0x59F380 +float CObject::GetRopeHeight() { + return ((float(__thiscall *)(CObject*))0x59F380)(this); +} + +// Converted from thiscall void CObject::SetRopeHeight(float height) 0x59F3A0 +void CObject::SetRopeHeight(float height) { + ((void(__thiscall *)(CObject*, float))0x59F3A0)(this, height); +} + +// Converted from thiscall CEntity* CObject::GetObjectCarriedWithRope(void) 0x59F3C0 +CEntity* CObject::GetObjectCarriedWithRope() { + return ((CEntity* (__thiscall *)(CObject*))0x59F3C0)(this); +} + +// Converted from thiscall void CObject::ReleaseObjectCarriedWithRope(void) 0x59F3E0 +void CObject::ReleaseObjectCarriedWithRope() { + ((void(__thiscall *)(CObject*))0x59F3E0)(this); +} + +// Converted from thiscall void CObject::AddToControlCodeList(void) 0x59F400 +void CObject::AddToControlCodeList() { + ((void(__thiscall *)(CObject*))0x59F400)(this); +} + +// Converted from thiscall void CObject::RemoveFromControlCodeList(void) 0x59F450 +void CObject::RemoveFromControlCodeList() { + ((void(__thiscall *)(CObject*))0x59F450)(this); +} + +// Converted from thiscall void CObject::ResetDoorAngle(void) 0x59F4B0 +void CObject::ResetDoorAngle() { + ((void(__thiscall *)(CObject*))0x59F4B0)(this); +} + +// Converted from thiscall void CObject::LockDoor(void) 0x59F5C0 +void CObject::LockDoor() { + ((void(__thiscall *)(CObject*))0x59F5C0)(this); +} + +// Converted from thiscall void CObject::Init(void) 0x59F840 +void CObject::Init() { + ((void(__thiscall *)(CObject*))0x59F840)(this); +} + +// Converted from thiscall void CObject::DoBurnEffect(void) 0x59FB50 +void CObject::DoBurnEffect() { + ((void(__thiscall *)(CObject*))0x59FB50)(this); +} + +// Converted from thiscall uchar CObject::GetLightingFromCollisionBelow(void) 0x59FD00 +unsigned char CObject::GetLightingFromCollisionBelow() { + return ((unsigned char(__thiscall *)(CObject*))0x59FD00)(this); +} + +// Converted from thiscall void CObject::ProcessSamSiteBehaviour(void) 0x5A07D0 +void CObject::ProcessSamSiteBehaviour() { + ((void(__thiscall *)(CObject*))0x5A07D0)(this); +} + +// Converted from thiscall void CObject::ProcessTrainCrossingBehaviour(void) 0x5A0B50 +void CObject::ProcessTrainCrossingBehaviour() { + ((void(__thiscall *)(CObject*))0x5A0B50)(this); +} + +// Converted from thiscall void CObject::ObjectDamage(float damage,CVector *fxOrigin,CVector *fxDirection,CEntity *damager,eWeaponType weaponType) 0x5A0D90 +void CObject::ObjectDamage(float damage, CVector* fxOrigin, CVector* fxDirection, CEntity* damager, eWeaponType weaponType) { + ((void(__thiscall *)(CObject*, float, CVector*, CVector*, CEntity*, eWeaponType))0x5A0D90)(this, damage, fxOrigin, fxDirection, damager, weaponType); +} + +// Converted from thiscall void CObject::Explode(void) 0x5A1340 +void CObject::Explode() { + ((void(__thiscall *)(CObject*))0x5A1340)(this); +} + +// Converted from thiscall void CObject::ObjectFireDamage(float damage,CEntity *damager) 0x5A1580 +void CObject::ObjectFireDamage(float damage, CEntity* damager) { + ((void(__thiscall *)(CObject*, float, CEntity*))0x5A1580)(this, damage, damager); +} + +// Converted from cdecl void CObject::TryToFreeUpTempObjects(int numObjects) 0x5A1840 +void CObject::TryToFreeUpTempObjects(int numObjects) { + ((void(__cdecl *)(int))0x5A1840)(numObjects); +} + +// Converted from cdecl void CObject::DeleteAllTempObjects(void) 0x5A18B0 +void CObject::DeleteAllTempObjects() { + ((void(__cdecl *)())0x5A18B0)(); +} + +// Converted from cdecl void CObject::DeleteAllMissionObjects(void) 0x5A1910 +void CObject::DeleteAllMissionObjects() { + ((void(__cdecl *)())0x5A1910)(); +} + +// Converted from cdecl void CObject::DeleteAllTempObjectsInArea(CVector point,float radius) 0x5A1980 +void CObject::DeleteAllTempObjectsInArea(CVector point, float radius) { + ((void(__cdecl *)(CVector, float))0x5A1980)(point, radius); +} + +// Converted from thiscall void CObject::GrabObjectToCarryWithRope(CPhysical *attachTo) 0x5A1AB0 +void CObject::GrabObjectToCarryWithRope(CPhysical* attachTo) { + ((void(__thiscall *)(CObject*, CPhysical*))0x5A1AB0)(this, attachTo); +} + +// Converted from thiscall bool CObject::CanBeUsedToTakeCoverBehind(void) 0x5A1B60 +bool CObject::CanBeUsedToTakeCoverBehind() { + return ((bool(__thiscall *)(CObject*))0x5A1B60)(this); +} + +CObject* CObject::Create(int modelIndex) { + return ((CObject* (__cdecl *)(int))0x5A1F60)(modelIndex); +} + +CObject* CObject::Create(CDummyObject* dummyObject) { + return ((CObject* (__cdecl *)(CDummyObject*))0x5A2070)(dummyObject); +} + +// Converted from thiscall void CObject::ProcessControlLogic(void) 0x5A29A0 +void CObject::ProcessControlLogic() { + ((void(__thiscall *)(CObject*))0x5A29A0)(this); +} + +// Converted from cdecl bool IsObjectPointerValid_NotInWorld(CObject *object) 0x5A2B90 +bool IsObjectPointerValid_NotInWorld(CObject* object) { + return ((bool(__cdecl *)(CObject*))0x5A2B90)(object); +} + +// Converted from cdecl bool IsObjectPointerValid(CObject *object) 0x5A2C20 +bool IsObjectPointerValid(CObject* object) { + return ((bool(__cdecl *)(CObject*))0x5A2C20)(object); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CObject.h b/third-party/plugin-sdk/plugin_sa/game_sa/CObject.h new file mode 100644 index 00000000..d592bc1b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CObject.h @@ -0,0 +1,131 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPhysical.h" +#include "CObjectInfo.h" + +enum eObjectType { + OBJECT_MISSION = 2, + OBJECT_TEMPORARY = 3, + OBJECT_MISSION2 = 6 +}; + +class CDummyObject; + +class CObject : public CPhysical { +public: + void *m_pControlCodeList; + unsigned char m_nObjectType; // see enum eObjectType + unsigned char m_nBonusValue; + unsigned short m_wCostValue; + struct { + unsigned int b01 : 1; + unsigned int b02 : 1; + unsigned int bPickupPropertyForSale : 1; + unsigned int bPickupInShopOutOfStock : 1; + unsigned int bGlassBroken : 1; + unsigned int b06 : 1; + unsigned int bIsExploded : 1; + unsigned int b08 : 1; + + unsigned int bIsLampPost : 1; + unsigned int bIsTargatable : 1; + unsigned int bIsBroken : 1; + unsigned int bTrainCrossEnabled : 1; + unsigned int bIsPhotographed : 1; + unsigned int bIsLiftable : 1; + unsigned int bIsDoorMoving : 1; + unsigned int bbIsDoorOpen : 1; + + unsigned int bHasNoModel : 1; + unsigned int bIsScaled : 1; + unsigned int bCanBeAttachedToMagnet : 1; + unsigned int b20 : 1; + unsigned int b21 : 1; + unsigned int b22 : 1; + unsigned int bFadingIn : 1; // works only for objects with type 2 (OBJECT_MISSION) + unsigned int bAffectedByColBrightness : 1; + + unsigned int b25 : 1; + unsigned int bDoNotRender : 1; + unsigned int bFadingIn2 : 1; + unsigned int b28 : 1; + unsigned int b29 : 1; + unsigned int b30 : 1; + unsigned int b31 : 1; + unsigned int b32 : 1; + } m_nObjectFlags; + unsigned char m_nColDamageEffect; + unsigned char m_nStoredColDamageEffect; + char field_146; + char m_nGarageDoorGarageIndex; + unsigned char m_nLastWeaponDamage; + unsigned char m_nDayBrightness : 4; + unsigned char m_nNightBrightness : 4; + short m_nRefModelIndex; + unsigned char m_nCarColor[4]; // this is used for detached car parts + int m_dwRemovalTime; // time when this object must be deleted + float m_fHealth; + float m_fDoorStartAngle; // this is used for door objects + float m_fScale; + CObjectInfo *m_pObjectInfo; + class CFire *m_pFire; // CFire * + short m_wScriptTriggerIndex; + short m_wRemapTxd; // this is used for detached car parts + RwTexture *m_pRemapTexture; // this is used for detached car parts + CDummyObject *m_pDummyObject; // used for dynamic objects like garage doors, train crossings etc. + int m_dwBurnTime; // time when particles must be stopped + float m_fBurnDamage; + + // class functions + + void ProcessGarageDoorBehaviour(); + bool CanBeDeleted(); + void SetRelatedDummy(CDummyObject* relatedDummy); + bool TryToExplode(); + void SetObjectTargettable(unsigned char targetable); + bool CanBeTargetted(); + void RefModelInfo(int modelIndex); + void SetRemapTexture(RwTexture* remapTexture, short txdIndex); + float GetRopeHeight(); + void SetRopeHeight(float height); + CEntity* GetObjectCarriedWithRope(); + void ReleaseObjectCarriedWithRope(); + void AddToControlCodeList(); + void RemoveFromControlCodeList(); + void ResetDoorAngle(); + void LockDoor(); + void Init(); + void DoBurnEffect(); + unsigned char GetLightingFromCollisionBelow(); + void ProcessSamSiteBehaviour(); + void ProcessTrainCrossingBehaviour(); + void ObjectDamage(float damage, CVector* fxOrigin, CVector* fxDirection, CEntity* damager, eWeaponType weaponType); + void Explode(); + void ObjectFireDamage(float damage, CEntity* damager); + + void GrabObjectToCarryWithRope(CPhysical* attachTo); + bool CanBeUsedToTakeCoverBehind(); + static class CObject* Create(int modelIndex); + static class CObject* Create(CDummyObject* dummyObject); + void ProcessControlLogic(); + + // static functions + + static void SetMatrixForTrainCrossing(CMatrix* matrix, float arg1); + static void TryToFreeUpTempObjects(int numObjects); + static void DeleteAllTempObjects(); + static void DeleteAllMissionObjects(); + static void DeleteAllTempObjectsInArea(CVector point, float radius); +}; + +VALIDATE_SIZE(CObject, 0x17C); + +bool IsObjectPointerValid_NotInWorld(CObject* object); +bool IsObjectPointerValid(CObject* object); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CObjectData.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CObjectData.cpp new file mode 100644 index 00000000..fc1fb60c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CObjectData.cpp @@ -0,0 +1,9 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CObjectData.h" + +CObjectInfo* CObjectData::ms_aObjectInfo = (CObjectInfo*)0xBB4A90; // 160 diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CObjectData.h b/third-party/plugin-sdk/plugin_sa/game_sa/CObjectData.h new file mode 100644 index 00000000..766788e7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CObjectData.h @@ -0,0 +1,14 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CObjectInfo.h" + +class CObjectData { +public: + static CObjectInfo* ms_aObjectInfo; // 160 +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CObjectInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CObjectInfo.h new file mode 100644 index 00000000..c850ea50 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CObjectInfo.h @@ -0,0 +1,36 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" +#include "FxSystem_c.h" + +class PLUGIN_API CObjectInfo { +public: + float m_fMass; + float m_fTurnMass; + float m_fAirResistance; + float m_fElasticity; + float m_fBuoyancyConstant; + float m_fUprootLimit; + float m_fColDamageMultiplier; + unsigned char m_nColDamageEffect; + unsigned char m_nSpecialColResponseCase; + unsigned char m_nCameraAvoidObject; + unsigned char m_bCausesExplosion; + unsigned char m_nFxType; + CVector m_vFxOffset; + FxSystemBP_c* m_pFxSystem; + float m_fSmashMultiplier; + CVector m_vecBreakVelocity; + float m_fBreakVelocityRand; + unsigned int m_nGunBreakMode; + unsigned int m_nSparksOnImpact; +}; + +VALIDATE_SIZE(CObjectInfo, 0x50); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/COctTree.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/COctTree.cpp new file mode 100644 index 00000000..1287ad94 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/COctTree.cpp @@ -0,0 +1,76 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "COctTree.h" + +bool &COctTree::ms_bFailed = *(bool *)0xBC12DC; +unsigned int &COctTree::ms_level = *(unsigned int *)0xBC12E0; +CPool &COctTree::ms_octTreePool = *(CPool *)0xBC12E4; +COctTree *&gpTmpOctTree = *(COctTree **)0xBC12D8; + +COctTree::~COctTree() { + empty(); +} + +// Converted from bool COctTree::InsertTree(uchar colorRed, uchar colorGreen, uchar colorBlue) 0x5A75B0 +bool COctTree::InsertTree(unsigned char colorRed, unsigned char colorGreen, unsigned char colorBlue) { + return plugin::CallVirtualMethodAndReturn(this, colorRed, colorGreen, colorBlue); +} + +// Converted from void COctTree::FillPalette(uchar *colors) 0x5A70F0 +void COctTree::FillPalette(unsigned char* colors) { + plugin::CallVirtualMethod<1, COctTree *, unsigned char*>(this, colors); +} + +// Converted from thiscall void COctTree::COctTree(void) 0x5A6DB0 +COctTree::COctTree() { + plugin::CallMethod<0x5A6DB0, COctTree *>(this); +} + +// Converted from thiscall uint COctTree::FindNearestColour(uchar colorRed, uchar colorGreen, uchar colorBlue) 0x5A71E0 +unsigned int COctTree::FindNearestColour(unsigned char colorRed, unsigned char colorGreen, unsigned char colorBlue) { + return plugin::CallMethodAndReturn(this, colorRed, colorGreen, colorBlue); +} + +// Converted from thiscall void COctTree::InitPool(void *data, int dataSize) 0x5A7460 +void COctTree::InitPool(void* data, int dataSize) { + plugin::CallMethod<0x5A7460, COctTree *, void*, int>(this, data, dataSize); +} + +// Converted from thiscall uint COctTree::NoOfChildren(void) 0x5A6DE0 +unsigned int COctTree::NoOfChildren() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void COctTree::ReduceTree(void) 0x5A7040 +void COctTree::ReduceTree() { + plugin::CallMethod<0x5A7040, COctTree *>(this); +} + +// Converted from thiscall void COctTree::RemoveChildren(void) 0x5A74F0 +void COctTree::RemoveChildren() { + plugin::CallMethod<0x5A74F0, COctTree *>(this); +} + +// Converted from thiscall void COctTree::ShutdownPool(void) 0x5A6F70 +void COctTree::ShutdownPool() { + plugin::CallMethod<0x5A6F70, COctTree *>(this); +} + +// Converted from thiscall void COctTree::empty(void) 0x5A6FC0 +void COctTree::empty() { + plugin::CallMethod<0x5A6FC0, COctTree *>(this); +} + +// Converted from cdecl void COctTree::operator delete(void *data) 0x5A7420 +void COctTree::operator delete(void* data) { + plugin::Call<0x5A7420, void*>(data); +} + +// Converted from cdecl void* COctTree::operator new(uint size) 0x5A7410 +void* COctTree::operator new(unsigned int size) { + return plugin::CallAndReturn(size); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/COctTree.h b/third-party/plugin-sdk/plugin_sa/game_sa/COctTree.h new file mode 100644 index 00000000..37aeb460 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/COctTree.h @@ -0,0 +1,56 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPool.h" + +class PLUGIN_API COctTree { +protected: + COctTree(plugin::dummy_func_t) {} +public: + unsigned int level; + bool lastStep; // no childrens +private: + char _pad09; +public: + short childrens[8]; // pool slot IDs, -1 - empty +private: + char _pad1A[2]; +public: + unsigned int redComponent; + unsigned int greenComponent; + unsigned int blueComponent; + + static bool &ms_bFailed; + static unsigned int &ms_level; + static CPool &ms_octTreePool; + + //vtable + + bool InsertTree(unsigned char colorRed, unsigned char colorGreen, unsigned char colorBlue); + void FillPalette(unsigned char* colors); + + COctTree(); + ~COctTree(); + unsigned int FindNearestColour(unsigned char colorRed, unsigned char colorGreen, unsigned char colorBlue); + void InitPool(void* data, int dataSize); + unsigned int NoOfChildren(); + void ReduceTree(); + void RemoveChildren(); + void ShutdownPool(); + void empty(); + static void operator delete(void* data); + static void* operator new(unsigned int size); + +private: + virtual void virtual_dummy() {} +}; + +VALIDATE_SIZE(COctTree, 0x28); + +extern COctTree *&gpTmpOctTree; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/COctTreeBase.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/COctTreeBase.cpp new file mode 100644 index 00000000..681cc264 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/COctTreeBase.cpp @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "COctTreeBase.h" + +// Converted from thiscall void COctTreeBase::COctTreeBase(void) 0x5A7570 +COctTreeBase::COctTreeBase() : COctTree(plugin::dummy) { + plugin::CallMethod<0x5A7570, COctTreeBase *>(this); +} + +// Converted from thiscall void COctTreeBase::Init(int numBranches) 0x5A7260 +void COctTreeBase::Init(int numBranches) { + plugin::CallMethod<0x5A7260, COctTreeBase *, int>(this, numBranches); +} + +// Converted from thiscall bool COctTreeBase::Insert(uchar colorRed, uchar colorGreen, uchar colorBlue) 0x5A7750 +bool COctTreeBase::Insert(unsigned char colorRed, unsigned char colorGreen, unsigned char colorBlue) { + return plugin::CallMethodAndReturn(this, colorRed, colorGreen, colorBlue); +} + +// Converted from thiscall void COctTreeBase::ReduceBranches(int newBranchesCount) 0x5A7840 +void COctTreeBase::ReduceBranches(int newBranchesCount) { + plugin::CallMethod<0x5A7840, COctTreeBase *, int>(this, newBranchesCount); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/COctTreeBase.h b/third-party/plugin-sdk/plugin_sa/game_sa/COctTreeBase.h new file mode 100644 index 00000000..1f6cc25a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/COctTreeBase.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "COctTree.h" + +class PLUGIN_API COctTreeBase : public COctTree { +public: + unsigned int numBranches; + bool32 hasTransparentPixels; + + COctTreeBase(); + void Init(int numBranches); + bool Insert(unsigned char colorRed, unsigned char colorGreen, unsigned char colorBlue); + void ReduceBranches(int newBranchesCount); +}; + +VALIDATE_SIZE(COctTreeBase, 0x30); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenCounterEntry.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenCounterEntry.cpp new file mode 100644 index 00000000..36250022 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenCounterEntry.cpp @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "COnscreenCounterEntry.h" + +PLUGIN_SOURCE_FILE + +int addrof(COnscreenCounterEntry::ProcessForDisplayCounter) = ADDRESS_BY_VERSION(0x44CA90, 0, 0, 0, 0, 0); +int gaddrof(COnscreenCounterEntry::ProcessForDisplayCounter) = GLOBAL_ADDRESS_BY_VERSION(0x44CA90, 0, 0, 0, 0, 0); + +void COnscreenCounterEntry::ProcessForDisplayCounter(int type) { + plugin::CallMethodDynGlobal(gaddrof(COnscreenCounterEntry::ProcessForDisplayCounter), this, type); +} + +int addrof(COnscreenCounterEntry::SetColourID) = ADDRESS_BY_VERSION(0x44CB00, 0, 0, 0, 0, 0); +int gaddrof(COnscreenCounterEntry::SetColourID) = GLOBAL_ADDRESS_BY_VERSION(0x44CB00, 0, 0, 0, 0, 0); + +void COnscreenCounterEntry::SetColourID(unsigned char ColourID) { + plugin::CallMethodDynGlobal(gaddrof(COnscreenCounterEntry::SetColourID), this, ColourID); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenCounterEntry.h b/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenCounterEntry.h new file mode 100644 index 00000000..49376846 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenCounterEntry.h @@ -0,0 +1,29 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API COnscreenCounterEntry { +public: + unsigned int m_nVarId; + unsigned int m_nMaxVarValue; + char m_szDescriptionTextKey[10]; + unsigned short m_nType; // 0 - counter (%), 1 - line, 2 - conter counter (%/%) + char m_szDisplayedText[42]; // possibly 2b padding? + bool m_bEnabled; + bool m_bFlashWhenFirstDisplayed; + unsigned char m_nColourId; // color index from HudColours + + //! unused + SUPPORTED_10US void ProcessForDisplayCounter(int type); + //! unused + SUPPORTED_10US void SetColourID(unsigned char ColourID); +}; +VALIDATE_SIZE(COnscreenCounterEntry, 0x44); + +#include "meta/meta.COnscreenCounterEntry.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenTimer.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenTimer.cpp new file mode 100644 index 00000000..928c8063 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenTimer.cpp @@ -0,0 +1,86 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "COnscreenTimer.h" + +PLUGIN_SOURCE_FILE + +int addrof(COnscreenTimer::AddClock) = ADDRESS_BY_VERSION(0x44CD50, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimer::AddClock) = GLOBAL_ADDRESS_BY_VERSION(0x44CD50, 0, 0, 0, 0, 0); + +void COnscreenTimer::AddClock(unsigned int varId, char *gxt, bool bTimerDirection) { + plugin::CallMethodDynGlobal(gaddrof(COnscreenTimer::AddClock), this, varId, gxt, bTimerDirection); +} + +int addrof(COnscreenTimer::AddCounter) = ADDRESS_BY_VERSION(0x44CDA0, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimer::AddCounter) = GLOBAL_ADDRESS_BY_VERSION(0x44CDA0, 0, 0, 0, 0, 0); + +void COnscreenTimer::AddCounter(int varId, short type, char *gxt, unsigned short counterIndex) { + plugin::CallMethodDynGlobal(gaddrof(COnscreenTimer::AddCounter), this, varId, type, gxt, counterIndex); +} + +int addrof(COnscreenTimer::AddCounterCounter) = ADDRESS_BY_VERSION(0x44CE00, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimer::AddCounterCounter) = GLOBAL_ADDRESS_BY_VERSION(0x44CE00, 0, 0, 0, 0, 0); + +void COnscreenTimer::AddCounterCounter(unsigned int varId, unsigned int maxValue, char *gxt, unsigned short lineId) { + plugin::CallMethodDynGlobal(gaddrof(COnscreenTimer::AddCounterCounter), this, varId, maxValue, gxt, lineId); +} + +int addrof(COnscreenTimer::ClearClock) = ADDRESS_BY_VERSION(0x44CE60, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimer::ClearClock) = GLOBAL_ADDRESS_BY_VERSION(0x44CE60, 0, 0, 0, 0, 0); + +int COnscreenTimer::ClearClock(unsigned int varId) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(COnscreenTimer::ClearClock), this, varId); +} + +int addrof(COnscreenTimer::ClearCounter) = ADDRESS_BY_VERSION(0x44CE80, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimer::ClearCounter) = GLOBAL_ADDRESS_BY_VERSION(0x44CE80, 0, 0, 0, 0, 0); + +void COnscreenTimer::ClearCounter(unsigned int varId) { + plugin::CallMethodDynGlobal(gaddrof(COnscreenTimer::ClearCounter), this, varId); +} + +int addrof(COnscreenTimer::Init) = ADDRESS_BY_VERSION(0x44CBC0, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimer::Init) = GLOBAL_ADDRESS_BY_VERSION(0x44CBC0, 0, 0, 0, 0, 0); + +void COnscreenTimer::Init() { + plugin::CallMethodDynGlobal(gaddrof(COnscreenTimer::Init), this); +} + +int addrof(COnscreenTimer::Process) = ADDRESS_BY_VERSION(0x44CD30, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimer::Process) = GLOBAL_ADDRESS_BY_VERSION(0x44CD30, 0, 0, 0, 0, 0); + +void COnscreenTimer::Process() { + plugin::CallMethodDynGlobal(gaddrof(COnscreenTimer::Process), this); +} + +int addrof(COnscreenTimer::ProcessForDisplay) = ADDRESS_BY_VERSION(0x44CC20, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimer::ProcessForDisplay) = GLOBAL_ADDRESS_BY_VERSION(0x44CC20, 0, 0, 0, 0, 0); + +void COnscreenTimer::ProcessForDisplay() { + plugin::CallMethodDynGlobal(gaddrof(COnscreenTimer::ProcessForDisplay), this); +} + +int addrof(COnscreenTimer::SetClockBeepCountdownSecs) = ADDRESS_BY_VERSION(0x44CEE0, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimer::SetClockBeepCountdownSecs) = GLOBAL_ADDRESS_BY_VERSION(0x44CEE0, 0, 0, 0, 0, 0); + +void COnscreenTimer::SetClockBeepCountdownSecs(unsigned int varID, unsigned int time) { + plugin::CallMethodDynGlobal(gaddrof(COnscreenTimer::SetClockBeepCountdownSecs), this, varID, time); +} + +int addrof(COnscreenTimer::SetCounterColourID) = ADDRESS_BY_VERSION(0x44CF10, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimer::SetCounterColourID) = GLOBAL_ADDRESS_BY_VERSION(0x44CF10, 0, 0, 0, 0, 0); + +void COnscreenTimer::SetCounterColourID(unsigned int varID, unsigned char ColourID) { + plugin::CallMethodDynGlobal(gaddrof(COnscreenTimer::SetCounterColourID), this, varID, ColourID); +} + +int addrof(COnscreenTimer::SetCounterFlashWhenFirstDisplayed) = ADDRESS_BY_VERSION(0x44CEB0, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimer::SetCounterFlashWhenFirstDisplayed) = GLOBAL_ADDRESS_BY_VERSION(0x44CEB0, 0, 0, 0, 0, 0); + +void COnscreenTimer::SetCounterFlashWhenFirstDisplayed(unsigned int varId, unsigned char bFlashWhenFirstDisplayed) { + plugin::CallMethodDynGlobal(gaddrof(COnscreenTimer::SetCounterFlashWhenFirstDisplayed), this, varId, bFlashWhenFirstDisplayed); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenTimer.h b/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenTimer.h new file mode 100644 index 00000000..35390ceb --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenTimer.h @@ -0,0 +1,37 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "COnscreenTimerEntry.h" +#include "COnscreenCounterEntry.h" + +class PLUGIN_API COnscreenTimer { +public: + COnscreenTimerEntry m_Clock; + COnscreenCounterEntry m_aCounters[4]; + bool m_bDisplay; + bool m_bPaused; + + SUPPORTED_10US void AddClock(unsigned int varId, char *gxt, bool bTimerDirection); + SUPPORTED_10US void AddCounter(int varId, short type, char *gxt, unsigned short counterIndex); + //! unused + SUPPORTED_10US void AddCounterCounter(unsigned int varId, unsigned int maxValue, char *gxt, unsigned short lineId); + SUPPORTED_10US int ClearClock(unsigned int varId); + SUPPORTED_10US void ClearCounter(unsigned int varId); + SUPPORTED_10US void Init(); + SUPPORTED_10US void Process(); + SUPPORTED_10US void ProcessForDisplay(); + SUPPORTED_10US void SetClockBeepCountdownSecs(unsigned int varID, unsigned int time); + //! unused + SUPPORTED_10US void SetCounterColourID(unsigned int varID, unsigned char ColourID); + SUPPORTED_10US void SetCounterFlashWhenFirstDisplayed(unsigned int varId, unsigned char bFlashWhenFirstDisplayed); +}; +VALIDATE_SIZE(COnscreenTimer, 0x154); + +#include "meta/meta.COnscreenTimer.h" + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenTimerEntry.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenTimerEntry.cpp new file mode 100644 index 00000000..c461e87d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenTimerEntry.cpp @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "COnscreenTimerEntry.h" + +PLUGIN_SOURCE_FILE + +int addrof(COnscreenTimerEntry::Process) = ADDRESS_BY_VERSION(0x44CB10, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimerEntry::Process) = GLOBAL_ADDRESS_BY_VERSION(0x44CB10, 0, 0, 0, 0, 0); + +void COnscreenTimerEntry::Process() { + plugin::CallMethodDynGlobal(gaddrof(COnscreenTimerEntry::Process), this); +} + +int addrof(COnscreenTimerEntry::ProcessForDisplayClock) = ADDRESS_BY_VERSION(0x44CA40, 0, 0, 0, 0, 0); +int gaddrof(COnscreenTimerEntry::ProcessForDisplayClock) = GLOBAL_ADDRESS_BY_VERSION(0x44CA40, 0, 0, 0, 0, 0); + +void COnscreenTimerEntry::ProcessForDisplayClock() { + plugin::CallMethodDynGlobal(gaddrof(COnscreenTimerEntry::ProcessForDisplayClock), this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenTimerEntry.h b/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenTimerEntry.h new file mode 100644 index 00000000..bfa3979d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/COnscreenTimerEntry.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API COnscreenTimerEntry { +public: + unsigned int m_nVarId; + char m_szDescriptionTextKey[10]; + char m_szDisplayedText[42]; // possibly 2b padding? + bool m_bEnabled; + unsigned char m_nTimerDirection; + unsigned int m_nClockBeepCountdownSecs; + + SUPPORTED_10US void Process(); + //! unused + SUPPORTED_10US void ProcessForDisplayClock(); +}; +VALIDATE_SIZE(COnscreenTimerEntry, 0x40); +#include "meta/meta.COnscreenTimerEntry.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPad.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPad.cpp new file mode 100644 index 00000000..8dcb031d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPad.cpp @@ -0,0 +1,303 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPad.h" + +// mouse states +CMouseControllerState & CPad::PCTempMouseControllerState = *(CMouseControllerState *)0xB73404; +CMouseControllerState & CPad::NewMouseControllerState = *(CMouseControllerState *)0xB73418; +CMouseControllerState & CPad::OldMouseControllerState = *(CMouseControllerState *)0xB7342C; +CKeyboardState &CPad::NewKeyState = *(CKeyboardState *)0xB73190; +CKeyboardState &CPad::OldKeyState = *(CKeyboardState *)0xB72F20; + +CPad::CPad() +{ + plugin::CallMethod<0x541D80, CPad*>(this); +} + +// Converted from thiscall void CPad::UpdateMouse(void) 0x53F3C0 +void CPad::UpdateMouse() { + plugin::CallMethod<0x53F3C0, CPad *>(this); +} + +// Converted from thiscall void CPad::ReconcileTwoControllersInput(CControllerState const&controllerA,CControllerState const&controllerB) 0x53F530 +void CPad::ReconcileTwoControllersInput(CControllerState const& controllerA, CControllerState const& controllerB) { + plugin::CallMethod<0x53F530, CPad *, CControllerState const&, CControllerState const&>(this, controllerA, controllerB); +} + +// Converted from thiscall void CPad::SetDrunkInputDelay(int delay) 0x53F910 +void CPad::SetDrunkInputDelay(int delay) { + plugin::CallMethod<0x53F910, CPad *, int>(this, delay); +} + +// Converted from thiscall void CPad::StartShake(short time,uchar frequency,uint) 0x53F920 +void CPad::StartShake(short time, unsigned char frequency, unsigned int arg2) { + plugin::CallMethod<0x53F920, CPad *, short, unsigned char, unsigned int>(this, time, frequency, arg2); +} + +// Converted from thiscall void CPad::StartShake_Distance(short time,uchar frequency,float x,float y,float z) 0x53F9A0 +void CPad::StartShake_Distance(short time, unsigned char frequency, float x, float y, float z) { + plugin::CallMethod<0x53F9A0, CPad *, short, unsigned char, float, float, float>(this, time, frequency, x, y, z); +} + +// Converted from thiscall void CPad::StartShake_Train(float x,float y) 0x53FA70 +void CPad::StartShake_Train(float x, float y) { + plugin::CallMethod<0x53FA70, CPad *, float, float>(this, x, y); +} + +// Converted from thiscall void CPad::ProcessPCSpecificStuff(void) 0x53FB40 +void CPad::ProcessPCSpecificStuff() { + plugin::CallMethod<0x53FB40, CPad *>(this); +} + +// Converted from thiscall void CPad::StopShaking(short) 0x53FB50 +void CPad::StopShaking(short arg0) { + plugin::CallMethod<0x53FB50, CPad *, short>(this, arg0); +} + +// Converted from cdecl CPad* CPad::GetPad(int padNumber) 0x53FB70 +CPad* CPad::GetPad(int padNumber) { + return plugin::CallAndReturn(padNumber); +} + +// Converted from thiscall short CPad::GetSteeringLeftRight(void) 0x53FB80 +short CPad::GetSteeringLeftRight() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall short CPad::GetSteeringUpDown(void) 0x53FBD0 +short CPad::GetSteeringUpDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall short CPad::GetPedWalkLeftRight(void) 0x53FC90 +short CPad::GetPedWalkLeftRight() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall short CPad::GetPedWalkUpDown(void) 0x53FD30 +short CPad::GetPedWalkUpDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetLookLeft(void) 0x53FDD0 +bool CPad::GetLookLeft() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetLookRight(void) 0x53FE10 +bool CPad::GetLookRight() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetLookBehindForCar(void) 0x53FE70 +bool CPad::GetLookBehindForCar() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetLookBehindForPed(void) 0x53FEC0 +bool CPad::GetLookBehindForPed() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetHorn(void) 0x53FEE0 +bool CPad::GetHorn() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::HornJustDown(void) 0x53FF30 +bool CPad::HornJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetHydraulicJump(void) 0x53FF70 +bool CPad::GetHydraulicJump() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall short CPad::GetCarGunFired(void) 0x53FF90 +short CPad::GetCarGunFired() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall short CPad::CarGunJustDown(void) 0x53FFE0 +short CPad::CarGunJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall short CPad::GetHandBrake(void) 0x540040 +short CPad::GetHandBrake() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall short CPad::GetBrake(void) 0x540080 +short CPad::GetBrake() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetExitVehicle(void) 0x5400D0 +bool CPad::GetExitVehicle() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::ExitVehicleJustDown(void) 0x540120 +bool CPad::ExitVehicleJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall uchar CPad::GetMeleeAttack(void) 0x540340 +unsigned char CPad::GetMeleeAttack() { + return plugin::CallMethodAndReturn(this, 0); +} + +// Converted from thiscall uchar CPad::MeleeAttackJustDown(void) 0x540390 +unsigned char CPad::MeleeAttackJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall short CPad::GetAccelerate(void) 0x5403F0 +short CPad::GetAccelerate() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetAccelerateJustDown(void) 0x540440 +bool CPad::GetAccelerateJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::NextStationJustUp(void) 0x5405B0 +bool CPad::NextStationJustUp() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::LastStationJustUp(void) 0x5405E0 +bool CPad::LastStationJustUp() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::CycleWeaponLeftJustDown(void) 0x540610 +bool CPad::CycleWeaponLeftJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::CycleWeaponRightJustDown(void) 0x540640 +bool CPad::CycleWeaponRightJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetTarget(void) 0x540670 +bool CPad::GetTarget() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetDuck(void) 0x540700 +bool CPad::GetDuck() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::DuckJustDown(void) 0x540720 +bool CPad::DuckJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetJump(void) 0x540750 +bool CPad::GetJump() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::JumpJustDown(void) 0x540770 +bool CPad::JumpJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetSprint(void) 0x5407A0 +bool CPad::GetSprint() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::SprintJustDown(void) 0x5407F0 +bool CPad::SprintJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::ShiftTargetLeftJustDown(void) 0x540850 +bool CPad::ShiftTargetLeftJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::ShiftTargetRightJustDown(void) 0x540880 +bool CPad::ShiftTargetRightJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall short CPad::GetDisplayVitalStats(CPed *ped) 0x5408B0 +short CPad::GetDisplayVitalStats(CPed* ped) { + return plugin::CallMethodAndReturn(this, ped); +} + +// Converted from thiscall bool CPad::CollectPickupJustDown(void) 0x540A70 +bool CPad::CollectPickupJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetForceCameraBehindPlayer(void) 0x540AE0 +bool CPad::GetForceCameraBehindPlayer() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::SniperZoomIn(void) 0x540B30 +bool CPad::SniperZoomIn() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::SniperZoomOut(void) 0x540B80 +bool CPad::SniperZoomOut() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetGroupControlForward(void) 0x541190 +bool CPad::GetGroupControlForward() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GetGroupControlBack(void) 0x5411B0 +bool CPad::GetGroupControlBack() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::ConversationYesJustDown(void) 0x5411D0 +bool CPad::ConversationYesJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::ConversationNoJustDown(void) 0x541200 +bool CPad::ConversationNoJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GroupControlForwardJustDown(void) 0x541230 +bool CPad::GroupControlForwardJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPad::GroupControlBackJustDown(void) 0x541260 +bool CPad::GroupControlBackJustDown() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CPad::Clear(bool enablePlayerControls, bool resetPhase) 0x541A70 +void CPad::Clear(bool enablePlayerControls, bool resetPhase) { + plugin::CallMethod<0x541A70, CPad *, bool, bool>(this, enablePlayerControls, resetPhase); +} + +// Converted from cdecl void CPad::UpdatePads(void) 0x541DD0 +void CPad::UpdatePads() { + plugin::Call<0x541DD0>(); +} + +void CPad::ClearMouseHistory() { + plugin::Call<0x541BD0>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPad.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPad.h new file mode 100644 index 00000000..726f42e0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPad.h @@ -0,0 +1,248 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "rw/skeleton.h" + +// Set values to 128 unless otherwise specified +class CControllerState { +public: + signed short LeftStickX; // move/steer left (-128?)/right (+128) + signed short LeftStickY; // move back(+128)/forwards(-128?) + signed short RightStickX; // numpad 6(+128)/numpad 4(-128?) + signed short RightStickY; + + signed short LeftShoulder1; + signed short LeftShoulder2; + signed short RightShoulder1; // target / hand brake + signed short RightShoulder2; + + signed short DPadUp; // radio change up Next radio station / Call gang forward/Recruit gang member + signed short DPadDown; // radio change down Previous radio station / Gang stay back/Release gang (hold) + signed short DPadLeft; // Skip trip/Action / Negative talk reply + signed short DPadRight; // Next user MP3 track / Positive talk reply + + signed short Start; //Pause + signed short Select; //Camera modes + + signed short ButtonSquare; // jump / reverse Break/Reverse / Jump/Climb + signed short ButtonTriangle; // get in/out Exit vehicle / Enter veihcle + signed short ButtonCross; // sprint / accelerate Accelerate / Sprint/Swim + signed short ButtonCircle; // fire Fire weapon + + signed short ShockButtonL; + signed short ShockButtonR; // look behind + + signed short m_bChatIndicated; + signed short m_bPedWalk; + signed short m_bVehicleMouseLook; + signed short m_bRadioTrackSkip; +}; + + +VALIDATE_SIZE(CControllerState, 0x30); + + +class CMouseControllerState { +public: + unsigned char lmb; + unsigned char rmb; + unsigned char mmb; + unsigned char wheelUp; + unsigned char wheelDown; + unsigned char bmx1; + unsigned char bmx2; + char __align; + float z; + float x; + float y; +}; + +VALIDATE_SIZE(CMouseControllerState, 0x14); + + +class CKeyboardState { +public: + short FKeys[12]; + short standardKeys[256]; + short esc; + short insert; + short del; + short home; + short end; + short pgup; + short pgdn; + short up; + short down; + short left; + short right; + short scroll; + short pause; + short numlock; + short div; + short mul; + short sub; + short add; + short enter; + short decimal; + short num1; + short num2; + short num3; + short num4; + short num5; + short num6; + short num7; + short num8; + short num9; + short num0; + short back; + short tab; + short capslock; + short extenter; + short lshift; + short rshift; + short shift; + short lctrl; + short rctrl; + short lmenu; + short rmenu; + short lwin; + short rwin; + short apps; +}; + +VALIDATE_SIZE(CKeyboardState, 0x270); + + +class CPed; + + +class CPad { +public: + CControllerState NewState; + CControllerState OldState; + short SteeringLeftRightBuffer[10]; + int DrunkDrivingBufferUsed; + CControllerState PCTempKeyState; + CControllerState PCTempJoyState; + CControllerState PCTempMouseState; + char Phase; +private: + char _pad109; +public: + short Mode; + short ShakeDur; + + union + { + struct + { + unsigned short unk1 : 1; // eCamMode::MODE_1STPERSON leftover? + unsigned short unk2 : 1; // unused + unsigned short bPlayerAwaitsInGarage : 1; + unsigned short bPlayerOnInteriorTransition : 1; + unsigned short unk3 : 1; // unused + unsigned short bPlayerSafe : 1; + unsigned short bPlayerTalksOnPhone : 1; // bPlayerSafeForPhoneCall? + unsigned short bPlayerSafeForCutscene : 1; + unsigned short bPlayerSkipsToDestination : 1; // bPlayerSafeForDestination? + }; + unsigned short DisablePlayerControls; + }; + char ShakeFreq; + char bHornHistory[5]; + char iCurrHornHistory; + char JustOutOfFrontEnd; + char bApplyBrakes; + char bDisablePlayerEnterCar; + char bDisablePlayerDuck; + char bDisablePlayerFireWeapon; + char bDisablePlayerFireWeaponWithL1; + char bDisablePlayerCycleWeapon; + char bDisablePlayerJump; + char bDisablePlayerDisplayVitalStats; + int LastTimeTouched; + int AverageWeapon; + int AverageEntries; + int NoShakeBeforeThis; + char NoShakeFreq; +private: + char _pad131[3]; +public: + + // Static variables + + // mouse states + static CMouseControllerState &PCTempMouseControllerState; + static CMouseControllerState &NewMouseControllerState; + static CMouseControllerState &OldMouseControllerState; + static CKeyboardState &NewKeyState; + static CKeyboardState& OldKeyState; + // Functions list : Not finished + + CPad(); + void UpdateMouse(); + void ReconcileTwoControllersInput(CControllerState const& controllerA, CControllerState const& controllerB); + void SetDrunkInputDelay(int delay); + void StartShake(short time, unsigned char frequency, unsigned int arg2); + void StartShake_Distance(short time, unsigned char frequency, float x, float y, float z); + void StartShake_Train(float x, float y); + // dummy function + void ProcessPCSpecificStuff(); + void StopShaking(short arg0); + static CPad* GetPad(int padNumber); + short GetSteeringLeftRight(); + short GetSteeringUpDown(); + short GetPedWalkLeftRight(); + short GetPedWalkUpDown(); + bool GetLookLeft(); + bool GetLookRight(); + bool GetLookBehindForCar(); + bool GetLookBehindForPed(); + bool GetHorn(); + bool HornJustDown(); + bool GetHydraulicJump(); + short GetCarGunFired(); + short CarGunJustDown(); + short GetHandBrake(); + short GetBrake(); + bool GetExitVehicle(); + bool ExitVehicleJustDown(); + unsigned char GetMeleeAttack(); + unsigned char MeleeAttackJustDown(); + short GetAccelerate(); + bool GetAccelerateJustDown(); + bool NextStationJustUp(); + bool LastStationJustUp(); + bool CycleWeaponLeftJustDown(); + bool CycleWeaponRightJustDown(); + bool GetTarget(); + bool GetDuck(); + bool DuckJustDown(); + bool GetJump(); + bool JumpJustDown(); + bool GetSprint(); + bool SprintJustDown(); + bool ShiftTargetLeftJustDown(); + bool ShiftTargetRightJustDown(); + short GetDisplayVitalStats(class CPed* ped); + bool CollectPickupJustDown(); + bool GetForceCameraBehindPlayer(); + bool SniperZoomIn(); + bool SniperZoomOut(); + bool GetGroupControlForward(); + bool GetGroupControlBack(); + bool ConversationYesJustDown(); + bool ConversationNoJustDown(); + bool GroupControlForwardJustDown(); + bool GroupControlBackJustDown(); + void Clear(bool enablePlayerControls, bool resetPhase); + static void UpdatePads(); + static void ClearMouseHistory(); +}; + +VALIDATE_SIZE(CPad, 0x134); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPathFind.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPathFind.cpp new file mode 100644 index 00000000..03bcc00d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPathFind.cpp @@ -0,0 +1,26 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPathFind.h" + +CPathFind &ThePaths = **(CPathFind **)(0x40CA27); + +void CPathFind::DoPathSearch(unsigned char pathType, CVector origin, CNodeAddress originAddr, + CVector target, CNodeAddress *pResultNodes, short *pNodesCount, int maxNodesToFind, float *pDistance, + float maxSearchDistance, CNodeAddress *targetAddr, float maxUnkLimit, bool oneSideOnly, + CNodeAddress forbiddenNodeAddr, bool includeNodesWithoutLinks, bool waterPath) +{ + ((void (__thiscall *)(CPathFind *, unsigned char, CVector, CNodeAddress, CVector, CNodeAddress *, + short *, int, float *, float, CNodeAddress *, float, bool, CNodeAddress, bool, bool))0x4515D0)( + this, pathType, origin, originAddr, target, pResultNodes, pNodesCount, maxNodesToFind, pDistance, + maxSearchDistance, targetAddr, maxUnkLimit, oneSideOnly, forbiddenNodeAddr, includeNodesWithoutLinks, + waterPath); +} + +CPathNode *CPathFind::GetPathNode(CNodeAddress address) +{ + return ((CPathNode *(__thiscall *)(CPathFind *, CNodeAddress))0x420AC0)(this, address); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPathFind.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPathFind.h new file mode 100644 index 00000000..3ee6edf7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPathFind.h @@ -0,0 +1,63 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CompressedVector.h" +#include "CVector.h" +#include "CNodeAddress.h" +#include "CForbiddenArea.h" +#include "CCarPathLinkAddress.h" +#include "CPathIntersectionInfo.h" +#include "CCarPathLink.h" +#include "CPathNode.h" + +#define NUM_PATH_MAP_AREAS 64 +#define NUM_PATH_INTERIOR_AREAS 8 + +class PLUGIN_API CPathFind +{ +public: + CNodeAddress info; + CPathNode *m_apNodesSearchLists[512]; + CPathNode *m_pPathNodes[NUM_PATH_MAP_AREAS + NUM_PATH_INTERIOR_AREAS]; + CCarPathLink *m_pNaviNodes[NUM_PATH_MAP_AREAS + NUM_PATH_INTERIOR_AREAS]; + CNodeAddress *m_pNodeLinks[NUM_PATH_MAP_AREAS + NUM_PATH_INTERIOR_AREAS]; + unsigned char *m_pLinkLengths[NUM_PATH_MAP_AREAS + NUM_PATH_INTERIOR_AREAS]; + CPathIntersectionInfo *m_pPathIntersections[NUM_PATH_MAP_AREAS + NUM_PATH_INTERIOR_AREAS]; + CCarPathLinkAddress *m_pNaviLinks[NUM_PATH_MAP_AREAS]; + void *field_EA4[NUM_PATH_MAP_AREAS]; + unsigned int m_dwNumNodes[NUM_PATH_MAP_AREAS + NUM_PATH_INTERIOR_AREAS]; + unsigned int m_dwNumVehicleNodes[NUM_PATH_MAP_AREAS + NUM_PATH_INTERIOR_AREAS]; + unsigned int m_dwNumPedNodes[NUM_PATH_MAP_AREAS + NUM_PATH_INTERIOR_AREAS]; + unsigned int m_dwNumCarPathLinks[NUM_PATH_MAP_AREAS + NUM_PATH_INTERIOR_AREAS]; + unsigned int m_dwNumAddresses[NUM_PATH_MAP_AREAS + NUM_PATH_INTERIOR_AREAS]; + int field_1544[2048]; + unsigned int m_dwTotalNumNodesInSearchList; + CNodeAddress char3548[8]; + unsigned int m_dwNumForbiddenAreas; + CForbiddenArea m_aForbiddenAreas[64]; + bool m_bForbiddenForScriptedCarsEnabled; + char _padding[3]; + float m_fForbiddenForScrCarsX1; + float m_fForbiddenForScrCarsX2; + float m_fForbiddenForScrCarsY1; + float m_fForbiddenForScrCarsY2; + + // + + void DoPathSearch(unsigned char pathType, CVector origin, CNodeAddress originAddr, + CVector target, CNodeAddress *pResultNodes, short *pNodesCount, int maxNodesToFind, float *pDistance, + float maxSearchDistance, CNodeAddress *targetAddr, float maxUnkLimit, bool oneSideOnly, + CNodeAddress forbiddenNodeAddr, bool includeNodesWithoutLinks, bool waterPath); + + CPathNode *GetPathNode(CNodeAddress address); +}; + +VALIDATE_SIZE(CPathFind, 0x3C80); + +extern PLUGIN_API CPathFind& ThePaths; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPathIntersectionInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPathIntersectionInfo.h new file mode 100644 index 00000000..6ae39149 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPathIntersectionInfo.h @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CPathIntersectionInfo { +public: + unsigned char m_bRoadCross : 1; + unsigned char m_bPedTrafficLight : 1; +}; + +VALIDATE_SIZE(CPathIntersectionInfo, 0x1); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPathNode.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPathNode.cpp new file mode 100644 index 00000000..746ea5e7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPathNode.cpp @@ -0,0 +1,18 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPathNode.h" + +PLUGIN_SOURCE_FILE + +int addrof(CPathNode::GetNodeCoors) = ADDRESS_BY_VERSION(0x420A10, 0, 0, 0, 0, 0); +int gaddrof(CPathNode::GetNodeCoors) = GLOBAL_ADDRESS_BY_VERSION(0x420A10, 0, 0, 0, 0, 0); + +CVector CPathNode::GetNodeCoors() { + CVector ret_posn; + plugin::CallMethodDynGlobal(gaddrof(CPathNode::GetNodeCoors), this, &ret_posn); + return ret_posn; +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPathNode.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPathNode.h new file mode 100644 index 00000000..73b8e2a0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPathNode.h @@ -0,0 +1,47 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CompressedVector.h" +#include "CVector.h" + +class PLUGIN_API CPathNode { +public: + void *ptr; + void *ptr2; + CompressedVector m_vecPosn; + unsigned short m_nSearchList; //!< search list id + short m_nBaseLinkId; + short m_nAreaId; + short m_nNodeId; + unsigned char m_nPathWidth; + unsigned char m_nFloodFill; + + unsigned char m_nNumLinks : 4; + unsigned char m_nTrafficLevel : 2; + unsigned char m_bRoadBlocks : 1; + unsigned char m_bWaterNode : 1; + + unsigned char m_bEmergencyVehiclesOnly : 1; + unsigned char unk1 : 1; //!< not used in paths data files + unsigned char m_bDontWander : 1; + unsigned char unk2 : 1; //!< not used in paths data files + unsigned char m_bNotHighway : 1; + unsigned char m_bHighway : 1; + unsigned char unk3 : 1; //!< not used in paths data files + unsigned char unk4 : 1; //!< not used in paths data files + + unsigned char m_nSpawnProbability : 4; + unsigned char m_nBehaviourType : 4; //!< 1 - roadblock, 2 - parking node + + SUPPORTED_10US CVector GetNodeCoors(); +}; + +VALIDATE_SIZE(CPathNode, 0x1C); + +#include "meta/meta.CPathNode.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPed.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPed.cpp new file mode 100644 index 00000000..71961de1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPed.cpp @@ -0,0 +1,827 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPed.h" + +CPed::CPed(ePedType pedtype) : CPhysical(plugin::dummy), m_aWeapons{ plugin::dummy, plugin::dummy, plugin::dummy, +plugin::dummy, plugin::dummy, plugin::dummy, plugin::dummy, plugin::dummy, plugin::dummy, plugin::dummy, +plugin::dummy, plugin::dummy, plugin::dummy } +{ + ((void(__thiscall *)(CPed*,ePedType))0x5E8030)(this,pedtype); +} + +// Converted from thiscall void* CPed::operator new(uint size) 0x5E4720 +void* CPed::operator new(unsigned int size) { + return ((void* (__cdecl *)(unsigned int))0x5E4720)(size); +} + +// Converted from thiscall void CPed::operator delete(void *data) 0x5E4760 +void CPed::operator delete(void* data) { + ((void (__cdecl *)(void*))0x5E4760)(data); +} + +// Converted from void CPed::SetMoveAnim(void) 0x5E4A00 +void CPed::SetMoveAnim() +{ + ((void (__thiscall *)(CPed*))(*(void ***)this)[24])(this); +} + +// Converted from bool CPed::Save(void) 0x5D5730 +bool CPed::Save() +{ + return ((bool (__thiscall *)(CPed*))(*(void ***)this)[25])(this); +} + +// Converted from bool CPed::Load(void) 0x5D4640 +bool CPed::Load() +{ + return ((bool (__thiscall *)(CPed*))(*(void ***)this)[26])(this); +} + +// Converted from thiscall bool CPed::PedIsInvolvedInConversation(void) 0x43AB90 +bool CPed::PedIsInvolvedInConversation() +{ + return ((bool (__thiscall *)(CPed*))0x43AB90)(this); +} + +// Converted from thiscall bool CPed::PedIsReadyForConversation(bool) 0x43ABA0 +bool CPed::PedIsReadyForConversation(bool arg0) +{ + return ((bool (__thiscall *)(CPed*, bool))0x43ABA0)(this, arg0); +} + +// Converted from thiscall bool CPed::PedCanPickUpPickUp(void) 0x455560 +bool CPed::PedCanPickUpPickUp() +{ + return ((bool (__thiscall *)(CPed*))0x455560)(this); +} + +// Converted from thiscall void CPed::CreateDeadPedMoney(void) 0x4590F0 +void CPed::CreateDeadPedMoney() +{ + ((void (__thiscall *)(CPed*))0x4590F0)(this); +} + +// Converted from thiscall void CPed::CreateDeadPedPickupCoors(float *pX,float *pY,float *pZ) 0x459180 +void CPed::CreateDeadPedPickupCoors(float* pX, float* pY, float* pZ) +{ + ((void (__thiscall *)(CPed*, float*, float*, float*))0x459180)(this, pX, pY, pZ); +} + +// Converted from thiscall void CPed::CreateDeadPedWeaponPickups(void) 0x4591D0 +void CPed::CreateDeadPedWeaponPickups() +{ + ((void (__thiscall *)(CPed*))0x4591D0)(this); +} + +// Converted from cdecl void CPed::Initialise(void) 0x5DEBB0 +void CPed::Initialise() +{ + ((void (__cdecl *)())0x5DEBB0)(); +} + +// Converted from thiscall void CPed::SetPedStats(ePedStats statsType) 0x5DEBC0 +void CPed::SetPedStats(ePedStats statsType) +{ + ((void (__thiscall *)(CPed*, ePedStats))0x5DEBC0)(this, statsType); +} + +// Converted from thiscall void CPed::Update(void) 0x5DEBE0 +void CPed::Update() +{ + ((void (__thiscall *)(CPed*))0x5DEBE0)(this); +} + +// Converted from thiscall void CPed::SetMoveState(eMoveState moveState) 0x5DEC00 +void CPed::SetMoveState(eMoveState moveState) +{ + ((void (__thiscall *)(CPed*, eMoveState))0x5DEC00)(this, moveState); +} + +// Converted from thiscall void CPed::SetMoveAnimSpeed(CAnimBlendAssociation *association) 0x5DEC10 +void CPed::SetMoveAnimSpeed(CAnimBlendAssociation* association) +{ + ((void (__thiscall *)(CPed*, CAnimBlendAssociation*))0x5DEC10)(this, association); +} + +// Converted from thiscall void CPed::StopNonPartialAnims(void) 0x5DED10 +void CPed::StopNonPartialAnims() +{ + ((void (__thiscall *)(CPed*))0x5DED10)(this); +} + +// Converted from thiscall void CPed::RestartNonPartialAnims(void) 0x5DED50 +void CPed::RestartNonPartialAnims() +{ + ((void (__thiscall *)(CPed*))0x5DED50)(this); +} + +// Converted from thiscall bool CPed::CanUseTorsoWhenLooking(void) 0x5DED90 +bool CPed::CanUseTorsoWhenLooking() +{ + return ((bool (__thiscall *)(CPed*))0x5DED90)(this); +} + +// Converted from thiscall void CPed::SetLookFlag(float lookHeading,bool likeUnused,bool) 0x5DEDC0 +void CPed::SetLookFlag(float lookHeading, bool likeUnused, bool arg2) +{ + ((void (__thiscall *)(CPed*, float, bool, bool))0x5DEDC0)(this, lookHeading, likeUnused, arg2); +} + +// Converted from thiscall void CPed::SetLookFlag(CEntity *lookingTo,bool likeUnused,bool) 0x5DEE40 +void CPed::SetLookFlag(CEntity* lookingTo, bool likeUnused, bool arg2) +{ + ((void (__thiscall *)(CPed*, CEntity*, bool, bool))0x5DEE40)(this, lookingTo, likeUnused, arg2); +} + +// Converted from thiscall void CPed::SetAimFlag(CEntity *aimingTo) 0x5DEED0 +void CPed::SetAimFlag(CEntity* aimingTo) +{ + ((void (__thiscall *)(CPed*, CEntity*))0x5DEED0)(this, aimingTo); +} + +// Converted from thiscall void CPed::ClearAimFlag(void) 0x5DEF20 +void CPed::ClearAimFlag() +{ + ((void (__thiscall *)(CPed*))0x5DEF20)(this); +} + +// Converted from thiscall int CPed::GetLocalDirection(CVector2D const&) 0x5DEF60 +int CPed::GetLocalDirection(CVector2D const& arg0) +{ + return ((int (__thiscall *)(CPed*, CVector2D const&))0x5DEF60)(this, arg0); +} + +// Converted from thiscall bool CPed::IsPedShootable(void) 0x5DEFD0 +bool CPed::IsPedShootable() +{ + return ((bool (__thiscall *)(CPed*))0x5DEFD0)(this); +} + +// Converted from thiscall bool CPed::UseGroundColModel(void) 0x5DEFE0 +bool CPed::UseGroundColModel() +{ + return ((bool (__thiscall *)(CPed*))0x5DEFE0)(this); +} + +// Converted from thiscall bool CPed::CanPedReturnToState(void) 0x5DF000 +bool CPed::CanPedReturnToState() +{ + return ((bool (__thiscall *)(CPed*))0x5DF000)(this); +} + +// Converted from thiscall bool CPed::CanSetPedState(void) 0x5DF030 +bool CPed::CanSetPedState() +{ + return ((bool (__thiscall *)(CPed*))0x5DF030)(this); +} + +// Converted from thiscall bool CPed::CanBeArrested(void) 0x5DF060 +bool CPed::CanBeArrested() +{ + return ((bool (__thiscall *)(CPed*))0x5DF060)(this); +} + +// Converted from thiscall bool CPed::CanStrafeOrMouseControl(void) 0x5DF090 +bool CPed::CanStrafeOrMouseControl() +{ + return ((bool (__thiscall *)(CPed*))0x5DF090)(this); +} + +// Converted from thiscall bool CPed::CanBeDeleted(void) 0x5DF100 +bool CPed::CanBeDeleted() +{ + return ((bool (__thiscall *)(CPed*))0x5DF100)(this); +} + +// Converted from thiscall bool CPed::CanBeDeletedEvenInVehicle(void) 0x5DF150 +bool CPed::CanBeDeletedEvenInVehicle() +{ + return ((bool (__thiscall *)(CPed*))0x5DF150)(this); +} + +// Converted from thiscall void CPed::RemoveGogglesModel(void) 0x5DF170 +void CPed::RemoveGogglesModel() +{ + ((void (__thiscall *)(CPed*))0x5DF170)(this); +} + +// Converted from thiscall int CPed::GetWeaponSlot(eWeaponType weaponType) 0x5DF200 +int CPed::GetWeaponSlot(eWeaponType weaponType) +{ + return ((int (__thiscall *)(CPed*, eWeaponType))0x5DF200)(this, weaponType); +} + +// Converted from thiscall void CPed::GrantAmmo(eWeaponType weaponType,uint ammo) 0x5DF220 +void CPed::GrantAmmo(eWeaponType weaponType, unsigned int ammo) +{ + ((void (__thiscall *)(CPed*, eWeaponType, unsigned int))0x5DF220)(this, weaponType, ammo); +} + +// Converted from thiscall void CPed::SetAmmo(eWeaponType weaponType,uint ammo) 0x5DF290 +void CPed::SetAmmo(eWeaponType weaponType, unsigned int ammo) +{ + ((void (__thiscall *)(CPed*, eWeaponType, unsigned int))0x5DF290)(this, weaponType, ammo); +} + +// Converted from thiscall bool CPed::DoWeHaveWeaponAvailable(eWeaponType weaponType) 0x5DF300 +bool CPed::DoWeHaveWeaponAvailable(eWeaponType weaponType) +{ + return ((bool (__thiscall *)(CPed*, eWeaponType))0x5DF300)(this, weaponType); +} + +// Converted from thiscall bool CPed::DoGunFlash(int,bool) 0x5DF340 +bool CPed::DoGunFlash(int arg0, bool arg1) +{ + return ((bool (__thiscall *)(CPed*, int, bool))0x5DF340)(this, arg0, arg1); +} + +// Converted from thiscall void CPed::SetGunFlashAlpha(bool rightHand) 0x5DF400 +void CPed::SetGunFlashAlpha(bool rightHand) +{ + ((void (__thiscall *)(CPed*, bool))0x5DF400)(this, rightHand); +} + +// Converted from thiscall void CPed::ResetGunFlashAlpha(void) 0x5DF4E0 +void CPed::ResetGunFlashAlpha() +{ + ((void (__thiscall *)(CPed*))0x5DF4E0)(this); +} + +// Converted from thiscall float CPed::GetBikeRidingSkill(void) 0x5DF510 +float CPed::GetBikeRidingSkill() +{ + return ((float (__thiscall *)(CPed*))0x5DF510)(this); +} + +// Converted from thiscall void CPed::ShoulderBoneRotation(RpClump *clump) 0x5DF560 +void CPed::ShoulderBoneRotation(RpClump* clump) +{ + ((void (__thiscall *)(CPed*, RpClump*))0x5DF560)(this, clump); +} + +// Converted from thiscall void CPed::SetLookTimer(uint time) 0x5DF8D0 +void CPed::SetLookTimer(unsigned int time) +{ + ((void (__thiscall *)(CPed*, unsigned int))0x5DF8D0)(this, time); +} + +// Converted from thiscall bool CPed::IsPlayer(void) 0x5DF8F0 +bool CPed::IsPlayer() +{ + return ((bool (__thiscall *)(CPed*))0x5DF8F0)(this); +} + +// Converted from thiscall void CPed::SetPedPositionInCar(void) 0x5DF910 +void CPed::SetPedPositionInCar() +{ + ((void (__thiscall *)(CPed*))0x5DF910)(this); +} + +// Converted from thiscall void CPed::RestoreHeadingRate(void) 0x5DFD60 +void CPed::RestoreHeadingRate() +{ + ((void (__thiscall *)(CPed*))0x5DFD60)(this); +} + +// Converted from cdecl void CPed::RestoreHeadingRateCB(CAnimBlendAssociation *,void *data) 0x5DFD70 +void CPed::RestoreHeadingRateCB(CAnimBlendAssociation* association, void* data) +{ + ((void (__cdecl *)(CAnimBlendAssociation*, void*))0x5DFD70)(association, data); +} + +// Converted from thiscall void CPed::SetRadioStation(void) 0x5DFD90 +void CPed::SetRadioStation() +{ + ((void (__thiscall *)(CPed*))0x5DFD90)(this); +} + +// Converted from thiscall void CPed::PositionAttachedPed(void) 0x5DFDF0 +void CPed::PositionAttachedPed() +{ + ((void (__thiscall *)(CPed*))0x5DFDF0)(this); +} + +// Converted from thiscall void CPed::Undress(char *modelName) 0x5E00F0 +void CPed::Undress(char* modelName) +{ + ((void (__thiscall *)(CPed*, char*))0x5E00F0)(this, modelName); +} + +// Converted from thiscall void CPed::Dress(void) 0x5E0130 +void CPed::Dress() +{ + ((void (__thiscall *)(CPed*))0x5E0130)(this); +} + +// Converted from thiscall bool CPed::IsAlive(void) 0x5E0170 +bool CPed::IsAlive() +{ + return ((bool (__thiscall *)(CPed*))0x5E0170)(this); +} + +// Converted from thiscall void CPed::UpdateStatEnteringVehicle(void) 0x5E01A0 +void CPed::UpdateStatEnteringVehicle() +{ + ((void (__thiscall *)(CPed*))0x5E01A0)(this); +} + +// Converted from thiscall void CPed::UpdateStatLeavingVehicle(void) 0x5E01B0 +void CPed::UpdateStatLeavingVehicle() +{ + ((void (__thiscall *)(CPed*))0x5E01B0)(this); +} + +// Converted from thiscall void CPed::GetTransformedBonePosition(RwV3d &inOffsetOutPosn,uint boneId,bool updateSkinBones) 0x5E01C0 +void CPed::GetTransformedBonePosition(RwV3d& inOffsetOutPosn, unsigned int boneId, bool updateSkinBones) +{ + ((void (__thiscall *)(CPed*, RwV3d&, unsigned int, bool))0x5E01C0)(this, inOffsetOutPosn, boneId, updateSkinBones); +} + +// Converted from thiscall void CPed::ReleaseCoverPoint(void) 0x5E0270 +void CPed::ReleaseCoverPoint() +{ + ((void (__thiscall *)(CPed*))0x5E0270)(this); +} + +// Converted from thiscall CTask* CPed::GetHoldingTask(void) 0x5E0290 +CTask* CPed::GetHoldingTask() +{ + return ((CTask* (__thiscall *)(CPed*))0x5E0290)(this); +} + +// Converted from thiscall CEntity* CPed::GetEntityThatThisPedIsHolding(void) 0x5E02E0 +CEntity* CPed::GetEntityThatThisPedIsHolding() +{ + return ((CEntity* (__thiscall *)(CPed*))0x5E02E0)(this); +} + +// Converted from thiscall void CPed::DropEntityThatThisPedIsHolding(uchar) 0x5E0360 +void CPed::DropEntityThatThisPedIsHolding(unsigned char arg0) +{ + ((void (__thiscall *)(CPed*, unsigned char))0x5E0360)(this, arg0); +} + +// Converted from thiscall bool CPed::CanThrowEntityThatThisPedIsHolding(void) 0x5E0400 +bool CPed::CanThrowEntityThatThisPedIsHolding() +{ + return ((bool (__thiscall *)(CPed*))0x5E0400)(this); +} + +// Converted from thiscall bool CPed::IsPlayingHandSignal(void) 0x5E0460 +bool CPed::IsPlayingHandSignal() +{ + return ((bool (__thiscall *)(CPed*))0x5E0460)(this); +} + +// Converted from thiscall void CPed::StopPlayingHandSignal(void) 0x5E0480 +void CPed::StopPlayingHandSignal() +{ + ((void (__thiscall *)(CPed*))0x5E0480)(this); +} + +// Converted from thiscall float CPed::GetWalkAnimSpeed(void) 0x5E04B0 +float CPed::GetWalkAnimSpeed() +{ + return ((float (__thiscall *)(CPed*))0x5E04B0)(this); +} + +// Converted from thiscall void CPed::SetPedDefaultDecisionMaker(void) 0x5E06E0 +void CPed::SetPedDefaultDecisionMaker() +{ + ((void (__thiscall *)(CPed*))0x5E06E0)(this); +} + +// Converted from thiscall bool CPed::CanSeeEntity(CEntity *entity,float limitAngle) 0x5E0730 +bool CPed::CanSeeEntity(CEntity* entity, float limitAngle) +{ + return ((bool (__thiscall *)(CPed*, CEntity*, float))0x5E0730)(this, entity, limitAngle); +} + +// Converted from thiscall bool CPed::PositionPedOutOfCollision(int,CVehicle *,bool) 0x5E0820 +bool CPed::PositionPedOutOfCollision(int arg0, CVehicle* arg1, bool arg2) +{ + return ((bool (__thiscall *)(CPed*, int, CVehicle*, bool))0x5E0820)(this, arg0, arg1, arg2); +} + +// Converted from thiscall bool CPed::PositionAnyPedOutOfCollision(void) 0x5E13C0 +bool CPed::PositionAnyPedOutOfCollision() +{ + return ((bool (__thiscall *)(CPed*))0x5E13C0)(this); +} + +// Converted from thiscall bool CPed::OurPedCanSeeThisEntity(CEntity *entity,bool isSpotted) 0x5E1660 +bool CPed::OurPedCanSeeThisEntity(CEntity* entity, bool isSpotted) +{ + return ((bool (__thiscall *)(CPed*, CEntity*, bool))0x5E1660)(this, entity, isSpotted); +} + +// Converted from thiscall void CPed::SortPeds(CPed** pedList,int,int) 0x5E17E0 +void CPed::SortPeds(CPed** pedList, int arg1, int arg2) +{ + ((void (__thiscall *)(CPed*, CPed**, int, int))0x5E17E0)(this, pedList, arg1, arg2); +} + +// Converted from thiscall void CPed::ClearLookFlag(void) 0x5E1950 +void CPed::ClearLookFlag() +{ + ((void (__thiscall *)(CPed*))0x5E1950)(this); +} + +// Converted from thiscall float CPed::WorkOutHeadingForMovingFirstPerson(float heading) 0x5E1A00 +float CPed::WorkOutHeadingForMovingFirstPerson(float heading) +{ + return ((float (__thiscall *)(CPed*, float))0x5E1A00)(this, heading); +} + +// Converted from thiscall void CPed::UpdatePosition(void) 0x5E1B10 +void CPed::UpdatePosition() +{ + ((void (__thiscall *)(CPed*))0x5E1B10)(this); +} + +// Converted from thiscall void CPed::ProcessBuoyancy(void) 0x5E1FA0 +void CPed::ProcessBuoyancy() +{ + ((void (__thiscall *)(CPed*))0x5E1FA0)(this); +} + +// Converted from thiscall bool CPed::IsPedInControl(void) 0x5E3960 +bool CPed::IsPedInControl() +{ + return ((bool (__thiscall *)(CPed*))0x5E3960)(this); +} + +// Converted from thiscall void CPed::RemoveWeaponModel(int modelIndex) 0x5E3990 +void CPed::RemoveWeaponModel(int modelIndex) +{ + ((void (__thiscall *)(CPed*, int))0x5E3990)(this, modelIndex); +} + +// Converted from thiscall void CPed::AddGogglesModel(int modelIndex,bool *pGogglesType) 0x5E3A90 +void CPed::AddGogglesModel(int modelIndex, bool* pGogglesType) +{ + ((void (__thiscall *)(CPed*, int, bool*))0x5E3A90)(this, modelIndex, pGogglesType); +} + +// Converted from thiscall void CPed::PutOnGoggles(void) 0x5E3AE0 +void CPed::PutOnGoggles() +{ + ((void (__thiscall *)(CPed*))0x5E3AE0)(this); +} + +// Converted from thiscall char CPed::GetWeaponSkill(eWeaponType weaponType) 0x5E3B60 +char CPed::GetWeaponSkill(eWeaponType weaponType) +{ + return ((char (__thiscall *)(CPed*, eWeaponType))0x5E3B60)(this, weaponType); +} + +// Converted from thiscall void CPed::SetWeaponSkill(eWeaponType weaponType,char skill) 0x5E3C10 +void CPed::SetWeaponSkill(eWeaponType weaponType, char skill) +{ + ((void (__thiscall *)(CPed*, eWeaponType, char))0x5E3C10)(this, weaponType, skill); +} + +// Converted from thiscall void CPed::ClearLook(void) 0x5E3FF0 +void CPed::ClearLook() +{ + ((void (__thiscall *)(CPed*))0x5E3FF0)(this); +} + +// Converted from thiscall bool CPed::TurnBody(void) 0x5E4000 +bool CPed::TurnBody() +{ + return ((bool (__thiscall *)(CPed*))0x5E4000)(this); +} + +// Converted from thiscall bool CPed::IsPointerValid(void) 0x5E4220 +bool CPed::IsPointerValid() +{ + return ((bool (__thiscall *)(CPed*))0x5E4220)(this); +} + +// Converted from thiscall void CPed::GetBonePosition(RwV3d &outPosition,uint boneId,bool updateSkinBones) 0x5E4280 +void CPed::GetBonePosition(RwV3d& outPosition, unsigned int boneId, bool updateSkinBones) +{ + ((void (__thiscall *)(CPed*, RwV3d&, unsigned int, bool))0x5E4280)(this, outPosition, boneId, updateSkinBones); +} + +// Converted from thiscall CObject* CPed::GiveObjectToPedToHold(int modelIndex,uchar replace) 0x5E4390 +CObject* CPed::GiveObjectToPedToHold(int modelIndex, unsigned char replace) +{ + return ((CObject* (__thiscall *)(CPed*, int, unsigned char))0x5E4390)(this, modelIndex, replace); +} + +// Converted from thiscall void CPed::SetPedState(ePedState pedState) 0x5E4500 +void CPed::SetPedState(ePedState pedState) +{ + ((void (__thiscall *)(CPed*, ePedState))0x5E4500)(this, pedState); +} + +// Converted from thiscall void CPed::SetCharCreatedBy(uchar createdBy) 0x5E47E0 +void CPed::SetCharCreatedBy(unsigned char createdBy) +{ + ((void (__thiscall *)(CPed*, unsigned char))0x5E47E0)(this, createdBy); +} + +// Converted from thiscall void CPed::CalculateNewVelocity(void) 0x5E4C50 +void CPed::CalculateNewVelocity() +{ + ((void (__thiscall *)(CPed*))0x5E4C50)(this); +} + +// Converted from thiscall void CPed::CalculateNewOrientation(void) 0x5E52E0 +void CPed::CalculateNewOrientation() +{ + ((void (__thiscall *)(CPed*))0x5E52E0)(this); +} + +// Converted from thiscall void CPed::ClearAll(void) 0x5E5320 +void CPed::ClearAll() +{ + ((void (__thiscall *)(CPed*))0x5E5320)(this); +} + +// Converted from thiscall void CPed::DoFootLanded(bool leftFoot,uchar) 0x5E5380 +void CPed::DoFootLanded(bool leftFoot, unsigned char arg1) +{ + ((void (__thiscall *)(CPed*, bool, unsigned char))0x5E5380)(this, leftFoot, arg1); +} + +// Converted from thiscall void CPed::PlayFootSteps(void) 0x5E57F0 +void CPed::PlayFootSteps() +{ + ((void (__thiscall *)(CPed*))0x5E57F0)(this); +} + +// Converted from thiscall void CPed::AddWeaponModel(int modelIndex) 0x5E5ED0 +void CPed::AddWeaponModel(int modelIndex) +{ + ((void (__thiscall *)(CPed*, int))0x5E5ED0)(this, modelIndex); +} + +// Converted from thiscall void CPed::TakeOffGoggles(void) 0x5E6010 +void CPed::TakeOffGoggles() +{ + ((void (__thiscall *)(CPed*))0x5E6010)(this); +} + +// Converted from thiscall void CPed::GiveWeapon(eWeaponType weaponType,uint ammo,bool likeUnused) 0x5E6080 +void CPed::GiveWeapon(eWeaponType weaponType, unsigned int ammo, bool likeUnused) +{ + ((void (__thiscall *)(CPed*, eWeaponType, unsigned int, bool))0x5E6080)(this, weaponType, ammo, likeUnused); +} + +// Converted from thiscall void CPed::SetCurrentWeapon(int slot) 0x5E61F0 +void CPed::SetCurrentWeapon(int slot) +{ + ((void (__thiscall *)(CPed*, int))0x5E61F0)(this, slot); +} + +// Converted from thiscall void CPed::SetCurrentWeapon(eWeaponType weaponType) 0x5E6280 +void CPed::SetCurrentWeapon(eWeaponType weaponType) +{ + ((void (__thiscall *)(CPed*, eWeaponType))0x5E6280)(this, weaponType); +} + +// Converted from thiscall void CPed::ClearWeapon(eWeaponType weaponType) 0x5E62B0 +void CPed::ClearWeapon(eWeaponType weaponType) +{ + ((void (__thiscall *)(CPed*, eWeaponType))0x5E62B0)(this, weaponType); +} + +// Converted from thiscall void CPed::ClearWeapons(void) 0x5E6320 +void CPed::ClearWeapons() +{ + ((void (__thiscall *)(CPed*))0x5E6320)(this); +} + +// Converted from thiscall void CPed::RemoveWeaponWhenEnteringVehicle(int) 0x5E6370 +void CPed::RemoveWeaponWhenEnteringVehicle(int arg0) +{ + ((void (__thiscall *)(CPed*, int))0x5E6370)(this, arg0); +} + +// Converted from thiscall void CPed::ReplaceWeaponWhenExitingVehicle(void) 0x5E6490 +void CPed::ReplaceWeaponWhenExitingVehicle() +{ + ((void (__thiscall *)(CPed*))0x5E6490)(this); +} + +// Converted from thiscall void CPed::ReplaceWeaponForScriptedCutscene(void) 0x5E6530 +void CPed::ReplaceWeaponForScriptedCutscene() +{ + ((void (__thiscall *)(CPed*))0x5E6530)(this); +} + +// Converted from thiscall void CPed::RemoveWeaponForScriptedCutscene(void) 0x5E6550 +void CPed::RemoveWeaponForScriptedCutscene() +{ + ((void (__thiscall *)(CPed*))0x5E6550)(this); +} + +// Converted from thiscall void CPed::GetWeaponSkill(void) 0x5E6580 +char CPed::GetWeaponSkill() +{ + return ((char (__thiscall *)(CPed*))0x5E6580)(this); +} + +// Converted from thiscall void CPed::PreRenderAfterTest(void) 0x5E65A0 +void CPed::PreRenderAfterTest() +{ + ((void (__thiscall *)(CPed*))0x5E65A0)(this); +} + +// Converted from thiscall void CPed::SetIdle(void) 0x5E7980 +void CPed::SetIdle() +{ + ((void (__thiscall *)(CPed*))0x5E7980)(this); +} + +// Converted from thiscall void CPed::SetLook(float heading) 0x5E79B0 +void CPed::SetLook(float heading) +{ + ((void (__thiscall *)(CPed*, float))0x5E79B0)(this, heading); +} + +// Converted from thiscall void CPed::SetLook(CEntity *entity) 0x5E7A60 +void CPed::SetLook(CEntity* entity) +{ + ((void (__thiscall *)(CPed*, CEntity*))0x5E7A60)(this, entity); +} + +// Converted from thiscall void CPed::Look(void) 0x5E7B20 +void CPed::Look() +{ + ((void (__thiscall *)(CPed*))0x5E7B20)(this); +} + +// Converted from thiscall CEntity* CPed::AttachPedToEntity(CEntity *entity,CVector offset,ushort,float,eWeaponType weaponType) 0x5E7CB0 +CEntity* CPed::AttachPedToEntity(CEntity* entity, CVector offset, unsigned short arg2, float arg3, eWeaponType weaponType) +{ + return ((CEntity* (__thiscall *)(CPed*, CEntity*, CVector, unsigned short, float, eWeaponType))0x5E7CB0)(this, entity, offset, arg2, arg3, weaponType); +} + +// Converted from thiscall CEntity* CPed::AttachPedToBike(CEntity *entity,CVector offset,ushort,float,float,eWeaponType weaponType) 0x5E7E60 +CEntity* CPed::AttachPedToBike(CEntity* entity, CVector offset, unsigned short arg2, float arg3, float arg4, eWeaponType weaponType) +{ + return ((CEntity* (__thiscall *)(CPed*, CEntity*, CVector, unsigned short, float, float, eWeaponType))0x5E7E60)(this, entity, offset, arg2, arg3, arg4, weaponType); +} + +// Converted from thiscall void CPed::DettachPedFromEntity(void) 0x5E7EC0 +void CPed::DettachPedFromEntity() +{ + ((void (__thiscall *)(CPed*))0x5E7EC0)(this); +} + +// Converted from thiscall void CPed::SetAimFlag(float heading) 0x5E8830 +void CPed::SetAimFlag(float heading) +{ + ((void (__thiscall *)(CPed*, float))0x5E8830)(this, heading); +} + +// Converted from thiscall bool CPed::CanWeRunAndFireWithWeapon(void) 0x5E88E0 +bool CPed::CanWeRunAndFireWithWeapon() +{ + return ((bool (__thiscall *)(CPed*))0x5E88E0)(this); +} + +// Converted from thiscall void CPed::RequestDelayedWeapon(void) 0x5E8910 +void CPed::RequestDelayedWeapon() +{ + ((void (__thiscall *)(CPed*))0x5E8910)(this); +} + +// Converted from thiscall void CPed::GiveDelayedWeapon(eWeaponType weaponType,uint ammo) 0x5E89B0 +void CPed::GiveDelayedWeapon(eWeaponType weaponType, unsigned int ammo) +{ + ((void (__thiscall *)(CPed*, eWeaponType, unsigned int))0x5E89B0)(this, weaponType, ammo); +} + +// Converted from cdecl bool IsPedPointerValid(CPed *ped) 0x5E8A30 +bool IsPedPointerValid(CPed* ped) +{ + return ((bool (__cdecl *)(CPed*))0x5E8A30)(ped); +} + +// Converted from thiscall void CPed::GiveWeaponAtStartOfFight(void) 0x5E8AB0 +void CPed::GiveWeaponAtStartOfFight() +{ + ((void (__thiscall *)(CPed*))0x5E8AB0)(this); +} + +// Converted from thiscall void CPed::GiveWeaponWhenJoiningGang(void) 0x5E8BE0 +void CPed::GiveWeaponWhenJoiningGang() +{ + ((void (__thiscall *)(CPed*))0x5E8BE0)(this); +} + +// Converted from thiscall bool CPed::GetPedTalking(void) 0x5EFF50 +bool CPed::GetPedTalking() +{ + return ((bool (__thiscall *)(CPed*))0x5EFF50)(this); +} + +// Converted from thiscall void CPed::DisablePedSpeech(short) 0x5EFF60 +void CPed::DisablePedSpeech(short arg0) +{ + ((void (__thiscall *)(CPed*, short))0x5EFF60)(this, arg0); +} + +// Converted from thiscall void CPed::EnablePedSpeech(void) 0x5EFF70 +void CPed::EnablePedSpeech() +{ + ((void (__thiscall *)(CPed*))0x5EFF70)(this); +} + +// Converted from thiscall void CPed::DisablePedSpeechForScriptSpeech(short) 0x5EFF80 +void CPed::DisablePedSpeechForScriptSpeech(short arg0) +{ + ((void (__thiscall *)(CPed*, short))0x5EFF80)(this, arg0); +} + +// Converted from thiscall void CPed::EnablePedSpeechForScriptSpeech(void) 0x5EFF90 +void CPed::EnablePedSpeechForScriptSpeech() +{ + ((void (__thiscall *)(CPed*))0x5EFF90)(this); +} + +// Converted from thiscall void CPed::CanPedHoldConversation(void) 0x5EFFA0 +void CPed::CanPedHoldConversation() +{ + ((void (__thiscall *)(CPed*))0x5EFFA0)(this); +} + +// Converted from thiscall void CPed::SayScript(int,uchar,uchar,uchar) 0x5EFFB0 +void CPed::SayScript(int arg0, unsigned char arg1, unsigned char arg2, unsigned char arg3) +{ + ((void (__thiscall *)(CPed*, int, unsigned char, unsigned char, unsigned char))0x5EFFB0)(this, arg0, arg1, arg2, arg3); +} + +// Converted from thiscall void CPed::Say(ushort,uint,float,uchar,uchar,uchar) 0x5EFFE0 +void CPed::Say(unsigned short arg0, unsigned int arg1, float arg2, unsigned char arg3, unsigned char arg4, unsigned char arg5) +{ + ((void (__thiscall *)(CPed*, unsigned short, unsigned int, float, unsigned char, unsigned char, unsigned char))0x5EFFE0)(this, arg0, arg1, arg2, arg3, arg4, arg5); +} + +// Converted from cdecl RwObject* SetPedAtomicVisibilityCB(RwObject *rwObject,void *data) 0x5F0060 +RwObject* SetPedAtomicVisibilityCB(RwObject* rwObject, void* data) +{ + return ((RwObject* (__cdecl *)(RwObject*, void*))0x5F0060)(rwObject, data); +} + +// Converted from thiscall void CPed::RemoveBodyPart(int boneId,char localDir) 0x5F0140 +void CPed::RemoveBodyPart(int boneId, char localDir) +{ + ((void (__thiscall *)(CPed*, int, char))0x5F0140)(this, boneId, localDir); +} + +// Converted from thiscall void CPed::SpawnFlyingComponent(int,char) 0x5F0190 +void CPed::SpawnFlyingComponent(int arg0, char arg1) +{ + ((void (__thiscall *)(CPed*, int, char))0x5F0190)(this, arg0, arg1); +} + +// Converted from thiscall bool CPed::DoesLOSBulletHitPed(CColPoint &colPoint) 0x5F01A0 +bool CPed::DoesLOSBulletHitPed(CColPoint& colPoint) +{ + return ((bool (__thiscall *)(CPed*, CColPoint&))0x5F01A0)(this, colPoint); +} + +// Converted from thiscall void CPed::RemoveWeaponAnims(int likeUnused,float blendDelta) 0x5F0250 +void CPed::RemoveWeaponAnims(int likeUnused, float blendDelta) +{ + ((void (__thiscall *)(CPed*, int, float))0x5F0250)(this, likeUnused, blendDelta); +} + +// Converted from thiscall bool CPed::IsPedHeadAbovePos(float zPos) 0x5F02C0 +bool CPed::IsPedHeadAbovePos(float zPos) +{ + return ((bool (__thiscall *)(CPed*, float))0x5F02C0)(this, zPos); +} + +// Converted from thiscall void CPed::KillPedWithCar(CVehicle *car,float,bool) 0x5F0360 +void CPed::KillPedWithCar(CVehicle* car, float arg1, bool arg2) +{ + ((void (__thiscall *)(CPed*, CVehicle*, float, bool))0x5F0360)(this, car, arg1, arg2); +} + +// Converted from thiscall void CPed::MakeTyresMuddySectorList(CPtrList &ptrList) 0x6AE0D0 +void CPed::MakeTyresMuddySectorList(CPtrList& ptrList) +{ + ((void (__thiscall *)(CPed*, CPtrList&))0x6AE0D0)(this, ptrList); +} + +// Converted from thiscall void CPed::DeadPedMakesTyresBloody(void) 0x6B4200 +void CPed::DeadPedMakesTyresBloody() +{ + ((void (__thiscall *)(CPed*))0x6B4200)(this); +} + +void CPed::SetModelIndex(unsigned int modelIndex) +{ + ((void(__thiscall *)(CPed*,unsigned int))0x5E4880)(this, modelIndex); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPed.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPed.h new file mode 100644 index 00000000..80249e55 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPed.h @@ -0,0 +1,442 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "ePedType.h" +#include "CPhysical.h" +#include "CAEPedAudioEntity.h" +#include "CAEPedSpeechAudioEntity.h" +#include "CAEWeaponAudioEntity.h" +#include "CPedIntelligence.h" +#include "CPlayerData.h" +#include "AnimBlendFrameData.h" +#include "CPedAcquaintance.h" +#include "CPedIK.h" +#include "CWeapon.h" +#include "CVector2D.h" +#include "eWeaponType.h" +#include "ePedState.h" +#include "CAnimBlendAssociation.h" +#include "CFire.h" + +enum PLUGIN_API ePedStats { + +}; + +enum PLUGIN_API eMoveState { + PEDMOVE_NONE = 0, + PEDMOVE_STILL, + PEDMOVE_TURN_L, + PEDMOVE_TURN_R, + PEDMOVE_WALK, + PEDMOVE_JOG, + PEDMOVE_RUN, + PEDMOVE_SPRINT +}; + +enum eFightingStyle +{ + STYLE_STANDARD = 4, + STYLE_BOXING, + STYLE_KUNG_FU, + STYLE_KNEE_HEAD, + // various melee weapon styles + STYLE_GRAB_KICK = 15, + STYLE_ELBOWS = 16, +}; + +class CObject; +class CVehicle; + +class PLUGIN_API CPed : public CPhysical { +protected: + CPed(plugin::dummy_func_t) : CPhysical(plugin::dummy), m_aWeapons{ plugin::dummy, plugin::dummy, plugin::dummy, + plugin::dummy, plugin::dummy, plugin::dummy, plugin::dummy, plugin::dummy, plugin::dummy, plugin::dummy, + plugin::dummy, plugin::dummy, plugin::dummy } {} +public: + CAEPedAudioEntity m_pedAudio; + CAEPedSpeechAudioEntity m_pedSpeech; + CAEWeaponAudioEntity m_weaponAudio; + char field_43C[36]; + char field_460[8]; + int field_468; + /* https://code.google.com/p/mtasa-blue/source/browse/tags/1.3.4/MTA10/game_sa/CPedSA.h */ + struct { + unsigned int bIsStanding : 1; // is ped standing on something + unsigned int bWasStanding : 1; // was ped standing on something + unsigned int bIsLooking : 1; // is ped looking at something or in a direction + unsigned int bIsRestoringLook : 1; // is ped restoring head postion from a look + unsigned int bIsAimingGun : 1; // is ped aiming gun + unsigned int bIsRestoringGun : 1; // is ped moving gun back to default posn + unsigned int bCanPointGunAtTarget : 1; // can ped point gun at target + unsigned int bIsTalking : 1; // is ped talking(see Chat()) + + unsigned int bInVehicle : 1; // is in a vehicle + unsigned int bIsInTheAir : 1; // is in the air + unsigned int bIsLanding : 1; // is landing after being in the air + unsigned int bHitSomethingLastFrame : 1; // has been in a collision last fram + unsigned int bIsNearCar : 1; // has been in a collision last fram + unsigned int bRenderPedInCar : 1; // has been in a collision last fram + unsigned int bUpdateAnimHeading : 1; // update ped heading due to heading change during anim sequence + unsigned int bRemoveHead : 1; // waiting on AntiSpazTimer to remove head + + unsigned int bFiringWeapon : 1; // is pulling trigger + unsigned int bHasACamera : 1; // does ped possess a camera to document accidents + unsigned int bPedIsBleeding : 1; // Ped loses a lot of blood if true + unsigned int bStopAndShoot : 1; // Ped cannot reach target to attack with fist, need to use gun + unsigned int bIsPedDieAnimPlaying : 1; // is ped die animation finished so can dead now + unsigned int bStayInSamePlace : 1; // when set, ped stays put + unsigned int bKindaStayInSamePlace : 1; // when set, ped doesn't seek out opponent or cover large distances. Will still shuffle and look for cover + unsigned int bBeingChasedByPolice : 1; // use nodes for routefind + + unsigned int bNotAllowedToDuck : 1; // Is this ped allowed to duck at all? + unsigned int bCrouchWhenShooting : 1; // duck behind cars etc + unsigned int bIsDucking : 1; // duck behind cars etc + unsigned int bGetUpAnimStarted : 1; // don't want to play getup anim if under something + unsigned int bDoBloodyFootprints : 1; // unsigned int bIsLeader :1; + unsigned int bDontDragMeOutCar : 1; + unsigned int bStillOnValidPoly : 1; // set if the polygon the ped is on is still valid for collision + unsigned int bAllowMedicsToReviveMe : 1; + + unsigned int bResetWalkAnims : 1; + unsigned int bOnBoat : 1; // flee but only using nodes + unsigned int bBusJacked : 1; // flee but only using nodes + unsigned int bFadeOut : 1; // set if you want ped to fade out + unsigned int bKnockedUpIntoAir : 1; // has ped been knocked up into the air by a car collision + unsigned int bHitSteepSlope : 1; // has ped collided/is standing on a steep slope (surface type) + unsigned int bCullExtraFarAway : 1; // special ped only gets culled if it's extra far away (for roadblocks) + unsigned int bTryingToReachDryLand : 1; // has ped just exited boat and trying to get to dry land + + unsigned int bCollidedWithMyVehicle : 1; + unsigned int bRichFromMugging : 1; // ped has lots of cash cause they've been mugging people + unsigned int bChrisCriminal : 1; // Is a criminal as killed during Chris' police mission (should be counted as such) + unsigned int bShakeFist : 1; // test shake hand at look entity + unsigned int bNoCriticalHits : 1; // ped cannot be killed by a single bullet + unsigned int bHasAlreadyBeenRecorded : 1; // Used for replays + unsigned int bUpdateMatricesRequired : 1; // if PedIK has altered bones so matrices need updated this frame + unsigned int bFleeWhenStanding : 1; // + + unsigned int bMiamiViceCop : 1; // + unsigned int bMoneyHasBeenGivenByScript : 1; // + unsigned int bHasBeenPhotographed : 1; // + unsigned int bIsDrowning : 1; + unsigned int bDrownsInWater : 1; + unsigned int bHeadStuckInCollision : 1; + unsigned int bDeadPedInFrontOfCar : 1; + unsigned int bStayInCarOnJack : 1; + + unsigned int bDontFight : 1; + unsigned int bDoomAim : 1; + unsigned int bCanBeShotInVehicle : 1; + unsigned int bPushedAlongByCar : 1; // ped is getting pushed along by car collision (so don't take damage from horz velocity) + unsigned int bNeverEverTargetThisPed : 1; + unsigned int bThisPedIsATargetPriority : 1; + unsigned int bCrouchWhenScared : 1; + unsigned int bKnockedOffBike : 1; + + unsigned int bDonePositionOutOfCollision : 1; + unsigned int bDontRender : 1; + unsigned int bHasBeenAddedToPopulation : 1; + unsigned int bHasJustLeftCar : 1; + unsigned int bIsInDisguise : 1; + unsigned int bDoesntListenToPlayerGroupCommands : 1; + unsigned int bIsBeingArrested : 1; + unsigned int bHasJustSoughtCover : 1; + + unsigned int bKilledByStealth : 1; + unsigned int bDoesntDropWeaponsWhenDead : 1; + unsigned int bCalledPreRender : 1; + unsigned int bBloodPuddleCreated : 1; // Has a static puddle of blood been created yet + unsigned int bPartOfAttackWave : 1; + unsigned int bClearRadarBlipOnDeath : 1; + unsigned int bNeverLeavesGroup : 1; // flag that we want to test 3 extra spheres on col model + unsigned int bTestForBlockedPositions : 1; // this sets these indicator flags for various posisions on the front of the ped + + unsigned int bRightArmBlocked : 1; + unsigned int bLeftArmBlocked : 1; + unsigned int bDuckRightArmBlocked : 1; + unsigned int bMidriffBlockedForJump : 1; + unsigned int bFallenDown : 1; + unsigned int bUseAttractorInstantly : 1; + unsigned int bDontAcceptIKLookAts : 1; + unsigned int bHasAScriptBrain : 1; + + unsigned int bWaitingForScriptBrainToLoad : 1; + unsigned int bHasGroupDriveTask : 1; + unsigned int bCanExitCar : 1; + unsigned int CantBeKnockedOffBike : 2; // 0=Default(harder for mission peds) 1=Never 2=Always normal(also for mission peds) + unsigned int bHasBeenRendered : 1; + unsigned int bIsCached : 1; + unsigned int bPushOtherPeds : 1; // GETS RESET EVERY FRAME - SET IN TASK: want to push other peds around (eg. leader of a group or ped trying to get in a car) + + unsigned int bHasBulletProofVest : 1; + unsigned int bUsingMobilePhone : 1; + unsigned int bUpperBodyDamageAnimsOnly : 1; + unsigned int bStuckUnderCar : 1; + unsigned int bKeepTasksAfterCleanUp : 1; // If true ped will carry on with task even after cleanup + unsigned int bIsDyingStuck : 1; + unsigned int bIgnoreHeightCheckOnGotoPointTask : 1; // set when walking round buildings, reset when task quits + unsigned int bForceDieInCar : 1; + + unsigned int bCheckColAboveHead : 1; + unsigned int bIgnoreWeaponRange : 1; + unsigned int bDruggedUp : 1; + unsigned int bWantedByPolice : 1; // if this is set, the cops will always go after this ped when they are doing a KillCriminal task + unsigned int bSignalAfterKill : 1; + unsigned int bCanClimbOntoBoat : 1; + unsigned int bPedHitWallLastFrame : 1; // useful to store this so that AI knows (normal will still be available) + unsigned int bIgnoreHeightDifferenceFollowingNodes : 1; + + unsigned int bMoveAnimSpeedHasBeenSetByTask : 1; + unsigned int bGetOutUpsideDownCar : 1; + unsigned int bJustGotOffTrain : 1; + unsigned int bDeathPickupsPersist : 1; + unsigned int bTestForShotInVehicle : 1; + unsigned int bUsedForReplay : 1; // This ped is controlled by replay and should be removed when replay is done. + } m_nPedFlags; + CPedIntelligence *m_pIntelligence; + CPlayerData *m_pPlayerData; + unsigned char m_nCreatedBy; + char field_485[3]; + AnimBlendFrameData *m_apBones[19]; + unsigned int m_nAnimGroup; + CVector2D m_vecAnimMovingShiftLocal; + CPedAcquaintance m_acquaintance; + RwObject *m_pWeaponObject; + RwFrame *m_pGunflashObject; + RwObject *m_pGogglesObject; + unsigned char *m_pGogglesState; + short m_nWeaponGunflashAlphaMP1; + short field_506; + short m_nWeaponGunflashAlphaMP2; + short field_50A; + CPedIK m_pedIK; + int field_52C; + ePedState m_nPedState; // see ePedState + int m_nMoveState; + int field_538; + int field_53C; + float m_fHealth; + float m_fMaxHealth; + float m_fArmour; + int field_54C; + CVector2D m_vecAnimMovingShift; + float m_fCurrentRotation; + float m_fAimingRotation; + float m_fHeadingChangeRate; + int field_564; + int field_568; + CVector field_56C; + CVector field_578; + CEntity *m_pContactEntity; + float field_588; + CVehicle *m_pVehicle; + int field_590; + int field_594; + int m_nPedType; + void *m_pStats; // CPedStat * + CWeapon m_aWeapons[13]; + eWeaponType m_nSavedWeapon; // when we need to hide ped weapon, we save it temporary here + eWeaponType m_nDelayedWeapon; // 'delayed' weapon is like an additional weapon, f.e., simple cop has a nitestick as current and pistol as delayed weapons + unsigned int m_nDelayedWeaponAmmo; + unsigned char m_nActiveWeaponSlot; + unsigned char m_nWeaponShootingRate; + unsigned char m_nWeaponAccuracy; + CObject *m_pTargetedObject; + int field_720; + int field_724; + int field_728; + char m_nWeaponSkill; + char m_nFightingStyle; // see eFightingStyle + char m_nAllowedAttackMoves; + char field_72F; + CFire *m_pFire; + int field_734; + int field_738; + int field_73C; + int m_nWeaponModelId; + int field_744; + int field_748; + int field_74C; + int m_nDeathTime; + char m_nBodypartToRemove; + char field_755; + short m_nMoneyCount; + int field_758; + int field_75C; + char m_nLastWeaponDamage; + CEntity *m_pLastEntityDamage; + int field_768; + CVector m_vecTurretOffset; + float m_fTurretAngleA; + float m_fTurretAngleB; + int m_nTurretPosnMode; + int m_nTurretAmmo; + void *m_pCoverPoint; // CCoverPoint * + void *m_pEnex; // CEnEx * + float m_fRemovalDistMultiplier; // 1.0 by default + short m_nSpecialModelIndex; + char field_796[2]; + int field_798; + + // class virtual functions + + // Process applied anim + void SetMoveAnim(); + // always returns true + bool Save(); + // always returns true + bool Load(); + + // class functions + + + CPed(ePedType); + bool PedIsInvolvedInConversation(); + bool PedIsReadyForConversation(bool arg0); + bool PedCanPickUpPickUp(); + void CreateDeadPedMoney(); + void CreateDeadPedPickupCoors(float* pX, float* pY, float* pZ); + void CreateDeadPedWeaponPickups(); + static void Initialise(); + void SetPedStats(ePedStats statsType); + void Update(); + void SetMoveState(eMoveState moveState); + void SetMoveAnimSpeed(CAnimBlendAssociation* association); + void StopNonPartialAnims(); + void RestartNonPartialAnims(); + bool CanUseTorsoWhenLooking(); + void SetLookFlag(float lookHeading, bool likeUnused, bool arg2); + void SetLookFlag(CEntity* lookingTo, bool likeUnused, bool arg2); + void SetAimFlag(CEntity* aimingTo); + void ClearAimFlag(); + // Gets point direction relatively to ped + int GetLocalDirection(CVector2D const& arg0); + bool IsPedShootable(); + bool UseGroundColModel(); + bool CanPedReturnToState(); + bool CanSetPedState(); + bool CanBeArrested(); + bool CanStrafeOrMouseControl(); + bool CanBeDeleted(); + bool CanBeDeletedEvenInVehicle(); + void RemoveGogglesModel(); + int GetWeaponSlot(eWeaponType weaponType); + void GrantAmmo(eWeaponType weaponType, unsigned int ammo); + void SetAmmo(eWeaponType weaponType, unsigned int ammo); + bool DoWeHaveWeaponAvailable(eWeaponType weaponType); + bool DoGunFlash(int arg0, bool arg1); + void SetGunFlashAlpha(bool rightHand); + void ResetGunFlashAlpha(); + float GetBikeRidingSkill(); + void ShoulderBoneRotation(RpClump* clump); + void SetLookTimer(unsigned int time); + bool IsPlayer(); + void SetPedPositionInCar(); + void RestoreHeadingRate(); + static void RestoreHeadingRateCB(CAnimBlendAssociation* association, void* data); + void SetRadioStation(); + void PositionAttachedPed(); + void Undress(char* modelName); + void Dress(); + bool IsAlive(); + // dummy function + void UpdateStatEnteringVehicle(); + // dummy function + void UpdateStatLeavingVehicle(); + void GetTransformedBonePosition(RwV3d& inOffsetOutPosn, unsigned int boneId, bool updateSkinBones); + void ReleaseCoverPoint(); + CTask* GetHoldingTask(); + CEntity* GetEntityThatThisPedIsHolding(); + void DropEntityThatThisPedIsHolding(unsigned char arg0); + bool CanThrowEntityThatThisPedIsHolding(); + bool IsPlayingHandSignal(); + void StopPlayingHandSignal(); + float GetWalkAnimSpeed(); + void SetPedDefaultDecisionMaker(); + // limitAngle in radians + bool CanSeeEntity(CEntity* entity, float limitAngle); + bool PositionPedOutOfCollision(int arg0, CVehicle* arg1, bool arg2); + bool PositionAnyPedOutOfCollision(); + bool OurPedCanSeeThisEntity(CEntity* entity, bool isSpotted); + void SortPeds(CPed** pedList, int arg1, int arg2); + void ClearLookFlag(); + float WorkOutHeadingForMovingFirstPerson(float heading); + void UpdatePosition(); + void ProcessBuoyancy(); + bool IsPedInControl(); + void RemoveWeaponModel(int modelIndex); + void AddGogglesModel(int modelIndex, bool* pGogglesType); + void PutOnGoggles(); + char GetWeaponSkill(eWeaponType weaponType); + void SetWeaponSkill(eWeaponType weaponType, char skill); + void ClearLook(); + bool TurnBody(); + bool IsPointerValid(); + void GetBonePosition(RwV3d& outPosition, unsigned int boneId, bool updateSkinBones); + CObject* GiveObjectToPedToHold(int modelIndex, unsigned char replace); + void SetPedState(ePedState pedState); + //1 = default, 2 = scm/mission script + void SetCharCreatedBy(unsigned char createdBy); + void CalculateNewVelocity(); + void CalculateNewOrientation(); + void ClearAll(); + void DoFootLanded(bool leftFoot, unsigned char arg1); + void PlayFootSteps(); + void AddWeaponModel(int modelIndex); + void TakeOffGoggles(); + void GiveWeapon(eWeaponType weaponType, unsigned int ammo, bool likeUnused); + void SetCurrentWeapon(int slot); + void SetCurrentWeapon(eWeaponType weaponType); + void ClearWeapon(eWeaponType weaponType); + void ClearWeapons(); + void RemoveWeaponWhenEnteringVehicle(int arg0); + void ReplaceWeaponWhenExitingVehicle(); + void ReplaceWeaponForScriptedCutscene(); + void RemoveWeaponForScriptedCutscene(); + char GetWeaponSkill(); + void PreRenderAfterTest(); + void SetIdle(); + void SetLook(float heading); + void SetLook(CEntity* entity); + void Look(); + CEntity* AttachPedToEntity(CEntity* entity, CVector offset, unsigned short arg2, float arg3, eWeaponType weaponType); + CEntity* AttachPedToBike(CEntity* entity, CVector offset, unsigned short arg2, float arg3, float arg4, eWeaponType weaponType); + void DettachPedFromEntity(); + void SetAimFlag(float heading); + bool CanWeRunAndFireWithWeapon(); + void RequestDelayedWeapon(); + void GiveDelayedWeapon(eWeaponType weaponType, unsigned int ammo); + void GiveWeaponAtStartOfFight(); + void GiveWeaponWhenJoiningGang(); + bool GetPedTalking(); + void DisablePedSpeech(short arg0); + void EnablePedSpeech(); + void DisablePedSpeechForScriptSpeech(short arg0); + void EnablePedSpeechForScriptSpeech(); + void CanPedHoldConversation(); + void SayScript(int arg0, unsigned char arg1, unsigned char arg2, unsigned char arg3); + void Say(unsigned short arg0, unsigned int arg1, float arg2, unsigned char arg3, unsigned char arg4, unsigned char arg5); + void RemoveBodyPart(int boneId, char localDir); + void SpawnFlyingComponent(int arg0, char arg1); + bool DoesLOSBulletHitPed(CColPoint& colPoint); + void RemoveWeaponAnims(int likeUnused, float blendDelta); + bool IsPedHeadAbovePos(float zPos); + void KillPedWithCar(CVehicle* car, float arg1, bool arg2); + void MakeTyresMuddySectorList(CPtrList& ptrList); + void DeadPedMakesTyresBloody(); + void SetModelIndex(unsigned int modelIndex); + + static void* operator new(unsigned int size); + static void operator delete(void* data); +}; + +VALIDATE_SIZE(CPed, 0x79C); + +bool IsPedPointerValid(CPed* ped); +RwObject* SetPedAtomicVisibilityCB(RwObject* rwObject, void* data); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedAcquaintance.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedAcquaintance.h new file mode 100644 index 00000000..35a4b36f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedAcquaintance.h @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CPedAcquaintance { +public: + unsigned int m_nRespect; + unsigned int m_nLike; + unsigned int m_nIgnore; + unsigned int m_nDislike; + unsigned int m_nHate; +}; + +VALIDATE_SIZE(CPedAcquaintance, 0x14); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedClothesDesc.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPedClothesDesc.cpp new file mode 100644 index 00000000..8f3c2d97 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedClothesDesc.cpp @@ -0,0 +1,55 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CPedClothesDesc.h" + + +// Converted from thiscall void CPedClothesDesc::Initialise(void) 0x5A78F0 +void CPedClothesDesc::Initialise() { + plugin::CallMethod<0x5A78F0, CPedClothesDesc *>(this); +} + +// Converted from thiscall void CPedClothesDesc::SetModel(uint modelid ,int eClothesModelPart) 0x5A7910 +void CPedClothesDesc::SetModel(unsigned int modelid, int eClothesModelPart) { + plugin::CallMethod<0x5A7910, CPedClothesDesc *, unsigned int, int>(this, modelid, eClothesModelPart); +} + +// Converted from thiscall void CPedClothesDesc::SetModel(char const* model,int eClothesModelPart) 0x5A7920 +void CPedClothesDesc::SetModel(char const* model, int eClothesModelPart) { + plugin::CallMethod<0x5A7920, CPedClothesDesc *, char const*, int>(this, model, eClothesModelPart); +} + +// Converted from thiscall bool CPedClothesDesc::GetIsWearingBalaclava(void) 0x5A7950 +bool CPedClothesDesc::GetIsWearingBalaclava() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPedClothesDesc::HasVisibleNewHairCut(int arg1) 0x5A7970 +bool CPedClothesDesc::HasVisibleNewHairCut(int arg1) { + return plugin::CallMethodAndReturn(this, arg1); +} + +// Converted from thiscall bool CPedClothesDesc::HasVisibleTattoo(void) 0x5A79D0 +bool CPedClothesDesc::HasVisibleTattoo() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CPedClothesDesc::CPedClothesDesc(void) 0x5A8020 +CPedClothesDesc::CPedClothesDesc() { + plugin::CallMethod<0x5A8020, CPedClothesDesc *>(this); +} + +// Converted from thiscall void CPedClothesDesc::SetTextureAndModel(uint texture,uint model,int eClothesTexturePart) 0x5A8050 +void CPedClothesDesc::SetTextureAndModel(unsigned int texture, unsigned int model, int eClothesTexturePart) { + plugin::CallMethod<0x5A8050, CPedClothesDesc *, unsigned int, unsigned int, int>(this, texture, model, eClothesTexturePart); +} + +// Converted from thiscall void CPedClothesDesc::SetTextureAndModel(char const* texturename,char const* modelname, int eClothesTexturePart) 0x5A8080 +void CPedClothesDesc::SetTextureAndModel(char const* texturename, char const* modelname, int eClothesTexturePart) { + plugin::CallMethod<0x5A8080, CPedClothesDesc *, char const*, char const*, int>(this, texturename, modelname, eClothesTexturePart); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedClothesDesc.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedClothesDesc.h new file mode 100644 index 00000000..2e40fd46 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedClothesDesc.h @@ -0,0 +1,31 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "eClothesModelPart.h" +#include "eClothesTexturePart.h" + +class PLUGIN_API CPedClothesDesc { +public: + unsigned int m_anModelKeys[10]; + unsigned int m_anTextureKeys[18]; + float m_fFatStat; + float m_fMuscleStat; + + void Initialise(); + void SetModel(unsigned int modelid, int eClothesModelPart); + void SetModel(char const* model, int eClothesModelPart); + bool GetIsWearingBalaclava(); + bool HasVisibleNewHairCut(int arg1); + bool HasVisibleTattoo(); + CPedClothesDesc(); + void SetTextureAndModel(unsigned int texture, unsigned int model, int eClothesTexturePart); + void SetTextureAndModel(char const* texturename, char const* modelname, int eClothesTexturePart); +}; + +VALIDATE_SIZE(CPedClothesDesc, 0x78); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroup.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroup.cpp new file mode 100644 index 00000000..25278980 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroup.cpp @@ -0,0 +1,85 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPedGroup.h" + +PLUGIN_SOURCE_FILE + +int ctor_addr(CPedGroup) = ADDRESS_BY_VERSION(0x5FC150, 0, 0, 0, 0, 0); +int ctor_gaddr(CPedGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5FC150, 0, 0, 0, 0, 0); + +int dtor_addr(CPedGroup) = ADDRESS_BY_VERSION(0x5FC190, 0, 0, 0, 0, 0); +int dtor_gaddr(CPedGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5FC190, 0, 0, 0, 0, 0); + +int addrof(CPedGroup::FindDistanceToFurthestMember) = ADDRESS_BY_VERSION(0x5FB010, 0, 0, 0, 0, 0); +int gaddrof(CPedGroup::FindDistanceToFurthestMember) = GLOBAL_ADDRESS_BY_VERSION(0x5FB010, 0, 0, 0, 0, 0); + +float CPedGroup::FindDistanceToFurthestMember() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroup::FindDistanceToFurthestMember), this); +} + +int addrof(CPedGroup::FindDistanceToNearestMember) = ADDRESS_BY_VERSION(0x5FB0A0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroup::FindDistanceToNearestMember) = GLOBAL_ADDRESS_BY_VERSION(0x5FB0A0, 0, 0, 0, 0, 0); + +float CPedGroup::FindDistanceToNearestMember(CPed **ppOutNearestMember) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroup::FindDistanceToNearestMember), this, ppOutNearestMember); +} + +int addrof(CPedGroup::Flush) = ADDRESS_BY_VERSION(0x5FB790, 0, 0, 0, 0, 0); +int gaddrof(CPedGroup::Flush) = GLOBAL_ADDRESS_BY_VERSION(0x5FB790, 0, 0, 0, 0, 0); + +void CPedGroup::Flush() { + plugin::CallMethodDynGlobal(gaddrof(CPedGroup::Flush), this); +} + +int addrof(CPedGroup::GetClosestGroupPed) = ADDRESS_BY_VERSION(0x5FACD0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroup::GetClosestGroupPed) = GLOBAL_ADDRESS_BY_VERSION(0x5FACD0, 0, 0, 0, 0, 0); + +CPed *CPedGroup::GetClosestGroupPed(CPed *ped, float *pOutDistance) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroup::GetClosestGroupPed), this, ped, pOutDistance); +} + +int addrof(CPedGroup::IsAnyoneUsingCar) = ADDRESS_BY_VERSION(0x5F7DB0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroup::IsAnyoneUsingCar) = GLOBAL_ADDRESS_BY_VERSION(0x5F7DB0, 0, 0, 0, 0, 0); + +bool CPedGroup::IsAnyoneUsingCar(CVehicle const *vehicle) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroup::IsAnyoneUsingCar), this, vehicle); +} + +int addrof(CPedGroup::PlayerGaveCommand_Attack) = ADDRESS_BY_VERSION(0x5F7CC0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroup::PlayerGaveCommand_Attack) = GLOBAL_ADDRESS_BY_VERSION(0x5F7CC0, 0, 0, 0, 0, 0); + +void CPedGroup::PlayerGaveCommand_Attack(CPed *playerPed, CPed *ped) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroup::PlayerGaveCommand_Attack), this, playerPed, ped); +} + +int addrof(CPedGroup::PlayerGaveCommand_Gather) = ADDRESS_BY_VERSION(0x5FAB60, 0, 0, 0, 0, 0); +int gaddrof(CPedGroup::PlayerGaveCommand_Gather) = GLOBAL_ADDRESS_BY_VERSION(0x5FAB60, 0, 0, 0, 0, 0); + +void CPedGroup::PlayerGaveCommand_Gather(CPed *ped) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroup::PlayerGaveCommand_Gather), this, ped); +} + +int addrof(CPedGroup::Process) = ADDRESS_BY_VERSION(0x5FC7E0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroup::Process) = GLOBAL_ADDRESS_BY_VERSION(0x5FC7E0, 0, 0, 0, 0, 0); + +void CPedGroup::Process() { + plugin::CallMethodDynGlobal(gaddrof(CPedGroup::Process), this); +} + +int addrof(CPedGroup::RemoveAllFollowers) = ADDRESS_BY_VERSION(0x5FB7D0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroup::RemoveAllFollowers) = GLOBAL_ADDRESS_BY_VERSION(0x5FB7D0, 0, 0, 0, 0, 0); + +void CPedGroup::RemoveAllFollowers() { + plugin::CallMethodDynGlobal(gaddrof(CPedGroup::RemoveAllFollowers), this); +} + +int addrof(CPedGroup::Teleport) = ADDRESS_BY_VERSION(0x5F7AD0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroup::Teleport) = GLOBAL_ADDRESS_BY_VERSION(0x5F7AD0, 0, 0, 0, 0, 0); + +void CPedGroup::Teleport(CVector const *Pos) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroup::Teleport), this, Pos); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroup.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroup.h new file mode 100644 index 00000000..7e5f18c8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroup.h @@ -0,0 +1,43 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPedGroupMembership.h" +#include "CPedGroupIntelligence.h" +#include "CVector.h" +#include "CPed.h" +#include "CVehicle.h" + +class PLUGIN_API CPedGroup { + PLUGIN_NO_DEFAULT_CONSTRUCTION(CPedGroup) + +public: + int field_0; + bool m_bMembersEnterLeadersVehicle; +private: + char _pad5[3]; +public: + CPedGroupMembership m_groupMembership; + float m_fSeparationRange; + CPedGroupIntelligence m_groupIntelligence; + + SUPPORTED_10US float FindDistanceToFurthestMember(); + SUPPORTED_10US float FindDistanceToNearestMember(CPed **ppOutNearestMember); + SUPPORTED_10US void Flush(); + SUPPORTED_10US CPed *GetClosestGroupPed(CPed *ped, float *pOutDistance); + SUPPORTED_10US bool IsAnyoneUsingCar(CVehicle const *vehicle); + SUPPORTED_10US void PlayerGaveCommand_Attack(CPed *playerPed, CPed *ped); + SUPPORTED_10US void PlayerGaveCommand_Gather(CPed *ped); + SUPPORTED_10US void Process(); + SUPPORTED_10US void RemoveAllFollowers(); + SUPPORTED_10US void Teleport(CVector const *Pos); +}; + +VALIDATE_SIZE(CPedGroup, 0x2D4); + +#include "meta/meta.CPedGroup.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupIntelligence.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupIntelligence.cpp new file mode 100644 index 00000000..d6093b93 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupIntelligence.cpp @@ -0,0 +1,211 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPedGroupIntelligence.h" + +PLUGIN_SOURCE_FILE + +int ctor_addr(CPedGroupIntelligence) = ADDRESS_BY_VERSION(0x5F7250, 0, 0, 0, 0, 0); +int ctor_gaddr(CPedGroupIntelligence) = GLOBAL_ADDRESS_BY_VERSION(0x5F7250, 0, 0, 0, 0, 0); + +int dtor_addr(CPedGroupIntelligence) = ADDRESS_BY_VERSION(0x5F7350, 0, 0, 0, 0, 0); +int dtor_gaddr(CPedGroupIntelligence) = GLOBAL_ADDRESS_BY_VERSION(0x5F7350, 0, 0, 0, 0, 0); + +int addrof(CPedGroupIntelligence::AddEvent) = ADDRESS_BY_VERSION(0x5F7470, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::AddEvent) = GLOBAL_ADDRESS_BY_VERSION(0x5F7470, 0, 0, 0, 0, 0); + +bool CPedGroupIntelligence::AddEvent(CEvent *event) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupIntelligence::AddEvent), this, event); +} + +int addrof(CPedGroupIntelligence::ComputeDefaultTasks) = ADDRESS_BY_VERSION(0x5F88D0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::ComputeDefaultTasks) = GLOBAL_ADDRESS_BY_VERSION(0x5F88D0, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::ComputeDefaultTasks(CPed *ped) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::ComputeDefaultTasks), this, ped); +} + +int addrof(CPedGroupIntelligence::ComputeEventResponseTasks) = ADDRESS_BY_VERSION(0x5FC440, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::ComputeEventResponseTasks) = GLOBAL_ADDRESS_BY_VERSION(0x5FC440, 0, 0, 0, 0, 0); + +void *CPedGroupIntelligence::ComputeEventResponseTasks() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupIntelligence::ComputeEventResponseTasks), this); +} + +int addrof(CPedGroupIntelligence::ComputeScriptCommandTasks) = ADDRESS_BY_VERSION(0x5F7800, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::ComputeScriptCommandTasks) = GLOBAL_ADDRESS_BY_VERSION(0x5F7800, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::ComputeScriptCommandTasks() { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::ComputeScriptCommandTasks), this); +} + +int addrof(CPedGroupIntelligence::FlushTasks) = ADDRESS_BY_VERSION(0x5F79C0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::FlushTasks) = GLOBAL_ADDRESS_BY_VERSION(0x5F79C0, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::FlushTasks(CPedTaskPair *taskpair, CPed *ped) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::FlushTasks), this, taskpair, ped); +} + +int addrof(CPedGroupIntelligence::GetTask) = ADDRESS_BY_VERSION(0x5F7660, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::GetTask) = GLOBAL_ADDRESS_BY_VERSION(0x5F7660, 0, 0, 0, 0, 0); + +CTask *CPedGroupIntelligence::GetTask(CPed *ped, CPedTaskPair const *taskpair) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupIntelligence::GetTask), this, ped, taskpair); +} + +int addrof(CPedGroupIntelligence::GetTaskDefault) = ADDRESS_BY_VERSION(0x5F86C0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::GetTaskDefault) = GLOBAL_ADDRESS_BY_VERSION(0x5F86C0, 0, 0, 0, 0, 0); + +CTask *CPedGroupIntelligence::GetTaskDefault(CPed *ped) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupIntelligence::GetTaskDefault), this, ped); +} + +int addrof(CPedGroupIntelligence::GetTaskScriptCommand) = ADDRESS_BY_VERSION(0x5F8690, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::GetTaskScriptCommand) = GLOBAL_ADDRESS_BY_VERSION(0x5F8690, 0, 0, 0, 0, 0); + +CTask *CPedGroupIntelligence::GetTaskScriptCommand(CPed *ped) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupIntelligence::GetTaskScriptCommand), this, ped); +} + +int addrof(CPedGroupIntelligence::GetTaskSecondary) = ADDRESS_BY_VERSION(0x5F8620, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::GetTaskSecondary) = GLOBAL_ADDRESS_BY_VERSION(0x5F8620, 0, 0, 0, 0, 0); + +CTask *CPedGroupIntelligence::GetTaskSecondary(CPed *ped) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupIntelligence::GetTaskSecondary), this, ped); +} + +int addrof(CPedGroupIntelligence::GetTaskSecondarySlot) = ADDRESS_BY_VERSION(0x5F8650, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::GetTaskSecondarySlot) = GLOBAL_ADDRESS_BY_VERSION(0x5F8650, 0, 0, 0, 0, 0); + +signed int CPedGroupIntelligence::GetTaskSecondarySlot(CPed *ped) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupIntelligence::GetTaskSecondarySlot), this, ped); +} + +int addrof(CPedGroupIntelligence::IsCurrentEventValid) = ADDRESS_BY_VERSION(0x5F77A0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::IsCurrentEventValid) = GLOBAL_ADDRESS_BY_VERSION(0x5F77A0, 0, 0, 0, 0, 0); + +bool CPedGroupIntelligence::IsCurrentEventValid() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupIntelligence::IsCurrentEventValid), this); +} + +int addrof(CPedGroupIntelligence::IsGroupResponding) = ADDRESS_BY_VERSION(0x5F7760, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::IsGroupResponding) = GLOBAL_ADDRESS_BY_VERSION(0x5F7760, 0, 0, 0, 0, 0); + +bool CPedGroupIntelligence::IsGroupResponding() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupIntelligence::IsGroupResponding), this); +} + +int addrof(CPedGroupIntelligence::Process) = ADDRESS_BY_VERSION(0x5FC4A0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::Process) = GLOBAL_ADDRESS_BY_VERSION(0x5FC4A0, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::Process() { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::Process), this); +} + +int addrof(CPedGroupIntelligence::ProcessIgnorePlayerGroup) = ADDRESS_BY_VERSION(0x5F87A0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::ProcessIgnorePlayerGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5F87A0, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::ProcessIgnorePlayerGroup() { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::ProcessIgnorePlayerGroup), this); +} + +int addrof(CPedGroupIntelligence::ReportAllBarScriptTasksFinished) = ADDRESS_BY_VERSION(0x5F8780, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::ReportAllBarScriptTasksFinished) = GLOBAL_ADDRESS_BY_VERSION(0x5F8780, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::ReportAllBarScriptTasksFinished() { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::ReportAllBarScriptTasksFinished), this); +} + +int addrof_o(CPedGroupIntelligence::ReportAllTasksFinished, void (CPedGroupIntelligence::*)(CPedTaskPair *)) = ADDRESS_BY_VERSION(0x5F7730, 0, 0, 0, 0, 0); +int gaddrof_o(CPedGroupIntelligence::ReportAllTasksFinished, void (CPedGroupIntelligence::*)(CPedTaskPair *)) = GLOBAL_ADDRESS_BY_VERSION(0x5F7730, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::ReportAllTasksFinished(CPedTaskPair *taskpair) { + plugin::CallMethodDynGlobal(gaddrof_o(CPedGroupIntelligence::ReportAllTasksFinished, void (CPedGroupIntelligence::*)(CPedTaskPair *)), this, taskpair); +} + +int addrof_o(CPedGroupIntelligence::ReportAllTasksFinished, void (CPedGroupIntelligence::*)()) = ADDRESS_BY_VERSION(0x5F8750, 0, 0, 0, 0, 0); +int gaddrof_o(CPedGroupIntelligence::ReportAllTasksFinished, void (CPedGroupIntelligence::*)()) = GLOBAL_ADDRESS_BY_VERSION(0x5F8750, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::ReportAllTasksFinished() { + plugin::CallMethodDynGlobal(gaddrof_o(CPedGroupIntelligence::ReportAllTasksFinished, void (CPedGroupIntelligence::*)()), this); +} + +int addrof_o(CPedGroupIntelligence::ReportFinishedTask, bool (CPedGroupIntelligence::*)(CPed const *, CTask const *, CPedTaskPair *)) = ADDRESS_BY_VERSION(0x5F76C0, 0, 0, 0, 0, 0); +int gaddrof_o(CPedGroupIntelligence::ReportFinishedTask, bool (CPedGroupIntelligence::*)(CPed const *, CTask const *, CPedTaskPair *)) = GLOBAL_ADDRESS_BY_VERSION(0x5F76C0, 0, 0, 0, 0, 0); + +bool CPedGroupIntelligence::ReportFinishedTask(CPed const *ped, CTask const *task, CPedTaskPair *taskpair) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof_o(CPedGroupIntelligence::ReportFinishedTask, bool (CPedGroupIntelligence::*)(CPed const *, CTask const *, CPedTaskPair *)), this, ped, task, taskpair); +} + +int addrof_o(CPedGroupIntelligence::ReportFinishedTask, bool (CPedGroupIntelligence::*)(CPed const *, CTask const *)) = ADDRESS_BY_VERSION(0x5F86F0, 0, 0, 0, 0, 0); +int gaddrof_o(CPedGroupIntelligence::ReportFinishedTask, bool (CPedGroupIntelligence::*)(CPed const *, CTask const *)) = GLOBAL_ADDRESS_BY_VERSION(0x5F86F0, 0, 0, 0, 0, 0); + +bool CPedGroupIntelligence::ReportFinishedTask(CPed const *ped, CTask const *task) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof_o(CPedGroupIntelligence::ReportFinishedTask, bool (CPedGroupIntelligence::*)(CPed const *, CTask const *)), this, ped, task); +} + +int addrof(CPedGroupIntelligence::SetDefaultTask) = ADDRESS_BY_VERSION(0x5F8580, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::SetDefaultTask) = GLOBAL_ADDRESS_BY_VERSION(0x5F8580, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::SetDefaultTask(CPed *ped, CTask const *task) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::SetDefaultTask), this, ped, task); +} + +int addrof(CPedGroupIntelligence::SetDefaultTaskAllocator) = ADDRESS_BY_VERSION(0x5FB280, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::SetDefaultTaskAllocator) = GLOBAL_ADDRESS_BY_VERSION(0x5FB280, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::SetDefaultTaskAllocator(CPedGroupDefaultTaskAllocator const *PedGroupDefaultTaskAllocator) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::SetDefaultTaskAllocator), this, PedGroupDefaultTaskAllocator); +} + +int addrof(CPedGroupIntelligence::SetDefaultTaskAllocatorType) = ADDRESS_BY_VERSION(0x5FBB70, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::SetDefaultTaskAllocatorType) = GLOBAL_ADDRESS_BY_VERSION(0x5FBB70, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::SetDefaultTaskAllocatorType(int nPedGroupTaskAllocator) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::SetDefaultTaskAllocatorType), this, nPedGroupTaskAllocator); +} + +int addrof(CPedGroupIntelligence::SetEventResponseTask) = ADDRESS_BY_VERSION(0x5F8510, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::SetEventResponseTask) = GLOBAL_ADDRESS_BY_VERSION(0x5F8510, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::SetEventResponseTask(CPed *ped, bool arg3, CTask const *task1, bool arg5, CTask const *task2, int arg7) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::SetEventResponseTask), this, ped, arg3, task1, arg5, task2, arg7); +} + +int addrof(CPedGroupIntelligence::SetEventResponseTaskAllocator) = ADDRESS_BY_VERSION(0x5F7440, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::SetEventResponseTaskAllocator) = GLOBAL_ADDRESS_BY_VERSION(0x5F7440, 0, 0, 0, 0, 0); + +int CPedGroupIntelligence::SetEventResponseTaskAllocator(int a2) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupIntelligence::SetEventResponseTaskAllocator), this, a2); +} + +int addrof(CPedGroupIntelligence::SetGroupDecisionMakerType) = ADDRESS_BY_VERSION(0x5F7340, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::SetGroupDecisionMakerType) = GLOBAL_ADDRESS_BY_VERSION(0x5F7340, 0, 0, 0, 0, 0); + +int CPedGroupIntelligence::SetGroupDecisionMakerType(int a2) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupIntelligence::SetGroupDecisionMakerType), this, a2); +} + +int addrof(CPedGroupIntelligence::SetPrimaryTaskAllocator) = ADDRESS_BY_VERSION(0x5F7410, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::SetPrimaryTaskAllocator) = GLOBAL_ADDRESS_BY_VERSION(0x5F7410, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::SetPrimaryTaskAllocator(CTaskAllocator *taskAllocator) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::SetPrimaryTaskAllocator), this, taskAllocator); +} + +int addrof(CPedGroupIntelligence::SetScriptCommandTask) = ADDRESS_BY_VERSION(0x5F8560, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::SetScriptCommandTask) = GLOBAL_ADDRESS_BY_VERSION(0x5F8560, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::SetScriptCommandTask(CPed *ped, CTask const *task) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::SetScriptCommandTask), this, ped, task); +} + +int addrof(CPedGroupIntelligence::SetTask) = ADDRESS_BY_VERSION(0x5F7540, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupIntelligence::SetTask) = GLOBAL_ADDRESS_BY_VERSION(0x5F7540, 0, 0, 0, 0, 0); + +void CPedGroupIntelligence::SetTask(CPed *ped, CTask const *task, CPedTaskPair *taskpair, int arg5, bool arg6) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupIntelligence::SetTask), this, ped, task, taskpair, arg5, arg6); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupIntelligence.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupIntelligence.h new file mode 100644 index 00000000..a8df8d07 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupIntelligence.h @@ -0,0 +1,71 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPedTaskPair.h" +#include "CPed.h" +#include "CTask.h" + +class CGroupEventHandler; +class CPedGroupDefaultTaskAllocator; +class CTaskAllocator; +class CEvent; +class CPedGroup; + +class PLUGIN_API CPedGroupIntelligence { + PLUGIN_NO_DEFAULT_CONSTRUCTION(CPedGroupIntelligence) + +public: + CPedGroup *m_pPedGroup; + CGroupEventHandler *m_pGroupEventHandler; + int m_pEventGroupEvent; + CPedTaskPair m_groupTasks[53]; + unsigned char gap288[4]; + CPedGroupDefaultTaskAllocator *m_pPedGroupDefaultTaskAllocator; + CTaskAllocator *m_pPrimaryTaskAllocator; + CTaskAllocator *m_pEventResponseTaskAllocator; + int m_dwDecisionMakerType; + char field_29C; + + SUPPORTED_10US bool AddEvent(CEvent *event); + SUPPORTED_10US void ComputeDefaultTasks(CPed *ped); + SUPPORTED_10US void *ComputeEventResponseTasks(); + SUPPORTED_10US void ComputeScriptCommandTasks(); + SUPPORTED_10US void FlushTasks(CPedTaskPair *taskpair, CPed *ped); + SUPPORTED_10US CTask *GetTask(CPed *ped, CPedTaskPair const *taskpair); + SUPPORTED_10US CTask *GetTaskDefault(CPed *ped); + SUPPORTED_10US CTask *GetTaskScriptCommand(CPed *ped); + SUPPORTED_10US CTask *GetTaskSecondary(CPed *ped); + SUPPORTED_10US signed int GetTaskSecondarySlot(CPed *ped); + SUPPORTED_10US bool IsCurrentEventValid(); + SUPPORTED_10US bool IsGroupResponding(); + SUPPORTED_10US void Process(); + SUPPORTED_10US void ProcessIgnorePlayerGroup(); + SUPPORTED_10US void ReportAllBarScriptTasksFinished(); + SUPPORTED_10US void ReportAllTasksFinished(CPedTaskPair *taskpair); + SUPPORTED_10US void ReportAllTasksFinished(); + SUPPORTED_10US bool ReportFinishedTask(CPed const *ped, CTask const *task, CPedTaskPair *taskpair); + SUPPORTED_10US bool ReportFinishedTask(CPed const *ped, CTask const *task); + SUPPORTED_10US void SetDefaultTask(CPed *ped, CTask const *task); + SUPPORTED_10US void SetDefaultTaskAllocator(CPedGroupDefaultTaskAllocator const *PedGroupDefaultTaskAllocator); + //! see ePedGroupTaskAllocator + SUPPORTED_10US void SetDefaultTaskAllocatorType(int nPedGroupTaskAllocator); + //! arg3 always true + //! arg5 always false + //! arg7 always -1 + SUPPORTED_10US void SetEventResponseTask(CPed *ped, bool arg3, CTask const *task1, bool arg5, CTask const *task2, int arg7); + SUPPORTED_10US int SetEventResponseTaskAllocator(int a2); + SUPPORTED_10US int SetGroupDecisionMakerType(int a2); + SUPPORTED_10US void SetPrimaryTaskAllocator(CTaskAllocator *taskAllocator); + SUPPORTED_10US void SetScriptCommandTask(CPed *ped, CTask const *task); + SUPPORTED_10US void SetTask(CPed *ped, CTask const *task, CPedTaskPair *taskpair, int arg5, bool arg6); +}; + +VALIDATE_SIZE(CPedGroupIntelligence, 0x2A0); + +#include "meta/meta.CPedGroupIntelligence.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupMembership.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupMembership.cpp new file mode 100644 index 00000000..b2316cb1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupMembership.cpp @@ -0,0 +1,147 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPedGroupMembership.h" + +PLUGIN_SOURCE_FILE + +float const &CPedGroupMembership::ms_fMaxSeparation = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x86C6BC, 0, 0, 0, 0, 0)); +float const &CPedGroupMembership::ms_fPlayerGroupMaxSeparation = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x86C6C0, 0, 0, 0, 0, 0)); + +int ctor_addr(CPedGroupMembership) = ADDRESS_BY_VERSION(0x5F6930, 0, 0, 0, 0, 0); +int ctor_gaddr(CPedGroupMembership) = GLOBAL_ADDRESS_BY_VERSION(0x5F6930, 0, 0, 0, 0, 0); + +int ctor_addr_o(CPedGroupMembership, void(CPedGroupMembership const *)) = ADDRESS_BY_VERSION(0x5FB140, 0, 0, 0, 0, 0); +int ctor_gaddr_o(CPedGroupMembership, void(CPedGroupMembership const *)) = GLOBAL_ADDRESS_BY_VERSION(0x5FB140, 0, 0, 0, 0, 0); + +int dtor_addr(CPedGroupMembership) = ADDRESS_BY_VERSION(0x5FB990, 0, 0, 0, 0, 0); +int dtor_gaddr(CPedGroupMembership) = GLOBAL_ADDRESS_BY_VERSION(0x5FB990, 0, 0, 0, 0, 0); + +int addrof(CPedGroupMembership::AddFollower) = ADDRESS_BY_VERSION(0x5F8020, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::AddFollower) = GLOBAL_ADDRESS_BY_VERSION(0x5F8020, 0, 0, 0, 0, 0); + +void CPedGroupMembership::AddFollower(CPed *ped) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupMembership::AddFollower), this, ped); +} + +int addrof(CPedGroupMembership::AddMember) = ADDRESS_BY_VERSION(0x5F6AE0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::AddMember) = GLOBAL_ADDRESS_BY_VERSION(0x5F6AE0, 0, 0, 0, 0, 0); + +void CPedGroupMembership::AddMember(CPed *member, int memberID) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupMembership::AddMember), this, member, memberID); +} + +int addrof(CPedGroupMembership::AppointNewLeader) = ADDRESS_BY_VERSION(0x5FB240, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::AppointNewLeader) = GLOBAL_ADDRESS_BY_VERSION(0x5FB240, 0, 0, 0, 0, 0); + +void CPedGroupMembership::AppointNewLeader() { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupMembership::AppointNewLeader), this); +} + +int addrof(CPedGroupMembership::CountMembers) = ADDRESS_BY_VERSION(0x5F6A50, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::CountMembers) = GLOBAL_ADDRESS_BY_VERSION(0x5F6A50, 0, 0, 0, 0, 0); + +int CPedGroupMembership::CountMembers() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupMembership::CountMembers), this); +} + +int addrof(CPedGroupMembership::CountMembersExcludingLeader) = ADDRESS_BY_VERSION(0x5F6AA0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::CountMembersExcludingLeader) = GLOBAL_ADDRESS_BY_VERSION(0x5F6AA0, 0, 0, 0, 0, 0); + +int CPedGroupMembership::CountMembersExcludingLeader() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupMembership::CountMembersExcludingLeader), this); +} + +int addrof(CPedGroupMembership::Flush) = ADDRESS_BY_VERSION(0x5FB160, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::Flush) = GLOBAL_ADDRESS_BY_VERSION(0x5FB160, 0, 0, 0, 0, 0); + +void CPedGroupMembership::Flush() { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupMembership::Flush), this); +} + +int addrof(CPedGroupMembership::From) = ADDRESS_BY_VERSION(0x5F7FE0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::From) = GLOBAL_ADDRESS_BY_VERSION(0x5F7FE0, 0, 0, 0, 0, 0); + +void CPedGroupMembership::From(CPedGroupMembership const *obj) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupMembership::From), this, obj); +} + +int addrof(CPedGroupMembership::GetLeader) = ADDRESS_BY_VERSION(0x5F69A0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::GetLeader) = GLOBAL_ADDRESS_BY_VERSION(0x5F69A0, 0, 0, 0, 0, 0); + +CPed *CPedGroupMembership::GetLeader() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupMembership::GetLeader), this); +} + +int addrof(CPedGroupMembership::GetMember) = ADDRESS_BY_VERSION(0x5F69B0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::GetMember) = GLOBAL_ADDRESS_BY_VERSION(0x5F69B0, 0, 0, 0, 0, 0); + +CPed *CPedGroupMembership::GetMember(int memberId) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupMembership::GetMember), this, memberId); +} + +int addrof(CPedGroupMembership::IsFollower) = ADDRESS_BY_VERSION(0x5F69E0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::IsFollower) = GLOBAL_ADDRESS_BY_VERSION(0x5F69E0, 0, 0, 0, 0, 0); + +bool CPedGroupMembership::IsFollower(CPed const *ped) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupMembership::IsFollower), this, ped); +} + +int addrof(CPedGroupMembership::IsLeader) = ADDRESS_BY_VERSION(0x5F69C0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::IsLeader) = GLOBAL_ADDRESS_BY_VERSION(0x5F69C0, 0, 0, 0, 0, 0); + +bool CPedGroupMembership::IsLeader(CPed const *ped) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupMembership::IsLeader), this, ped); +} + +int addrof(CPedGroupMembership::IsMember) = ADDRESS_BY_VERSION(0x5F6A10, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::IsMember) = GLOBAL_ADDRESS_BY_VERSION(0x5F6A10, 0, 0, 0, 0, 0); + +bool CPedGroupMembership::IsMember(CPed const *ped) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupMembership::IsMember), this, ped); +} + +int addrof(CPedGroupMembership::Process) = ADDRESS_BY_VERSION(0x5FBA60, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::Process) = GLOBAL_ADDRESS_BY_VERSION(0x5FBA60, 0, 0, 0, 0, 0); + +void CPedGroupMembership::Process() { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupMembership::Process), this); +} + +int addrof(CPedGroupMembership::RemoveAllFollowers) = ADDRESS_BY_VERSION(0x5FB190, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::RemoveAllFollowers) = GLOBAL_ADDRESS_BY_VERSION(0x5FB190, 0, 0, 0, 0, 0); + +void CPedGroupMembership::RemoveAllFollowers(bool bCreatedByGameOnly) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupMembership::RemoveAllFollowers), this, bCreatedByGameOnly); +} + +int addrof(CPedGroupMembership::RemoveMember) = ADDRESS_BY_VERSION(0x5F80D0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::RemoveMember) = GLOBAL_ADDRESS_BY_VERSION(0x5F80D0, 0, 0, 0, 0, 0); + +void CPedGroupMembership::RemoveMember(int memberID) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupMembership::RemoveMember), this, memberID); +} + +int addrof(CPedGroupMembership::RemoveNFollowers) = ADDRESS_BY_VERSION(0x5FB1D0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::RemoveNFollowers) = GLOBAL_ADDRESS_BY_VERSION(0x5FB1D0, 0, 0, 0, 0, 0); + +char CPedGroupMembership::RemoveNFollowers(int count) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupMembership::RemoveNFollowers), this, count); +} + +int addrof(CPedGroupMembership::SetLeader) = ADDRESS_BY_VERSION(0x5FB9C0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::SetLeader) = GLOBAL_ADDRESS_BY_VERSION(0x5FB9C0, 0, 0, 0, 0, 0); + +void CPedGroupMembership::SetLeader(CPed *ped) { + plugin::CallMethodDynGlobal(gaddrof(CPedGroupMembership::SetLeader), this, ped); +} + +int addrof(CPedGroupMembership::GetObjectForPedToHold) = ADDRESS_BY_VERSION(0x5F6950, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupMembership::GetObjectForPedToHold) = GLOBAL_ADDRESS_BY_VERSION(0x5F6950, 0, 0, 0, 0, 0); + +signed int CPedGroupMembership::GetObjectForPedToHold() { + return plugin::CallAndReturnDynGlobal(gaddrof(CPedGroupMembership::GetObjectForPedToHold)); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupMembership.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupMembership.h new file mode 100644 index 00000000..aad39892 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupMembership.h @@ -0,0 +1,49 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPed.h" + +class CPedGroup; + +class PLUGIN_API CPedGroupMembership { + PLUGIN_NO_DEFAULT_CONSTRUCTION(CPedGroupMembership) + +public: + CPedGroup *m_pPedGroup; + CPed *m_apMembers[8]; //!< m_apMembers[7] is a leader + float m_fMaxSeparation; + + SUPPORTED_10US static float const &ms_fMaxSeparation; + SUPPORTED_10US static float const &ms_fPlayerGroupMaxSeparation; + + SUPPORTED_10US void AddFollower(CPed *ped); + SUPPORTED_10US void AddMember(CPed *member, int memberID); + SUPPORTED_10US void AppointNewLeader(); + SUPPORTED_10US int CountMembers(); + SUPPORTED_10US int CountMembersExcludingLeader(); + SUPPORTED_10US void Flush(); + //! copy constructor subfunction + SUPPORTED_10US void From(CPedGroupMembership const *obj); + SUPPORTED_10US CPed *GetLeader(); + SUPPORTED_10US CPed *GetMember(int memberId); + SUPPORTED_10US bool IsFollower(CPed const *ped); + SUPPORTED_10US bool IsLeader(CPed const *ped); + SUPPORTED_10US bool IsMember(CPed const *ped); + SUPPORTED_10US void Process(); + SUPPORTED_10US void RemoveAllFollowers(bool bCreatedByGameOnly); + SUPPORTED_10US void RemoveMember(int memberID); + SUPPORTED_10US char RemoveNFollowers(int count); + SUPPORTED_10US void SetLeader(CPed *ped); + + SUPPORTED_10US static signed int GetObjectForPedToHold(); +}; + +VALIDATE_SIZE(CPedGroupMembership, 0x28); + +#include "meta/meta.CPedGroupMembership.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupPlacer.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupPlacer.cpp new file mode 100644 index 00000000..b7ab9152 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupPlacer.cpp @@ -0,0 +1,40 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPedGroupPlacer.h" + +PLUGIN_SOURCE_FILE + +int const &CPedGroupPlacer::ms_minGangSize = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x86C6C4, 0, 0, 0, 0, 0)); +int const &CPedGroupPlacer::ms_maxGangSize = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x86C6C8, 0, 0, 0, 0, 0)); + +int addrof(CPedGroupPlacer::PlaceChatGroup) = ADDRESS_BY_VERSION(0x5FCE80, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupPlacer::PlaceChatGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5FCE80, 0, 0, 0, 0, 0); + +bool CPedGroupPlacer::PlaceChatGroup(ePedType pedtype, int numOfPeds, CVector const *origin, int unused) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupPlacer::PlaceChatGroup), this, pedtype, numOfPeds, origin, unused); +} + +int addrof(CPedGroupPlacer::PlaceFormationGroup) = ADDRESS_BY_VERSION(0x5FC9B0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupPlacer::PlaceFormationGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5FC9B0, 0, 0, 0, 0, 0); + +bool CPedGroupPlacer::PlaceFormationGroup(ePedType pedtype, int numOfPeds, CVector const *origin, int unused) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupPlacer::PlaceFormationGroup), this, pedtype, numOfPeds, origin, unused); +} + +int addrof(CPedGroupPlacer::PlaceGroup) = ADDRESS_BY_VERSION(0x5FD810, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupPlacer::PlaceGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5FD810, 0, 0, 0, 0, 0); + +bool CPedGroupPlacer::PlaceGroup(ePedType pedtype, int numOfPeds, CVector const *origin, int nGroupPlacerType) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupPlacer::PlaceGroup), this, pedtype, numOfPeds, origin, nGroupPlacerType); +} + +int addrof(CPedGroupPlacer::PlaceRandomGroup) = ADDRESS_BY_VERSION(0x5FD330, 0, 0, 0, 0, 0); +int gaddrof(CPedGroupPlacer::PlaceRandomGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5FD330, 0, 0, 0, 0, 0); + +bool CPedGroupPlacer::PlaceRandomGroup(ePedType pedtype, int numOfPeds, CVector *origin, int unused) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CPedGroupPlacer::PlaceRandomGroup), this, pedtype, numOfPeds, origin, unused); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupPlacer.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupPlacer.h new file mode 100644 index 00000000..10dc2632 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroupPlacer.h @@ -0,0 +1,35 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "ePedType.h" +#include "CVector.h" + +enum PLUGIN_API ePedGroupPlacerType { + GROUP_PLACER_FORMATION1 = 0, + GROUP_PLACER_FORMATION2 = 0x1, //!< same as FORMATION1 + GROUP_PLACER_CHAT1 = 0x2, + GROUP_PLACER_CHAT2 = 0x3, //!< same as CHAT1 + GROUP_PLACER_RANDOM = 0x4 +}; + +class PLUGIN_API CPedGroupPlacer { +public: + //! 1 + SUPPORTED_10US static int const &ms_minGangSize; + //! 5 + SUPPORTED_10US static int const &ms_maxGangSize; + + SUPPORTED_10US bool PlaceChatGroup(ePedType pedtype, int numOfPeds, CVector const *origin, int unused); + SUPPORTED_10US bool PlaceFormationGroup(ePedType pedtype, int numOfPeds, CVector const *origin, int unused); + //! see ePedGroupPlacerType + SUPPORTED_10US bool PlaceGroup(ePedType pedtype, int numOfPeds, CVector const *origin, int nGroupPlacerType); + SUPPORTED_10US bool PlaceRandomGroup(ePedType pedtype, int numOfPeds, CVector *origin, int unused); +}; + +#include "meta/meta.CPedGroupPlacer.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroups.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroups.cpp new file mode 100644 index 00000000..39678be4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroups.cpp @@ -0,0 +1,99 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPedGroups.h" + +PLUGIN_SOURCE_FILE + +short(&CPedGroups::ScriptReferenceIndex)[8] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC098D0, 0, 0, 0, 0, 0)); +char(&CPedGroups::ms_activeGroups)[8] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC098E0, 0, 0, 0, 0, 0)); +bool &CPedGroups::ms_bIsPlayerOnAMission = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC098E8, 0, 0, 0, 0, 0)); +unsigned int &CPedGroups::ms_iNoOfPlayerKills = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC098EC, 0, 0, 0, 0, 0)); +CPedGroup(&CPedGroups::ms_groups)[8] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC09920, 0, 0, 0, 0, 0)); + +int addrof(CPedGroups::AddGroup) = ADDRESS_BY_VERSION(0x5FB800, 0, 0, 0, 0, 0); +int gaddrof(CPedGroups::AddGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5FB800, 0, 0, 0, 0, 0); + +signed int CPedGroups::AddGroup() { + return plugin::CallAndReturnDynGlobal(gaddrof(CPedGroups::AddGroup)); +} + +int addrof(CPedGroups::AreInSameGroup) = ADDRESS_BY_VERSION(0x5F7F40, 0, 0, 0, 0, 0); +int gaddrof(CPedGroups::AreInSameGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5F7F40, 0, 0, 0, 0, 0); + +bool CPedGroups::AreInSameGroup(CPed *ped1, CPed *ped2) { + return plugin::CallAndReturnDynGlobal(gaddrof(CPedGroups::AreInSameGroup), ped1, ped2); +} + +int addrof(CPedGroups::CleanUpForShutDown) = ADDRESS_BY_VERSION(0x5FB930, 0, 0, 0, 0, 0); +int gaddrof(CPedGroups::CleanUpForShutDown) = GLOBAL_ADDRESS_BY_VERSION(0x5FB930, 0, 0, 0, 0, 0); + +void CPedGroups::CleanUpForShutDown() { + plugin::CallDynGlobal(gaddrof(CPedGroups::CleanUpForShutDown)); +} + +int addrof(CPedGroups::GetGroupId) = ADDRESS_BY_VERSION(0x5F7EE0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroups::GetGroupId) = GLOBAL_ADDRESS_BY_VERSION(0x5F7EE0, 0, 0, 0, 0, 0); + +signed int CPedGroups::GetGroupId(CPedGroup *pedgrp) { + return plugin::CallAndReturnDynGlobal(gaddrof(CPedGroups::GetGroupId), pedgrp); +} + +int addrof(CPedGroups::GetPedsGroup) = ADDRESS_BY_VERSION(0x5F7E80, 0, 0, 0, 0, 0); +int gaddrof(CPedGroups::GetPedsGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5F7E80, 0, 0, 0, 0, 0); + +char *CPedGroups::GetPedsGroup(CPed *ped) { + return plugin::CallAndReturnDynGlobal(gaddrof(CPedGroups::GetPedsGroup), ped); +} + +int addrof(CPedGroups::Init) = ADDRESS_BY_VERSION(0x5FB8C0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroups::Init) = GLOBAL_ADDRESS_BY_VERSION(0x5FB8C0, 0, 0, 0, 0, 0); + +void CPedGroups::Init() { + plugin::CallDynGlobal(gaddrof(CPedGroups::Init)); +} + +int addrof(CPedGroups::IsGroupLeader) = ADDRESS_BY_VERSION(0x5F7E40, 0, 0, 0, 0, 0); +int gaddrof(CPedGroups::IsGroupLeader) = GLOBAL_ADDRESS_BY_VERSION(0x5F7E40, 0, 0, 0, 0, 0); + +bool CPedGroups::IsGroupLeader(CPed *ped) { + return plugin::CallAndReturnDynGlobal(gaddrof(CPedGroups::IsGroupLeader), ped); +} + +int addrof(CPedGroups::IsInPlayersGroup) = ADDRESS_BY_VERSION(0x5F7F10, 0, 0, 0, 0, 0); +int gaddrof(CPedGroups::IsInPlayersGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5F7F10, 0, 0, 0, 0, 0); + +char CPedGroups::IsInPlayersGroup(CPed *a1) { + return plugin::CallAndReturnDynGlobal(gaddrof(CPedGroups::IsInPlayersGroup), a1); +} + +int addrof(CPedGroups::Process) = ADDRESS_BY_VERSION(0x5FC800, 0, 0, 0, 0, 0); +int gaddrof(CPedGroups::Process) = GLOBAL_ADDRESS_BY_VERSION(0x5FC800, 0, 0, 0, 0, 0); + +void CPedGroups::Process() { + plugin::CallDynGlobal(gaddrof(CPedGroups::Process)); +} + +int addrof(CPedGroups::RegisterKillByPlayer) = ADDRESS_BY_VERSION(0x5F7E30, 0, 0, 0, 0, 0); +int gaddrof(CPedGroups::RegisterKillByPlayer) = GLOBAL_ADDRESS_BY_VERSION(0x5F7E30, 0, 0, 0, 0, 0); + +void CPedGroups::RegisterKillByPlayer() { + plugin::CallDynGlobal(gaddrof(CPedGroups::RegisterKillByPlayer)); +} + +int addrof(CPedGroups::RemoveAllFollowersFromGroup) = ADDRESS_BY_VERSION(0x5FB8A0, 0, 0, 0, 0, 0); +int gaddrof(CPedGroups::RemoveAllFollowersFromGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5FB8A0, 0, 0, 0, 0, 0); + +void CPedGroups::RemoveAllFollowersFromGroup(int groupID) { + plugin::CallDynGlobal(gaddrof(CPedGroups::RemoveAllFollowersFromGroup), groupID); +} + +int addrof(CPedGroups::RemoveGroup) = ADDRESS_BY_VERSION(0x5FB870, 0, 0, 0, 0, 0); +int gaddrof(CPedGroups::RemoveGroup) = GLOBAL_ADDRESS_BY_VERSION(0x5FB870, 0, 0, 0, 0, 0); + +void CPedGroups::RemoveGroup(int groupID) { + plugin::CallDynGlobal(gaddrof(CPedGroups::RemoveGroup), groupID); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroups.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroups.h new file mode 100644 index 00000000..14b1d933 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedGroups.h @@ -0,0 +1,36 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPed.h" +#include "CPedGroup.h" + +class PLUGIN_API CPedGroups { +public: + SUPPORTED_10US static short(&ScriptReferenceIndex)[8]; // static short ScriptReferenceIndex[8] + SUPPORTED_10US static char(&ms_activeGroups)[8]; // static char ms_activeGroups[8] + SUPPORTED_10US static bool &ms_bIsPlayerOnAMission; + SUPPORTED_10US static unsigned int &ms_iNoOfPlayerKills; + SUPPORTED_10US static CPedGroup(&ms_groups)[8]; // static CPedGroup ms_groups[8] + + //! return the index of the added group , return -1 if failed. + SUPPORTED_10US static signed int AddGroup(); + SUPPORTED_10US static bool AreInSameGroup(CPed *ped1, CPed *ped2); + SUPPORTED_10US static void CleanUpForShutDown(); + SUPPORTED_10US static signed int GetGroupId(CPedGroup *pedgrp); + SUPPORTED_10US static char *GetPedsGroup(CPed *ped); + SUPPORTED_10US static void Init(); + SUPPORTED_10US static bool IsGroupLeader(CPed *ped); + SUPPORTED_10US static char IsInPlayersGroup(CPed *a1); + SUPPORTED_10US static void Process(); + SUPPORTED_10US static void RegisterKillByPlayer(); + SUPPORTED_10US static void RemoveAllFollowersFromGroup(int groupID); + SUPPORTED_10US static void RemoveGroup(int groupID); +}; + +#include "meta/meta.CPedGroups.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedIK.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPedIK.cpp new file mode 100644 index 00000000..71acdd01 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedIK.cpp @@ -0,0 +1,42 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ + +#include "CPedIK.h" + +// Converted from thiscall void CPedIK::RotateTorso(AnimBlendFrameData *bone,LimbOrientation &orientation,bool flag) 0x5FDDB0 +void CPedIK::RotateTorso(AnimBlendFrameData* bone, LimbOrientation& orientation, bool flag) { + plugin::CallMethod<0x5FDDB0, CPedIK *, AnimBlendFrameData*, LimbOrientation&, bool>(this, bone, orientation, flag); +} + +// Converted from thiscall bool CPedIK::PointGunInDirection(float Z_angle, float arg2 , bool flag , float arg4 ) 0x5FDC00 +bool CPedIK::PointGunInDirection(float Z_angle, float arg2, bool flag, float arg4) { + return plugin::CallMethodAndReturn(this, Z_angle, arg2, flag, arg4); +} + +// Converted from thiscall void CPedIK::PointGunAtPosition(CVector const& posn,float arg2) 0x5FDE20 +void CPedIK::PointGunAtPosition(CVector const& posn, float arg2) { + plugin::CallMethod<0x5FDE20, CPedIK *, CVector const&, float>(this, posn, arg2); +} + +// Converted from cdecl RwMatrixTag* CPedIK::GetWorldMatrix(RwFrame *frame, RwMatrixTag *transformMat) 0x5FD8F0 +RwMatrixTag* CPedIK::GetWorldMatrix(RwFrame* frame, RwMatrixTag* transformMat) { + return plugin::CallAndReturn(frame, transformMat); +} + +MoveLimbResult CPedIK::MoveLimb(LimbOrientation& TorsoOrien, float yaw, float pitch, LimbMovementInfo &LimbMoveInfo) +{ + return plugin::CallAndReturn + (TorsoOrien, yaw, pitch, LimbMoveInfo); +} + +MoveLimbResult CPedIK::MoveLimb(LimbOrientation& TorsoOrien, float yaw, float pitch,LimbMovementInfo &LimbMoveInfo, + float fNormalize) +{ + return plugin::CallAndReturn + (TorsoOrien, yaw, pitch, LimbMoveInfo, fNormalize); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedIK.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedIK.h new file mode 100644 index 00000000..e24cb058 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedIK.h @@ -0,0 +1,75 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "AnimBlendFrameData.h" +#include "CVector.h" + +class CPed; + +// Return flags from MoveLimb() function +enum MoveLimbResult +{ + CANT_REACH_TARGET, + HAVENT_REACHED_TARGET, + REACHED_TARGET +}; + + +struct LimbOrientation +{ +public: + float m_fYaw; + float m_fPitch; +}; +VALIDATE_SIZE(LimbOrientation, 0x8); + + +struct LimbMovementInfo +{ + float maxYaw, minYaw; + float yawD; + float maxPitch, minPitch; + float pitchD; +}; +VALIDATE_SIZE(LimbMovementInfo, 0x18); + +class PLUGIN_API CPedIK { +public: + CPed *m_pPed; + LimbOrientation m_TorsoOrien; + float m_fSlopePitch; + float m_fSlopePitchLimitMult; + float m_fSlopeRoll; + float m_fBodyRoll; + + union + { + unsigned int m_nFlags; + struct + { + unsigned int bGunReachedTarget : 1; + unsigned int bTorsoUsed : 1; + unsigned int bUseArm : 1; + unsigned int bSlopePitch : 1; + }; + }; + + //funcs + void RotateTorso(AnimBlendFrameData* bone, LimbOrientation& orientation, bool flag); + bool PointGunInDirection(float Z_angle, float arg2, bool flag, float arg4); + void PointGunAtPosition(CVector const& posn, float arg2); + static RwMatrixTag* GetWorldMatrix(RwFrame* frame, RwMatrixTag* transformMat); + + static MoveLimbResult MoveLimb(LimbOrientation& TorsoOrien, float yaw, float pitch, LimbMovementInfo &LimbMoveInfo); + static MoveLimbResult MoveLimb(LimbOrientation& TorsoOrien, float yaw, float pitch, LimbMovementInfo &LimbMoveInfo, + float fNormalize); + +}; + +VALIDATE_SIZE(CPedIK, 0x20); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedIntelligence.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPedIntelligence.cpp new file mode 100644 index 00000000..99039b01 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedIntelligence.cpp @@ -0,0 +1,272 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPedIntelligence.h" + +// Converted from thiscall void CPedIntelligence::SetPedDecisionMakerType(int newtype) 0x600B50 +void CPedIntelligence::SetPedDecisionMakerType(int newtype) { + plugin::CallMethod<0x600B50, CPedIntelligence *, int>(this, newtype); +} + +// Converted from thiscall void CPedIntelligence::SetPedDecisionMakerTypeInGroup(int newtype) 0x600BB0 +void CPedIntelligence::SetPedDecisionMakerTypeInGroup(int newtype) { + plugin::CallMethod<0x600BB0, CPedIntelligence *, int>(this, newtype); +} + +// Converted from thiscall void CPedIntelligence::RestorePedDecisionMakerType(void) 0x600BC0 +void CPedIntelligence::RestorePedDecisionMakerType() { + plugin::CallMethod<0x600BC0, CPedIntelligence *>(this); +} + +// Converted from thiscall void CPedIntelligence::SetHearingRange(float range) 0x600BE0 +void CPedIntelligence::SetHearingRange(float range) { + plugin::CallMethod<0x600BE0, CPedIntelligence *, float>(this, range); +} + +// Converted from thiscall void CPedIntelligence::SetSeeingRange(float range) 0x600BF0 +void CPedIntelligence::SetSeeingRange(float range) { + plugin::CallMethod<0x600BF0, CPedIntelligence *, float>(this, range); +} + +// Converted from thiscall bool CPedIntelligence::IsInHearingRange(CVector const& posn) 0x600C00 +bool CPedIntelligence::IsInHearingRange(CVector const& posn) { + return plugin::CallMethodAndReturn(this, posn); +} + +// Converted from thiscall bool CPedIntelligence::IsInSeeingRange(CVector const& posn) 0x600C60 +bool CPedIntelligence::IsInSeeingRange(CVector const& posn) { + return plugin::CallMethodAndReturn(this, posn); +} + +// Converted from thiscall bool CPedIntelligence::FindRespectedFriendInInformRange(void) 0x600CF0 +bool CPedIntelligence::FindRespectedFriendInInformRange() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPedIntelligence::IsRespondingToEvent(int event) 0x600DB0 +bool CPedIntelligence::IsRespondingToEvent(int event) { + return plugin::CallMethodAndReturn(this, event); +} + +// Converted from thiscall void CPedIntelligence::AddTaskPhysResponse(CTask *task,bool arg2) 0x600DC0 +void CPedIntelligence::AddTaskPhysResponse(CTask* task, bool arg2) { + plugin::CallMethod<0x600DC0, CPedIntelligence *, CTask*, bool>(this, task, arg2); +} + +// Converted from thiscall void CPedIntelligence::AddTaskEventResponseTemp(CTask *task,bool arg2) 0x600DE0 +void CPedIntelligence::AddTaskEventResponseTemp(CTask* task, bool arg2) { + plugin::CallMethod<0x600DE0, CPedIntelligence *, CTask*, bool>(this, task, arg2); +} + +// Converted from thiscall void CPedIntelligence::AddTaskEventResponseNonTemp(CTask *task,bool arg2) 0x600E00 +void CPedIntelligence::AddTaskEventResponseNonTemp(CTask* task, bool arg2) { + plugin::CallMethod<0x600E00, CPedIntelligence *, CTask*, bool>(this, task, arg2); +} + +// Converted from thiscall void CPedIntelligence::AddTaskPrimaryMaybeInGroup(CTask *task,bool arg2) 0x600E20 +void CPedIntelligence::AddTaskPrimaryMaybeInGroup(CTask* task, bool arg2) { + plugin::CallMethod<0x600E20, CPedIntelligence *, CTask*, bool>(this, task, arg2); +} + +// Converted from thiscall CTask* CPedIntelligence::FindTaskByType(int type) 0x600EE0 +CTask* CPedIntelligence::FindTaskByType(int type) { + return plugin::CallMethodAndReturn(this, type); +} + +// Converted from thiscall CTaskSimpleFight* CPedIntelligence::GetTaskFighting(void) 0x600F30 +CTaskSimpleFight* CPedIntelligence::GetTaskFighting() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall CTaskSimpleUseGun* CPedIntelligence::GetTaskUseGun(void) 0x600F70 +CTaskSimpleUseGun* CPedIntelligence::GetTaskUseGun() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall CTaskSimpleThrowProjectile* CPedIntelligence::GetTaskThrow(void) 0x600FB0 +CTaskSimpleThrowProjectile* CPedIntelligence::GetTaskThrow() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall CTaskSimpleHoldEntity* CPedIntelligence::GetTaskHold(bool arg1) 0x600FF0 +CTaskSimpleHoldEntity* CPedIntelligence::GetTaskHold(bool arg1) { + return plugin::CallMethodAndReturn(this, arg1); +} + +// Converted from thiscall CTaskSimpleSwim* CPedIntelligence::GetTaskSwim(void) 0x601070 +CTaskSimpleSwim* CPedIntelligence::GetTaskSwim() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall CTaskSimpleDuck* CPedIntelligence::GetTaskDuck(bool arg1) 0x6010A0 +CTaskSimpleDuck* CPedIntelligence::GetTaskDuck(bool arg1) { + return plugin::CallMethodAndReturn(this, arg1); +} + +// Converted from thiscall CTaskSimpleJetPack* CPedIntelligence::GetTaskJetPack(void) 0x601110 +CTaskSimpleJetPack* CPedIntelligence::GetTaskJetPack() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall CTaskSimpleInAir* CPedIntelligence::GetTaskInAir(void) 0x601150 +CTaskSimpleInAir* CPedIntelligence::GetTaskInAir() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall CTaskSimpleClimb* CPedIntelligence::GetTaskClimb(void) 0x601180 +CTaskSimpleClimb* CPedIntelligence::GetTaskClimb() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPedIntelligence::GetUsingParachute(void) 0x6011B0 +bool CPedIntelligence::GetUsingParachute() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CPedIntelligence::SetTaskDuckSecondary(ushort arg1) 0x601230 +void CPedIntelligence::SetTaskDuckSecondary(unsigned short arg1) { + plugin::CallMethod<0x601230, CPedIntelligence *, unsigned short>(this, arg1); +} + +// Converted from thiscall void CPedIntelligence::ClearTaskDuckSecondary(void) 0x601390 +void CPedIntelligence::ClearTaskDuckSecondary() { + plugin::CallMethod<0x601390, CPedIntelligence *>(this); +} + +// Converted from thiscall void CPedIntelligence::ClearTasks(bool arg1,bool arg2) 0x601420 +void CPedIntelligence::ClearTasks(bool arg1, bool arg2) { + plugin::CallMethod<0x601420, CPedIntelligence *, bool, bool>(this, arg1, arg2); +} + +// Converted from thiscall void CPedIntelligence::FlushImmediately(bool arg1) 0x601640 +void CPedIntelligence::FlushImmediately(bool arg1) { + plugin::CallMethod<0x601640, CPedIntelligence *, bool>(this, arg1); +} + +// Converted from thiscall C2dEffect* CPedIntelligence::GetEffectInUse(void) 0x6018D0 +C2dEffect* CPedIntelligence::GetEffectInUse() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CPedIntelligence::SetEffectInUse(C2dEffect *arg1) 0x6018E0 +void CPedIntelligence::SetEffectInUse(C2dEffect* arg1) { + plugin::CallMethod<0x6018E0, CPedIntelligence *, C2dEffect*>(this, arg1); +} + +// Converted from thiscall void CPedIntelligence::ProcessAfterProcCol(void) 0x6018F0 +void CPedIntelligence::ProcessAfterProcCol() { + plugin::CallMethod<0x6018F0, CPedIntelligence *>(this); +} + +// Converted from thiscall void CPedIntelligence::ProcessAfterPreRender(void) 0x6019B0 +void CPedIntelligence::ProcessAfterPreRender() { + plugin::CallMethod<0x6019B0, CPedIntelligence *>(this); +} + +// Converted from thiscall void CPedIntelligence::ProcessEventHandler(void) 0x601BB0 +void CPedIntelligence::ProcessEventHandler() { + plugin::CallMethod<0x601BB0, CPedIntelligence *>(this); +} + +// Converted from thiscall bool CPedIntelligence::IsFriendlyWith(CPed const& ped) 0x601BC0 +bool CPedIntelligence::IsFriendlyWith(CPed const& ped) { + return plugin::CallMethodAndReturn(this, ped); +} + +// Converted from thiscall bool CPedIntelligence::IsThreatenedBy(CPed const& ped) 0x601C30 +bool CPedIntelligence::IsThreatenedBy(CPed const& ped) { + return plugin::CallMethodAndReturn(this, ped); +} + +// Converted from thiscall bool CPedIntelligence::Respects(CPed const& ped) 0x601C90 +bool CPedIntelligence::Respects(CPed const& ped) { + return plugin::CallMethodAndReturn(this, ped); +} + +// Converted from thiscall bool CPedIntelligence::IsInACarOrEnteringOne(void) 0x601CC0 +bool CPedIntelligence::IsInACarOrEnteringOne() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from cdecl bool CPedIntelligence::AreFriends(CPed const& ped1,CPed const& ped2) 0x601D10 +bool CPedIntelligence::AreFriends(CPed const& ped1, CPed const& ped2) { + return plugin::CallAndReturn(ped1, ped2); +} + +// Converted from thiscall bool CPedIntelligence::IsPedGoingSomewhereOnFoot(void) 0x601D50 +bool CPedIntelligence::IsPedGoingSomewhereOnFoot() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall int* CPedIntelligence::GetMoveStateFromGoToTask(void) 0x601D70 +int* CPedIntelligence::GetMoveStateFromGoToTask() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CPedIntelligence::FlushIntelligence(void) 0x601DA0 +void CPedIntelligence::FlushIntelligence() { + plugin::CallMethod<0x601DA0, CPedIntelligence *>(this); +} + +// Converted from thiscall bool CPedIntelligence::TestForStealthKill(CPed *pPed,bool arg2) 0x601E00 +bool CPedIntelligence::TestForStealthKill(CPed* pPed, bool arg2) { + return plugin::CallMethodAndReturn(this, pPed, arg2); +} + +// Converted from thiscall void CPedIntelligence::RecordEventForScript(int EventID,int EventPriority) 0x602050 +void CPedIntelligence::RecordEventForScript(int EventID, int EventPriority) { + plugin::CallMethod<0x602050, CPedIntelligence *, int, int>(this, EventID, EventPriority); +} + +// Converted from thiscall bool CPedIntelligence::HasInterestingEntites(void) 0x602080 +bool CPedIntelligence::HasInterestingEntites() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPedIntelligence::IsInterestingEntity(CEntity *pEntity) 0x6020A0 +bool CPedIntelligence::IsInterestingEntity(CEntity* pEntity) { + return plugin::CallMethodAndReturn(this, pEntity); +} + +// Converted from thiscall void CPedIntelligence::LookAtInterestingEntities(void) 0x6020D0 +void CPedIntelligence::LookAtInterestingEntities() { + plugin::CallMethod<0x6020D0, CPedIntelligence *>(this); +} + +// Converted from thiscall void CPedIntelligence::RemoveAllInterestingEntities(void) 0x602320 +void CPedIntelligence::RemoveAllInterestingEntities() { + plugin::CallMethod<0x602320, CPedIntelligence *>(this); +} + +// Converted from thiscall bool CPedIntelligence::IsPedGoingForCarDoor(void) 0x602350 +bool CPedIntelligence::IsPedGoingForCarDoor() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CPedIntelligence::CanSeeEntityWithLights(CEntity const*pEntity,bool arg2) 0x605550 +float CPedIntelligence::CanSeeEntityWithLights(CEntity const* pEntity, bool arg2) { + return plugin::CallMethodAndReturn(this, pEntity, arg2); +} + +// Converted from thiscall void CPedIntelligence::ProcessStaticCounter(void) 0x605650 +void CPedIntelligence::ProcessStaticCounter() { + plugin::CallMethod<0x605650, CPedIntelligence *>(this); +} + +// Converted from thiscall void CPedIntelligence::ProcessFirst(void) 0x6073A0 +void CPedIntelligence::ProcessFirst() { + plugin::CallMethod<0x6073A0, CPedIntelligence *>(this); +} + +// Converted from thiscall void CPedIntelligence::Process(void) 0x608260 +void CPedIntelligence::Process() { + plugin::CallMethod<0x608260, CPedIntelligence *>(this); +} + +// Converted from cdecl void CPedIntelligence::operator delete(void * arg1) 0x6074E0 +void CPedIntelligence::operator delete(void* arg1) { + plugin::Call<0x6074E0, void*>(arg1); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedIntelligence.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedIntelligence.h new file mode 100644 index 00000000..d901d330 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedIntelligence.h @@ -0,0 +1,116 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskManager.h" +#include "CEventHandler.h" +#include "CEventGroup.h" +#include "CEntityScanner.h" +#include "CTaskTimer.h" +#include "CEventScanner.h" +#include "CTaskSimpleUseGun.h" +#include "CTaskSimpleJetpack.h" +#include "CTaskSimpleFight.h" +#include "CTaskSimpleHoldEntity.h" +#include "CTaskSimpleThrowProjectile.h" +#include "CTaskSimpleSwim.h" +#include "CTaskSimpleDuck.h" +#include "CTaskSimpleClimb.h" +#include "CTaskSimpleJetpack.h" +#include "CTaskSimpleInAir.h" + +class PLUGIN_API CPedIntelligence { +public: + class CPed *m_pPed; + CTaskManager m_TaskMgr; + CEventHandler m_eventHandler; + CEventGroup m_eventGroup; + unsigned int m_nDecisionMakerType; + unsigned int m_nDecisionMakerTypeInGroup; + float m_fHearingRange; + float m_fSeeingRange; + unsigned int m_nDmNumPedsToScan; + float m_fDmRadius; + int field_CC; + char field_D0; + unsigned char m_nEventId; + unsigned char m_nEventPriority; + char field_D3; + CEntityScanner m_vehicleScanner; + CEntityScanner m_pedScanner; + char field_174; + char gap_175[3]; + CTaskTimer field_178; + int field_184; + char field_188; + char gap_189[3]; + CEventScanner m_eventScanner; + char field_260; + char gap_261[3]; + char field_264[16]; + int field_274; + int field_278; + char gap_27C[12]; + class CEntity *m_apInterestingEntities[3]; + + void SetPedDecisionMakerType(int newtype); + void SetPedDecisionMakerTypeInGroup(int newtype); + void RestorePedDecisionMakerType(); + void SetHearingRange(float range); + void SetSeeingRange(float range); + bool IsInHearingRange(CVector const& posn); + bool IsInSeeingRange(CVector const& posn); + bool FindRespectedFriendInInformRange(); + bool IsRespondingToEvent(int event); + void AddTaskPhysResponse(CTask* task, bool arg2); + void AddTaskEventResponseTemp(CTask* task, bool arg2); + void AddTaskEventResponseNonTemp(CTask* task, bool arg2); + void AddTaskPrimaryMaybeInGroup(CTask* task, bool arg2); + CTask* FindTaskByType(int type); + CTaskSimpleFight* GetTaskFighting(); + CTaskSimpleUseGun* GetTaskUseGun(); + CTaskSimpleThrowProjectile* GetTaskThrow(); + CTaskSimpleHoldEntity* GetTaskHold(bool arg1); + CTaskSimpleSwim* GetTaskSwim(); + CTaskSimpleDuck* GetTaskDuck(bool arg1); + CTaskSimpleJetPack* GetTaskJetPack(); + CTaskSimpleInAir* GetTaskInAir(); + CTaskSimpleClimb* GetTaskClimb(); + bool GetUsingParachute(); + void SetTaskDuckSecondary(unsigned short arg1); + void ClearTaskDuckSecondary(); + void ClearTasks(bool arg1, bool arg2); + void FlushImmediately(bool arg1); + C2dEffect* GetEffectInUse(); + void SetEffectInUse(C2dEffect* arg1); + void ProcessAfterProcCol(); + void ProcessAfterPreRender(); + void ProcessEventHandler(); + bool IsFriendlyWith(CPed const& ped); + bool IsThreatenedBy(CPed const& ped); + bool Respects(CPed const& ped); + bool IsInACarOrEnteringOne(); + static bool AreFriends(CPed const& ped1, CPed const& ped2); + bool IsPedGoingSomewhereOnFoot(); + int* GetMoveStateFromGoToTask(); + void FlushIntelligence(); + bool TestForStealthKill(CPed* pPed, bool arg2); + void RecordEventForScript(int EventID, int EventPriority); + bool HasInterestingEntites(); + bool IsInterestingEntity(CEntity* pEntity); + void LookAtInterestingEntities(); + void RemoveAllInterestingEntities(); + bool IsPedGoingForCarDoor(); + float CanSeeEntityWithLights(CEntity const* pEntity, bool arg2); + void ProcessStaticCounter(); + void ProcessFirst(); + void Process(); + static void operator delete(void* arg1); +}; + +VALIDATE_SIZE(CPedIntelligence, 0x294); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedList.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPedList.cpp new file mode 100644 index 00000000..430412f8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedList.cpp @@ -0,0 +1,65 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPedList.h" + +PLUGIN_SOURCE_FILE + +int addrof(CPedList::BuildListFromGroup_NoLeader) = ADDRESS_BY_VERSION(0x699DD0, 0, 0, 0, 0, 0); +int gaddrof(CPedList::BuildListFromGroup_NoLeader) = GLOBAL_ADDRESS_BY_VERSION(0x699DD0, 0, 0, 0, 0, 0); + +void CPedList::BuildListFromGroup_NoLeader(CPedGroupMembership *pedGroupMemberShip) { + plugin::CallMethodDynGlobal(gaddrof(CPedList::BuildListFromGroup_NoLeader), this, pedGroupMemberShip); +} + +int addrof(CPedList::BuildListFromGroup_NotInCar_NoLeader) = ADDRESS_BY_VERSION(0x69A340, 0, 0, 0, 0, 0); +int gaddrof(CPedList::BuildListFromGroup_NotInCar_NoLeader) = GLOBAL_ADDRESS_BY_VERSION(0x69A340, 0, 0, 0, 0, 0); + +void CPedList::BuildListFromGroup_NotInCar_NoLeader(CPedGroupMembership *pedGroupMembership) { + plugin::CallMethodDynGlobal(gaddrof(CPedList::BuildListFromGroup_NotInCar_NoLeader), this, pedGroupMembership); +} + +int addrof(CPedList::BuildListOfPedsOfPedType) = ADDRESS_BY_VERSION(0x69A3B0, 0, 0, 0, 0, 0); +int gaddrof(CPedList::BuildListOfPedsOfPedType) = GLOBAL_ADDRESS_BY_VERSION(0x69A3B0, 0, 0, 0, 0, 0); + +void CPedList::BuildListOfPedsOfPedType(int pedtype) { + plugin::CallMethodDynGlobal(gaddrof(CPedList::BuildListOfPedsOfPedType), this, pedtype); +} + +int addrof(CPedList::Empty) = ADDRESS_BY_VERSION(0x699DB0, 0, 0, 0, 0, 0); +int gaddrof(CPedList::Empty) = GLOBAL_ADDRESS_BY_VERSION(0x699DB0, 0, 0, 0, 0, 0); + +void CPedList::Empty() { + plugin::CallMethodDynGlobal(gaddrof(CPedList::Empty), this); +} + +int addrof(CPedList::ExtractPedsWithGuns) = ADDRESS_BY_VERSION(0x69A4C0, 0, 0, 0, 0, 0); +int gaddrof(CPedList::ExtractPedsWithGuns) = GLOBAL_ADDRESS_BY_VERSION(0x69A4C0, 0, 0, 0, 0, 0); + +void CPedList::ExtractPedsWithGuns(CPedList *pedlist) { + plugin::CallMethodDynGlobal(gaddrof(CPedList::ExtractPedsWithGuns), this, pedlist); +} + +int addrof(CPedList::FillUpHoles) = ADDRESS_BY_VERSION(0x699E20, 0, 0, 0, 0, 0); +int gaddrof(CPedList::FillUpHoles) = GLOBAL_ADDRESS_BY_VERSION(0x699E20, 0, 0, 0, 0, 0); + +void CPedList::FillUpHoles() { + plugin::CallMethodDynGlobal(gaddrof(CPedList::FillUpHoles), this); +} + +int addrof(CPedList::RemovePedsAttackingPedType) = ADDRESS_BY_VERSION(0x69A450, 0, 0, 0, 0, 0); +int gaddrof(CPedList::RemovePedsAttackingPedType) = GLOBAL_ADDRESS_BY_VERSION(0x69A450, 0, 0, 0, 0, 0); + +void CPedList::RemovePedsAttackingPedType(int pedtype) { + plugin::CallMethodDynGlobal(gaddrof(CPedList::RemovePedsAttackingPedType), this, pedtype); +} + +int addrof(CPedList::RemovePedsThatDontListenToPlayer) = ADDRESS_BY_VERSION(0x69A420, 0, 0, 0, 0, 0); +int gaddrof(CPedList::RemovePedsThatDontListenToPlayer) = GLOBAL_ADDRESS_BY_VERSION(0x69A420, 0, 0, 0, 0, 0); + +void CPedList::RemovePedsThatDontListenToPlayer() { + plugin::CallMethodDynGlobal(gaddrof(CPedList::RemovePedsThatDontListenToPlayer), this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedList.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedList.h new file mode 100644 index 00000000..a2ba7726 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedList.h @@ -0,0 +1,30 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPed.h" +#include "CPedGroupMembership.h" + +class PLUGIN_API CPedList { +public: + int m_nCount; + CPed *m_apPeds[30]; + + SUPPORTED_10US void BuildListFromGroup_NoLeader(CPedGroupMembership *pedGroupMemberShip); + SUPPORTED_10US void BuildListFromGroup_NotInCar_NoLeader(CPedGroupMembership *pedGroupMembership); + SUPPORTED_10US void BuildListOfPedsOfPedType(int pedtype); + SUPPORTED_10US void Empty(); + SUPPORTED_10US void ExtractPedsWithGuns(CPedList *pedlist); + SUPPORTED_10US void FillUpHoles(); + SUPPORTED_10US void RemovePedsAttackingPedType(int pedtype); + SUPPORTED_10US void RemovePedsThatDontListenToPlayer(); +}; + +VALIDATE_SIZE(CPedList, 0x7C); + +#include "meta/meta.CPedList.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedModelInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPedModelInfo.cpp new file mode 100644 index 00000000..a455b8c9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedModelInfo.cpp @@ -0,0 +1,8 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPedModelInfo.h" + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedModelInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedModelInfo.h new file mode 100644 index 00000000..c31bd293 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedModelInfo.h @@ -0,0 +1,31 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CClumpModelInfo.h" + +class PLUGIN_API CPedModelInfo : public CClumpModelInfo { +public: + int m_nAnimType; + unsigned int m_nPedType; + unsigned int m_nStatType; + unsigned short m_nCarsCanDriveMask; + unsigned short m_nPedFlags; + CColModel *m_pHitColModel; + unsigned char m_nRadio1; + unsigned char m_nRadio2; + unsigned char m_nRace; +private: + char __pad; +public: + short m_nPedAudioType; + short m_nVoice1; + short m_nVoice2; + short m_nVoiceId; +}; + +VALIDATE_SIZE(CPedModelInfo, 0x44); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedPlacement.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPedPlacement.cpp new file mode 100644 index 00000000..2deac514 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedPlacement.cpp @@ -0,0 +1,37 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPedPlacement.h" + +PLUGIN_SOURCE_FILE + +int addrof(CPedPlacement::FindZCoorForPed) = ADDRESS_BY_VERSION(0x616920, 0, 0, 0, 0, 0); +int gaddrof(CPedPlacement::FindZCoorForPed) = GLOBAL_ADDRESS_BY_VERSION(0x616920, 0, 0, 0, 0, 0); + +bool CPedPlacement::FindZCoorForPed(CVector *pos) { + return plugin::CallAndReturnDynGlobal(gaddrof(CPedPlacement::FindZCoorForPed), pos); +} + +int addrof(CPedPlacement::IsPositionClearForPed) = ADDRESS_BY_VERSION(0x616860, 0, 0, 0, 0, 0); +int gaddrof(CPedPlacement::IsPositionClearForPed) = GLOBAL_ADDRESS_BY_VERSION(0x616860, 0, 0, 0, 0, 0); + +bool CPedPlacement::IsPositionClearForPed(CVector const *pos, float radius, int maxNumObjects, CEntity **pObjectList, unsigned char bCheckVehicles, unsigned char bCheckPeds, unsigned char bCheckObjects) { + return plugin::CallAndReturnDynGlobal(gaddrof(CPedPlacement::IsPositionClearForPed), pos, radius, maxNumObjects, pObjectList, bCheckVehicles, bCheckPeds, bCheckObjects); +} + +int addrof_o(CPedPlacement::IsPositionClearOfCars, CVehicle *(*)(CVector const *)) = ADDRESS_BY_VERSION(0x6168E0, 0, 0, 0, 0, 0); +int gaddrof_o(CPedPlacement::IsPositionClearOfCars, CVehicle *(*)(CVector const *)) = GLOBAL_ADDRESS_BY_VERSION(0x6168E0, 0, 0, 0, 0, 0); + +CVehicle *CPedPlacement::IsPositionClearOfCars(CVector const *pos) { + return plugin::CallAndReturnDynGlobal(gaddrof_o(CPedPlacement::IsPositionClearOfCars, CVehicle *(*)(CVector const *)), pos); +} + +int addrof_o(CPedPlacement::IsPositionClearOfCars, CVehicle *(*)(CPed const *)) = ADDRESS_BY_VERSION(0x616A40, 0, 0, 0, 0, 0); +int gaddrof_o(CPedPlacement::IsPositionClearOfCars, CVehicle *(*)(CPed const *)) = GLOBAL_ADDRESS_BY_VERSION(0x616A40, 0, 0, 0, 0, 0); + +CVehicle *CPedPlacement::IsPositionClearOfCars(CPed const *ped) { + return plugin::CallAndReturnDynGlobal(gaddrof_o(CPedPlacement::IsPositionClearOfCars, CVehicle *(*)(CPed const *)), ped); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedPlacement.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedPlacement.h new file mode 100644 index 00000000..43cc91c1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedPlacement.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" +#include "CEntity.h" +#include "CVehicle.h" +#include "CPed.h" + +class PLUGIN_API CPedPlacement { +public: + SUPPORTED_10US static bool FindZCoorForPed(CVector *pos); + SUPPORTED_10US static bool IsPositionClearForPed(CVector const *pos, float radius, int maxNumObjects, CEntity **pObjectList, unsigned char bCheckVehicles, unsigned char bCheckPeds, unsigned char bCheckObjects); + SUPPORTED_10US static CVehicle *IsPositionClearOfCars(CVector const *pos); + SUPPORTED_10US static CVehicle *IsPositionClearOfCars(CPed const *ped); +}; + +#include "meta/meta.CPedPlacement.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedTaskPair.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPedTaskPair.cpp new file mode 100644 index 00000000..8fc3881a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedTaskPair.cpp @@ -0,0 +1,16 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPedTaskPair.h" + +PLUGIN_SOURCE_FILE + +int addrof(CPedTaskPair::Flush) = ADDRESS_BY_VERSION(0x5E95B0, 0, 0, 0, 0, 0); +int gaddrof(CPedTaskPair::Flush) = GLOBAL_ADDRESS_BY_VERSION(0x5E95B0, 0, 0, 0, 0, 0); + +void CPedTaskPair::Flush() { + plugin::CallMethodDynGlobal(gaddrof(CPedTaskPair::Flush), this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPedTaskPair.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPedTaskPair.h new file mode 100644 index 00000000..362731aa --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPedTaskPair.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPed.h" +#include "CTask.h" + + +class PLUGIN_API CPedTaskPair { +public: + CPed *m_pPed; + CTask *m_pTask; + int field_8; + + SUPPORTED_10US void Flush(); +}; + +VALIDATE_SIZE(CPedTaskPair, 0xC); + +#include "meta/meta.CPedTaskPair.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPhysical.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPhysical.cpp new file mode 100644 index 00000000..aa3192b3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPhysical.cpp @@ -0,0 +1,308 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPhysical.h" + +void CPhysical::ProcessEntityCollision(CEntity *entity, CColPoint *point) +{ + ((void (__thiscall *)(CPhysical*, CEntity *, CColPoint *))(*(void ***)this)[23])(this, entity, point); +} + +// Converted from thiscall void CPhysical::RemoveAndAdd(void) 0x542560 +void CPhysical::RemoveAndAdd() +{ + ((void (__thiscall *)(CPhysical*))0x542560)(this); +} + +// Converted from thiscall void CPhysical::AddToMovingList(void) 0x542800 +void CPhysical::AddToMovingList() +{ + ((void (__thiscall *)(CPhysical*))0x542800)(this); +} + +// Converted from thiscall void CPhysical::RemoveFromMovingList(void) 0x542860 +void CPhysical::RemoveFromMovingList() +{ + ((void (__thiscall *)(CPhysical*))0x542860)(this); +} + +// Converted from thiscall void CPhysical::SetDamagedPieceRecord(float damageIntensity,CEntity *damagingEntity,CColPoint &colPoint,float distanceMult) 0x5428C0 +void CPhysical::SetDamagedPieceRecord(float damageIntensity, CEntity* damagingEntity, CColPoint& colPoint, float distanceMult) +{ + ((void (__thiscall *)(CPhysical*, float, CEntity*, CColPoint&, float))0x5428C0)(this, damageIntensity, damagingEntity, colPoint, distanceMult); +} + +// Converted from thiscall void CPhysical::ApplyMoveForce(CVector force) 0x5429F0 +void CPhysical::ApplyMoveForce(CVector force) +{ + ((void (__thiscall *)(CPhysical*, CVector))0x5429F0)(this, force); +} + +// Converted from thiscall void CPhysical::ApplyTurnForce(CVector dir,CVector velocity) 0x542A50 +void CPhysical::ApplyTurnForce(CVector dir, CVector velocity) +{ + ((void (__thiscall *)(CPhysical*, CVector, CVector))0x542A50)(this, dir, velocity); +} + +// Converted from thiscall void CPhysical::ApplyForce(CVector dir,CVector velocity,bool flag) 0x542B50 +void CPhysical::ApplyForce(CVector dir, CVector velocity, bool flag) +{ + ((void (__thiscall *)(CPhysical*, CVector, CVector, bool))0x542B50)(this, dir, velocity, flag); +} + +// Converted from thiscall CVector CPhysical::GetSpeed(CVector direction) 0x542CE0 +CVector CPhysical::GetSpeed(CVector direction) +{ + CVector result; + ((void (__thiscall *)(CPhysical*, CVector*, CVector))0x542CE0)(this, &result, direction); + return result; +} + +// Converted from thiscall void CPhysical::ApplyMoveSpeed(void) 0x542DD0 +void CPhysical::ApplyMoveSpeed() +{ + ((void (__thiscall *)(CPhysical*))0x542DD0)(this); +} + +// Converted from thiscall void CPhysical::ApplyTurnSpeed(void) 0x542E20 +void CPhysical::ApplyTurnSpeed() +{ + ((void (__thiscall *)(CPhysical*))0x542E20)(this); +} + +// Converted from thiscall void CPhysical::ApplyGravity(void) 0x542FE0 +void CPhysical::ApplyGravity() +{ + ((void (__thiscall *)(CPhysical*))0x542FE0)(this); +} + +// Converted from thiscall void CPhysical::ApplyFrictionMoveForce(CVector moveForce) 0x5430A0 +void CPhysical::ApplyFrictionMoveForce(CVector moveForce) +{ + ((void (__thiscall *)(CPhysical*, CVector))0x5430A0)(this, moveForce); +} + +// Converted from thiscall void CPhysical::ApplyFrictionTurnForce(CVector posn,CVector velocity) 0x543100 +void CPhysical::ApplyFrictionTurnForce(CVector posn, CVector velocity) +{ + ((void (__thiscall *)(CPhysical*, CVector, CVector))0x543100)(this, posn, velocity); +} + +// Converted from thiscall void CPhysical::ApplyFrictionForce(CVector posn,CVector velocity) 0x543220 +void CPhysical::ApplyFrictionForce(CVector posn, CVector velocity) +{ + ((void (__thiscall *)(CPhysical*, CVector, CVector))0x543220)(this, posn, velocity); +} + +// Converted from thiscall void CPhysical::SkipPhysics(void) 0x5433B0 +void CPhysical::SkipPhysics() +{ + ((void (__thiscall *)(CPhysical*))0x5433B0)(this); +} + +// Converted from thiscall void CPhysical::AddCollisionRecord(CEntity *collidedEntity) 0x543490 +void CPhysical::AddCollisionRecord(CEntity* collidedEntity) +{ + ((void (__thiscall *)(CPhysical*, CEntity*))0x543490)(this, collidedEntity); +} + +// Converted from thiscall bool CPhysical::GetHasCollidedWith(CEntity *entity) 0x543540 +bool CPhysical::GetHasCollidedWith(CEntity* entity) +{ + return ((bool (__thiscall *)(CPhysical*, CEntity*))0x543540)(this, entity); +} + +// Converted from thiscall bool CPhysical::GetHasCollidedWithAnyObject(void) 0x543580 +bool CPhysical::GetHasCollidedWithAnyObject() +{ + return ((bool (__thiscall *)(CPhysical*))0x543580)(this); +} + +// Converted from thiscall bool CPhysical::ApplyCollision(CEntity *entity,CColPoint &colPoint,float &) 0x5435C0 +bool CPhysical::ApplyCollision(CEntity* entity, CColPoint& colPoint, float& arg2) +{ + return ((bool (__thiscall *)(CPhysical*, CEntity*, CColPoint&, float&))0x5435C0)(this, entity, colPoint, arg2); +} + +// Converted from thiscall bool CPhysical::ApplySoftCollision(CEntity *entity,CColPoint &colPoint,float &) 0x543890 +bool CPhysical::ApplySoftCollision(CEntity* entity, CColPoint& colPoint, float& arg2) +{ + return ((bool (__thiscall *)(CPhysical*, CEntity*, CColPoint&, float&))0x543890)(this, entity, colPoint, arg2); +} + +// Converted from thiscall bool CPhysical::ApplySpringCollision(float,CVector &,CVector &,float,float,float &) 0x543C90 +bool CPhysical::ApplySpringCollision(float arg0, CVector& arg1, CVector& arg2, float arg3, float arg4, float& arg5) +{ + return ((bool (__thiscall *)(CPhysical*, float, CVector&, CVector&, float, float, float&))0x543C90)(this, arg0, arg1, arg2, arg3, arg4, arg5); +} + +// Converted from thiscall bool CPhysical::ApplySpringCollisionAlt(float,CVector &,CVector &,float,float,CVector &,float &) 0x543D60 +bool CPhysical::ApplySpringCollisionAlt(float arg0, CVector& arg1, CVector& arg2, float arg3, float arg4, CVector& arg5, float& arg6) +{ + return ((bool (__thiscall *)(CPhysical*, float, CVector&, CVector&, float, float, CVector&, float&))0x543D60)(this, arg0, arg1, arg2, arg3, arg4, arg5, arg6); +} + +// Converted from thiscall bool CPhysical::ApplySpringDampening(float,float,CVector &,CVector &,CVector &) 0x543E90 +bool CPhysical::ApplySpringDampening(float arg0, float arg1, CVector& arg2, CVector& arg3, CVector& arg4) +{ + return ((bool (__thiscall *)(CPhysical*, float, float, CVector&, CVector&, CVector&))0x543E90)(this, arg0, arg1, arg2, arg3, arg4); +} + +// Converted from thiscall bool CPhysical::ApplySpringDampeningOld(float,float,CVector &,CVector &,CVector &) 0x544100 +bool CPhysical::ApplySpringDampeningOld(float arg0, float arg1, CVector& arg2, CVector& arg3, CVector& arg4) +{ + return ((bool (__thiscall *)(CPhysical*, float, float, CVector&, CVector&, CVector&))0x544100)(this, arg0, arg1, arg2, arg3, arg4); +} + +// Converted from thiscall void CPhysical::RemoveRefsToEntity(CEntity *entity) 0x544280 +void CPhysical::RemoveRefsToEntity(CEntity* entity) +{ + ((void (__thiscall *)(CPhysical*, CEntity*))0x544280)(this, entity); +} + +// Converted from thiscall void CPhysical::DettachEntityFromEntity(float x,float y,float z,bool useCollision) 0x5442F0 +void CPhysical::DettachEntityFromEntity(float x, float y, float z, bool useCollision) +{ + ((void (__thiscall *)(CPhysical*, float, float, float, bool))0x5442F0)(this, x, y, z, useCollision); +} + +// Converted from thiscall void CPhysical::DettachAutoAttachedEntity(void) 0x5446A0 +void CPhysical::DettachAutoAttachedEntity() +{ + ((void (__thiscall *)(CPhysical*))0x5446A0)(this); +} + +// Converted from thiscall float CPhysical::GetLightingFromCol(bool flag) 0x5447B0 +float CPhysical::GetLightingFromCol(bool flag) +{ + return ((float (__thiscall *)(CPhysical*, bool))0x5447B0)(this, flag); +} + +// Converted from thiscall float CPhysical::GetLightingTotal(void) 0x544850 +float CPhysical::GetLightingTotal() +{ + return ((float (__thiscall *)(CPhysical*))0x544850)(this); +} + +// Converted from thiscall bool CPhysical::CanPhysicalBeDamaged(eWeaponType weapon,uchar *) 0x5448B0 +bool CPhysical::CanPhysicalBeDamaged(eWeaponType weapon, unsigned char* arg1) +{ + return ((bool (__thiscall *)(CPhysical*, eWeaponType, unsigned char*))0x5448B0)(this, weapon, arg1); +} + +// Converted from thiscall void CPhysical::ApplyAirResistance(void) 0x544C40 +void CPhysical::ApplyAirResistance() +{ + ((void (__thiscall *)(CPhysical*))0x544C40)(this); +} + +// Converted from thiscall bool CPhysical::ApplyCollisionAlt(CEntity *entity,CColPoint &colPoint,float &,CVector &,CVector &) 0x544D50 +bool CPhysical::ApplyCollisionAlt(CEntity* entity, CColPoint& colPoint, float& arg2, CVector& arg3, CVector& arg4) +{ + return ((bool (__thiscall *)(CPhysical*, CEntity*, CColPoint&, float&, CVector&, CVector&))0x544D50)(this, entity, colPoint, arg2, arg3, arg4); +} + +// Converted from thiscall bool CPhysical::ApplyFriction(float,CColPoint &colPoint) 0x5454C0 +bool CPhysical::ApplyFriction(float arg0, CColPoint& colPoint) +{ + return ((bool (__thiscall *)(CPhysical*, float, CColPoint&))0x5454C0)(this, arg0, colPoint); +} + +// Converted from thiscall bool CPhysical::ApplyFriction(CPhysical* physical,float,CColPoint &colPoint) 0x545980 +bool CPhysical::ApplyFriction(CPhysical* physical, float arg1, CColPoint& colPoint) +{ + return ((bool (__thiscall *)(CPhysical*, CPhysical*, float, CColPoint&))0x545980)(this, physical, arg1, colPoint); +} + +// Converted from thiscall bool CPhysical::ProcessShiftSectorList(int sectorX,int sectorY) 0x546670 +bool CPhysical::ProcessShiftSectorList(int sectorX, int sectorY) +{ + return ((bool (__thiscall *)(CPhysical*, int, int))0x546670)(this, sectorX, sectorY); +} + +// Converted from stdcall void CPhysical::PlacePhysicalRelativeToOtherPhysical(CPhysical* physical1,CPhysical* physical2,CVector offset) 0x546DB0 +void CPhysical::PlacePhysicalRelativeToOtherPhysical(CPhysical* physical1, CPhysical* physical2, CVector offset) +{ + ((void (__cdecl *)(CPhysical*, CPhysical*, CVector))0x546DB0)(physical1, physical2, offset); +} + +// Converted from thiscall float CPhysical::ApplyScriptCollision(CVector,float,float,CVector*) 0x546ED0 +float CPhysical::ApplyScriptCollision(CVector arg0, float arg1, float arg2, CVector* arg3) +{ + return ((float (__thiscall *)(CPhysical*, CVector, float, float, CVector*))0x546ED0)(this, arg0, arg1, arg2, arg3); +} + +// Converted from thiscall void CPhysical::PositionAttachedEntity(void) 0x546FF0 +void CPhysical::PositionAttachedEntity() +{ + ((void (__thiscall *)(CPhysical*))0x546FF0)(this); +} + +// Converted from thiscall void CPhysical::ApplySpeed(void) 0x547B80 +void CPhysical::ApplySpeed() +{ + ((void (__thiscall *)(CPhysical*))0x547B80)(this); +} + +// Converted from thiscall void CPhysical::UnsetIsInSafePosition(void) 0x548320 +void CPhysical::UnsetIsInSafePosition() +{ + ((void (__thiscall *)(CPhysical*))0x548320)(this); +} + +// Converted from thiscall void CPhysical::ApplyFriction(void) 0x5483D0 +void CPhysical::ApplyFriction() +{ + ((void (__thiscall *)(CPhysical*))0x5483D0)(this); +} + +// Converted from thiscall bool CPhysical::ApplyCollision(CPhysical* physical,CColPoint &colPoint,float &,float &) 0x548680 +bool CPhysical::ApplyCollision(CPhysical* physical, CColPoint& colPoint, float& arg2, float& arg3) +{ + return ((bool (__thiscall *)(CPhysical*, CPhysical*, CColPoint&, float&, float&))0x548680)(this, physical, colPoint, arg2, arg3); +} + +// Converted from thiscall bool CPhysical::ApplySoftCollision(CPhysical* physical,CColPoint &colPoint,float &,float &) 0x54A2C0 +bool CPhysical::ApplySoftCollision(CPhysical* physical, CColPoint& colPoint, float& arg2, float& arg3) +{ + return ((bool (__thiscall *)(CPhysical*, CPhysical*, CColPoint&, float&, float&))0x54A2C0)(this, physical, colPoint, arg2, arg3); +} + +// Converted from thiscall bool CPhysical::ProcessCollisionSectorList(int sectorX,int sectorY) 0x54BA60 +bool CPhysical::ProcessCollisionSectorList(int sectorX, int sectorY) +{ + return ((bool (__thiscall *)(CPhysical*, int, int))0x54BA60)(this, sectorX, sectorY); +} + +// Converted from thiscall bool CPhysical::ProcessCollisionSectorList_SimpleCar(CRepeatSector *sector) 0x54CFF0 +bool CPhysical::ProcessCollisionSectorList_SimpleCar(CRepeatSector* sector) +{ + return ((bool (__thiscall *)(CPhysical*, CRepeatSector*))0x54CFF0)(this, sector); +} + +// Converted from thiscall void CPhysical::AttachEntityToEntity(CEntity *entity,CVector offset,CVector rotation) 0x54D570 +void CPhysical::AttachEntityToEntity(CEntity* entity, CVector offset, CVector rotation) +{ + ((void (__thiscall *)(CPhysical*, CEntity*, CVector, CVector))0x54D570)(this, entity, offset, rotation); +} + +// Converted from thiscall void CPhysical::AttachEntityToEntity(CEntity *entity,CVector *offset,RtQuat *rotation) 0x54D690 +void CPhysical::AttachEntityToEntity(CEntity* entity, CVector* offset, RtQuat* rotation) +{ + ((void (__thiscall *)(CPhysical*, CEntity*, CVector*, RtQuat*))0x54D690)(this, entity, offset, rotation); +} + +// Converted from thiscall bool CPhysical::CheckCollision(void) 0x54D920 +bool CPhysical::CheckCollision() +{ + return ((bool (__thiscall *)(CPhysical*))0x54D920)(this); +} + +// Converted from thiscall bool CPhysical::CheckCollision_SimpleCar(void) 0x54DAB0 +bool CPhysical::CheckCollision_SimpleCar() +{ + return ((bool (__thiscall *)(CPhysical*))0x54DAB0)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPhysical.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPhysical.h new file mode 100644 index 00000000..550cac69 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPhysical.h @@ -0,0 +1,151 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CEntity.h" +#include "CColPoint.h" +#include "CVector.h" +#include "CQuaternion.h" +#include "CRealTimeShadow.h" +#include "CRepeatSector.h" +#include "eWeaponType.h" + +class CPhysical : public CEntity { +protected: + CPhysical(plugin::dummy_func_t) : CEntity(plugin::dummy) {} +public: + int field_38; + unsigned int m_nLastCollisionTime; + struct { + unsigned int b01 : 1; + unsigned int bApplyGravity : 1; + unsigned int bDisableCollisionForce : 1; + unsigned int bCollidable : 1; + unsigned int bDisableTurnForce : 1; + unsigned int bDisableMoveForce : 1; + unsigned int bInfiniteMass : 1; + unsigned int bDisableZ : 1; + + unsigned int bSubmergedInWater : 1; + unsigned int bOnSolidSurface : 1; + unsigned int bBroken : 1; + unsigned int b12 : 1; // ref @ 0x6F5CF0 + unsigned int b13 : 1; + unsigned int bDontApplySpeed : 1; + unsigned int b15 : 1; + unsigned int b16 : 1; + + unsigned int b17 : 1; + unsigned int b18 : 1; // ref @ CPhysical::ProcessCollision + unsigned int bBulletProof : 1; + unsigned int bFireProof : 1; + unsigned int bCollisionProof : 1; + unsigned int bMeleeProof : 1; + unsigned int bInvulnerable : 1; + unsigned int bExplosionProof : 1; + + unsigned int b25 : 1; + unsigned int bAttachedToEntity : 1; + unsigned int b27 : 1; + unsigned int bTouchingWater : 1; + unsigned int bCanBeCollidedWith : 1; + unsigned int bDestroyed : 1; + unsigned int b31 : 1; + unsigned int b32 : 1; + } m_nPhysicalFlags; + CVector m_vecMoveSpeed; + CVector m_vecTurnSpeed; + CVector m_vecFrictionMoveSpeed; + CVector m_vecFrictionTurnSpeed; + CVector m_vecForce; + CVector m_vecTorque; + float m_fMass; + float m_fTurnMass; + float m_fVelocityFrequency; + float m_fAirResistance; + float m_fElasticity; + float m_fBuoyancyConstant; + CVector m_vecCentreOfMass; + void *m_pCollisionList; + void *m_pMovingList; + char field_B8; + unsigned char m_nNumEntitiesCollided; + unsigned char m_nContactSurface; + char field_BB; + CEntity *m_apCollidedEntities[6]; + float m_fMovingSpeed; // ref @ CTheScripts::IsVehicleStopped + float m_fDamageIntensity; + CEntity *m_pDamageEntity; + CVector m_vecLastCollisionImpactVelocity; + CVector m_vecLastCollisionPosn; + unsigned short m_nPieceType; + short field_FA; + class CPhysical *m_pAttachedTo; + CVector m_vecAttachOffset; + CVector m_vecAttachedEntityPosn; + CQuaternion m_qAttachedEntityRotation; + CEntity *m_pEntityIgnoredCollision; + float m_fContactSurfaceBrightness; + float m_fDynamicLighting; + CRealTimeShadow *m_pShadowData; + + // originally virtual functions + void ProcessEntityCollision(CEntity *entity, CColPoint *point); + + // functions + void RemoveAndAdd(); + void AddToMovingList(); + void RemoveFromMovingList(); + void SetDamagedPieceRecord(float damageIntensity, CEntity* damagingEntity, CColPoint& colPoint, float distanceMult); + void ApplyMoveForce(CVector force); + void ApplyTurnForce(CVector dir, CVector velocity); + void ApplyForce(CVector dir, CVector velocity, bool flag); + CVector GetSpeed(CVector direction); + void ApplyMoveSpeed(); + void ApplyTurnSpeed(); + void ApplyGravity(); + void ApplyFrictionMoveForce(CVector moveForce); + void ApplyFrictionTurnForce(CVector posn, CVector velocity); + void ApplyFrictionForce(CVector posn, CVector velocity); + void SkipPhysics(); + void AddCollisionRecord(CEntity* collidedEntity); + bool GetHasCollidedWith(CEntity* entity); + bool GetHasCollidedWithAnyObject(); + bool ApplyCollision(CEntity* entity, CColPoint& colPoint, float& arg2); + bool ApplySoftCollision(CEntity* entity, CColPoint& colPoint, float& arg2); + bool ApplySpringCollision(float arg0, CVector& arg1, CVector& arg2, float arg3, float arg4, float& arg5); + bool ApplySpringCollisionAlt(float arg0, CVector& arg1, CVector& arg2, float arg3, float arg4, CVector& arg5, float& arg6); + bool ApplySpringDampening(float arg0, float arg1, CVector& arg2, CVector& arg3, CVector& arg4); + bool ApplySpringDampeningOld(float arg0, float arg1, CVector& arg2, CVector& arg3, CVector& arg4); + void RemoveRefsToEntity(CEntity* entity); + void DettachEntityFromEntity(float x, float y, float z, bool useCollision); + void DettachAutoAttachedEntity(); + float GetLightingFromCol(bool flag); + float GetLightingTotal(); + bool CanPhysicalBeDamaged(eWeaponType weapon, unsigned char* arg1); + void ApplyAirResistance(); + bool ApplyCollisionAlt(CEntity* entity, CColPoint& colPoint, float& arg2, CVector& arg3, CVector& arg4); + bool ApplyFriction(float arg0, CColPoint& colPoint); + bool ApplyFriction(CPhysical* physical, float arg1, CColPoint& colPoint); + bool ProcessShiftSectorList(int sectorX, int sectorY); + static void PlacePhysicalRelativeToOtherPhysical(CPhysical* physical1, CPhysical* physical2, CVector offset); + float ApplyScriptCollision(CVector arg0, float arg1, float arg2, CVector* arg3); + void PositionAttachedEntity(); + void ApplySpeed(); + void UnsetIsInSafePosition(); + void ApplyFriction(); + bool ApplyCollision(CPhysical* physical, CColPoint& colPoint, float& arg2, float& arg3); + bool ApplySoftCollision(CPhysical* physical, CColPoint& colPoint, float& arg2, float& arg3); + bool ProcessCollisionSectorList(int sectorX, int sectorY); + bool ProcessCollisionSectorList_SimpleCar(CRepeatSector* sector); + void AttachEntityToEntity(CEntity* entity, CVector offset, CVector rotation); + void AttachEntityToEntity(CEntity* entity, CVector* , RtQuat* rotation); + bool CheckCollision(); + bool CheckCollision_SimpleCar(); +}; + +VALIDATE_SIZE(CPhysical, 0x138); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPickup.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPickup.cpp new file mode 100644 index 00000000..c2bf0b62 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPickup.cpp @@ -0,0 +1,84 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPickup.h" + +// Converted from thiscall void CPickup::SetPosn(float x,float y,float z) 0x454960 +void CPickup::SetPosn(float x, float y, float z) { + plugin::CallMethod<0x454960, CPickup *, float, float, float>(this, x, y, z); +} + +// Converted from thiscall CVector CPickup::GetPosn(void) 0x4549A0 +CVector CPickup::GetPosn() { + CVector result; + plugin::CallMethod<0x4549A0, CPickup *, CVector*>(this, &result); + return result; +} + +// Converted from thiscall float CPickup::GetXCoord(void) 0x4549F0 +float CPickup::GetXCoord() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CPickup::GetYCoord(void) 0x454A10 +float CPickup::GetYCoord() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CPickup::GetZCoord(void) 0x454A30 +float CPickup::GetZCoord() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CPickup::ExtractAmmoFromPickup(CPlayerPed *playerPed) 0x454BE0 +void CPickup::ExtractAmmoFromPickup(CPlayerPed* playerPed) { + plugin::CallMethod<0x454BE0, CPickup *, CPlayerPed*>(this, playerPed); +} + +// Converted from thiscall bool CPickup::IsVisible(void) 0x454C70 +bool CPickup::IsVisible() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CPickup::GetRidOfObjects(void) 0x454CF0 +void CPickup::GetRidOfObjects() { + plugin::CallMethod<0x454CF0, CPickup *>(this); +} + +// Converted from thiscall bool CPickup::PickUpShouldBeInvisible(void) 0x454D20 +bool CPickup::PickUpShouldBeInvisible() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from cdecl void CPickup::FindTextIndexForString(char *message) 0x455500 +void CPickup::FindTextIndexForString(char* message) { + plugin::Call<0x455500, char*>(message); +} + +// Converted from cdecl char* CPickup::FindStringForTextIndex(int index) 0x455540 +char const *CPickup::FindStringForTextIndex(int index) { + return plugin::CallAndReturn(index); +} + +// Converted from thiscall void CPickup::Remove(void) 0x4556C0 +void CPickup::Remove() { + plugin::CallMethod<0x4556C0, CPickup *>(this); +} + +// Converted from thiscall void CPickup::GiveUsAPickUpObject(CObject **pObject,int objectPoolSlotIndex) 0x4567E0 +void CPickup::GiveUsAPickUpObject(CObject** pObject, int objectPoolSlotIndex) { + plugin::CallMethod<0x4567E0, CPickup *, CObject**, int>(this, pObject, objectPoolSlotIndex); +} + +// Converted from thiscall void CPickup::Update(CPlayerPed *playerPed,CVehicle *vehicle,int playerId) 0x457410 +bool CPickup::Update(CPlayerPed* playerPed, CVehicle* vehicle, int playerId) { + return plugin::CallMethodAndReturn(this, playerPed, vehicle, playerId); +} + +// Converted from thiscall void CPickup::ProcessGunShot(CVector *origin,CVector *target) 0x4588B0 +void CPickup::ProcessGunShot(CVector* origin, CVector* target) { + plugin::CallMethod<0x4588B0, CPickup *, CVector*, CVector*>(this, origin, target); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPickup.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPickup.h new file mode 100644 index 00000000..2c732b10 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPickup.h @@ -0,0 +1,106 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CompressedVector.h" +#include "CVector.h" + +enum ePickupType { + PICKUP_NONE = 0, + PICKUP_IN_SHOP = 1, + PICKUP_ON_STREET = 2, + PICKUP_ONCE = 3, + PICKUP_ONCE_TIMEOUT = 4, + PICKUP_ONCE_TIMEOUT_SLOW = 5, + PICKUP_COLLECTABLE1 = 6, + PICKUP_IN_SHOP_OUT_OF_STOCK = 7, + PICKUP_MONEY = 8, + PICKUP_MINE_INACTIVE = 9, + PICKUP_MINE_ARMED = 10, + PICKUP_NAUTICAL_MINE_INACTIVE = 11, + PICKUP_NAUTICAL_MINE_ARMED = 12, + PICKUP_FLOATINGPACKAGE = 13, + PICKUP_FLOATINGPACKAGE_FLOATING = 14, + PICKUP_ON_STREET_SLOW = 15, + PICKUP_ASSET_REVENUE = 16, + PICKUP_PROPERTY_LOCKED = 17, + PICKUP_PROPERTY_FORSALE = 18, + PICKUP_MONEY_DOESNTDISAPPEAR = 19, + PICKUP_SNAPSHOT = 20, + PICKUP_2P = 21, + PICKUP_ONCE_FOR_MISSION = 22 +}; + +enum ePickupPropertyText { + PICKUP_PROPERTYTEXT_CANCEL = 0, // "Cancel" + PICKUP_PROPERTYTEXT_CANT_BUY = 1, // "You can't by..." + PICKUP_PROPERTYTEXT_CAN_BUY = 2 // "Press TAB to buy ..." +}; + +class CObject; +class CVehicle; +class CPlayerPed; + +class CPickup { +public: + float m_fRevenueValue; + CObject *m_pObject; + unsigned int m_nAmmo; + unsigned int m_nRegenerationTime; + CompressedVector m_vecPos; + unsigned short m_nMoneyPerDay; + short m_nModelIndex; + short m_nReferenceIndex; + unsigned char m_nPickupType; // see ePickupType + struct { + unsigned char bDisabled : 1; // waiting for regeneration + unsigned char bEmpty : 1; // no ammo + unsigned char bHelpMessageDisplayed : 1; + unsigned char bVisible : 1; + unsigned char nPropertyTextIndex : 3; // see enum ePickupPropertyText + } m_nFlags; +private: + char _pad1E[2]; +public: + + void SetPosn(float coord_x, float coord_y, float coord_z); + // get pickup position + CVector GetPosn(); + // get pickup x coord + float GetXCoord(); + // get pickup y coord + float GetYCoord(); + // get pickup z coord + float GetZCoord(); + // set pickup x coord + inline void SetXCoord(float coord) { m_vecPos.x = static_cast(coord * 8.0f); } + // set pickup y coord + inline void SetYCoord(float coord) { m_vecPos.y = static_cast(coord * 8.0f); } + // set pickup z coord + inline void SetZCoord(float coord) { m_vecPos.z = static_cast(coord * 8.0f); } + // give player an ammo from weapon pickup + void ExtractAmmoFromPickup(CPlayerPed* playerPed); + // is pickup visible (checks if distance between pickup and camera is shorter than 100 units) + bool IsVisible(); + // delete pickup's object (CObject) + void GetRidOfObjects(); + bool PickUpShouldBeInvisible(); + // remove pickup + void Remove(); + // creates an object (CObject) for pickup. objectPoolSlotIndex - object to replace; use -1 to create a new object + void GiveUsAPickUpObject(CObject** pObject, int objectPoolSlotIndex); + // updates the pickup. Returns TRUE if pickup was removed/disabled + bool Update(CPlayerPed* playerPed, CVehicle* vehicle, int playerId); + // checks if pickup collides with line (origin;target), removes pickup and creates an explosion. Used in previous GTA games for mine pickup + void ProcessGunShot(CVector* origin, CVector* target); + + // message = GXT key + static void FindTextIndexForString(char* message); + static char const *FindStringForTextIndex(int index); +}; + +VALIDATE_SIZE(CPickup, 0x20); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPickups.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPickups.cpp new file mode 100644 index 00000000..d7add128 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPickups.cpp @@ -0,0 +1,214 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPickups.h" + +unsigned int MAX_COLLECTED_PICKUPS = 20; +unsigned int MAX_PICKUP_MESSAGES = 16; +unsigned int MAX_NUM_PICKUPS = 620; + +unsigned char &CPickups::DisplayHelpMessage = *(unsigned char *)0x8A5F48; +int &CPickups::PlayerOnWeaponPickup = *(int *)0x97D640; +int &CPickups::StaticCamStartTime = *(int *)0x978618; +CVector *CPickups::StaticCamCoors = (CVector *)0x97D660; +CVehicle *&CPickups::pPlayerVehicle = *(CVehicle **)0x97861C; +bool &CPickups::bPickUpcamActivated = *(bool *)0x978620; +unsigned short &CPickups::CollectedPickUpIndex = *(unsigned short *)0x978624; +int *CPickups::aPickUpsCollected = (int *)0x978628; +unsigned short &CPickups::NumMessages = *(unsigned short *)0x978678; +tPickupMessage *CPickups::aMessages = (tPickupMessage *)0x978680; +CPickup *CPickups::aPickUps = (CPickup *)0x9788C0; +int &CollectPickupBuffer = *(int *)0x97D644; + +// Converted from cdecl void CPickups::AddToCollectedPickupsArray(int handle) 0x455240 +void CPickups::AddToCollectedPickupsArray(int handle) { + plugin::Call<0x455240, int>(handle); +} + +// Converted from cdecl void CPickups::CreatePickupCoorsCloseToCoors(float in_x,float in_y,float in_z,float *out_x,float *out_y,float *out_z) 0x458A80 +void CPickups::CreatePickupCoorsCloseToCoors(float in_x, float in_y, float in_z, float* out_x, float* out_y, float* out_z) { + plugin::Call<0x458A80, float, float, float, float*, float*, float*>(in_x, in_y, in_z, out_x, out_y, out_z); +} + +// Converted from cdecl void CPickups::CreateSomeMoney(CVector coors,int amount) 0x458970 +void CPickups::CreateSomeMoney(CVector coors, int amount) { + plugin::Call<0x458970, CVector, int>(coors, amount); +} + +// Converted from cdecl void CPickups::DetonateMinesHitByGunShot(CVector *shotOrigin,CVector *shotTarget) 0x4590C0 +void CPickups::DetonateMinesHitByGunShot(CVector* shotOrigin, CVector* shotTarget) { + plugin::Call<0x4590C0, CVector*, CVector*>(shotOrigin, shotTarget); +} + +// Converted from cdecl void CPickups::DoCollectableEffects(CEntity *entity) 0x455E20 +void CPickups::DoCollectableEffects(CEntity* entity) { + plugin::Call<0x455E20, CEntity*>(entity); +} + +// Converted from cdecl void CPickups::DoMineEffects(CEntity *entity) 0x4560E0 +void CPickups::DoMineEffects(CEntity* entity) { + plugin::Call<0x4560E0, CEntity*>(entity); +} + +// Converted from cdecl void CPickups::DoMoneyEffects(CEntity *entity) 0x454E80 +void CPickups::DoMoneyEffects(CEntity* entity) { + plugin::Call<0x454E80, CEntity*>(entity); +} + +// Converted from cdecl void CPickups::DoPickUpEffects(CEntity *entity) 0x455720 +void CPickups::DoPickUpEffects(CEntity* entity) { + plugin::Call<0x455720, CEntity*>(entity); +} + +// Converted from cdecl CPickup* CPickups::FindPickUpForThisObject(CObject *object) 0x4551C0 +CPickup* CPickups::FindPickUpForThisObject(CObject* object) { + return plugin::CallAndReturn(object); +} + +// Converted from cdecl int CPickups::GenerateNewOne(CVector coors,uint modelId,uchar pickupType,uint ammo,uint moneyPerDay,bool isEmpty,char *message) 0x456F20 +int CPickups::GenerateNewOne(CVector coors, unsigned int modelId, unsigned char pickupType, unsigned int ammo, unsigned int moneyPerDay, bool isEmpty, char* message) { + return plugin::CallAndReturn(coors, modelId, pickupType, ammo, moneyPerDay, isEmpty, message); +} + +// Converted from cdecl int CPickups::GenerateNewOne_WeaponType(CVector coors,eWeaponType weaponType,uchar pickupType,uint ammo,bool isEmpty,char *message) 0x457380 +int CPickups::GenerateNewOne_WeaponType(CVector coors, eWeaponType weaponType, unsigned char pickupType, unsigned int ammo, bool isEmpty, char* message) { + return plugin::CallAndReturn(coors, weaponType, pickupType, ammo, isEmpty, message); +} + +// Converted from cdecl int CPickups::GetActualPickupIndex(int pickupIndex) 0x4552A0 +int CPickups::GetActualPickupIndex(int pickupIndex) { + return plugin::CallAndReturn(pickupIndex); +} + +// Converted from cdecl int CPickups::GetNewUniquePickupIndex(int pickupIndex) 0x456A30 +int CPickups::GetNewUniquePickupIndex(int pickupIndex) { + return plugin::CallAndReturn(pickupIndex); +} + +// Converted from cdecl int CPickups::GetUniquePickupIndex(int pickupIndex) 0x455280 +int CPickups::GetUniquePickupIndex(int pickupIndex) { + return plugin::CallAndReturn(pickupIndex); +} + +// Converted from cdecl bool CPickups::GivePlayerGoodiesWithPickUpMI(ushort modelId,int playerId) 0x4564F0 +bool CPickups::GivePlayerGoodiesWithPickUpMI(unsigned short modelId, int playerId) { + return plugin::CallAndReturn(modelId, playerId); +} + +// Converted from cdecl void CPickups::Init(void) 0x454A70 +void CPickups::Init() { + plugin::Call<0x454A70>(); +} + +// Converted from cdecl bool CPickups::IsPickUpPickedUp(int pickupHandle) 0x454B40 +bool CPickups::IsPickUpPickedUp(int pickupHandle) { + return plugin::CallAndReturn(pickupHandle); +} + +// Converted from cdecl bool CPickups::Load(void) 0x5D35A0 +bool CPickups::Load() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl int CPickups::ModelForWeapon(eWeaponType weaponType) 0x454AC0 +int CPickups::ModelForWeapon(eWeaponType weaponType) { + return plugin::CallAndReturn(weaponType); +} + +// Converted from cdecl void CPickups::PassTime(uint time) 0x455200 +void CPickups::PassTime(unsigned int time) { + plugin::Call<0x455200, unsigned int>(time); +} + +// Converted from cdecl void CPickups::PickedUpHorseShoe(void) 0x455390 +void CPickups::PickedUpHorseShoe() { + plugin::Call<0x455390>(); +} + +// Converted from cdecl void CPickups::PickedUpOyster(void) 0x4552D0 +void CPickups::PickedUpOyster() { + plugin::Call<0x4552D0>(); +} + +// Converted from cdecl void CPickups::PictureTaken(void) 0x456A70 +void CPickups::PictureTaken() { + plugin::Call<0x456A70>(); +} + +// Converted from cdecl bool CPickups::PlayerCanPickUpThisWeaponTypeAtThisMoment(eWeaponType weaponType) 0x4554C0 +bool CPickups::PlayerCanPickUpThisWeaponTypeAtThisMoment(eWeaponType weaponType) { + return plugin::CallAndReturn(weaponType); +} + +// Converted from cdecl void CPickups::ReInit(void) 0x456E60 +void CPickups::ReInit() { + plugin::Call<0x456E60>(); +} + +// Converted from cdecl void CPickups::RemoveMissionPickUps(void) 0x456DE0 +void CPickups::RemoveMissionPickUps() { + plugin::Call<0x456DE0>(); +} + +// Converted from cdecl void CPickups::RemovePickUp(int pickupHandle) 0x4573D0 +void CPickups::RemovePickUp(int pickupHandle) { + plugin::Call<0x4573D0, int>(pickupHandle); +} + +// Converted from cdecl void CPickups::RemovePickUpsInArea(float cornerA_x,float cornerA_y,float cornerA_z,float cornerB_x,float cornerB_y,float cornerB_z) 0x456D30 +void CPickups::RemovePickUpsInArea(float cornerA_x, float cornerA_y, float cornerA_z, float cornerB_x, float cornerB_y, float cornerB_z) { + plugin::Call<0x456D30, float, float, float, float, float, float>(cornerA_x, cornerA_y, cornerA_z, cornerB_x, cornerB_y, cornerB_z); +} + +// Converted from cdecl void CPickups::RemovePickupObjects(void) 0x455470 +void CPickups::RemovePickupObjects() { + plugin::Call<0x455470>(); +} + +// Converted from cdecl void CPickups::RemoveUnnecessaryPickups(CVector const&posn,float radius) 0x4563A0 +void CPickups::RemoveUnnecessaryPickups(CVector const& posn, float radius) { + plugin::Call<0x4563A0, CVector const&, float>(posn, radius); +} + +// Converted from cdecl void CPickups::RenderPickUpText(void) 0x455000 +void CPickups::RenderPickUpText() { + plugin::Call<0x455000>(); +} + +// Converted from cdecl bool CPickups::Save(void) 0x5D3540 +bool CPickups::Save() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CPickups::TestForPickupsInBubble(CVector posn,float radius) 0x456450 +bool CPickups::TestForPickupsInBubble(CVector posn, float radius) { + return plugin::CallAndReturn(posn, radius); +} + +// Converted from cdecl bool CPickups::TryToMerge_WeaponType(CVector posn,eWeaponType weaponType,uchar pickupType,uint ammo, bool) 0x4555A0 +bool CPickups::TryToMerge_WeaponType(CVector posn, eWeaponType weaponType, unsigned char pickupType, unsigned int ammo, bool _IGNORED_ arg4) { + return plugin::CallAndReturn(posn, weaponType, pickupType, ammo, arg4); +} + +// Converted from cdecl void CPickups::Update(void) 0x458DE0 +void CPickups::Update() { + plugin::Call<0x458DE0>(); +} + +// Converted from cdecl void CPickups::UpdateMoneyPerDay(int pickupHandle,ushort money) 0x455680 +void CPickups::UpdateMoneyPerDay(int pickupHandle, unsigned short money) { + plugin::Call<0x455680, int, unsigned short>(pickupHandle, money); +} + +// Converted from cdecl int CPickups::WeaponForModel(int modelId) 0x454AE0 +int CPickups::WeaponForModel(int modelId) { + return plugin::CallAndReturn(modelId); +} + +// Converted from cdecl void ModifyStringLabelForControlSetting(char *stringLabel) 0x454B70 +void ModifyStringLabelForControlSetting(char* stringLabel) { + plugin::Call<0x454B70, char*>(stringLabel); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPickups.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPickups.h new file mode 100644 index 00000000..01566f1e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPickups.h @@ -0,0 +1,86 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CPickup.h" +#include "tPickupMessage.h" +#include "eWeaponType.h" + +class CEntity; + +extern unsigned int MAX_COLLECTED_PICKUPS; // 20 +extern unsigned int MAX_PICKUP_MESSAGES; // 16 +extern unsigned int MAX_NUM_PICKUPS; // 620 + +class CPickups { +public: + static unsigned char &DisplayHelpMessage; + static int &PlayerOnWeaponPickup; + static int &StaticCamStartTime; + static CVector *StaticCamCoors; + static CVehicle *&pPlayerVehicle; + static bool &bPickUpcamActivated; + static unsigned short &CollectedPickUpIndex; + static int *aPickUpsCollected; // static int aPickUpsCollected[20]; + static unsigned short &NumMessages; + static tPickupMessage *aMessages; // static tPickupMessage aMessages[16] + static CPickup *aPickUps; // static CPickup aPickUps[620] + + static void AddToCollectedPickupsArray(int handle); + static void CreatePickupCoorsCloseToCoors(float in_x, float in_y, float in_z, float* out_x, float* out_y, float* out_z); + static void CreateSomeMoney(CVector coors, int amount); + static void DetonateMinesHitByGunShot(CVector* shotOrigin, CVector* shotTarget); + static void DoCollectableEffects(CEntity* entity); + static void DoMineEffects(CEntity* entity); + static void DoMoneyEffects(CEntity* entity); + static void DoPickUpEffects(CEntity* entity); + static CPickup* FindPickUpForThisObject(CObject* object); + // returns pickup handle + static int GenerateNewOne(CVector coors, unsigned int modelId, unsigned char pickupType, unsigned int ammo, unsigned int moneyPerDay, bool isEmpty, char* message); + // returns pickup handle + static int GenerateNewOne_WeaponType(CVector coors, eWeaponType weaponType, unsigned char pickupType, unsigned int ammo, bool isEmpty, char* message); + // returns -1 if this index is not actual + static int GetActualPickupIndex(int pickupIndex); + static int GetNewUniquePickupIndex(int pickupIndex); + // returns pickup handle + static int GetUniquePickupIndex(int pickupIndex); + // returns TRUE if player got goodies + static bool GivePlayerGoodiesWithPickUpMI(unsigned short modelId, int playerId); + static void Init(); + static bool IsPickUpPickedUp(int pickupHandle); + // load pickups from save file; always return TRUE + static bool Load(); + // returns model id + static int ModelForWeapon(eWeaponType weaponType); + static void PassTime(unsigned int time); + static void PickedUpHorseShoe(); + static void PickedUpOyster(); + static void PictureTaken(); + static bool PlayerCanPickUpThisWeaponTypeAtThisMoment(eWeaponType weaponType); + static void ReInit(); + static void RemoveMissionPickUps(); + static void RemovePickUp(int pickupHandle); + static void RemovePickUpsInArea(float cornerA_x, float cornerA_y, float cornerA_z, float cornerB_x, float cornerB_y, float cornerB_z); + static void RemovePickupObjects(); + // remove pickups with types PICKUP_ONCE_TIMEOUT and PICKUP_MONEY in area + static void RemoveUnnecessaryPickups(CVector const& posn, float radius); + static void RenderPickUpText(); + // save pickups to save file; always return TRUE + static bool Save(); + // check for pickups in area + static bool TestForPickupsInBubble(CVector posn, float radius); + // search for pickup in area (radius = 5.5 units) with this weapon model and pickup type and add ammo to this pickup; returns TRUE if merged + static bool TryToMerge_WeaponType(CVector posn, eWeaponType weaponType, unsigned char pickupType, unsigned int ammo, bool _IGNORED_ arg4); + static void Update(); + static void UpdateMoneyPerDay(int pickupHandle, unsigned short money); + // returns weapon type (see eWeaponType) + static int WeaponForModel(int modelId); +}; + +extern int &CollectPickupBuffer; + +void ModifyStringLabelForControlSetting(char* stringLabel); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlaceable.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPlaceable.cpp new file mode 100644 index 00000000..e2a05903 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlaceable.cpp @@ -0,0 +1,111 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPlaceable.h" + +CVector CPlaceable::GetRightDirection() +{ + return ((CVector (__thiscall *)(CPlaceable *))0x41CC70)(this); +} + +CVector CPlaceable::GetTopDirection() +{ + return ((CVector (__thiscall *)(CPlaceable *))0x41CCB0)(this); +} + +CVector CPlaceable::GetAtDirection() +{ + return ((CVector (__thiscall *)(CPlaceable *))0x50E420)(this); +} + +void CPlaceable::SetPosn(float x, float y, float z) +{ + ((void (__thiscall *)(CPlaceable *, float, float, float))0x420B80)(this, x, y, z); +} + +void CPlaceable::SetPosn(CVector const& posn) +{ + ((void (__thiscall *)(CPlaceable *, CVector const&))0x4241C0)(this, posn); +} + +void CPlaceable::SetOrientation(float x, float y, float z) +{ + ((void (__thiscall *)(CPlaceable *, float, float, float))0x439A80)(this, x, y, z); +} + +void CPlaceable::SetHeading(float heading) +{ + ((void (__thiscall *)(CPlaceable *, float))0x43E0C0)(this, heading); +} + +float CPlaceable::GetHeading() +{ + return ((float (__thiscall *)(CPlaceable *))0x441DB0)(this); +} + +bool CPlaceable::IsWithinArea(float x1, float y1, float x2, float y2) +{ + return ((bool (__thiscall *)(CPlaceable *, float, float, float, float))0x54F200)(this, x1, y1, x2, y2); +} + +bool CPlaceable::IsWithinArea(float x1, float y1, float z1, float x2, float y2, float z2) +{ + return ((bool (__thiscall *)(CPlaceable *, float, float, float, float, float, float))0x54F2B0)(this, x1, y1, z1, x2, y2, z2); +} + +void CPlaceable::RemoveMatrix() +{ + ((void (__thiscall *)(CPlaceable *))0x54F3B0)(this); +} + +void CPlaceable::AllocateStaticMatrix() +{ + ((void (__thiscall *)(CPlaceable *))0x54F4C0)(this); +} + +void CPlaceable::AllocateMatrix() +{ + ((void (__thiscall *)(CPlaceable *))0x54F560)(this); +} + +void CPlaceable::SetMatrix(CMatrix const& matrix) +{ + ((void (__thiscall *)(CPlaceable *, CMatrix const&))0x54F610)(this, matrix); +} + +CMatrixLink *CPlaceable::GetMatrix() { + return ((CMatrixLink *(__thiscall *)(CPlaceable *))0x411990)(this); +} + +void CPlaceable::ShutdownMatrixArray() { + ((void(__cdecl *)())0x54EFD0)(); +} + +void CPlaceable::InitMatrixArray() { + ((void(__cdecl *)())0x54F3A0)(); +} + +void CPlaceable::FreeStaticMatrix() { + ((void(__thiscall *)(CPlaceable *))0x54F010)(this); +} + +void CPlaceable::GetOrientation(float& x, float& y, float& z) +{ + if (this->m_matrix) + { + x = asinf(this->m_matrix->up.z); + + float cosx = cosf(x); + float cosy = this->m_matrix->at.z / cosx; + y = acosf(cosy); + float cosz = this->m_matrix->up.y / cosx; + z = acosf(cosz); + } + else + { + z = this->m_placement.m_fHeading; + } +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlaceable.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPlaceable.h new file mode 100644 index 00000000..a459cb7b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlaceable.h @@ -0,0 +1,54 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CSimpleTransform.h" +#include "CMatrixLink.h" +#include "CVector.h" +#include "CVector2D.h" + +class PLUGIN_API CPlaceable { +protected: + CPlaceable(plugin::dummy_func_t) {} +public: + CSimpleTransform m_placement; + CMatrixLink *m_matrix; + + virtual ~CPlaceable() {}; + + CMatrixLink *GetMatrix(); + + static void ShutdownMatrixArray(); + static void InitMatrixArray(); + + CVector GetRightDirection(); + CVector GetTopDirection(); + CVector GetAtDirection(); + + void FreeStaticMatrix(); + void SetPosn(float x, float y, float z); + void SetPosn(CVector const& posn); + void SetOrientation(float x, float y, float z); + void GetOrientation(float& x, float& y, float& z); + void SetHeading(float heading); + float GetHeading(); + bool IsWithinArea(float x1, float y1, float x2, float y2); + bool IsWithinArea(float x1, float y1, float z1, float x2, float y2, float z2); + void RemoveMatrix(); + void AllocateStaticMatrix(); + void AllocateMatrix(); + void SetMatrix(CMatrix const& matrix); + + inline CVector& GetRight() const { return m_matrix->GetRight(); } + inline CVector& GetForward() const { return m_matrix->GetForward(); } + inline CVector& GetUp() const { return m_matrix->GetUp(); } + inline const CVector& GetPosition() const { return m_matrix ? m_matrix->GetPosition() : m_placement.m_vPosn; } + inline CVector& GetPosition() { return m_matrix ? m_matrix->GetPosition() : m_placement.m_vPosn; } + inline CVector2D GetPosition2D() { return { GetPosition() }; } +}; + +VALIDATE_SIZE(CPlaceable, 0x18); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlane.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPlane.cpp new file mode 100644 index 00000000..94132384 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlane.cpp @@ -0,0 +1,80 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPlane.h" + +bool &CPlane::GenPlane_Active = *(bool *)0x8D33BC; +int &CPlane::GenPlane_ModelIndex = *(int *)0xC1CAD8; +unsigned int &CPlane::GenPlane_Status = *(unsigned int *)0xC1CADC; +unsigned int &CPlane::GenPlane_LastTimeGenerated = *(unsigned int *)0xC1CAE0; +float &CPlane::ANDROM_COL_ANGLE_MULT = *(float *)0x8D33C0; +float &CPlane::HARRIER_NOZZLE_ROTATE_LIMIT = *(float *)0x8D33C4; +float &CPlane::HARRIER_NOZZLE_SWITCH_LIMIT = *(float *)0x8D33C8; +float &CPlane::PLANE_MIN_PROP_SPEED = *(float *)0x8D33CC; +float &CPlane::PLANE_STD_PROP_SPEED = *(float *)0x8D33D0; +float &CPlane::PLANE_MAX_PROP_SPEED = *(float *)0x8D33D4; +float &CPlane::PLANE_ROC_PROP_SPEED = *(float *)0x8D33D8; +float &HARRIER_NOZZLE_ROTATERATE = *(float *)0x8D33DC; +float &PLANE_DAMAGE_WAVE_COUNTER_VAR = *(float *)0x8D33E0; +float &PLANE_DAMAGE_THRESHHOLD = *(float *)0x8D33E4; +float &PLANE_DAMAGE_SCALE_MASS = *(float *)0x8D33E8; +float &PLANE_DAMAGE_DESTROY_THRESHHOLD = *(float *)0x8D33EC; +CVector &vecRCBaronGunPos = *(CVector *)0x8D33F0; + +// Converted from thiscall void CPlane::CPlane(int modelIndex, uchar createdBy) 0x6C8E20 +CPlane::CPlane(int modelIndex, unsigned char createdBy) :CAutomobile(plugin::dummy) { + ((void(__thiscall *)(CPlane*, int, unsigned char))0x6C8E20)(this, modelIndex, createdBy); +} + +// Converted from thiscall void CPlane::IsAlreadyFlying(void) 0x6CAB90 +void CPlane::IsAlreadyFlying() { + ((void(__thiscall *)(CPlane*))0x6CAB90)(this); +} + +// Converted from thiscall void CPlane::SetGearUp(void) 0x6CAC20 +void CPlane::SetGearUp() { + ((void(__thiscall *)(CPlane*))0x6CAC20)(this); +} + +// Converted from thiscall void CPlane::SetGearDown(void) 0x6CAC70 +void CPlane::SetGearDown() { + ((void(__thiscall *)(CPlane*))0x6CAC70)(this); +} + +// Converted from cdecl void CPlane::InitPlaneGenerationAndRemoval(void) 0x6CAD90 +void CPlane::InitPlaneGenerationAndRemoval() { + ((void(__cdecl *)())0x6CAD90)(); +} + +// Converted from cdecl uint CPlane::CountPlanesAndHelis(void) 0x6CCA50 +unsigned int CPlane::CountPlanesAndHelis() { + return ((unsigned int(__cdecl *)())0x6CCA50)(); +} + +// Converted from cdecl bool CPlane::AreWeInNoPlaneZone(void) 0x6CCAA0 +bool CPlane::AreWeInNoPlaneZone() { + return ((bool(__cdecl *)())0x6CCAA0)(); +} + +// Converted from cdecl bool CPlane::AreWeInNoBigPlaneZone(void) 0x6CCBB0 +bool CPlane::AreWeInNoBigPlaneZone() { + return ((bool(__cdecl *)())0x6CCBB0)(); +} + +// Converted from cdecl void CPlane::SwitchAmbientPlanes(bool enable) 0x6CCC50 +void CPlane::SwitchAmbientPlanes(bool enable) { + ((void(__cdecl *)(bool))0x6CCC50)(enable); +} + +// Converted from cdecl void CPlane::FindPlaneCreationCoors(CVector *,CVector *,float *,float *,bool) 0x6CD090 +void CPlane::FindPlaneCreationCoors(CVector* arg0, CVector* arg1, float* arg2, float* arg3, bool arg4) { + ((void(__cdecl *)(CVector*, CVector*, float*, float*, bool))0x6CD090)(arg0, arg1, arg2, arg3, arg4); +} + +// Converted from cdecl void CPlane::DoPlaneGenerationAndRemoval(void) 0x6CD2F0 +void CPlane::DoPlaneGenerationAndRemoval() { + ((void(__cdecl *)())0x6CD2F0)(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlane.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPlane.h new file mode 100644 index 00000000..c88cc2ba --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlane.h @@ -0,0 +1,111 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAutomobile.h" + +enum ePlaneNodes { + PLANE_NODE_NONE = 0, + PLANE_CHASSIS = 1, + PLANE_WHEEL_RF = 2, + PLANE_WHEEL_RM = 3, + PLANE_WHEEL_RB = 4, + PLANE_WHEEL_LF = 5, + PLANE_WHEEL_LM = 6, + PLANE_WHEEL_LB = 7, + PLANE_DOOR_RF = 8, + PLANE_DOOR_RR = 9, + PLANE_DOOR_LF = 10, + PLANE_DOOR_LR = 11, + PLANE_STATIC_PROP = 12, + PLANE_MOVING_PROP = 13, + PLANE_STATIC_PROP2 = 14, + PLANE_MOVING_PROP2 = 15, + PLANE_RUDDER = 16, + PLANE_ELEVATOR_L = 17, + PLANE_ELEVATOR_R = 18, + PLANE_AILERON_L = 19, + PLANE_AILERON_R = 20, + PLANE_GEAR_L = 21, + PLANE_GEAR_R = 22, + PLANE_MISC_A = 23, + PLANE_MISC_B = 24, + PLANE_NUM_NODES +}; + +class CPlane : public CAutomobile { +protected: + CPlane(plugin::dummy_func_t) : CAutomobile(plugin::dummy) {} +public: + float field_988; + int field_98C; + int field_990; + int field_994; + float field_998; + int field_99C; + int field_9A0; + int field_9A4; + float field_9A8; + float field_9AC; + float field_9B0; + float field_9B4; + int field_9B8; + int field_9BC; + unsigned int m_nStartedFlyingTime; + int field_9C4; + float field_9C8; + float m_fLandingGearStatus; + int field_9D0; + FxSystem_c **m_pGunParticles; + unsigned char m_nFiringMultiplier; + int field_9DC; + int field_9E0; + int field_9E4; + FxSystem_c *m_apJettrusParticles[4]; + FxSystem_c *m_pSmokeParticle; + unsigned int m_nSmokeTimer; + bool m_bSmokeEjectorEnabled; +private: + char _pad[3]; + +public: + CPlane(int modelIndex, unsigned char createdBy); + + void IsAlreadyFlying(); + void SetGearUp(); + void SetGearDown(); + + static void InitPlaneGenerationAndRemoval(); + static unsigned int CountPlanesAndHelis(); + static bool AreWeInNoPlaneZone(); + static bool AreWeInNoBigPlaneZone(); + static void SwitchAmbientPlanes(bool enable); + static void FindPlaneCreationCoors(CVector* arg0, CVector* arg1, float* arg2, float* arg3, bool arg4); + static void DoPlaneGenerationAndRemoval(); + + static bool& GenPlane_Active; + static int& GenPlane_ModelIndex; + static unsigned int& GenPlane_Status; + static unsigned int& GenPlane_LastTimeGenerated; + static float& ANDROM_COL_ANGLE_MULT; + static float& HARRIER_NOZZLE_ROTATE_LIMIT; + static float& HARRIER_NOZZLE_SWITCH_LIMIT; + static float& PLANE_MIN_PROP_SPEED; + static float& PLANE_STD_PROP_SPEED; + static float& PLANE_MAX_PROP_SPEED; + static float& PLANE_ROC_PROP_SPEED; +}; + +VALIDATE_SIZE(CPlane, 0xA04); + +extern float &HARRIER_NOZZLE_ROTATERATE; +extern float &PLANE_DAMAGE_WAVE_COUNTER_VAR; +extern float &PLANE_DAMAGE_THRESHHOLD; +extern float &PLANE_DAMAGE_SCALE_MASS; +extern float &PLANE_DAMAGE_DESTROY_THRESHHOLD; +extern CVector &vecRCBaronGunPos; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlaneTrail.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPlaneTrail.cpp new file mode 100644 index 00000000..ab6598a0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlaneTrail.cpp @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPlaneTrail.h" + +void CPlaneTrail::Init() +{ + ((void (__cdecl *)())0x717160)(); +} + +void CPlaneTrail::Render(float intensity) +{ + ((void (__cdecl *)(float))0x717180)(intensity); +} + +void CPlaneTrail::RegisterPoint(CVector point) +{ + ((void (__cdecl *)(CVector))0x7172D0)(point); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlaneTrail.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPlaneTrail.h new file mode 100644 index 00000000..a7f05840 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlaneTrail.h @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" +#include "CVector.h" + +class PLUGIN_API CPlaneTrail { +public: + CVector m_avecPosn[16]; + unsigned int m_anTime[16]; + + void Init(); + void Render(float intensity); + void RegisterPoint(CVector point); +}; + +VALIDATE_SIZE(CPlaneTrail, 0x100); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlaneTrails.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPlaneTrails.cpp new file mode 100644 index 00000000..73c728ce --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlaneTrails.cpp @@ -0,0 +1,24 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPlaneTrails.h" + +CPlaneTrail *CPlaneTrails::aArray = (CPlaneTrail *)0xC713A8; + +void CPlaneTrails::Init() +{ + ((void (__cdecl *)())0x717370)(); +} + +void CPlaneTrails::Update() +{ + ((void (__cdecl *)())0x7174F0)(); +} + +void CPlaneTrails::RegisterPoint(CVector point, unsigned int trailIndex) +{ + ((void (__cdecl *)(CVector, unsigned int))0x7174C0)(point, trailIndex); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlaneTrails.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPlaneTrails.h new file mode 100644 index 00000000..2ef3a89c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlaneTrails.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" +#include "CPlaneTrail.h" + +#define NUM_PLANE_TRAILS 3 + +class PLUGIN_API CPlaneTrails +{ +public: + // count: NUM_PLANE_TRAILS (3) + static CPlaneTrail *aArray; + + static void Init(); + static void Update(); + static void RegisterPoint(CVector point, unsigned int trailIndex); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerData.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerData.h new file mode 100644 index 00000000..d39c708a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerData.h @@ -0,0 +1,95 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CWanted.h" +#include "CPedClothesDesc.h" +#include "CVector.h" +#include "CVector2D.h" + +class CEntity; +class CPed; +class CCopPed; + +class PLUGIN_API CPlayerData { +public: + CWanted * m_pWanted; + CPedClothesDesc *m_pPedClothesDesc; + CCopPed *m_pArrestingCop; + CVector2D m_vecFightMovement; + float m_fMoveBlendRatio; + float m_fTimeCanRun; + float m_fMoveSpeed; + unsigned char m_nChosenWeapon; + unsigned char m_nCarDangerCounter; +private: + char _pad0[2]; +public: + unsigned int m_nStandStillTimer; + unsigned int m_nHitAnimDelayTimer; + float m_fAttackButtonCounter; + void *m_pDangerCar; + unsigned int m_bStoppedMoving : 1; + unsigned int m_bAdrenaline : 1; + unsigned int m_bHaveTargetSelected : 1; // Needed to work out whether we lost target this frame + unsigned int m_bFreeAiming : 1; + unsigned int m_bCanBeDamaged : 1; + unsigned int m_bAllMeleeAttackPtsBlocked : 1; // if all of m_pMeleeAttackers[] is blocked by collision, just attack straight ahead + unsigned int m_bJustBeenSnacking : 1; // If this bit is true we have just bought something from a vending machine + unsigned int m_bRequireHandleBreath : 1; + unsigned int m_bGroupStuffDisabled : 1; // if this is true the player can't recrout or give his group commands. + unsigned int m_bGroupAlwaysFollow : 1; // The group is told to always follow the player (used for girlfriend missions) + unsigned int m_bGroupNeverFollow : 1; // The group is told to always follow the player (used for girlfriend missions) + unsigned int m_bInVehicleDontAllowWeaponChange : 1; // stop weapon change once driveby weapon has been given + unsigned int m_bRenderWeapon : 1; // set to false during cutscenes so that knuckledusters are not rendered + unsigned int m_nPlayerGroup; + unsigned int m_nAdrenalineEndTime; + unsigned char m_nDrunkenness; + unsigned char m_nFadeDrunkenness; + unsigned char m_nDrugLevel; + unsigned char m_nScriptLimitToGangSize; + float m_fBreath; + unsigned int m_nMeleeWeaponAnimReferenced; + unsigned int m_nMeleeWeaponAnimReferencedExtra; + float m_fFPSMoveHeading; + float m_fLookPitch; + float m_fSkateBoardSpeed; + float m_fSkateBoardLean; + RpAtomic *m_pSpecialAtomic; + float m_fGunSpinSpeed; + float m_fGunSpinAngle; + unsigned int m_nLastTimeFiring; + unsigned int m_nTargetBone; + CVector m_vecTargetBoneOffset; + unsigned int m_nBusFaresCollected; + bool m_bPlayerSprintDisabled; + bool m_bDontAllowWeaponChange; + bool m_bForceInteriorLighting; +private: + char _pad1; +public: + unsigned short m_nPadDownPressedInMilliseconds; + unsigned short m_nPadUpPressedInMilliseconds; + unsigned char m_nWetness; + bool m_bPlayersGangActive; + unsigned char m_nWaterCoverPerc; +private: + char _pad2; +public: + float m_fWaterHeight; + unsigned int m_nFireHSMissilePressedTime; + CEntity *m_LastHSMissileTarget; + unsigned int m_nModelIndexOfLastBuildingShot; + unsigned int m_nLastHSMissileLOSTime : 31; + unsigned int m_bLastHSMissileLOS : 1; + CPed *m_pCurrentProstitutePed; + CPed *m_pLastProstituteShagged; +}; + +VALIDATE_SIZE(CPlayerData, 0xAC); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerInfo.cpp new file mode 100644 index 00000000..3bb90f2f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerInfo.cpp @@ -0,0 +1,12 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) Source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CPlayerInfo.h" + +CPlayerInfo::CPlayerInfo() +{ + plugin::CallMethod<0x571920, CPlayerInfo*>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerInfo.h new file mode 100644 index 00000000..1a2c8abf --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerInfo.h @@ -0,0 +1,108 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CPlayerData.h" +#include "CVector.h" +#include "CPlayerPed.h" + +enum PLUGIN_API ePlayerState { + PLAYERSTATE_PLAYING, + PLAYERSTATE_HASDIED, + PLAYERSTATE_HASBEENARRESTED, + PLAYERSTATE_FAILEDMISSION, + PLAYERSTATE_LEFTGAME +}; + +class CPed; +class CVehicle; + +class PLUGIN_API CPlayerInfo { +public: + CPlayerPed *m_pPed; // Pointer to the player ped (should always be set) + CPlayerData m_PlayerData; // instance of player variables + CVehicle *m_pRemoteVehicle; // Pointer to vehicle player is driving remotely at the moment.(NULL if on foot) + CVehicle *m_pSpecCar; // which car is using the special collision model + int m_nMoney; // Points for this player + int m_nDisplayMoney; // Points as they would be displayed + unsigned int m_nCollectablesPickedUp; // How many bags of sugar do we have + unsigned int m_nTotalNumCollectables; // How many bags of sugar are there to be had in the game + unsigned int m_nLastBumpPlayerCarTimer; // Keeps track of when the last ped bumped into the player car + unsigned int m_nTaxiTimer; // Keeps track of how long the player has been in a taxi with a passenger (in msecs) + unsigned int m_nVehicleTimeCounter; // keeps track of how long player has been in car for driving skill + bool m_bTaxiTimerScore; // If TRUE then add 1 to score for each second that the player is driving a taxi + bool m_bTryingToExitCar; // if player holds exit car button, want to trigger getout once car slowed enough with a passenger +private: + char _pad0[2]; +public: + CVehicle *m_pLastTargetVehicle; // Last vehicle player tried to enter. + unsigned char m_nPlayerState; // see ePlayerState + bool m_bAfterRemoteVehicleExplosion; + bool m_bCreateRemoteVehicleExplosion; + bool m_bFadeAfterRemoteVehicleExplosion; + unsigned int m_nTimeOfRemoteVehicleExplosion; + unsigned int m_nLastTimeEnergyLost; // To make numbers flash on the HUD; + unsigned int m_nLastTimeArmourLost; + unsigned int m_nLastTimeBigGunFired; // Tank guns etc + unsigned int m_nTimesUpsideDownInARow; // Make car blow up if car upside down + unsigned int m_nTimesStuckInARow; // Make car blow up if player cannot get out. + unsigned int m_nCarTwoWheelCounter; // how long has player's car been on two wheels + float m_fCarTwoWheelDist; // Make car blow up if player cannot get out. + unsigned int m_nCarLess3WheelCounter; // how long has player's car been on less than 3 wheels + unsigned int m_nBikeRearWheelCounter; // how long has player's bike been on rear wheel only + float m_fBikeRearWheelDist; + unsigned int m_nBikeFrontWheelCounter; // how long has player's bike been on front wheel only + float m_fBikeFrontWheelDist; + unsigned int m_nTempBufferCounter; // so wheels can leave the ground for a few frames without stopping above counters + unsigned int m_nBestCarTwoWheelsTimeMs; + float m_fBestCarTwoWheelsDistM; + unsigned int m_nBestBikeWheelieTimeMs; + float m_fBestBikeWheelieDistM; + unsigned int m_nBestBikeStoppieTimeMs; + float m_fBestBikeStoppieDistM; + unsigned short m_nCarDensityForCurrentZone; +private: + char _pad1[2]; +public: + float m_fRoadDensityAroundPlayer; // 1.0f for an average city. + unsigned int m_nTimeOfLastCarExplosionCaused; + unsigned int m_nExplosionMultiplier; + unsigned int m_nHavocCaused; // A counter going up when the player does bad stuff. + unsigned short m_nNumHoursDidntEat; +private: + char _pad2[2]; +public: + float m_fCurrentChaseValue; // How 'ill' is the chase at the moment + bool m_bDoesNotGetTired; + bool m_bFastReload; + bool m_bFireProof; + unsigned char m_nMaxHealth; + unsigned char m_nMaxArmour; + bool m_bGetOutOfJailFree; // Player doesn't lose money/weapons next time arrested + bool m_bGetOutOfHospitalFree; // Player doesn't lose money next time patched up at hospital + bool m_bCanDoDriveBy; + unsigned char m_nBustedAudioStatus; +private: + char _pad3; +public: + unsigned short m_nLastBustMessageNumber; + unsigned int m_nCrosshairActivated; + CVector2D m_vecCrosshairTarget; // -1 ... 1 on screen + char m_szSkinName[32]; + RwTexture *m_pSkinTexture; + bool m_bParachuteReferenced; +private: + char _pad4[3]; +public: + unsigned int m_nRequireParachuteTimer; + + CPlayerInfo(); +}; + +VALIDATE_SIZE(CPlayerInfo, 0x190); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerPed.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerPed.cpp new file mode 100644 index 00000000..d9e482a9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerPed.cpp @@ -0,0 +1,321 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPlayerPed.h" + +char *abTempNeverLeavesGroup = (char *)0xC0BC08; +int &gPlayIdlesAnimBlockIndex = *(int *)0xC0BC10; +bool &CPlayerPed::bHasDisplayedPlayerQuitEnterCarHelpText = *(bool *)0xC0BC15; + +// Converted from thiscall void CPlayerPed::CPlayerPed(int playerId,bool bGroupCreated) 0x60D5B0 +CPlayerPed::CPlayerPed(int playerId, bool bGroupCreated) : CPed(plugin::dummy) { + plugin::CallMethod<0x60D5B0, CPlayerPed *, int, bool>(this, playerId, bGroupCreated); +} + +// Converted from cdecl void CPlayerPed::RemovePlayerPed(int playerId) 0x6094A0 +void CPlayerPed::RemovePlayerPed(int playerId) { + plugin::Call<0x6094A0, int>(playerId); +} + +// Converted from cdecl void CPlayerPed::DeactivatePlayerPed(int playerId) 0x609520 +void CPlayerPed::DeactivatePlayerPed(int playerId) { + plugin::Call<0x609520, int>(playerId); +} + +// Converted from cdecl void CPlayerPed::ReactivatePlayerPed(int playerId) 0x609540 +void CPlayerPed::ReactivatePlayerPed(int playerId) { + plugin::Call<0x609540, int>(playerId); +} + +// Converted from thiscall CPad* CPlayerPed::GetPadFromPlayer(void) 0x609560 +CPad* CPlayerPed::GetPadFromPlayer() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPlayerPed::CanPlayerStartMission(void) 0x609590 +bool CPlayerPed::CanPlayerStartMission() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPlayerPed::IsHidden(void) 0x609620 +bool CPlayerPed::IsHidden() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CPlayerPed::ReApplyMoveAnims(void) 0x609650 +void CPlayerPed::ReApplyMoveAnims() { + plugin::CallMethod<0x609650, CPlayerPed *>(this); +} + +// Converted from thiscall bool CPlayerPed::DoesPlayerWantNewWeapon(eWeaponType weaponType, bool) 0x609710 +bool CPlayerPed::DoesPlayerWantNewWeapon(eWeaponType weaponType, bool arg1) { + return plugin::CallMethodAndReturn(this, weaponType, arg1); +} + +// Converted from thiscall void CPlayerPed::ProcessPlayerWeapon(CPad *pad) 0x6097F0 +void CPlayerPed::ProcessPlayerWeapon(CPad* pad) { + plugin::CallMethod<0x6097F0, CPlayerPed *, CPad*>(this, pad); +} + +// Converted from thiscall void CPlayerPed::PickWeaponAllowedFor2Player(void) 0x609800 +void CPlayerPed::PickWeaponAllowedFor2Player() { + plugin::CallMethod<0x609800, CPlayerPed *>(this); +} + +// Converted from thiscall void CPlayerPed::UpdateCameraWeaponModes(CPad *pad) 0x609830 +void CPlayerPed::UpdateCameraWeaponModes(CPad* pad) { + plugin::CallMethod<0x609830, CPlayerPed *, CPad*>(this, pad); +} + +// Converted from thiscall void CPlayerPed::ProcessAnimGroups(void) 0x6098F0 +void CPlayerPed::ProcessAnimGroups() { + plugin::CallMethod<0x6098F0, CPlayerPed *>(this); +} + +// Converted from thiscall void CPlayerPed::ClearWeaponTarget(void) 0x609C80 +void CPlayerPed::ClearWeaponTarget() { + plugin::CallMethod<0x609C80, CPlayerPed *>(this); +} + +// Converted from thiscall float CPlayerPed::GetWeaponRadiusOnScreen(void) 0x609CD0 +float CPlayerPed::GetWeaponRadiusOnScreen() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from cdecl bool CPlayerPed::PedCanBeTargettedVehicleWise(CPed *ped) 0x609D90 +bool CPlayerPed::PedCanBeTargettedVehicleWise(CPed* ped) { + return plugin::CallAndReturn(ped); +} + +// Converted from thiscall float CPlayerPed::FindTargetPriority(CEntity *entity) 0x609DE0 +float CPlayerPed::FindTargetPriority(CEntity* entity) { + return plugin::CallMethodAndReturn(this, entity); +} + +// Converted from thiscall void CPlayerPed::Clear3rdPersonMouseTarget(void) 0x609ED0 +void CPlayerPed::Clear3rdPersonMouseTarget() { + plugin::CallMethod<0x609ED0, CPlayerPed *>(this); +} + +// Converted from thiscall void CPlayerPed::Busted(void) 0x609EF0 +void CPlayerPed::Busted() { + plugin::CallMethod<0x609EF0, CPlayerPed *>(this); +} + +// Converted from thiscall void CPlayerPed::SetWantedLevel(int level) 0x609F10 +void CPlayerPed::SetWantedLevel(int level) { + plugin::CallMethod<0x609F10, CPlayerPed *, int>(this, level); +} + +// Converted from thiscall void CPlayerPed::SetWantedLevelNoDrop(int level) 0x609F30 +void CPlayerPed::SetWantedLevelNoDrop(int level) { + plugin::CallMethod<0x609F30, CPlayerPed *, int>(this, level); +} + +// Converted from thiscall void CPlayerPed::CheatWantedLevel(int level) 0x609F50 +void CPlayerPed::CheatWantedLevel(int level) { + plugin::CallMethod<0x609F50, CPlayerPed *, int>(this, level); +} + +// Converted from thiscall bool CPlayerPed::CanIKReachThisTarget(CVector posn, CWeapon *weapon, bool) 0x609F80 +bool CPlayerPed::CanIKReachThisTarget(CVector posn, CWeapon* weapon, bool arg2) { + return plugin::CallMethodAndReturn(this, posn, weapon, arg2); +} + +// Converted from thiscall CPlayerInfo* CPlayerPed::GetPlayerInfoForThisPlayerPed(void) 0x609FF0 +CPlayerInfo* CPlayerPed::GetPlayerInfoForThisPlayerPed() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CPlayerPed::DoStuffToGoOnFire(void) 0x60A020 +void CPlayerPed::DoStuffToGoOnFire() { + plugin::CallMethod<0x60A020, CPlayerPed *>(this); +} + +// Converted from thiscall void CPlayerPed::AnnoyPlayerPed(bool) 0x60A040 +void CPlayerPed::AnnoyPlayerPed(bool arg0) { + plugin::CallMethod<0x60A040, CPlayerPed *, bool>(this, arg0); +} + +// Converted from thiscall void CPlayerPed::ClearAdrenaline(void) 0x60A070 +void CPlayerPed::ClearAdrenaline() { + plugin::CallMethod<0x60A070, CPlayerPed *>(this); +} + +// Converted from thiscall void CPlayerPed::DisbandPlayerGroup(void) 0x60A0A0 +void CPlayerPed::DisbandPlayerGroup() { + plugin::CallMethod<0x60A0A0, CPlayerPed *>(this); +} + +// Converted from thiscall void CPlayerPed::MakeGroupRespondToPlayerTakingDamage(CEventDamage const& damageEvent) 0x60A110 +void CPlayerPed::MakeGroupRespondToPlayerTakingDamage(CEventDamage const& damageEvent) { + plugin::CallMethod<0x60A110, CPlayerPed *, CEventDamage const&>(this, damageEvent); +} + +// Converted from thiscall void CPlayerPed::TellGroupToStartFollowingPlayer(bool, bool, bool) 0x60A1D0 +void CPlayerPed::TellGroupToStartFollowingPlayer(bool arg0, bool arg1, bool arg2) { + plugin::CallMethod<0x60A1D0, CPlayerPed *, bool, bool, bool>(this, arg0, arg1, arg2); +} + +// Converted from thiscall void CPlayerPed::MakePlayerGroupDisappear(void) 0x60A440 +void CPlayerPed::MakePlayerGroupDisappear() { + plugin::CallMethod<0x60A440, CPlayerPed *>(this); +} + +// Converted from thiscall void CPlayerPed::MakePlayerGroupReappear(void) 0x60A4B0 +void CPlayerPed::MakePlayerGroupReappear() { + plugin::CallMethod<0x60A4B0, CPlayerPed *>(this); +} + +// Converted from thiscall void CPlayerPed::ResetSprintEnergy(void) 0x60A530 +void CPlayerPed::ResetSprintEnergy() { + plugin::CallMethod<0x60A530, CPlayerPed *>(this); +} + +// Converted from thiscall bool CPlayerPed::HandleSprintEnergy(bool, float) 0x60A550 +bool CPlayerPed::HandleSprintEnergy(bool arg0, float arg1) { + return plugin::CallMethodAndReturn(this, arg0, arg1); +} + +// Converted from thiscall float CPlayerPed::ControlButtonSprint(eSprintType sprintType) 0x60A610 +float CPlayerPed::ControlButtonSprint(eSprintType sprintType) { + return plugin::CallMethodAndReturn(this, sprintType); +} + +// Converted from thiscall float CPlayerPed::GetButtonSprintResults(eSprintType sprintType) 0x60A820 +float CPlayerPed::GetButtonSprintResults(eSprintType sprintType) { + return plugin::CallMethodAndReturn(this, sprintType); +} + +// Converted from thiscall void CPlayerPed::ResetPlayerBreath(void) 0x60A8A0 +void CPlayerPed::ResetPlayerBreath() { + plugin::CallMethod<0x60A8A0, CPlayerPed *>(this); +} + +// Converted from thiscall void CPlayerPed::HandlePlayerBreath(bool, float) 0x60A8D0 +void CPlayerPed::HandlePlayerBreath(bool arg0, float arg1) { + plugin::CallMethod<0x60A8D0, CPlayerPed *, bool, float>(this, arg0, arg1); +} + +// Converted from thiscall void CPlayerPed::SetRealMoveAnim(void) 0x60A9C0 +void CPlayerPed::SetRealMoveAnim() { + plugin::CallMethod<0x60A9C0, CPlayerPed *>(this); +} + +// Converted from thiscall void CPlayerPed::MakeChangesForNewWeapon(eWeaponType weaponType) 0x60B460 +void CPlayerPed::MakeChangesForNewWeapon(eWeaponType weaponType) { + plugin::CallMethod<0x60B460, CPlayerPed *, eWeaponType>(this, weaponType); +} + +// Converted from cdecl bool LOSBlockedBetweenPeds(CEntity *entity1, CEntity *entity2) 0x60B550 +bool LOSBlockedBetweenPeds(CEntity* entity1, CEntity* entity2) { + return plugin::CallAndReturn(entity1, entity2); +} + +// Converted from thiscall void CPlayerPed::Compute3rdPersonMouseTarget(bool meleeWeapon) 0x60B650 +void CPlayerPed::Compute3rdPersonMouseTarget(bool meleeWeapon) { + plugin::CallMethod<0x60B650, CPlayerPed *, bool>(this, meleeWeapon); +} + +// Converted from thiscall void CPlayerPed::DrawTriangleForMouseRecruitPed(void) 0x60BA80 +void CPlayerPed::DrawTriangleForMouseRecruitPed() { + plugin::CallMethod<0x60BA80, CPlayerPed *>(this); +} + +// Converted from thiscall bool CPlayerPed::DoesTargetHaveToBeBroken(CEntity *entity,CWeapon *weapon) 0x60C0C0 +bool CPlayerPed::DoesTargetHaveToBeBroken(CEntity* entity, CWeapon* weapon) { + return plugin::CallMethodAndReturn(this, entity, weapon); +} + +// Converted from thiscall void CPlayerPed::KeepAreaAroundPlayerClear(void) 0x60C1E0 +void CPlayerPed::KeepAreaAroundPlayerClear() { + plugin::CallMethod<0x60C1E0, CPlayerPed *>(this); +} + +// Converted from thiscall void CPlayerPed::SetPlayerMoveBlendRatio(CVector *) 0x60C520 +void CPlayerPed::SetPlayerMoveBlendRatio(CVector* arg0) { + plugin::CallMethod<0x60C520, CPlayerPed *, CVector*>(this, arg0); +} + +// Converted from thiscall CPed* CPlayerPed::FindPedToAttack(void) 0x60C5F0 +CPed* CPlayerPed::FindPedToAttack() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CPlayerPed::ForceGroupToAlwaysFollow(bool enable) 0x60C7C0 +void CPlayerPed::ForceGroupToAlwaysFollow(bool enable) { + plugin::CallMethod<0x60C7C0, CPlayerPed *, bool>(this, enable); +} + +// Converted from thiscall void CPlayerPed::ForceGroupToNeverFollow(bool enable) 0x60C800 +void CPlayerPed::ForceGroupToNeverFollow(bool enable) { + plugin::CallMethod<0x60C800, CPlayerPed *, bool>(this, enable); +} + +// Converted from thiscall void CPlayerPed::MakeThisPedJoinOurGroup(CPed *ped) 0x60C840 +void CPlayerPed::MakeThisPedJoinOurGroup(CPed* ped) { + plugin::CallMethod<0x60C840, CPlayerPed *, CPed*>(this, ped); +} + +// Converted from thiscall bool CPlayerPed::PlayerWantsToAttack(void) 0x60CC50 +bool CPlayerPed::PlayerWantsToAttack() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CPlayerPed::SetInitialState(bool bGroupCreated) 0x60CD20 +void CPlayerPed::SetInitialState(bool bGroupCreated) { + plugin::CallMethod<0x60CD20, CPlayerPed *, bool>(this, bGroupCreated); +} + +// Converted from thiscall void CPlayerPed::MakeChangesForNewWeapon(int weaponSlot) 0x60D000 +void CPlayerPed::MakeChangesForNewWeapon(int weaponSlot) { + plugin::CallMethod<0x60D000, CPlayerPed *, int>(this, weaponSlot); +} + +// Converted from thiscall void CPlayerPed::EvaluateTarget(CEntity *target,CEntity **outTarget,float *outTargetPriority,float maxDistance,float,bool) 0x60D020 +void CPlayerPed::EvaluateTarget(CEntity* target, CEntity** outTarget, float* outTargetPriority, float maxDistance, float arg4, bool arg5) { + plugin::CallMethod<0x60D020, CPlayerPed *, CEntity*, CEntity**, float*, float, float, bool>(this, target, outTarget, outTargetPriority, maxDistance, arg4, arg5); +} + +// Converted from thiscall void CPlayerPed::EvaluateNeighbouringTarget(CEntity *target,CEntity **outTarget,float *outTargetPriority,float maxDistance,float,bool) 0x60D1C0 +void CPlayerPed::EvaluateNeighbouringTarget(CEntity* target, CEntity** outTarget, float* outTargetPriority, float maxDistance, float arg4, bool arg5) { + plugin::CallMethod<0x60D1C0, CPlayerPed *, CEntity*, CEntity**, float*, float, float, bool>(this, target, outTarget, outTargetPriority, maxDistance, arg4, arg5); +} + +// Converted from thiscall void CPlayerPed::ProcessGroupBehaviour(CPad *pad) 0x60D350 +void CPlayerPed::ProcessGroupBehaviour(CPad* pad) { + plugin::CallMethod<0x60D350, CPlayerPed *, CPad*>(this, pad); +} + +// Converted from thiscall bool CPlayerPed::PlayerHasJustAttackedSomeone(void) 0x60D5A0 +bool CPlayerPed::PlayerHasJustAttackedSomeone() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from cdecl void CPlayerPed::SetupPlayerPed(int playerId) 0x60D790 +void CPlayerPed::SetupPlayerPed(int playerId) { + plugin::Call<0x60D790, int>(playerId); +} + +// Converted from thiscall void CPlayerPed::ProcessWeaponSwitch(CPad *pad) 0x60D850 +void CPlayerPed::ProcessWeaponSwitch(CPad* pad) { + plugin::CallMethod<0x60D850, CPlayerPed *, CPad*>(this, pad); +} + +// Converted from thiscall bool CPlayerPed::FindWeaponLockOnTarget(void) 0x60DC50 +bool CPlayerPed::FindWeaponLockOnTarget() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPlayerPed::FindNextWeaponLockOnTarget(CEntity *,bool) 0x60E530 +bool CPlayerPed::FindNextWeaponLockOnTarget(CEntity* arg0, bool arg1) { + return plugin::CallMethodAndReturn(this, arg0, arg1); +} + +// Converted from thiscall int CPlayerPed::GetWantedLevel(void) 0x41BE60 +int CPlayerPed::GetWantedLevel() { + return plugin::CallMethodAndReturn(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerPed.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerPed.h new file mode 100644 index 00000000..041f919b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPlayerPed.h @@ -0,0 +1,104 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPed.h" +#include "eWeaponType.h" +#include "CPad.h" +#include "eSprintType.h" + +class CEventDamage; +class CPlayerInfo; + +class CPlayerPed : public CPed { +public: + CPed *m_pPlayerTargettedPed; + int field_7A0; + + // did we display "JCK_HLP" message + static bool &bHasDisplayedPlayerQuitEnterCarHelpText; + + CPlayerPed(int playerId, bool bGroupCreated); + + // Thanks to Silent + inline CWanted *GetWanted() { + return m_pPlayerData ? m_pPlayerData->m_pWanted : nullptr; + } + + CPad* GetPadFromPlayer(); + bool CanPlayerStartMission(); + bool IsHidden(); + void ReApplyMoveAnims(); + bool DoesPlayerWantNewWeapon(eWeaponType weaponType, bool arg1); + // dummy function + void ProcessPlayerWeapon(CPad* pad); + void PickWeaponAllowedFor2Player(); + void UpdateCameraWeaponModes(CPad* pad); + void ProcessAnimGroups(); + void ClearWeaponTarget(); + float GetWeaponRadiusOnScreen(); + float FindTargetPriority(CEntity* entity); + void Clear3rdPersonMouseTarget(); + // GetWanted()->m_nWantedLevel = 0; + void Busted(); + void SetWantedLevel(int level); + void SetWantedLevelNoDrop(int level); + void CheatWantedLevel(int level); + bool CanIKReachThisTarget(CVector posn, CWeapon* weapon, bool arg2); + CPlayerInfo* GetPlayerInfoForThisPlayerPed(); + void DoStuffToGoOnFire(); + void AnnoyPlayerPed(bool arg0); + void ClearAdrenaline(); + void DisbandPlayerGroup(); + void MakeGroupRespondToPlayerTakingDamage(CEventDamage const& damageEvent); + void TellGroupToStartFollowingPlayer(bool arg0, bool arg1, bool arg2); + void MakePlayerGroupDisappear(); + void MakePlayerGroupReappear(); + void ResetSprintEnergy(); + bool HandleSprintEnergy(bool arg0, float arg1); + float ControlButtonSprint(eSprintType sprintType); + float GetButtonSprintResults(eSprintType sprintType); + void ResetPlayerBreath(); + void HandlePlayerBreath(bool arg0, float arg1); + void SetRealMoveAnim(); + void MakeChangesForNewWeapon(eWeaponType weaponType); + void Compute3rdPersonMouseTarget(bool meleeWeapon); + void DrawTriangleForMouseRecruitPed(); + bool DoesTargetHaveToBeBroken(CEntity* entity, CWeapon* weapon); + void KeepAreaAroundPlayerClear(); + void SetPlayerMoveBlendRatio(CVector* arg0); + CPed* FindPedToAttack(); + void ForceGroupToAlwaysFollow(bool enable); + void ForceGroupToNeverFollow(bool enable); + void MakeThisPedJoinOurGroup(CPed* ped); + bool PlayerWantsToAttack(); + void SetInitialState(bool bGroupCreated); + void MakeChangesForNewWeapon(int weaponSlot); + void EvaluateTarget(CEntity* target, CEntity** outTarget, float* outTargetPriority, float maxDistance, float arg4, bool arg5); + void EvaluateNeighbouringTarget(CEntity* target, CEntity** outTarget, float* outTargetPriority, float maxDistance, float arg4, bool arg5); + void ProcessGroupBehaviour(CPad* pad); + // return PlayerWantsToAttack(); + bool PlayerHasJustAttackedSomeone(); + void ProcessWeaponSwitch(CPad* pad); + bool FindWeaponLockOnTarget(); + bool FindNextWeaponLockOnTarget(CEntity* arg0, bool arg1); + int GetWantedLevel(); + + static void RemovePlayerPed(int playerId); + static void DeactivatePlayerPed(int playerId); + static void ReactivatePlayerPed(int playerId); + static bool PedCanBeTargettedVehicleWise(CPed* ped); + static void SetupPlayerPed(int playerId); +}; + +VALIDATE_SIZE(CPlayerPed, 0x7A4); + +extern char *abTempNeverLeavesGroup; // char abTempNeverLeavesGroup[7]; +extern int &gPlayIdlesAnimBlockIndex; + +bool LOSBlockedBetweenPeds(CEntity* entity1, CEntity* entity2); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPointLights.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPointLights.cpp new file mode 100644 index 00000000..8543968d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPointLights.cpp @@ -0,0 +1,50 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPointLights.h" + +unsigned int MAX_POINTLIGHTS = 32; + +unsigned int& CPointLights::NumLights = *(unsigned int *)0xC3F0D0; +CPointLight *CPointLights::aLights = (CPointLight *)0xC3F0E0; +float *CPointLights::aCachedMapReadResults = (float *)0xC3F050; +unsigned int &CPointLights::NextCachedValue = *(unsigned int *)0xC3F0D4; +CVector *CPointLights::aCachedMapReads = (CVector *)0xC3F6E0; + +// Converted from cdecl void CPointLights::Init(void) 0x6FFB40 +void CPointLights::Init() { + plugin::Call<0x6FFB40>(); +} + +// Converted from cdecl float CPointLights::GenerateLightsAffectingObject(CVector const*point,float *totalLighting,CEntity *entity) 0x6FFBB0 +float CPointLights::GenerateLightsAffectingObject(CVector const* point, float* totalLighting, CEntity* entity) { + return plugin::CallAndReturn(point, totalLighting, entity); +} + +// Converted from cdecl float CPointLights::GetLightMultiplier(CVector const*point) 0x6FFE70 +float CPointLights::GetLightMultiplier(CVector const* point) { + return plugin::CallAndReturn(point); +} + +// Converted from cdecl void CPointLights::RemoveLightsAffectingObject(void) 0x6FFFE0 +void CPointLights::RemoveLightsAffectingObject() { + plugin::Call<0x6FFFE0>(); +} + +// Converted from cdecl bool CPointLights::ProcessVerticalLineUsingCache(CVector point,float *outZ) 0x6FFFF0 +bool CPointLights::ProcessVerticalLineUsingCache(CVector point, float* outZ) { + return plugin::CallAndReturn(point, outZ); +} + +// Converted from cdecl void CPointLights::AddLight(uchar lightType,CVector point,CVector direction,float radius,float red,float green,float blue,uchar fogType,bool generateExtraShadows,CEntity *entityAffected) 0x7000E0 +void CPointLights::AddLight(unsigned char lightType, CVector point, CVector direction, float radius, float red, float green, float blue, unsigned char fogType, bool generateExtraShadows, CEntity* entityAffected) { + plugin::Call<0x7000E0, unsigned char, CVector, CVector, float, float, float, float, unsigned char, bool, CEntity*>(lightType, point, direction, radius, red, green, blue, fogType, generateExtraShadows, entityAffected); +} + +// Converted from cdecl void CPointLights::RenderFogEffect(void) 0x7002D0 +void CPointLights::RenderFogEffect() { + plugin::Call<0x7002D0>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPointLights.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPointLights.h new file mode 100644 index 00000000..edcf3d73 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPointLights.h @@ -0,0 +1,63 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class CEntity; + +enum ePointLightType : unsigned char +{ + PLTYPE_POINTLIGHT = 0, + PLTYPE_SPOTLIGHT = 1, + PLTYPE_DARKLIGHT = 2, +}; + +class CPointLight { +public: + CVector m_vecPosn; + CVector m_vecDirection; + float m_fRange; + float m_fColorRed; + float m_fColorGreen; + float m_fColorBlue; + CEntity *m_pEntityToLight; + ePointLightType m_nType; // see ePointLightType + unsigned char m_nFogType; + bool m_bGenerateShadows; +private: + char _pad0; +}; + +VALIDATE_SIZE(CPointLight, 0x30); + +class CPointLights { +public: + // static variables + + // num of registered lights in frame + static unsigned int& NumLights; + // lights array. Count: MAX_POINTLIGHTS (32) + static CPointLight *aLights; + + static float *aCachedMapReadResults; // static float aCachedMapReadResults[MAX_POINTLIGHTS]; + static unsigned int &NextCachedValue; // static int NextCachedValue; + static CVector *aCachedMapReads; // static CVector aCachedMapReads[MAX_POINTLIGHTS]; + + // static functions + + static void Init(); + static float GenerateLightsAffectingObject(CVector const* point, float* totalLighting, CEntity* entity); + static float GetLightMultiplier(CVector const* point); + static void RemoveLightsAffectingObject(); + static bool ProcessVerticalLineUsingCache(CVector point, float* outZ); + static void AddLight(unsigned char lightType, CVector point, CVector direction, float radius, float red, float green, float blue, unsigned char fogType, bool generateExtraShadows, CEntity* entityAffected); + static void RenderFogEffect(); +}; + +extern unsigned int MAX_POINTLIGHTS; // default: 32 \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPointList.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPointList.cpp new file mode 100644 index 00000000..99612d11 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPointList.cpp @@ -0,0 +1,16 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPointList.h" + +PLUGIN_SOURCE_FILE + +int addrof(CPointList::Empty) = ADDRESS_BY_VERSION(0x699F00, 0, 0, 0, 0, 0); +int gaddrof(CPointList::Empty) = GLOBAL_ADDRESS_BY_VERSION(0x699F00, 0, 0, 0, 0, 0); + +void CPointList::Empty() { + plugin::CallMethodDynGlobal(gaddrof(CPointList::Empty), this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPointList.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPointList.h new file mode 100644 index 00000000..a9c6785d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPointList.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class PLUGIN_API CPointList { +public: + unsigned int m_nCount; + CVector m_avCoords[24]; + bool m_abUsedCoords[24]; + + SUPPORTED_10US void Empty(); +}; + +VALIDATE_SIZE(CPointList, 0x13C); + +#include "meta/meta.CPointList.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPolyBunch.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPolyBunch.cpp new file mode 100644 index 00000000..66e4320a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPolyBunch.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPolyBunch.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPolyBunch.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPolyBunch.h new file mode 100644 index 00000000..0b209610 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPolyBunch.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class CPolyBunch { +public: + CVector m_avecPosn[7]; + void *m_pNext; + unsigned short m_wNumVerts; + char m_aU[7]; + char m_aV[7]; +}; + +VALIDATE_SIZE(CPolyBunch, 0x68); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPool.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPool.h new file mode 100644 index 00000000..ea3bc582 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPool.h @@ -0,0 +1,209 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +/* + R* terminology Our terminology + JustIndex Index + Index Id + Ref Handle/Ref +*/ + +union tPoolObjectFlags { + struct { + unsigned char nId : 7; + bool bEmpty : 1; + }; +private: + unsigned char nValue; +public: + unsigned char IntValue() { return nValue; } +}; + +VALIDATE_SIZE(tPoolObjectFlags, 1); + +template class CPool { +public: + B *m_pObjects; + tPoolObjectFlags *m_byteMap; + int m_nSize; + int m_nFirstFree; + bool m_bOwnsAllocations; + bool field_11; + + // Default constructor for statically allocated pools + CPool() { + // Remember to call CPool::Init to fill in the fields! + m_pObjects = nullptr; + m_byteMap = nullptr; + m_nSize = 0; + m_bOwnsAllocations = false; + } + + // Initializes pool + CPool(int nSize, const char* pPoolName) { + m_pObjects = static_cast(operator new(sizeof(B) * nSize)); + m_byteMap = static_cast(operator new(sizeof(tPoolObjectFlags) * nSize)); + m_nSize = nSize; + m_nFirstFree = -1; + m_bOwnsAllocations = true; + for (int i = 0; i < nSize; ++i) { + m_byteMap[i].bEmpty = true; + m_byteMap[i].nId = 0; + } + } + + ~CPool() { + Flush(); + } + + // Initialises a pool with preallocated + // To be called one-time-only for statically allocated pools. + void Init(int nSize, void* pObjects, void* pInfos) { + // Since we statically allocated the pools we do not deallocate. + assert(this->m_pObjects == nullptr); + m_pObjects = static_cast(pObjects); + m_byteMap = static_cast(pInfos); + m_nSize = nSize; + m_nFirstFree = -1; + m_bOwnsAllocations = false; + for (int i = 0; i < nSize; ++i) { + m_byteMap[i].bEmpty = true; + m_byteMap[i].nId = 0; + } + } + + // Shutdown pool + void Flush() { + if (m_bOwnsAllocations) { + operator delete(m_pObjects); + operator delete(m_byteMap); + } + m_pObjects = nullptr; + m_byteMap = nullptr; + m_nSize = 0; + m_nFirstFree = 0; + } + + // Clears pool + void Clear() { + for (int i = 0; i < m_nSize; i++) + m_byteMap[i].bEmpty = true; + } + + // Returns if specified slot is free (0x404940) + bool IsFreeSlotAtIndex(int idx) { + return m_byteMap[idx].bEmpty; + } + + // Returns slot index for this object + int GetIndex(A* pObject) { + return reinterpret_cast(pObject) - m_pObjects; + } + + // Returns pointer to object by slot index + A* GetAt(int nIndex) { + return !IsFreeSlotAtIndex(nIndex) ? (A *)&m_pObjects[nIndex] : nullptr; + } + + // Marks slot as free / used (0x404970) + void SetFreeAt(int idx, bool bFree) { + m_byteMap[idx].bEmpty = bFree; + } + + // Set new id for slot (0x54F9F0) + void SetIdAt(int idx, unsigned char id) { + m_byteMap[idx].nId = id; + } + + // Get id for slot (0x552200) + unsigned char GetIdAt(int idx) { + return m_byteMap[idx].nId; + } + + // Allocates object + A* New() { + bool bReachedTop = false; + do { + if (++m_nFirstFree >= m_nSize) { + if (bReachedTop) { + m_nFirstFree = -1; + return nullptr; + } + bReachedTop = true; + m_nFirstFree = 0; + } + } while (!m_byteMap[m_nFirstFree].bEmpty); + m_byteMap[m_nFirstFree].bEmpty = false; + ++m_byteMap[m_nFirstFree].nId; + return &m_pObjects[m_nFirstFree]; + } + + // Allocates object at a specific index from a SCM handle (ref) (0x59F610) + void CreateAtRef(int nRef) { + nRef >>= 8; + m_byteMap[nRef].bEmpty = false; + ++m_byteMap[nRef].nId; + m_nFirstFree = 0; + while (!m_byteMap[m_nFirstFree].bEmpty) + ++m_nFirstFree; + } + + // (0x5A1C00) + A *New(int nRef) { + A *result = &m_pObjects[nRef >> 8]; + CreateAtRef(nRef); + return result; + } + + // Deallocates object + void Delete(A* pObject) { + int nIndex = reinterpret_cast(pObject) - m_pObjects; + m_byteMap[nIndex].bEmpty = true; + if (nIndex < m_nFirstFree) + m_nFirstFree = nIndex; + } + + // Returns SCM handle (ref) for object (0x424160) + int GetRef(A* pObject) { + return (GetIndex(pObject) << 8) + m_byteMap[GetIndex(pObject)].IntValue(); + } + + // Returns pointer to object by SCM handle (ref) + A* GetAtRef(int ref) { + int nSlotIndex = ref >> 8; + return nSlotIndex >= 0 && nSlotIndex < m_nSize && m_byteMap[nSlotIndex].IntValue() == (ref & 0xFF) ? reinterpret_cast(&m_pObjects[nSlotIndex]) : nullptr; + } + + // (0x54F6B0) + unsigned int GetNoOfUsedSpaces() { + unsigned int counter = 0; + for (int i = 0; i < m_nSize; ++i) { + if (!IsFreeSlotAtIndex(i)) + ++counter; + } + return counter; + } + + unsigned int GetNoOfFreeSpaces() { + return m_nSize - GetNoOfUsedSpaces(); + } + + // (0x54F690) + unsigned int GetObjectSize() { + return sizeof(B); + } + + // (0x5A1CD0) + bool IsObjectValid(A *obj) { + int slot = GetIndex(obj); + return slot >= 0 && slot < m_nSize && !IsFreeSlotAtIndex(slot); + } +}; + +VALIDATE_SIZE(CPool, 0x14); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPools.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPools.cpp new file mode 100644 index 00000000..9896d9a8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPools.cpp @@ -0,0 +1,113 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPools.h" + +CPool *&CPools::ms_pPedPool = *(CPool **)0xB74490; +CPool *&CPools::ms_pVehiclePool = *(CPool **)0xB74494; +CPool *&CPools::ms_pBuildingPool = *(CPool **)0xB74498; +CPool *&CPools::ms_pObjectPool = *(CPool **)0xB7449C; +CPool *&CPools::ms_pDummyPool = *(CPool **)0xB744A0; +CPool *&CPools::ms_pColModelPool = *(CPool **)0xB744A4; +CPool *&CPools::ms_pTaskPool = *(CPool **)0xB744A8; +CPool *&CPools::ms_pPedIntelligencePool = *(CPool **)0xB744C0; +CPool *&ms_pPtrNodeSingleLinkPool = *(CPool **)0xB74484; +CPool *&ms_pPtrNodeDoubleLinkPool = *(CPool **)0xB74488; + +// Converted from cdecl int CPools::CheckBuildingAtomics(void) 0x550170 +int CPools::CheckBuildingAtomics() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CPools::CheckPoolsEmpty(void) 0x551950 +void CPools::CheckPoolsEmpty() { + plugin::Call<0x551950>(); +} + +// Converted from cdecl CObject* CPools::GetObject(int handle) 0x550050 +CObject* CPools::GetObject(int handle) { + return plugin::CallAndReturn(handle); +} + +// Converted from cdecl int CPools::GetObjectRef(CObject *object) 0x550020 +int CPools::GetObjectRef(CObject* object) { + return plugin::CallAndReturn(object); +} + +// Converted from cdecl CPed* CPools::GetPed(int handle) 0x54FF90 +CPed* CPools::GetPed(int handle) { + return plugin::CallAndReturn(handle); +} + +// Converted from cdecl int CPools::GetPedRef(CPed *ped) 0x54FF60 +int CPools::GetPedRef(CPed* ped) { + return plugin::CallAndReturn(ped); +} + +// Converted from cdecl CVehicle* CPools::GetVehicle(int) 0x54FFF0 +CVehicle* CPools::GetVehicle(int handle) { + return plugin::CallAndReturn(handle); +} + +// Converted from cdecl int CPools::GetVehicleRef(CVehicle *vehicle) 0x54FFC0 +int CPools::GetVehicleRef(CVehicle* vehicle) { + return plugin::CallAndReturn(vehicle); +} + +// Converted from cdecl void CPools::Initialise(void) 0x550F10 +void CPools::Initialise() { + plugin::Call<0x550F10>(); +} + +// Converted from cdecl bool CPools::Load(void) 0x5D0890 +bool CPools::Load() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CPools::LoadObjectPool(void) 0x5D4A40 +bool CPools::LoadObjectPool() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CPools::LoadPedPool(void) 0x5D2D70 +bool CPools::LoadPedPool() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CPools::LoadVehiclePool(void) 0x5D2A20 +bool CPools::LoadVehiclePool() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CPools::MakeSureSlotInObjectPoolIsEmpty(int slot) 0x550080 +void CPools::MakeSureSlotInObjectPoolIsEmpty(int slot) { + plugin::Call<0x550080, int>(slot); +} + +// Converted from cdecl bool CPools::Save(void) 0x5D0880 +bool CPools::Save() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CPools::SaveObjectPool(void) 0x5D4940 +bool CPools::SaveObjectPool() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CPools::SavePedPool(void) 0x5D4B40 +bool CPools::SavePedPool() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CPools::SaveVehiclePool(void) 0x5D4800 +bool CPools::SaveVehiclePool() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CPools::ShutDown(void) 0x5519F0 +void CPools::ShutDown() { + plugin::Call<0x5519F0>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPools.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPools.h new file mode 100644 index 00000000..bb3c5036 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPools.h @@ -0,0 +1,67 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPool.h" +#include "CCopPed.h" +#include "CHeli.h" +#include "CBuilding.h" +#include "CCutsceneObject.h" +#include "CDummy.h" +#include "CColModel.h" +#include "CTask.h" +#include "CPedIntelligence.h" +#include "CPtrNodeSingleLink.h" +#include "CPtrNodeDoubleLink.h" + +#ifdef GetObject +#undef GetObject +#endif + +class CPools { +public: + static CPool *&ms_pPedPool; + static CPool *&ms_pVehiclePool; + static CPool *&ms_pBuildingPool; + static CPool *&ms_pObjectPool; + static CPool *&ms_pDummyPool; + static CPool *&ms_pColModelPool; + static CPool *&ms_pTaskPool; + static CPool *&ms_pPedIntelligencePool; + static CPool *&ms_pPtrNodeSingleLinkPool; + static CPool *&ms_pPtrNodeDoubleLinkPool; + + // dummy function; returns "-1" + static int CheckBuildingAtomics(); + static void CheckPoolsEmpty(); + static CObject* GetObject(int handle); + static int GetObjectRef(CObject* object); + static CPed* GetPed(int handle); + static int GetPedRef(CPed* ped); + static CVehicle* GetVehicle(int handle); + static int GetVehicleRef(CVehicle* vehicle); + static void Initialise(); + // returns "true" + static bool Load(); + // returns "true" + static bool LoadObjectPool(); + // returns "true" + static bool LoadPedPool(); + // returns "true" + static bool LoadVehiclePool(); + static void MakeSureSlotInObjectPoolIsEmpty(int slot); + // returns "true" + static bool Save(); + // returns "true" + static bool SaveObjectPool(); + // returns "true" + static bool SavePedPool(); + // returns "true" + static bool SaveVehiclePool(); + static void ShutDown(); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPopCycle.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPopCycle.cpp new file mode 100644 index 00000000..d9271bb8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPopCycle.cpp @@ -0,0 +1,95 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CPopCycle.h" + +float& CPopCycle::m_NumOther_Cars = *(float*)0xC0BC30; +float& CPopCycle::m_NumCops_Cars = *(float*)0xC0BC34; +float& CPopCycle::m_NumGangs_Cars = *(float*)0xC0BC38; +float& CPopCycle::m_NumDealers_Cars = *(float*)0xC0BC3C; +float& CPopCycle::m_NumOther_Peds = *(float*)0xC0BC40; +float& CPopCycle::m_NumCops_Peds = *(float*)0xC0BC44; +float& CPopCycle::m_NumGangs_Peds = *(float*)0xC0BC48; +float& CPopCycle::m_fPercOther = *(float*)0xC0BC4C; +float& CPopCycle::m_fPercCops = *(float*)0xC0BC50; +float& CPopCycle::m_fPercGangs = *(float*)0xC0BC54; +float& CPopCycle::m_fPercDealers = *(float*)0xC0BC58; +bool& CPopCycle::m_bCurrentZoneIsGangArea = *(bool*)0xC0BC5C; +float& CPopCycle::m_fCurrentZoneDodgyness = *(float*)0xC0BC60; +CZone* CPopCycle::m_pCurrZone = (CZone*)0xC0BC64; +CZoneInfo* CPopCycle::m_pCurrZoneInfo = (CZoneInfo*)0xC0BC68; +int& CPopCycle::m_nCurrentZoneType = *(int*)0xC0BC6C; +int& CPopCycle::m_nCurrentTimeOfWeek = *(int*)0xC0BC70; +int& CPopCycle::m_nCurrentTimeIndex = *(int*)0xC0BC74; +char* CPopCycle::m_nPercTypeGroup = (char*)0xC0BC78; +unsigned char* CPopCycle::m_nPercOther = (unsigned char*)0xC0DE38; +unsigned char* CPopCycle::m_nPercCops = (unsigned char*)0xC0E018; +unsigned char* CPopCycle::m_nPercGang = (unsigned char*)0xC0E1F8; +unsigned char* CPopCycle::m_nPercDealers = (unsigned char*)0xC0E3D8; +unsigned char* CPopCycle::m_nMaxNumCars = (unsigned char*)0xC0E5B8; +unsigned char* CPopCycle::m_nMaxNumPeds = (unsigned char*)0xC0E798; +float& CPopCycle::m_NumDealers_Peds = *(float*)0xC0E978; + + +// Converted from cdecl bool CPopCycle::FindNewPedType(ePedType *arg1,int * modelindex,bool arg3,bool arg4) 0x60FBD0 +bool CPopCycle::FindNewPedType(ePedType* arg1, int* modelindex, bool arg3, bool arg4) { + return plugin::CallAndReturn(arg1, modelindex, arg3, arg4); +} + +// Converted from cdecl float CPopCycle::GetCurrentPercOther_Peds(void) 0x610310 +float CPopCycle::GetCurrentPercOther_Peds() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CPopCycle::Initialise(void) 0x5BC090 +void CPopCycle::Initialise() { + plugin::Call<0x5BC090>(); +} + +// Converted from cdecl bool CPopCycle::IsPedAppropriateForCurrentZone(int modelindex) 0x610150 +bool CPopCycle::IsPedAppropriateForCurrentZone(int modelindex) { + return plugin::CallAndReturn(modelindex); +} + +// Converted from cdecl bool CPopCycle::IsPedInGroup(int modelIndex,int PopCycle_Group) 0x610210 +bool CPopCycle::IsPedInGroup(int modelIndex, int PopCycle_Group) { + return plugin::CallAndReturn(modelIndex, PopCycle_Group); +} + +// Converted from cdecl bool CPopCycle::PedIsAcceptableInCurrentZone(int modelIndex) 0x610720 +bool CPopCycle::PedIsAcceptableInCurrentZone(int modelIndex) { + return plugin::CallAndReturn(modelIndex); +} + +// Converted from cdecl int CPopCycle::PickARandomGroupOfOtherPeds(void) 0x610420 +int CPopCycle::PickARandomGroupOfOtherPeds() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CPopCycle::PlayerKilledADealer(void) 0x610490 +void CPopCycle::PlayerKilledADealer() { + plugin::Call<0x610490>(); +} + +// Converted from cdecl void CPopCycle::Update(void) 0x610BF0 +void CPopCycle::Update() { + plugin::Call<0x610BF0>(); +} + +// Converted from cdecl void CPopCycle::UpdateAreaDodgyness(void) 0x610560 +void CPopCycle::UpdateAreaDodgyness() { + plugin::Call<0x610560>(); +} + +// Converted from cdecl void CPopCycle::UpdateDealerStrengths(void) 0x6104B0 +void CPopCycle::UpdateDealerStrengths() { + plugin::Call<0x6104B0>(); +} + +// Converted from cdecl void CPopCycle::UpdatePercentages(void) 0x610770 +void CPopCycle::UpdatePercentages() { + plugin::Call<0x610770>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPopCycle.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPopCycle.h new file mode 100644 index 00000000..e6231dea --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPopCycle.h @@ -0,0 +1,157 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "ePedType.h" +#include "CZoneInfo.h" +#include "CZone.h" + +enum ePopcyclePedGroup { + POPCYCLE_PEDGROUP_WORKERS_LA, + POPCYCLE_PEDGROUP_WORKERS_SF, + POPCYCLE_PEDGROUP_WORKERS_VG, + POPCYCLE_PEDGROUP_BUSINESS_LA, + POPCYCLE_PEDGROUP_BUSINESS_SF, + POPCYCLE_PEDGROUP_BUSINESS_VG, + POPCYCLE_PEDGROUP_CLUBBERS_LA, + POPCYCLE_PEDGROUP_CLUBBERS_SF, + POPCYCLE_PEDGROUP_CLUBBERS_VG, + POPCYCLE_PEDGROUP_FARMERS, + POPCYCLE_PEDGROUP_BEACHFOLK, + POPCYCLE_PEDGROUP_PARKFOLK_LA, + POPCYCLE_PEDGROUP_PARKFOLK_SF, + POPCYCLE_PEDGROUP_PARKFOLK_VG, + POPCYCLE_PEDGROUP_CASUAL_RICH_LA, + POPCYCLE_PEDGROUP_CASUAL_RICH_SF, + POPCYCLE_PEDGROUP_CASUAL_RICH_VG, + POPCYCLE_PEDGROUP_CASUAL_AVERAGE_LA, + POPCYCLE_PEDGROUP_CASUAL_AVERAGE_SF, + POPCYCLE_PEDGROUP_CASUAL_AVERAGE_VG, + POPCYCLE_PEDGROUP_CASUAL_POOR_LA, + POPCYCLE_PEDGROUP_CASUAL_POOR_SF, + POPCYCLE_PEDGROUP_CASUAL_POOR_VG, + POPCYCLE_PEDGROUP_PROSTITUTES_LA, + POPCYCLE_PEDGROUP_PROSTITUTES_SF, + POPCYCLE_PEDGROUP_PROSTITUTES_VG, + POPCYCLE_PEDGROUP_CRIMINALS_LA, + POPCYCLE_PEDGROUP_CRIMINALS_SF, + POPCYCLE_PEDGROUP_CRIMINALS_VG, + POPCYCLE_PEDGROUP_GOLFERS, + POPCYCLE_PEDGROUP_SERVANTS_LA, + POPCYCLE_PEDGROUP_SERVANTS_SF, + POPCYCLE_PEDGROUP_SERVANTS_VG, + POPCYCLE_PEDGROUP_AIRCREW_LA, + POPCYCLE_PEDGROUP_AIRCREW_SF, + POPCYCLE_PEDGROUP_AIRCREW_VG, + POPCYCLE_PEDGROUP_ENTERTAINERS_LA, + POPCYCLE_PEDGROUP_ENTERTAINERS_SF, + POPCYCLE_PEDGROUP_ENTERTAINERS_VG, + POPCYCLE_PEDGROUP_OUT_OF_TOWN_FACTORY_WORKERS, + POPCYCLE_PEDGROUP_DESERT_FOLK, + POPCYCLE_PEDGROUP_AIRCREW_RUNWAY, + POPCYCLE_PEDGROUP_BALLAS, + POPCYCLE_PEDGROUP_GROVE, + POPCYCLE_PEDGROUP_VAGOS, + POPCYCLE_PEDGROUP_SF_RIFA, + POPCYCLE_PEDGROUP_DA_NANG_BOYS, + POPCYCLE_PEDGROUP_ITALIAN_MAFIA, + POPCYCLE_PEDGROUP_TRIADS, + POPCYCLE_PEDGROUP_VARRIO_LOS_AZTECAZ, + POPCYCLE_PEDGROUP_DEALERS = 52, + POPCYCLE_PEDGROUP_SHOPKEEPERS, + POPCYCLE_PEDGROUP_OFFICE_WORKERS, + POPCYCLE_PEDGROUP_HUSBANDS, + POPCYCLE_PEDGROUP_WIVES, + + POPCYCLE_TOTAL_NUM_PEDGROUPS +}; + +enum ePopcycleCarGroup { + POPCYCLE_CARGROUP_WORKERS, + POPCYCLE_CARGROUP_BUSINESS, + POPCYCLE_CARGROUP_CLUBBERS, + POPCYCLE_CARGROUP_FARMERS, + POPCYCLE_CARGROUP_BEACHFOLK, + POPCYCLE_CARGROUP_PARKFOLK, + POPCYCLE_CARGROUP_CASUAL_RICH, + POPCYCLE_CARGROUP_CASUAL_AVERAGE, + POPCYCLE_CARGROUP_CASUAL_POOR, + POPCYCLE_CARGROUP_PROSTITUTES, + POPCYCLE_CARGROUP_CRIMINALS, + POPCYCLE_CARGROUP_GOLFERS, + POPCYCLE_CARGROUP_SERVANTS, + POPCYCLE_CARGROUP_AIRCREW, + POPCYCLE_CARGROUP_ENTERTAINERS, + POPCYCLE_CARGROUP_OUT_OF_TOWN_FACTORY, + POPCYCLE_CARGROUP_DESERT_FOLK, + POPCYCLE_CARGROUP_AIRCREW_RUNWAY, + POPCYCLE_CARGROUP_BALLAS, + POPCYCLE_CARGROUP_GROVE, + POPCYCLE_CARGROUP_VAGOS, + POPCYCLE_CARGROUP_SF_RIFA, + POPCYCLE_CARGROUP_DA_NANG_BOYS, + POPCYCLE_CARGROUP_ITALIAN_MAFIA, + POPCYCLE_CARGROUP_TRIADS, + POPCYCLE_CARGROUP_VARRIO_LOS_AZTECAZ, + POPCYCLE_CARGROUP_DEALERS = 28, + POPCYCLE_CARGROUP_BOATS, + POPCYCLE_CARGROUP_CHEAT1, + POPCYCLE_CARGROUP_CHEAT2, + POPCYCLE_CARGROUP_CHEAT3, + POPCYCLE_CARGROUP_CHEAT4, + + POPCYCLE_TOTAL_NUM_CARGROUPS +}; + + +class PLUGIN_API CPopCycle +{ +public: + + static float& m_NumOther_Cars; + static float& m_NumCops_Cars; + static float& m_NumGangs_Cars; + static float& m_NumDealers_Cars; + static float& m_NumOther_Peds; + static float& m_NumCops_Peds; + static float& m_NumGangs_Peds; + static float& m_fPercOther; + static float& m_fPercCops; + static float& m_fPercGangs; + static float& m_fPercDealers; + static bool& m_bCurrentZoneIsGangArea; + static float& m_fCurrentZoneDodgyness; + static CZone* m_pCurrZone; + static CZoneInfo* m_pCurrZoneInfo; + static int& m_nCurrentZoneType; + static int& m_nCurrentTimeOfWeek; + static int& m_nCurrentTimeIndex; + static char* m_nPercTypeGroup; // char m_nPercTypeGroup[8640]; + static unsigned char* m_nPercOther; // unsigned char m_nPercOther[480]; + static unsigned char* m_nPercCops; // unsigned char m_nPercCops[480]; + static unsigned char* m_nPercGang; // unsigned char m_nPercGang[480]; + static unsigned char* m_nPercDealers; // unsigned char m_nPercDealers[480]; + static unsigned char* m_nMaxNumCars; // unsigned char m_nMaxNumCars[480]; + static unsigned char* m_nMaxNumPeds; // unsigned char m_nMaxNumPeds[480]; + static float& m_NumDealers_Peds; + + + + static bool FindNewPedType(ePedType* arg1, int* modelindex, bool arg3, bool arg4); + static float GetCurrentPercOther_Peds(); + static void Initialise(); + static bool IsPedAppropriateForCurrentZone(int modelindex); + static bool IsPedInGroup(int modelIndex, int PopCycle_Group); + static bool PedIsAcceptableInCurrentZone(int modelIndex); + static int PickARandomGroupOfOtherPeds(); + static void PlayerKilledADealer(); + static void Update(); + static void UpdateAreaDodgyness(); + static void UpdateDealerStrengths(); + static void UpdatePercentages(); + +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPopulation.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPopulation.cpp new file mode 100644 index 00000000..80d4eb64 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPopulation.cpp @@ -0,0 +1,366 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPopulation.h" + +float &CPopulation::PedDensityMultiplier = *(float *)0x8D2530; +int &CPopulation::m_AllRandomPedsThisType = *(int *)0x8D2534; +unsigned int &CPopulation::MaxNumberOfPedsInUse = *(unsigned int *)0x8D2538; +unsigned int &CPopulation::NumberOfPedsInUseInterior = *(unsigned int *)0x8D253C; +tPedGroupTranslationData *CPopulation::m_TranslationArray = (tPedGroupTranslationData*)0x8D2540; +CLoadedCarGroup &CPopulation::m_LoadedBoats = *(CLoadedCarGroup *)0xC0E998; +CLoadedCarGroup &CPopulation::m_InAppropriateLoadedCars = *(CLoadedCarGroup *)0xC0E9C8; +CLoadedCarGroup &CPopulation::m_AppropriateLoadedCars = *(CLoadedCarGroup *)0xC0E9F8; +CLoadedCarGroup *CPopulation::m_LoadedGangCars = (CLoadedCarGroup *)0xC0EA28; +bool &CPopulation::bZoneChangeHasHappened = *(bool *)0xC0EC22; +unsigned char &CPopulation::m_CountDownToPedsAtStart = *(unsigned char *)0xC0EC23; +unsigned int &CPopulation::ms_nTotalMissionPeds = *(unsigned int *)0xC0EC24; +unsigned int &CPopulation::ms_nTotalPeds = *(unsigned int *)0xC0EC28; +unsigned int &CPopulation::ms_nTotalGangPeds = *(unsigned int *)0xC0EC2C; +unsigned int &CPopulation::ms_nTotalCivPeds = *(unsigned int *)0xC0EC30; +unsigned int &CPopulation::ms_nTotalCarPassengerPeds = *(unsigned int *)0xC0EC34; +unsigned int &CPopulation::ms_nNumDealers = *(unsigned int *)0xC0EC38; +unsigned int *CPopulation::ms_nNumGang = (unsigned int *)0xC0EC3C; +unsigned int &CPopulation::ms_nNumEmergency = *(unsigned int *)0xC0EC64; +unsigned int &CPopulation::ms_nNumCop = *(unsigned int *)0xC0EC68; +unsigned int &CPopulation::ms_nNumCivFemale = *(unsigned int *)0xC0EC6C; +unsigned int &CPopulation::ms_nNumCivMale = *(unsigned int *)0xC0EC70; +unsigned short *CPopulation::m_nNumCarsInGroup = (unsigned short *)0xC0EC78; +unsigned short *CPopulation::m_nNumPedsInGroup = (unsigned short *)0xC0ECC0; +short (*CPopulation::m_CarGroups)[23] = (short (*)[23])0xC0ED38; +short (*CPopulation::m_PedGroups)[21] = (short (*)[21])0xC0F358; +bool &CPopulation::m_bDontCreateRandomGangMembers = *(bool *)0xC0FCB2; +bool &CPopulation::m_bOnlyCreateRandomGangMembers = *(bool *)0xC0FCB3; +bool &CPopulation::m_bDontCreateRandomCops = *(bool *)0xC0FCB4; +bool &CPopulation::m_bMoreCarsAndFewerPeds = *(bool *)0xC0FCB5; +bool &CPopulation::bInPoliceStation = *(bool *)0xC0FCB6; +unsigned int &CPopulation::NumMiamiViceCops = *(unsigned int *)0xC0FCB8; +unsigned int &CPopulation::CurrentWorldZone = *(unsigned int *)0xC0FCBC; + +// Converted from cdecl int CPopulation::FindPedRaceFromName(char *modelName) 0x5B6D40 +int CPopulation::FindPedRaceFromName(char* modelName) { + return ((int(__cdecl *)(char*))0x5B6D40)(modelName); +} + +// Converted from cdecl void CPopulation::LoadPedGroups(void) 0x5BCFE0 +void CPopulation::LoadPedGroups() { + ((void(__cdecl *)())0x5BCFE0)(); +} + +// Converted from cdecl void CPopulation::LoadCarGroups(void) 0x5BD1A0 +void CPopulation::LoadCarGroups() { + ((void(__cdecl *)())0x5BD1A0)(); +} + +// Converted from cdecl void CPopulation::Initialise(void) 0x610E10 +void CPopulation::Initialise() { + ((void(__cdecl *)())0x610E10)(); +} + +// Converted from cdecl void CPopulation::Shutdown(void) 0x610EC0 +void CPopulation::Shutdown() { + ((void(__cdecl *)())0x610EC0)(); +} + +// Converted from cdecl float CPopulation::FindDummyDistForModel(int modelIndex) 0x610ED0 +float CPopulation::FindDummyDistForModel(int modelIndex) { + return ((float(__cdecl *)(int))0x610ED0)(modelIndex); +} + +// Converted from cdecl float CPopulation::FindPedDensityMultiplierCullZone(void) 0x610F00 +float CPopulation::FindPedDensityMultiplierCullZone() { + return ((float(__cdecl *)())0x610F00)(); +} + +// Converted from cdecl void CPopulation::RemovePed(CPed *ped) 0x610F20 +void CPopulation::RemovePed(CPed* ped) { + ((void(__cdecl *)(CPed*))0x610F20)(ped); +} + +// Converted from cdecl int CPopulation::ChoosePolicePedOccupation(void) 0x610F40 +int CPopulation::ChoosePolicePedOccupation() { + return ((int(__cdecl *)())0x610F40)(); +} + +// Converted from cdecl bool CPopulation::ArePedStatsCompatible(int statType1,int statType2) 0x610F50 +bool CPopulation::ArePedStatsCompatible(int statType1, int statType2) { + return ((bool(__cdecl *)(int, int))0x610F50)(statType1, statType2); +} + +// Converted from cdecl bool CPopulation::PedMICanBeCreatedAtAttractor(int modelIndex) 0x6110C0 +bool CPopulation::PedMICanBeCreatedAtAttractor(int modelIndex) { + return ((bool(__cdecl *)(int))0x6110C0)(modelIndex); +} + +// Converted from cdecl bool CPopulation::PedMICanBeCreatedAtThisAttractor(int modelIndex,char *attrName) 0x6110E0 +bool CPopulation::PedMICanBeCreatedAtThisAttractor(int modelIndex, char* attrName) { + return ((bool(__cdecl *)(int, char*))0x6110E0)(modelIndex, attrName); +} + +// Converted from cdecl bool CPopulation::PedMICanBeCreatedInInterior(int modelIndex) 0x611450 +bool CPopulation::PedMICanBeCreatedInInterior(int modelIndex) { + return ((bool(__cdecl *)(int))0x611450)(modelIndex); +} + +// Converted from cdecl bool CPopulation::IsMale(int modelIndex) 0x611470 +bool CPopulation::IsMale(int modelIndex) { + return ((bool(__cdecl *)(int))0x611470)(modelIndex); +} + +// Converted from cdecl bool CPopulation::IsFemale(int modelIndex) 0x611490 +bool CPopulation::IsFemale(int modelIndex) { + return ((bool(__cdecl *)(int))0x611490)(modelIndex); +} + +// Converted from cdecl bool CPopulation::IsSecurityGuard(ePedType pedType) 0x6114B0 +bool CPopulation::IsSecurityGuard(ePedType pedType) { + return ((bool(__cdecl *)(ePedType))0x6114B0)(pedType); +} + +// Converted from cdecl bool CPopulation::IsSkateable(CVector const&point) 0x6114C0 +bool CPopulation::IsSkateable(CVector const& point) { + return ((bool(__cdecl *)(CVector const&))0x6114C0)(point); +} + +// Converted from cdecl void CPopulation::ChooseGangOccupation(int) 0x611550 +void CPopulation::ChooseGangOccupation(int arg0) { + ((void(__cdecl *)(int))0x611550)(arg0); +} + +// Converted from cdecl CPed* CPopulation::AddExistingPedInCar(CPed *ped,CVehicle *vehicle) 0x611560 +CPed* CPopulation::AddExistingPedInCar(CPed* ped, CVehicle* vehicle) { + return ((CPed*(__cdecl *)(CPed*, CVehicle*))0x611560)(ped, vehicle); +} + +// Converted from cdecl void CPopulation::UpdatePedCount(CPed *ped,uchar updateState) 0x611570 +void CPopulation::UpdatePedCount(CPed* ped, unsigned char updateState) { + ((void(__cdecl *)(CPed*, unsigned char))0x611570)(ped, updateState); +} + +// Converted from cdecl void CPopulation::MoveCarsAndPedsOutOfAbandonedZones(void) 0x6116A0 +void CPopulation::MoveCarsAndPedsOutOfAbandonedZones() { + ((void(__cdecl *)())0x6116A0)(); +} + +// Converted from cdecl void CPopulation::DealWithZoneChange(eLevelName,eLevelName,bool) 0x6116B0 +void CPopulation::DealWithZoneChange(eLevelName arg0, eLevelName arg1, bool arg2) { + ((void(__cdecl *)(eLevelName, eLevelName, bool))0x6116B0)(arg0, arg1, arg2); +} + +// Converted from cdecl float CPopulation::PedCreationDistMultiplier(void) 0x6116C0 +float CPopulation::PedCreationDistMultiplier() { + return ((float(__cdecl *)())0x6116C0)(); +} + +// Converted from cdecl bool CPopulation::IsSunbather(int modelIndex) 0x611760 +bool CPopulation::IsSunbather(int modelIndex) { + return ((bool(__cdecl *)(int))0x611760)(modelIndex); +} + +// Converted from cdecl bool CPopulation::CanSolicitPlayerOnFoot(int modelIndex) 0x611780 +bool CPopulation::CanSolicitPlayerOnFoot(int modelIndex) { + return ((bool(__cdecl *)(int))0x611780)(modelIndex); +} + +// Converted from cdecl bool CPopulation::CanSolicitPlayerInCar(int modelIndex) 0x611790 +bool CPopulation::CanSolicitPlayerInCar(int modelIndex) { + return ((bool(__cdecl *)(int))0x611790)(modelIndex); +} + +// Converted from cdecl bool CPopulation::CanJeerAtStripper(int modelIndex) 0x6117B0 +bool CPopulation::CanJeerAtStripper(int modelIndex) { + return ((bool(__cdecl *)(int))0x6117B0)(modelIndex); +} + +// Converted from cdecl void CPopulation::PlaceGangMembers(ePedType pedType,int,CVector const&posn) 0x6117D0 +void CPopulation::PlaceGangMembers(ePedType pedType, int arg1, CVector const& posn) { + ((void(__cdecl *)(ePedType, int, CVector const&))0x6117D0)(pedType, arg1, posn); +} + +// Converted from cdecl void CPopulation::LoadSpecificDriverModelsForCar(int carModelIndex) 0x6117F0 +void CPopulation::LoadSpecificDriverModelsForCar(int carModelIndex) { + ((void(__cdecl *)(int))0x6117F0)(carModelIndex); +} + +// Converted from cdecl int CPopulation::FindSpecificDriverModelForCar_ToUse(int carModelIndex) 0x611900 +int CPopulation::FindSpecificDriverModelForCar_ToUse(int carModelIndex) { + return ((int(__cdecl *)(int))0x611900)(carModelIndex); +} + +// Converted from cdecl void CPopulation::RemoveSpecificDriverModelsForCar(int carModelIndex) 0x6119D0 +void CPopulation::RemoveSpecificDriverModelsForCar(int carModelIndex) { + ((void(__cdecl *)(int))0x6119D0)(carModelIndex); +} + +// Converted from cdecl bool CPopulation::IsCorrectTimeOfDayForEffect(C2dEffect const*effect) 0x611B20 +bool CPopulation::IsCorrectTimeOfDayForEffect(C2dEffect const* effect) { + return ((bool(__cdecl *)(C2dEffect const*))0x611B20)(effect); +} + +// Converted from cdecl float CPopulation::FindCarMultiplierMotorway(void) 0x611B60 +float CPopulation::FindCarMultiplierMotorway() { + return ((float(__cdecl *)())0x611B60)(); +} + +// Converted from cdecl float CPopulation::FindPedMultiplierMotorway(void) 0x611B80 +float CPopulation::FindPedMultiplierMotorway() { + return ((float(__cdecl *)())0x611B80)(); +} + +// Converted from cdecl void CPopulation::ManagePed(CPed *ped,CVector const&playerPosn) 0x611FC0 +void CPopulation::ManagePed(CPed* ped, CVector const& playerPosn) { + ((void(__cdecl *)(CPed*, CVector const&))0x611FC0)(ped, playerPosn); +} + +// Converted from cdecl int CPopulation::FindNumberOfPedsWeCanPlaceOnBenches(void) 0x612240 +int CPopulation::FindNumberOfPedsWeCanPlaceOnBenches() { + return ((int(__cdecl *)())0x612240)(); +} + +// Converted from cdecl void CPopulation::RemoveAllRandomPeds(void) 0x6122C0 +void CPopulation::RemoveAllRandomPeds() { + ((void(__cdecl *)())0x6122C0)(); +} + +// Converted from cdecl bool CPopulation::TestRoomForDummyObject(CObject *object) 0x612320 +bool CPopulation::TestRoomForDummyObject(CObject* object) { + return ((bool(__cdecl *)(CObject*))0x612320)(object); +} + +// Converted from cdecl bool CPopulation::TestSafeForRealObject(CDummyObject *dummyObject) 0x6123A0 +bool CPopulation::TestSafeForRealObject(CDummyObject* dummyObject) { + return ((bool(__cdecl *)(CDummyObject*))0x6123A0)(dummyObject); +} + +// Converted from cdecl CPed* CPopulation::AddPed(ePedType pedType,uint modelIndex,CVector const&posn,bool makeWander) 0x612710 +CPed* CPopulation::AddPed(ePedType pedType, unsigned int modelIndex, CVector const& posn, bool makeWander) { + return ((CPed* (__cdecl *)(ePedType, unsigned int, CVector const&, bool))0x612710)(pedType, modelIndex, posn, makeWander); +} + +// Converted from cdecl CPed* CPopulation::AddDeadPedInFrontOfCar(CVector const&posn,CVehicle *vehicle) 0x612CD0 +CPed* CPopulation::AddDeadPedInFrontOfCar(CVector const& posn, CVehicle* vehicle) { + return ((CPed* (__cdecl *)(CVector const&, CVehicle*))0x612CD0)(posn, vehicle); +} + +// Converted from cdecl int CPopulation::ChooseCivilianOccupation(bool male,bool female,int animType,int ignoreModelIndex,int statType,bool,bool,bool checkAttractor,char *attrName) 0x612F90 +int CPopulation::ChooseCivilianOccupation(bool male, bool female, int animType, int ignoreModelIndex, int statType, bool arg5, bool arg6, bool checkAttractor, char* attrName) { + return ((int(__cdecl *)(bool, bool, int, int, int, bool, bool, bool, char*))0x612F90)(male, female, animType, ignoreModelIndex, statType, arg5, arg6, checkAttractor, attrName); +} + +// Converted from cdecl void CPopulation::ChooseCivilianCoupleOccupations(int &model1,int &model2) 0x613180 +void CPopulation::ChooseCivilianCoupleOccupations(int& model1, int& model2) { + ((void(__cdecl *)(int&, int&))0x613180)(model1, model2); +} + +// Converted from cdecl int CPopulation::ChooseCivilianOccupationForVehicle(bool male,CVehicle *vehicle) 0x613260 +int CPopulation::ChooseCivilianOccupationForVehicle(bool male, CVehicle* vehicle) { + return ((int(__cdecl *)(bool, CVehicle*))0x613260)(male, vehicle); +} + +// Converted from cdecl void CPopulation::CreateWaitingCoppers(CVector posn,float) 0x6133F0 +void CPopulation::CreateWaitingCoppers(CVector posn, float arg1) { + ((void(__cdecl *)(CVector, float))0x6133F0)(posn, arg1); +} + +// Converted from cdecl CPed* CPopulation::AddPedInCar(CVehicle *vehicle,bool driver,int gangPedType,int seatNumber,bool male,bool criminal) 0x613A00 +CPed* CPopulation::AddPedInCar(CVehicle* vehicle, bool driver, int gangPedType, int seatNumber, bool male, bool criminal) { + return ((CPed* (__cdecl *)(CVehicle*, bool, int, int, bool, bool))0x613A00)(vehicle, driver, gangPedType, seatNumber, male, criminal); +} + +// Converted from cdecl void CPopulation::PlaceMallPedsAsStationaryGroup(CVector const&posn) 0x613CD0 +void CPopulation::PlaceMallPedsAsStationaryGroup(CVector const& posn) { + ((void(__cdecl *)(CVector const&))0x613CD0)(posn); +} + +// Converted from cdecl void CPopulation::PlaceCouple(ePedType pedType1,int modelIndex1,ePedType pedType2,int modelIndex2,CVector posn) 0x613D60 +void CPopulation::PlaceCouple(ePedType pedType1, int modelIndex1, ePedType pedType2, int modelIndex2, CVector posn) { + ((void(__cdecl *)(ePedType, int, ePedType, int, CVector))0x613D60)(pedType1, modelIndex1, pedType2, modelIndex2, posn); +} + +// Converted from cdecl bool CPopulation::AddPedAtAttractor(int modelIndex,C2dEffect *attractor,CVector posn,CEntity *entity,int decisionMakerType) 0x614210 +bool CPopulation::AddPedAtAttractor(int modelIndex, C2dEffect* attractor, CVector posn, CEntity* entity, int decisionMakerType) { + return ((bool(__cdecl *)(int, C2dEffect*, CVector, CEntity*, int))0x614210)(modelIndex, attractor, posn, entity, decisionMakerType); +} + +// Converted from cdecl float CPopulation::FindDistanceToNearestPedOfType(ePedType pedType,CVector posn) 0x6143E0 +float CPopulation::FindDistanceToNearestPedOfType(ePedType pedType, CVector posn) { + return ((float(__cdecl *)(ePedType, CVector))0x6143E0)(pedType, posn); +} + +// Converted from cdecl int CPopulation::PickGangCar(int gangId) 0x614490 +int CPopulation::PickGangCar(int gangId) { + return ((int(__cdecl *)(int))0x614490)(gangId); +} + +// Converted from cdecl int CPopulation::PickRiotRoadBlockCar(void) 0x6144B0 +int CPopulation::PickRiotRoadBlockCar() { + return ((int(__cdecl *)())0x6144B0)(); +} + +// Converted from cdecl void CPopulation::ConvertToRealObject(CDummyObject *dummyObject) 0x614580 +void CPopulation::ConvertToRealObject(CDummyObject* dummyObject) { + ((void(__cdecl *)(CDummyObject*))0x614580)(dummyObject); +} + +// Converted from cdecl void CPopulation::ConvertToDummyObject(CObject *object) 0x614670 +void CPopulation::ConvertToDummyObject(CObject* object) { + ((void(__cdecl *)(CObject*))0x614670)(object); +} + +// Converted from cdecl bool CPopulation::AddToPopulation(float,float,float,float) 0x614720 +bool CPopulation::AddToPopulation(float arg0, float arg1, float arg2, float arg3) { + return ((bool(__cdecl *)(float, float, float, float))0x614720)(arg0, arg1, arg2, arg3); +} + +// Converted from cdecl int CPopulation::GeneratePedsAtAttractors(CVector posn,float,float,float,float,int decisionMakerType,int numPeds) 0x615970 +int CPopulation::GeneratePedsAtAttractors(CVector posn, float arg1, float arg2, float arg3, float arg4, int decisionMakerType, int numPeds) { + return ((int(__cdecl *)(CVector, float, float, float, float, int, int))0x615970)(posn, arg1, arg2, arg3, arg4, decisionMakerType, numPeds); +} + +// Converted from cdecl void CPopulation::GeneratePedsAtStartOfGame(void) 0x615C90 +void CPopulation::GeneratePedsAtStartOfGame() { + ((void(__cdecl *)())0x615C90)(); +} + +// Converted from cdecl void CPopulation::ManageObject(CObject *object,CVector const&posn) 0x615DC0 +void CPopulation::ManageObject(CObject* object, CVector const& posn) { + ((void(__cdecl *)(CObject*, CVector const&))0x615DC0)(object, posn); +} + +// Converted from cdecl void CPopulation::ManageDummy(CDummy *dummy,CVector const&posn) 0x616000 +void CPopulation::ManageDummy(CDummy* dummy, CVector const& posn) { + ((void(__cdecl *)(CDummy*, CVector const&))0x616000)(dummy, posn); +} + +// Converted from cdecl void CPopulation::ManageAllPopulation(void) 0x6160A0 +void CPopulation::ManageAllPopulation() { + ((void(__cdecl *)())0x6160A0)(); +} + +// Converted from cdecl void CPopulation::ManagePopulation(void) 0x616190 +void CPopulation::ManagePopulation() { + ((void(__cdecl *)())0x616190)(); +} + +// Converted from cdecl void CPopulation::RemovePedsIfThePoolGetsFull(void) 0x616300 +void CPopulation::RemovePedsIfThePoolGetsFull() { + ((void(__cdecl *)())0x616300)(); +} + +// Converted from cdecl void CPopulation::ConvertAllObjectsToDummyObjects(void) 0x616420 +void CPopulation::ConvertAllObjectsToDummyObjects() { + ((void(__cdecl *)())0x616420)(); +} + +// Converted from cdecl void CPopulation::PopulateInterior(int numPeds,CVector posn) 0x616470 +void CPopulation::PopulateInterior(int numPeds, CVector posn) { + ((void(__cdecl *)(int, CVector))0x616470)(numPeds, posn); +} + +// Converted from cdecl void CPopulation::Update(bool generatePeds) 0x616650 +void CPopulation::Update(bool generatePeds) { + ((void(__cdecl *)(bool))0x616650)(generatePeds); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPopulation.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPopulation.h new file mode 100644 index 00000000..befabf3b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPopulation.h @@ -0,0 +1,174 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CLoadedCarGroup.h" +#include "CPed.h" +#include "CDummy.h" +#include "CDummyObject.h" +#include "CZone.h" + +enum ePedRace { + RACE_DEFAULT = 0, + RACE_BLACK = 1, // 'B' + RACE_WHITE = 2, // 'W' + RACE_ORIENTAL = 3, // 'O', 'I' + RACE_HISPANIC = 4 // 'H' +}; + +enum eUpdatePedCounterState { + UPDATE_PED_COUNTER_INCREASE = 0, + UPDATE_PED_COUNTER_DECREASE = 1 +}; + +struct tPedGroupTranslationData { + unsigned int pedGroupId; + int field_4; + int field_8; +}; + +class PLUGIN_API CPopulation { +public: + // static variables + + static float & PedDensityMultiplier; + static int & m_AllRandomPedsThisType; + static unsigned int & MaxNumberOfPedsInUse; + static unsigned int & NumberOfPedsInUseInterior; + // static tPedGroupTranslationData m_TranslationArray[33] + static tPedGroupTranslationData * m_TranslationArray; + static CLoadedCarGroup & m_LoadedBoats; + static CLoadedCarGroup & m_InAppropriateLoadedCars; + static CLoadedCarGroup & m_AppropriateLoadedCars; + // static CLoadedCarGroup m_LoadedGangCars[11] + static CLoadedCarGroup * m_LoadedGangCars; + static bool & bZoneChangeHasHappened; + static unsigned char & m_CountDownToPedsAtStart; + static unsigned int & ms_nTotalMissionPeds; + static unsigned int & ms_nTotalPeds; + static unsigned int & ms_nTotalGangPeds; + static unsigned int & ms_nTotalCivPeds; + static unsigned int & ms_nTotalCarPassengerPeds; + static unsigned int & ms_nNumDealers; + // static unsigned int ms_nNumGang[10] + static unsigned int * ms_nNumGang; + static unsigned int & ms_nNumEmergency; + static unsigned int & ms_nNumCop; + static unsigned int & ms_nNumCivFemale; + static unsigned int & ms_nNumCivMale; + // static unsigned short m_nNumCarsInGroup[POPCYCLE_TOTAL_NUM_CARGROUPS] (34) + static unsigned short * m_nNumCarsInGroup; + // static unsigned short m_nNumPedsInGroup[POPCYCLE_TOTAL_NUM_PEDGROUPS] (57) + static unsigned short * m_nNumPedsInGroup; + // static short m_CarGroups[POPCYCLE_TOTAL_NUM_CARGROUPS][23] (34) + static short (* m_CarGroups )[23]; + // static short m_PedGroups[POPCYCLE_TOTAL_NUM_PEDGROUPS][21] (57) + static short (* m_PedGroups )[21]; + static bool & m_bDontCreateRandomGangMembers; + static bool & m_bOnlyCreateRandomGangMembers; + static bool & m_bDontCreateRandomCops; + static bool & m_bMoreCarsAndFewerPeds; + static bool & bInPoliceStation; + static unsigned int & NumMiamiViceCops; + static unsigned int & CurrentWorldZone; + + // static functions + + // returns ePedRace value + static int FindPedRaceFromName(char* modelName); + // loads pedgrp.dat + static void LoadPedGroups(); + // loads cargrp.dat + static void LoadCarGroups(); + // init variables at game init and reinit + static void Initialise(); + // empty function + static void Shutdown(); + static float FindDummyDistForModel(int modelIndex); + static float FindPedDensityMultiplierCullZone(); + // CWorld::Remove(ped); delete ped; + static void RemovePed(CPed* ped); + // returns 0 + static int ChoosePolicePedOccupation(); + static bool ArePedStatsCompatible(int statType1, int statType2); + static bool PedMICanBeCreatedAtAttractor(int modelIndex); + // checks if ped with specific model index can be created at script attractor + static bool PedMICanBeCreatedAtThisAttractor(int modelIndex, char* attrName); + static bool PedMICanBeCreatedInInterior(int modelIndex); + // is model male + static bool IsMale(int modelIndex); + // is model female + static bool IsFemale(int modelIndex); + // returns false + static bool IsSecurityGuard(ePedType pedType); + // checks if surface at this point is skateable + static bool IsSkateable(CVector const& point); + // calls CGangs::ChooseGangPedModel(int); parameter - gang id? + static void ChooseGangOccupation(int arg0); + // empty function, returns ped + static CPed* AddExistingPedInCar(CPed* ped, CVehicle* vehicle); + // updates ped counter, for updateState see eUpdatePedCounterState + static void UpdatePedCount(CPed* ped, unsigned char updateState); + // empty function + static void MoveCarsAndPedsOutOfAbandonedZones(); + // empty function + static void DealWithZoneChange(eLevelName arg0, eLevelName arg1, bool arg2); + // returns ped creation distance multiplier + static float PedCreationDistMultiplier(); + static bool IsSunbather(int modelIndex); + // returns false + static bool CanSolicitPlayerOnFoot(int modelIndex); + // returns true if ped type is PED_TYPE_PROSTITUTE + static bool CanSolicitPlayerInCar(int modelIndex); + // returns true if ped type is PED_TYPE_CIVMALE + static bool CanJeerAtStripper(int modelIndex); + static void PlaceGangMembers(ePedType pedType, int arg1, CVector const& posn); + static void LoadSpecificDriverModelsForCar(int carModelIndex); + // returns ped model index + static int FindSpecificDriverModelForCar_ToUse(int carModelIndex); + static void RemoveSpecificDriverModelsForCar(int carModelIndex); + static bool IsCorrectTimeOfDayForEffect(C2dEffect const* effect); + // return CPopulation::m_bMoreCarsAndFewerPeds? 1.7f : 1.0f; + static float FindCarMultiplierMotorway(); + // return 1.0f; + static float FindPedMultiplierMotorway(); + static void ManagePed(CPed* ped, CVector const& playerPosn); + static int FindNumberOfPedsWeCanPlaceOnBenches(); + static void RemoveAllRandomPeds(); + static bool TestRoomForDummyObject(CObject* object); + static bool TestSafeForRealObject(CDummyObject* dummyObject); + static CPed* AddPed(ePedType pedType, unsigned int modelIndex, CVector const& posn, bool makeWander); + // creates male01 ped in front of car? + static CPed* AddDeadPedInFrontOfCar(CVector const& posn, CVehicle* vehicle); + static int ChooseCivilianOccupation(bool male, bool female, int animType, int ignoreModelIndex, int statType, bool arg5, bool arg6, bool checkAttractor, char* attrName); + static void ChooseCivilianCoupleOccupations(int& model1, int& model2); + static int ChooseCivilianOccupationForVehicle(bool male, CVehicle* vehicle); + static void CreateWaitingCoppers(CVector posn, float arg1); + // Creates ped in a vehicle. gangPedType can be set to -1 + static CPed* AddPedInCar(CVehicle* vehicle, bool driver, int gangPedType, int seatNumber, bool male, bool criminal); + static void PlaceMallPedsAsStationaryGroup(CVector const& posn); + static void PlaceCouple(ePedType pedType1, int modelIndex1, ePedType pedType2, int modelIndex2, CVector posn); + // Creates ped at attractor. decisionMakerType can be set to -1 + static bool AddPedAtAttractor(int modelIndex, C2dEffect* attractor, CVector posn, CEntity* entity, int decisionMakerType); + static float FindDistanceToNearestPedOfType(ePedType pedType, CVector posn); + static int PickGangCar(int gangId); + static int PickRiotRoadBlockCar(); + static void ConvertToRealObject(CDummyObject* dummyObject); + static void ConvertToDummyObject(CObject* object); + static bool AddToPopulation(float arg0, float arg1, float arg2, float arg3); + // returns number of generated peds? + static int GeneratePedsAtAttractors(CVector posn, float arg1, float arg2, float arg3, float arg4, int decisionMakerType, int numPeds); + static void GeneratePedsAtStartOfGame(); + static void ManageObject(CObject* object, CVector const& posn); + static void ManageDummy(CDummy* dummy, CVector const& posn); + static void ManageAllPopulation(); + static void ManagePopulation(); + static void RemovePedsIfThePoolGetsFull(); + static void ConvertAllObjectsToDummyObjects(); + static void PopulateInterior(int numPeds, CVector posn); + static void Update(bool generatePeds); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CProjectile.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CProjectile.cpp new file mode 100644 index 00000000..96838178 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CProjectile.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CProjectile.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CProjectile.h b/third-party/plugin-sdk/plugin_sa/game_sa/CProjectile.h new file mode 100644 index 00000000..64ad79d1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CProjectile.h @@ -0,0 +1,16 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CObject.h" + +class PLUGIN_API CProjectile : public CObject { +public: +}; + +VALIDATE_SIZE(CProjectile, 0x17C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CProjectileInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CProjectileInfo.cpp new file mode 100644 index 00000000..07d7c15e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CProjectileInfo.cpp @@ -0,0 +1,72 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CProjectileInfo.h" + +unsigned int MAX_PROJECTILES = 32; +CProjectile **CProjectileInfo::ms_apProjectile = (CProjectile **)0xC89110; +unsigned int MAX_PROJECTILE_INFOS = 32; +CProjectileInfo *gaProjectileInfo = (CProjectileInfo *)0xC891A8; + +// Converted from cdecl void CProjectileInfo::Initialise(void) 0x737B40 +void CProjectileInfo::Initialise() { + plugin::Call<0x737B40>(); +} + +// Converted from cdecl void CProjectileInfo::RemoveFXSystem(uchar bInstantly) 0x737B80 +void CProjectileInfo::RemoveFXSystem(unsigned char bInstantly) { + plugin::Call<0x737B80, unsigned char>(bInstantly); +} + +// Converted from cdecl void CProjectileInfo::Shutdown(void) 0x737BC0 +void CProjectileInfo::Shutdown() { + plugin::Call<0x737BC0>(); +} + +// Converted from cdecl CProjectileInfo* CProjectileInfo::GetProjectileInfo(int infoId) 0x737BF0 +CProjectileInfo* CProjectileInfo::GetProjectileInfo(int infoId) { + return plugin::CallAndReturn(infoId); +} + +// Converted from cdecl void CProjectileInfo::RemoveNotAdd(CEntity *creator,eWeaponType weaponType,CVector posn) 0x737C00 +void CProjectileInfo::RemoveNotAdd(CEntity* creator, eWeaponType weaponType, CVector posn) { + plugin::Call<0x737C00, CEntity*, eWeaponType, CVector>(creator, weaponType, posn); +} + +// Converted from cdecl bool CProjectileInfo::AddProjectile(CEntity *creator,eWeaponType weaponType,CVector posn,float force,CVector *direction,CEntity *victim) 0x737C80 +bool CProjectileInfo::AddProjectile(CEntity* creator, eWeaponType weaponType, CVector posn, float force, CVector* direction, CEntity* victim) { + return plugin::CallAndReturn(creator, weaponType, posn, force, direction, victim); +} + +// Converted from cdecl void CProjectileInfo::RemoveDetonatorProjectiles(void) 0x738860 +void CProjectileInfo::RemoveDetonatorProjectiles() { + plugin::Call<0x738860>(); +} + +// Converted from cdecl void CProjectileInfo::RemoveProjectile(CProjectileInfo*projectileInfo,CProjectile *projectileObject) 0x7388F0 +void CProjectileInfo::RemoveProjectile(CProjectileInfo* projectileInfo, CProjectile* projectileObject) { + plugin::Call<0x7388F0, CProjectileInfo*, CProjectile*>(projectileInfo, projectileObject); +} + +// Converted from cdecl void CProjectileInfo::Update(void) 0x738B20 +void CProjectileInfo::Update() { + plugin::Call<0x738B20>(); +} + +// Converted from cdecl bool CProjectileInfo::IsProjectileInRange(float x1,float y1,float z1,float x2,float y2,float z2,bool bDestroy) 0x739860 +bool CProjectileInfo::IsProjectileInRange(float x1, float y1, float z1, float x2, float y2, float z2, bool bDestroy) { + return plugin::CallAndReturn(x1, y1, z1, x2, y2, z2, bDestroy); +} + +// Converted from cdecl void CProjectileInfo::RemoveAllProjectiles(void) 0x7399B0 +void CProjectileInfo::RemoveAllProjectiles() { + plugin::Call<0x7399B0>(); +} + +// Converted from cdecl bool CProjectileInfo::RemoveIfThisIsAProjectile(CObject *object) 0x739A40 +bool CProjectileInfo::RemoveIfThisIsAProjectile(CObject* object) { + return plugin::CallAndReturn(object); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CProjectileInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CProjectileInfo.h new file mode 100644 index 00000000..ea18c874 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CProjectileInfo.h @@ -0,0 +1,45 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "eWeaponType.h" +#include "CProjectile.h" +#include "FxSystem_c.h" + +extern unsigned int MAX_PROJECTILES; // default 32 + +class PLUGIN_API CProjectileInfo { +public: + unsigned int m_nWeaponType; // see eWeaponType + CEntity *m_pCreator; + CEntity *m_pVictim; + int m_nDestroyTime; + bool m_bActive; +private: + char _pad11[3]; +public: + CVector m_vecLastPosn; + FxSystem_c *m_pFxSystem; + + static CProjectile **ms_apProjectile; // static CProjectile *ms_apProjectile[MAX_PROJECTILES] + + static void Initialise(); + static void RemoveFXSystem(unsigned char bInstantly); + static void Shutdown(); + static CProjectileInfo* GetProjectileInfo(int infoId); + static void RemoveNotAdd(CEntity* creator, eWeaponType weaponType, CVector posn); + static bool AddProjectile(CEntity* creator, eWeaponType eWeaponType, CVector posn, float force, CVector* direction, CEntity* victim); + static void RemoveDetonatorProjectiles(); + static void RemoveProjectile(CProjectileInfo* projectileInfo, CProjectile* projectileObject); + static void Update(); + static bool IsProjectileInRange(float x1, float y1, float z1, float x2, float y2, float z2, bool bDestroy); + static void RemoveAllProjectiles(); + static bool RemoveIfThisIsAProjectile(CObject* object); +}; + +extern unsigned int MAX_PROJECTILE_INFOS; // default 32 +extern CProjectileInfo *gaProjectileInfo; // CProjectileInfo gaProjectileInfo[MAX_PROJECTILE_INFOS] \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPtrList.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrList.cpp new file mode 100644 index 00000000..dc129322 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrList.cpp @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPtrList.h" + +// Converted from thiscall uint CPtrList::CountElements(void) 0x5521B0 +unsigned int CPtrList::CountElements() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CPtrList::IsMemberOfList(void *memberNode) 0x5521D0 +bool CPtrList::IsMemberOfList(void* memberNode) { + return plugin::CallMethodAndReturn(this, memberNode); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPtrList.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrList.h new file mode 100644 index 00000000..23b42f09 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrList.h @@ -0,0 +1,53 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CPtrNode.h" + +class PLUGIN_API CPtrList { +protected: + CPtrNode *pNode; +public: + inline CPtrNode *GetNode() { + return pNode; + } + + inline CPtrList() { + pNode = nullptr; + } + + // get elements count + unsigned int CountElements(); + + /* + unsigned int CountElements() { + unsigned int counter; + CPtrNode *currNode = GetNode(); + for (counter = 0; currNode; ++counter) + currNode = currNode->pNext; + return counter; + } + */ + + // check if data is a member of list + bool IsMemberOfList(void* data); + + /* + bool IsMemberOfList(void* data) { + CPtrNode *currNode = GetNode(); + while (currNode) { + if (currNode->pData == data) + return true; + currNode = currNode->pNext; + } + return false; + } + */ + +}; + +VALIDATE_SIZE(CPtrList, 4); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPtrListDoubleLink.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrListDoubleLink.cpp new file mode 100644 index 00000000..6cd528ba --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrListDoubleLink.cpp @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPtrListDoubleLink.h" + +// Converted from thiscall void CPtrListDoubleLink::Flush(void) 0x552470 +void CPtrListDoubleLink::Flush() { + plugin::CallMethod<0x552470, CPtrListDoubleLink *>(this); +} + +// Converted from thiscall void CPtrListDoubleLink::AddItem(void *item) 0x533670 +void CPtrListDoubleLink::AddItem(void* item) { + plugin::CallMethod<0x533670, CPtrListDoubleLink *, void*>(this, item); +} + +// Converted from thiscall void CPtrListDoubleLink::DeleteItem(void *item) 0x5336B0 +void CPtrListDoubleLink::DeleteItem(void* item) { + plugin::CallMethod<0x5336B0, CPtrListDoubleLink *, void*>(this, item); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPtrListDoubleLink.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrListDoubleLink.h new file mode 100644 index 00000000..33c90e57 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrListDoubleLink.h @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CPtrList.h" +#include "CPtrNodeDoubleLink.h" + +class PLUGIN_API CPtrListDoubleLink : public CPtrList { +public: + inline CPtrNodeDoubleLink *GetNode() { + return reinterpret_cast(pNode); + } + + inline ~CPtrListDoubleLink() { + Flush(); + } + + void Flush(); + void AddItem(void* item); + void DeleteItem(void* item); +}; + +VALIDATE_SIZE(CPtrListDoubleLink, 4); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPtrListSingleLink.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrListSingleLink.cpp new file mode 100644 index 00000000..a34698c2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrListSingleLink.cpp @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPtrListSingleLink.h" + +// Converted from thiscall void CPtrListSingleLink::Flush(void) 0x552400 +void CPtrListSingleLink::Flush() { + plugin::CallMethod<0x552400, CPtrListSingleLink *>(this); +} + +// Converted from thiscall void CPtrListSingleLink::AddItem(void *item) 0x5335E0 +void CPtrListSingleLink::AddItem(void* item) { + plugin::CallMethod<0x5335E0, CPtrListSingleLink *, void*>(this, item); +} + +// Converted from thiscall void CPtrListSingleLink::DeleteItem(void *item) 0x533610 +void CPtrListSingleLink::DeleteItem(void* item) { + plugin::CallMethod<0x533610, CPtrListSingleLink *, void*>(this, item); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPtrListSingleLink.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrListSingleLink.h new file mode 100644 index 00000000..c891559a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrListSingleLink.h @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CPtrList.h" +#include "CPtrNodeSingleLink.h" + +class PLUGIN_API CPtrListSingleLink : public CPtrList { +public: + inline CPtrNodeSingleLink *GetNode() { + return reinterpret_cast(pNode); + } + + inline ~CPtrListSingleLink() { + Flush(); + } + + void Flush(); + void AddItem(void* item); + void DeleteItem(void* item); +}; + +VALIDATE_SIZE(CPtrListSingleLink, 4); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNode.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNode.h new file mode 100644 index 00000000..a1deb29d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNode.h @@ -0,0 +1,18 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +class PLUGIN_API CPtrNode { +public: + void *pItem; + CPtrNode *pNext; + + inline CPtrNode(void *item) : pItem(item) {} +}; + +VALIDATE_SIZE(CPtrNode, 8); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNodeDoubleLink.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNodeDoubleLink.cpp new file mode 100644 index 00000000..088835d9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNodeDoubleLink.cpp @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPtrNodeDoubleLink.h" + +// Converted from cdecl void* CPtrNodeDoubleLink::operator new(uint size) 0x5523C0 +void* CPtrNodeDoubleLink::operator new(unsigned int size) { + return plugin::CallAndReturn(size); +} + +// Converted from cdecl void CPtrNodeDoubleLink::operator delete(void *data) 0x5523D0 +void CPtrNodeDoubleLink::operator delete(void* data) { + plugin::Call<0x5523D0, void*>(data); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNodeDoubleLink.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNodeDoubleLink.h new file mode 100644 index 00000000..043ba598 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNodeDoubleLink.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CPtrNodeDoubleLink { +public: + void *pItem; + CPtrNodeDoubleLink *pNext; + CPtrNodeDoubleLink *pPrev; + + inline CPtrNodeDoubleLink(void *item) : pItem(item) {} + + static void* operator new(unsigned int size); + static void operator delete(void* data); +}; + +VALIDATE_SIZE(CPtrNodeDoubleLink, 0xC); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNodeSingleLink.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNodeSingleLink.cpp new file mode 100644 index 00000000..ec41fa3f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNodeSingleLink.cpp @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CPtrNodeSingleLink.h" + +// Converted from cdecl void* CPtrNodeSingleLink::operator new(uint size) 0x552380 +void* CPtrNodeSingleLink::operator new(unsigned int size) { + return plugin::CallAndReturn(size); +} + +// Converted from cdecl void CPtrNodeSingleLink::operator delete(void *data) 0x552390 +void CPtrNodeSingleLink::operator delete(void* data) { + plugin::Call<0x552390, void*>(data); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNodeSingleLink.h b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNodeSingleLink.h new file mode 100644 index 00000000..9e38e316 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CPtrNodeSingleLink.h @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CPtrNodeSingleLink { +public: + void *pItem; + CPtrNodeSingleLink *pNext; + + inline CPtrNodeSingleLink(void *item) : pItem(item) {} + + static void* operator new(unsigned int size); + static void operator delete(void* data); +}; + +VALIDATE_SIZE(CPtrNodeSingleLink, 8); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CQuadBike.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CQuadBike.cpp new file mode 100644 index 00000000..6ababbdd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CQuadBike.cpp @@ -0,0 +1,16 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CQuadBike.h" + +bool& bDoQuadDamping = *(bool *)0x8D3450; +float& QUAD_HBSTEER_ANIM_MULT = *(float *)0x8D3454; +CVector& vecQuadResistance = *(CVector *)0x8D3458; + +// Converted from thiscall void CQuadBike::CQuadBike(int modelIndex,uchar createdBy) 0x6CE370 +CQuadBike::CQuadBike(int modelIndex, unsigned char createdBy) : CAutomobile(plugin::dummy) { + ((void(__thiscall *)(CQuadBike*, int, unsigned char))0x6CE370)(this, modelIndex, createdBy); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CQuadBike.h b/third-party/plugin-sdk/plugin_sa/game_sa/CQuadBike.h new file mode 100644 index 00000000..098caa8c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CQuadBike.h @@ -0,0 +1,59 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAutomobile.h" +#include "CRideAnimData.h" + +enum eQuadBikeNodes { + QUAD_NODE_NONE = 0, + QUAD_CHASSIS = 1, + QUAD_WHEEL_RF = 2, + QUAD_WHEEL_RM = 3, + QUAD_WHEEL_RB = 4, + QUAD_WHEEL_LF = 5, + QUAD_WHEEL_LM = 6, + QUAD_WHEEL_LB = 7, + QUAD_DOOR_RF = 8, + QUAD_DOOR_RR = 9, + QUAD_DOOR_LF = 10, + QUAD_DOOR_LR = 11, + QUAD_BODY_FRONT = 12, + QUAD_BODY_REAR = 13, + QUAD_SUSPENSION_RF = 14, + QUAD_SUSPENSION_LF = 15, + QUAD_REAR_AXLE = 16, + QUAD_HANDLEBARS = 17, + QUAD_MISC_A = 18, + QUAD_MISC_B = 19, + QUAD_NUM_NODES +}; + +class CQuadBike : public CAutomobile { +protected: + CQuadBike(plugin::dummy_func_t) : CAutomobile(plugin::dummy) {} +public: + void *m_pHandling; + CRideAnimData m_rideAnimData; + float field_9A8; + int field_9AC; + int field_9B0; + int field_9B4; + unsigned char m_nQuadFlags; +private: + char _pad1[3]; +public: + + CQuadBike(int modelIndex, unsigned char createdBy); +}; + +VALIDATE_SIZE(CQuadBike, 0x9BC); + +extern bool& bDoQuadDamping; // true +extern float& QUAD_HBSTEER_ANIM_MULT; // -0.4 +extern CVector& vecQuadResistance; // { 0.995, 0.995, 1.0 } \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CQuadTreeNode.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CQuadTreeNode.cpp new file mode 100644 index 00000000..91d89092 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CQuadTreeNode.cpp @@ -0,0 +1,87 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CQuadTreeNode.h" + +// Converted from thiscall void CQuadTreeNode::AddItem(void *item,CRect const&rect) 0x552CD0 +void CQuadTreeNode::AddItem(void* item, CRect const& rect) { + plugin::CallMethod<0x552CD0, CQuadTreeNode *, void*, CRect const&>(this, item, rect); +} + +// Converted from thiscall void CQuadTreeNode::CQuadTreeNode(CRect const&rect,int startLevel) 0x552830 +CQuadTreeNode::CQuadTreeNode(CRect const& rect, int startLevel) { + plugin::CallMethod<0x552830, CQuadTreeNode *, CRect const&, int>(this, rect, startLevel); +} + +// Converted from thiscall void CQuadTreeNode::DeleteItem(void *item) 0x552A40 +void CQuadTreeNode::DeleteItem(void* item) { + plugin::CallMethod<0x552A40, CQuadTreeNode *, void*>(this, item); +} + +// Converted from thiscall void CQuadTreeNode::DeleteItem(void *item,CRect const&rect) 0x552A90 +void CQuadTreeNode::DeleteItem(void* item, CRect const& rect) { + plugin::CallMethod<0x552A90, CQuadTreeNode *, void*, CRect const&>(this, item, rect); +} + +// Converted from thiscall int CQuadTreeNode::FindSector(CRect const&rect) 0x5525A0 +int CQuadTreeNode::FindSector(CRect const& rect) { + return plugin::CallMethodAndReturn(this, rect); +} + +// Converted from thiscall int CQuadTreeNode::FindSector(CVector2D const&posn) 0x552640 +int CQuadTreeNode::FindSector(CVector2D const& posn) { + return plugin::CallMethodAndReturn(this, posn); +} + +// Converted from thiscall void CQuadTreeNode::ForAllMatching(CRect const&rect,void *callback) 0x552980 +void CQuadTreeNode::ForAllMatching(CRect const& rect, void(*callback)(CRect const&, void *)) { + plugin::CallMethod<0x552980, CQuadTreeNode *, CRect const&, void(*)(CRect const&, void *)>(this, rect, callback); +} + +// Converted from thiscall void CQuadTreeNode::ForAllMatching(CVector2D const&posn,void *callback) 0x5529F0 +void CQuadTreeNode::ForAllMatching(CVector2D const& posn, void(*callback)(CVector2D const&, void *)) { + plugin::CallMethod<0x5529F0, CQuadTreeNode *, CVector2D const&, void(*)(CVector2D const&, void *)>(this, posn, callback); +} + +// Converted from thiscall void CQuadTreeNode::GetAll(CPtrListSingleLink &list) 0x552870 +void CQuadTreeNode::GetAll(CPtrListSingleLink& list) { + plugin::CallMethod<0x552870, CQuadTreeNode *, CPtrListSingleLink&>(this, list); +} + +// Converted from thiscall void CQuadTreeNode::GetAllMatching(CRect const&rect,CPtrListSingleLink &list) 0x5528C0 +void CQuadTreeNode::GetAllMatching(CRect const& rect, CPtrListSingleLink& list) { + plugin::CallMethod<0x5528C0, CQuadTreeNode *, CRect const&, CPtrListSingleLink&>(this, rect, list); +} + +// Converted from thiscall void CQuadTreeNode::GetAllMatching(CVector2D const&posn,CPtrListSingleLink &list) 0x552930 +void CQuadTreeNode::GetAllMatching(CVector2D const& posn, CPtrListSingleLink& list) { + plugin::CallMethod<0x552930, CQuadTreeNode *, CVector2D const&, CPtrListSingleLink&>(this, posn, list); +} + +// Converted from thiscall bool CQuadTreeNode::InSector(CRect const&rect,int sector) 0x5526A0 +bool CQuadTreeNode::InSector(CRect const& rect, int sector) { + return plugin::CallMethodAndReturn(this, rect, sector); +} + +// Converted from thiscall void CQuadTreeNode::InitPool(void) 0x552C00 +void CQuadTreeNode::InitPool() { + plugin::CallMethod<0x552C00, CQuadTreeNode *>(this); +} + +// Converted from cdecl void CQuadTreeNode::operator delete(void *data) 0x552C90 +void CQuadTreeNode::operator delete(void* data) { + plugin::Call<0x552C90, void*>(data); +} + +// Converted from cdecl void* CQuadTreeNode::operator new(uint size) 0x552C80 +void* CQuadTreeNode::operator new(unsigned int size) { + return plugin::CallAndReturn(size); +} + +// Converted from thiscall void CQuadTreeNode::~CQuadTreeNode() 0x552520 +CQuadTreeNode::~CQuadTreeNode() { + plugin::CallMethod<0x552520, CQuadTreeNode *>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CQuadTreeNode.h b/third-party/plugin-sdk/plugin_sa/game_sa/CQuadTreeNode.h new file mode 100644 index 00000000..16d69248 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CQuadTreeNode.h @@ -0,0 +1,62 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CRect.h" +#include "CPtrListSingleLink.h" +#include "CPool.h" + +/* +node level 2 + +----------------------+-- + | node level 1 + + | +--------+--------+ + + | |node |node | + + | |level 0 |level 0 | + + | | | | + + | +--------+--------+ + + | |node |node | + + | |level 0 |level 0 | + + | | | | + + | +--------+--------+ + + +----------------------+-- + | | + + Total rectangles = 4^startLevel +*/ + +class PLUGIN_API CQuadTreeNode { +public: + CRect rect; + CPtrListSingleLink itemList; + CQuadTreeNode *childrens[4]; + unsigned int level; // 0 - last level + + static CPool *&ms_pQuadTreeNodePool; + + CQuadTreeNode(CRect const& rect, int startLevel); + ~CQuadTreeNode(); + + void AddItem(void* item, CRect const& rect); + void DeleteItem(void* item); + void DeleteItem(void* item, CRect const& rect); + int FindSector(CRect const& rect); // -1 if not found + int FindSector(CVector2D const& posn); // -1 if not found + void ForAllMatching(CRect const& rect, void(*callback)(CRect const&, void *)); + void ForAllMatching(CVector2D const& posn, void(*callback)(CVector2D const&, void *)); + void GetAll(CPtrListSingleLink& list); + void GetAllMatching(CRect const& rect, CPtrListSingleLink& list); + void GetAllMatching(CVector2D const& posn, CPtrListSingleLink& list); + bool InSector(CRect const& rect, int sector); + void InitPool(); + static void operator delete(void* data); + static void* operator new(unsigned int size); + +}; + +VALIDATE_SIZE(CQuadTreeNode, 0x28); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CQuaternion.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CQuaternion.cpp new file mode 100644 index 00000000..511917e0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CQuaternion.cpp @@ -0,0 +1,121 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CQuaternion.h" + +// Quat to matrix +void CQuaternion::Get(RwMatrix *out) +{ + ((void (__thiscall *)(CQuaternion *, RwMatrix *))0x59C080)(this, out); +} + +// Quat to euler angles +void CQuaternion::Get(float *x, float *y, float *z) +{ + ((void (__thiscall *)(CQuaternion *, float *, float *, float *))0x59C160)(this, x, y, z); +} + +// Quat to axis & angle +void CQuaternion::Get(RwV3d *axis, float *angle) +{ + ((void (__thiscall *)(CQuaternion *, RwV3d *, float *))0x59C230)(this, axis, angle); +} + +// Stores result of quat multiplication +void CQuaternion::Multiply(CQuaternion const& a, CQuaternion const& b) +{ + ((void (__thiscall *)(CQuaternion *, CQuaternion const&, CQuaternion const&))0x59C270)(this, a, b); +} + +// Spherical linear interpolation +void CQuaternion::Slerp(CQuaternion const& from, CQuaternion const& to, float halftheta, float sintheta_inv, float t) +{ + ((void (__thiscall *)(CQuaternion *, CQuaternion const&, CQuaternion const&, float, float, float))0x59C300)(this, from, to, halftheta, sintheta_inv, t); +} + +// Quat from matrix +void CQuaternion::Set(RwMatrix const& m) +{ + ((void (__thiscall *)(CQuaternion *, RwMatrix const&))0x59C3E0)(this, m); +} + +// Quat from euler angles +void CQuaternion::Set(float x, float y, float z) +{ + ((void (__thiscall *)(CQuaternion *, float, float, float))0x59C530)(this, x, y, z); +} + +// Quat from axis & angle +void CQuaternion::Set(RwV3d *axis, float angle) +{ + ((void (__thiscall *)(CQuaternion *, RwV3d *, float))0x59C600)(this, axis, angle); +} + +// Spherical linear interpolation +void CQuaternion::Slerp(CQuaternion const& from, CQuaternion const& to, float t) +{ + ((void (__thiscall *)(CQuaternion *, CQuaternion const&, CQuaternion const&, float))0x59C630)(this, from, to, t); +} + +// Conjugate of a quat +void CQuaternion::Conjugate() +{ + ((void (__thiscall *)(CQuaternion *))0x4D37D0)(this); +} + +// Squared length of a quat +float CQuaternion::GetLengthSquared(void) +{ + return ((float (__thiscall *)(CQuaternion *))0x4D12C0)(this); +} + +// Add right to the quat +void CQuaternion::operator+=(CQuaternion const& right) +{ + ((void (__thiscall*)(CQuaternion *, CQuaternion const&))0x4D12F0)(this, right); +} + +// Substract right from the quat +void CQuaternion::operator-=(CQuaternion const& right) +{ + ((void (__thiscall*)(CQuaternion *, CQuaternion const&))0x4D1320)(this, right); +} + +// Assigns value from other quat +void CQuaternion::operator=(CQuaternion const& right) +{ + ((void (__thiscall*)(CQuaternion *, CQuaternion const&))0x4D00C0)(this, right); +} + +// Multiplies quat by a floating point value +void CQuaternion::operator*=(float multiplier) +{ + ((void (__thiscall*)(CQuaternion *, float))0x4CF9B0)(this, multiplier); +} + +// Multiplies quat by a floating point value +void CQuaternion::Scale(float multiplier) +{ + ((void (__thiscall*)(CQuaternion *, float))0x4CF9B0)(this, multiplier); +} + +// Copies value from other quat +void CQuaternion::Copy(CQuaternion const& from) +{ + ((void (__thiscall*)(CQuaternion *, CQuaternion const&))0x4CF9E0)(this, from); +} + +// Gets a dot product for quats +void CQuaternion::Dot(CQuaternion const& a) +{ + ((void (__thiscall*)(CQuaternion *, CQuaternion const&))0x4CFA00)(this, a); +} + +// Normalises a quat +void CQuaternion::Normalise() +{ + ((void (__thiscall*)(CQuaternion *))0x4D1610)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CQuaternion.h b/third-party/plugin-sdk/plugin_sa/game_sa/CQuaternion.h new file mode 100644 index 00000000..bb94e765 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CQuaternion.h @@ -0,0 +1,76 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CVector.h" + +class PLUGIN_API CQuaternion { +public: + CVector imag; + float real; + + // Quat to matrix + void Get(RwMatrix* out); + + // Quat to euler angles + void Get(float *x, float *y, float *z); + + // Quat to axis & angle + void Get(RwV3d *axis, float *angle); + + // Stores result of quat multiplication + void Multiply(CQuaternion const& a, CQuaternion const& b); + + // Spherical linear interpolation + void Slerp(CQuaternion const& from, CQuaternion const& to, float halftheta, float sintheta_inv, float t); + + // Quat from matrix + void Set(RwMatrix const& m); + + // Quat from euler angles + void Set(float x, float y, float z); + + // Quat from axis & angle + void Set(RwV3d *axis, float angle); + + // Spherical linear interpolation + void Slerp(CQuaternion const& from, CQuaternion const& to, float t); + + // Conjugate of a quat + void Conjugate(); + + // Squared length of a quat + float GetLengthSquared(void); + + // Add right to the quat + void operator+=(CQuaternion const& right); + + // Substract right from the quat + void operator-=(CQuaternion const& right); + + // Assigns value from other quat + void operator=(CQuaternion const& right); + + // Multiplies quat by a floating point value + void operator*=(float multiplier); + + // Multiplies quat by a floating point value + void Scale(float multiplier); + + // Copies value from other quat + void Copy(CQuaternion const& from); + + // Gets a dot product for quats + void Dot(CQuaternion const& a); + + // Normalises a quat + void Normalise(); +}; + +VALIDATE_SIZE(CQuaternion, 0x10); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CQueuedMode.h b/third-party/plugin-sdk/plugin_sa/game_sa/CQueuedMode.h new file mode 100644 index 00000000..9563c78c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CQueuedMode.h @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CQueuedMode { +public: + unsigned short m_nMode; + float m_fDuration; + unsigned short m_nMinZoom; + unsigned short m_nMaxZoom; +}; + +VALIDATE_SIZE(CQueuedMode, 0xC); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRadar.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CRadar.cpp new file mode 100644 index 00000000..0a483711 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRadar.cpp @@ -0,0 +1,435 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CRadar.h" + +unsigned int MAX_RADAR_SPRITES = 64; +unsigned int MAX_RADAR_TRACES = 175; +unsigned int MAX_AIRSTRIP_INFOS = 4; +unsigned int MAX_RADAR_WIDTH_TILES = 12; +unsigned int MAX_RADAR_HEIGHT_TILES = 12; + +float &CRadar::cachedCos = *(float*)0xBA8308; +float &CRadar::cachedSin = *(float*)0xBA830C; +float &CRadar::m_fRadarOrientation = *(float *)0xBA8310; +float &CRadar::m_radarRange = *(float *)0xBA8314; +unsigned short *CRadar::MapLegendList = (unsigned short *)0xBA8318; +unsigned short &CRadar::MapLegendCounter = *(unsigned short *)0xBA86B8; +CRGBA *CRadar::ArrowBlipColour = (CRGBA *)0xBA86D4; +tRadarTrace *CRadar::ms_RadarTrace = (tRadarTrace *)0xBA86F0; +CVector2D &CRadar::vec2DRadarOrigin = *(CVector2D *)0xBAA248; +CSprite2d *CRadar::RadarBlipSprites = (CSprite2d *)0xBAA250; +CRect &CRadar::m_radarRect = *(CRect *)0x8D0920; +unsigned char &CRadar::airstrip_location = *(unsigned char *)0xBA8300; +int &CRadar::airstrip_blip = *(int *)0xBA8304; +airstrip_info *airstrip_table = (airstrip_info *)0x8D06E0; +int *gRadarTextures = (int *)0xBA8478; + +// Converted from cdecl void CRadar::LoadTextures(void) 0x5827D0 +void CRadar::LoadTextures() +{ + ((void (__cdecl *)())0x5827D0)(); +} + +// Converted from cdecl int CRadar::GetNewUniqueBlipIndex(int blipArrId) 0x582820 +int CRadar::GetNewUniqueBlipIndex(int blipArrId) +{ + return ((int (__cdecl *)(int))0x582820)(blipArrId); +} + +// Converted from cdecl int CRadar::GetActualBlipArrayIndex(int blipIndex) 0x582870 +int CRadar::GetActualBlipArrayIndex(int blipIndex) +{ + return ((int (__cdecl *)(int))0x582870)(blipIndex); +} + +// Converted from cdecl void CRadar::DrawLegend(int x,int y,int blipType) 0x5828A0 +void CRadar::DrawLegend(int x, int y, int blipType) +{ + ((void (__cdecl *)(int, int, int))0x5828A0)(x, y, blipType); +} + +// Converted from cdecl float CRadar::LimitRadarPoint(CVector2D &point) 0x5832F0 +float CRadar::LimitRadarPoint(CVector2D& point) +{ + return ((float (__cdecl *)(CVector2D&))0x5832F0)(point); +} + +// Converted from cdecl void CRadar::LimitToMap(float *pX,float *pY) 0x583350 +void CRadar::LimitToMap(float* pX, float* pY) +{ + ((void (__cdecl *)(float*, float*))0x583350)(pX, pY); +} + +// Converted from cdecl uchar CRadar::CalculateBlipAlpha(float distance) 0x583420 +unsigned char CRadar::CalculateBlipAlpha(float distance) +{ + return ((unsigned char (__cdecl *)(float))0x583420)(distance); +} + +// Converted from cdecl void CRadar::TransformRadarPointToScreenSpace(CVector2D &out,CVector2D const&in) 0x583480 +void CRadar::TransformRadarPointToScreenSpace(CVector2D& out, CVector2D const& in) +{ + ((void (__cdecl *)(CVector2D&, CVector2D const&))0x583480)(out, in); +} + +// Converted from cdecl void CRadar::TransformRealWorldPointToRadarSpace(CVector2D &out,CVector2D const&in) 0x583530 +void CRadar::TransformRealWorldPointToRadarSpace(CVector2D& out, CVector2D const& in) +{ + ((void (__cdecl *)(CVector2D&, CVector2D const&))0x583530)(out, in); +} + +// Converted from cdecl void CRadar::TransformRadarPointToRealWorldSpace(CVector2D &out,CVector2D const&in) 0x5835A0 +void CRadar::TransformRadarPointToRealWorldSpace(CVector2D& out, CVector2D const& in) +{ + ((void (__cdecl *)(CVector2D&, CVector2D const&))0x5835A0)(out, in); +} + +// Converted from cdecl void CRadar::TransformRealWorldToTexCoordSpace(CVector2D &out,CVector2D const&in,int,int) 0x583600 +void CRadar::TransformRealWorldToTexCoordSpace(CVector2D& out, CVector2D const& in, int arg2, int arg3) +{ + ((void (__cdecl *)(CVector2D&, CVector2D const&, int, int))0x583600)(out, in, arg2, arg3); +} + +// Converted from cdecl void CRadar::CalculateCachedSinCos(void) 0x583670 +void CRadar::CalculateCachedSinCos() +{ + ((void (__cdecl *)())0x583670)(); +} + +// Converted from cdecl int CRadar::SetCoordBlip(eBlipType type,CVector posn,uint,eBlipDisplay blipDisplay, char* scriptName) 0x583820 +int CRadar::SetCoordBlip(eBlipType type, CVector posn, _IGNORED_ unsigned int arg2, eBlipDisplay blipDisplay, _IGNORED_ char* scriptName) +{ + return ((int (__cdecl *)(eBlipType, CVector, unsigned int, eBlipDisplay, char*))0x583820)(type, posn, arg2, blipDisplay, scriptName); +} + +// Converted from cdecl int CRadar::SetShortRangeCoordBlip(eBlipType type,CVector posn,uint,eBlipDisplay blipDisplay, char* scriptName) 0x583920 +int CRadar::SetShortRangeCoordBlip(eBlipType type, CVector posn, unsigned int arg2, eBlipDisplay blipDisplay, char* scriptName) +{ + return ((int (__cdecl *)(eBlipType, CVector, unsigned int, eBlipDisplay, char*))0x583920)(type, posn, arg2, blipDisplay, scriptName); +} + +// Converted from cdecl int CRadar::SetEntityBlip(eBlipType type,int entityHandle,uint,eBlipDisplay blipDisplay) 0x5839A0 +int CRadar::SetEntityBlip(eBlipType type, int entityHandle, unsigned int arg2, eBlipDisplay blipDisplay) +{ + return ((int (__cdecl *)(eBlipType, int, unsigned int, eBlipDisplay))0x5839A0)(type, entityHandle, arg2, blipDisplay); +} + +// Converted from cdecl void CRadar::ChangeBlipColour(int blipIndex,uint color) 0x583AB0 +void CRadar::ChangeBlipColour(int blipIndex, unsigned int color) +{ + ((void (__cdecl *)(int, unsigned int))0x583AB0)(blipIndex, color); +} + +// Converted from cdecl bool CRadar::HasThisBlipBeenRevealed(int blipArrId) 0x583AF0 +bool CRadar::HasThisBlipBeenRevealed(int blipArrId) +{ + return ((bool (__cdecl *)(int))0x583AF0)(blipArrId); +} + +// Converted from cdecl bool CRadar::DisplayThisBlip(int spriteId,signed char priority) 0x583B40 +bool CRadar::DisplayThisBlip(int spriteId, char priority) +{ + return ((bool (__cdecl *)(int, signed))0x583B40)(spriteId, priority); +} + +// Converted from cdecl void CRadar::ChangeBlipBrightness(int blipIndex,int brightness) 0x583C70 +void CRadar::ChangeBlipBrightness(int blipIndex, int brightness) +{ + ((void (__cdecl *)(int, int))0x583C70)(blipIndex, brightness); +} + +// Converted from cdecl void CRadar::ChangeBlipScale(int blipIndex,int size) 0x583CC0 +void CRadar::ChangeBlipScale(int blipIndex, int size) +{ + ((void (__cdecl *)(int, int))0x583CC0)(blipIndex, size); +} + +// Converted from cdecl void CRadar::ChangeBlipDisplay(int blipIndex,eBlipDisplay blipDisplay) 0x583D20 +void CRadar::ChangeBlipDisplay(int blipIndex, eBlipDisplay blipDisplay) +{ + ((void (__cdecl *)(int, eBlipDisplay))0x583D20)(blipIndex, blipDisplay); +} + +// Converted from cdecl void CRadar::SetBlipSprite(int blipIndex,int spriteId) 0x583D70 +void CRadar::SetBlipSprite(int blipIndex, int spriteId) +{ + ((void (__cdecl *)(int, int))0x583D70)(blipIndex, spriteId); +} + +// Converted from cdecl void CRadar::SetBlipAlwaysDisplayInZoom(int blipIndex,uchar display) 0x583DB0 +void CRadar::SetBlipAlwaysDisplayInZoom(int blipIndex, unsigned char display) +{ + ((void (__cdecl *)(int, unsigned char))0x583DB0)(blipIndex, display); +} + +// Converted from cdecl void CRadar::SetBlipFade(int blipIndex,uchar fade) 0x583E00 +void CRadar::SetBlipFade(int blipIndex, unsigned char fade) +{ + ((void (__cdecl *)(int, unsigned char))0x583E00)(blipIndex, fade); +} + +// Converted from cdecl void CRadar::SetCoordBlipAppearance(int blipIndex,uchar appearance) 0x583E50 +void CRadar::SetCoordBlipAppearance(int blipIndex, unsigned char appearance) +{ + ((void (__cdecl *)(int, unsigned char))0x583E50)(blipIndex, appearance); +} + +// Converted from cdecl void CRadar::SetBlipFriendly(int blipIndex,uchar friendly) 0x583EB0 +void CRadar::SetBlipFriendly(int blipIndex, unsigned char friendly) +{ + ((void (__cdecl *)(int, unsigned char))0x583EB0)(blipIndex, friendly); +} + +// Converted from cdecl void CRadar::SetBlipEntryExit(int blipIndex,CEntryExit *enex) 0x583F00 +void CRadar::SetBlipEntryExit(int blipIndex, CEntryExit* enex) +{ + ((void (__cdecl *)(int, CEntryExit*))0x583F00)(blipIndex, enex); +} + +// Converted from cdecl void CRadar::ShowRadarTrace(float x,float y,uint size,uchar red,uchar green,uchar blue,uchar alpha) 0x583F40 +void CRadar::ShowRadarTrace(float x, float y, unsigned int size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha) +{ + ((void (__cdecl *)(float, float, unsigned int, unsigned char, unsigned char, unsigned char, unsigned char))0x583F40)(x, y, size, red, green, blue, alpha); +} + +// Converted from cdecl void CRadar::ShowRadarTraceWithHeight(float x,float y,uint size,uchar red,uchar green,uchar blue,uchar alpha,uchar type) 0x584070 +void CRadar::ShowRadarTraceWithHeight(float x, float y, unsigned int size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, unsigned char type) +{ + ((void (__cdecl *)(float, float, unsigned int, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char))0x584070)(x, y, size, red, green, blue, alpha, type); +} + +// Converted from cdecl void CRadar::ShowRadarMarker(CVector posn,uint color,float radius) 0x584480 +void CRadar::ShowRadarMarker(CVector posn, unsigned int color, float radius) +{ + ((void (__cdecl *)(CVector, unsigned int, float))0x584480)(posn, color, radius); +} + +// Converted from cdecl uint CRadar::GetRadarTraceColour(uint color,uchar bright, uchar friendly) 0x584770 +unsigned int CRadar::GetRadarTraceColour(unsigned int color, unsigned char bright, unsigned char friendly) +{ + return ((unsigned int (__cdecl *)(unsigned int, unsigned char, unsigned char))0x584770)(color, bright, friendly); +} + +// Converted from cdecl void CRadar::DrawRotatingRadarSprite(CSprite2d *sprite,float x,float y,float angle,uint width, uint height, CRGBA const&color) 0x584850 +void CRadar::DrawRotatingRadarSprite(CSprite2d* sprite, float x, float y, float angle, unsigned int width, unsigned int height, CRGBA color) +{ + ((void (__cdecl *)(CSprite2d*, float, float, float, unsigned int, unsigned int, CRGBA))0x584850)(sprite, x, y, angle, width, height, color); +} + +// Converted from cdecl void CRadar::DrawYouAreHereSprite(float x,float y) 0x584960 +void CRadar::DrawYouAreHereSprite(float x, float y) +{ + ((void (__cdecl *)(float, float))0x584960)(x, y); +} + +// Converted from cdecl void CRadar::SetupRadarRect(int x,int y) 0x584A80 +void CRadar::SetupRadarRect(int x, int y) +{ + ((void (__cdecl *)(int, int))0x584A80)(x, y); +} + +// Converted from cdecl bool ClipRadarTileCoords(int &x,int &y) 0x584B00 +bool ClipRadarTileCoords(int& x, int& y) +{ + return ((bool (__cdecl *)(int&, int&))0x584B00)(x, y); +} + +// Converted from cdecl void CRadar::RequestMapSection(int x,int y) 0x584B50 +void CRadar::RequestMapSection(int x, int y) +{ + ((void (__cdecl *)(int, int))0x584B50)(x, y); +} + +// Converted from cdecl void CRadar::RemoveMapSection(int x,int y) 0x584BB0 +void CRadar::RemoveMapSection(int x, int y) +{ + ((void (__cdecl *)(int, int))0x584BB0)(x, y); +} + +// Converted from cdecl void CRadar::RemoveRadarSections(void) 0x584BF0 +void CRadar::RemoveRadarSections() +{ + ((void (__cdecl *)())0x584BF0)(); +} + +// Converted from cdecl void CRadar::StreamRadarSections(int x,int y) 0x584C50 +void CRadar::StreamRadarSections(int x, int y) +{ + ((void (__cdecl *)(int, int))0x584C50)(x, y); +} + +// Converted from cdecl bool IsPointInsideRadar(CVector2D const&point) 0x584D40 +bool IsPointInsideRadar(CVector2D const& point) +{ + return ((bool (__cdecl *)(CVector2D const&))0x584D40)(point); +} + +// Converted from cdecl void GetTextureCorners(int x,int y,CVector2D *corners) 0x584D90 +void GetTextureCorners(int x, int y, CVector2D* corners) +{ + ((void (__cdecl *)(int, int, CVector2D*))0x584D90)(x, y, corners); +} + +// Converted from cdecl int LineRadarBoxCollision(CVector2D &result,CVector2D const&lineStart,CVector2D const&lineEnd) 0x584E00 +int LineRadarBoxCollision(CVector2D& result, CVector2D const& lineStart, CVector2D const& lineEnd) +{ + return ((int (__cdecl *)(CVector2D&, CVector2D const&, CVector2D const&))0x584E00)(result, lineStart, lineEnd); +} + +// Converted from cdecl int CRadar::ClipRadarPoly(CVector2D *out,CVector2D const*in) 0x585040 +int CRadar::ClipRadarPoly(CVector2D* out, CVector2D const* in) +{ + return ((int (__cdecl *)(CVector2D*, CVector2D const*))0x585040)(out, in); +} + +// Converted from cdecl void CRadar::DrawAreaOnRadar(CRect const&rect,CRGBA const&color,bool inMenu) 0x5853D0 +void CRadar::DrawAreaOnRadar(CRect const& rect, CRGBA const& color, bool inMenu) +{ + ((void (__cdecl *)(CRect const&, CRGBA const&, bool))0x5853D0)(rect, color, inMenu); +} + +// Converted from cdecl void CRadar::DrawRadarMask(void) 0x585700 +void CRadar::DrawRadarMask() +{ + ((void (__cdecl *)())0x585700)(); +} + +// Converted from cdecl void CRadar::StreamRadarSections(CVector const&worldPosn) 0x5858D0 +void CRadar::StreamRadarSections(CVector const& worldPosn) +{ + ((void (__cdecl *)(CVector const&))0x5858D0)(worldPosn); +} + +// Converted from cdecl void CRadar::Shutdown(void) 0x585940 +void CRadar::Shutdown() +{ + ((void (__cdecl *)())0x585940)(); +} + +// Converted from cdecl void CRadar::InitFrontEndMap(void) 0x585960 +void CRadar::InitFrontEndMap() +{ + ((void (__cdecl *)())0x585960)(); +} + +// Converted from cdecl void CRadar::AddBlipToLegendList(uchar,int blipArrId) 0x5859F0 +void CRadar::AddBlipToLegendList(unsigned char arg0, int blipArrId) +{ + ((void (__cdecl *)(unsigned char, int))0x5859F0)(arg0, blipArrId); +} + +// Converted from cdecl void CRadar::SetMapCentreToPlayerCoords(void) 0x585B20 +void CRadar::SetMapCentreToPlayerCoords() +{ + ((void (__cdecl *)())0x585B20)(); +} + +// Converted from cdecl void CRadar::Draw3dMarkers(void) 0x585BF0 +void CRadar::Draw3dMarkers() +{ + ((void (__cdecl *)())0x585BF0)(); +} + +// Converted from cdecl void CRadar::SetRadarMarkerState(int,uchar) 0x585FE0 +void CRadar::SetRadarMarkerState(int arg0, unsigned char arg1) +{ + ((void (__cdecl *)(int, unsigned char))0x585FE0)(arg0, arg1); +} + +// Converted from cdecl void CRadar::DrawRadarSprite(ushort spriteId,float x,float y,uchar alpha) 0x585FF0 +void CRadar::DrawRadarSprite(unsigned short spriteId, float x, float y, unsigned char alpha) +{ + ((void (__cdecl *)(unsigned short, float, float, unsigned char))0x585FF0)(spriteId, x, y, alpha); +} + +// Converted from cdecl void CRadar::DrawRadarSection(int x,int y) 0x586110 +void CRadar::DrawRadarSection(int x, int y) +{ + ((void (__cdecl *)(int, int))0x586110)(x, y); +} + +// Converted from cdecl void CRadar::DrawRadarSectionMap(int x,int y,CRect rect) 0x586520 +void CRadar::DrawRadarSectionMap(int x, int y, CRect rect) +{ + ((void (__cdecl *)(int, int, CRect))0x586520)(x, y, rect); +} + +// Converted from cdecl void CRadar::DrawRadarGangOverlay(bool inMenu) 0x586650 +void CRadar::DrawRadarGangOverlay(bool inMenu) +{ + ((void (__cdecl *)(bool))0x586650)(inMenu); +} + +// Converted from cdecl void CRadar::DrawRadarMap(void) 0x586880 +void CRadar::DrawRadarMap() +{ + ((void (__cdecl *)())0x586880)(); +} + +// Converted from cdecl void CRadar::DrawMap(void) 0x586B00 +void CRadar::DrawMap() +{ + ((void (__cdecl *)())0x586B00)(); +} + +// Converted from cdecl void CRadar::DrawCoordBlip(int blipArrId,uchar isSprite) 0x586D60 +void CRadar::DrawCoordBlip(int blipArrId, unsigned char isSprite) +{ + ((void (__cdecl *)(int, unsigned char))0x586D60)(blipArrId, isSprite); +} + +// Converted from cdecl void CRadar::DrawEntityBlip(int blipArrId,uchar) 0x587000 +void CRadar::DrawEntityBlip(int blipArrId, unsigned char arg1) +{ + ((void (__cdecl *)(int, unsigned char))0x587000)(blipArrId, arg1); +} + +// Converted from cdecl void CRadar::ClearActualBlip(int blipArrId) 0x587C10 +void CRadar::ClearActualBlip(int blipArrId) +{ + ((void (__cdecl *)(int))0x587C10)(blipArrId); +} + +// Converted from cdecl void CRadar::ClearBlipForEntity(eBlipType blipType,int entityHandle) 0x587C60 +void CRadar::ClearBlipForEntity(eBlipType blipType, int entityHandle) +{ + ((void (__cdecl *)(eBlipType, int))0x587C60)(blipType, entityHandle); +} + +// Converted from cdecl void CRadar::ClearBlip(int blipIndex) 0x587CE0 +void CRadar::ClearBlip(int blipIndex) +{ + ((void (__cdecl *)(int))0x587CE0)(blipIndex); +} + +// Converted from cdecl void CRadar::SetupAirstripBlips(void) 0x587D20 +void CRadar::SetupAirstripBlips() +{ + ((void (__cdecl *)())0x587D20)(); +} + +// Converted from cdecl void CRadar::Initialise(void) 0x587FB0 +void CRadar::Initialise() +{ + ((void (__cdecl *)())0x587FB0)(); +} + +// Converted from cdecl void CRadar::DrawBlips(void) 0x588050 +void CRadar::DrawBlips() +{ + ((void (__cdecl *)())0x588050)(); +} + +void CRadar::Load() +{ + ((void(__cdecl *)())0x5D53C0)(); +} + +void CRadar::Save() +{ + ((void(__cdecl *)())0x5D5860)(); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRadar.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRadar.h new file mode 100644 index 00000000..fafa9336 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRadar.h @@ -0,0 +1,280 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" +#include "CRGBA.h" +#include "CVector2D.h" +#include "CSprite2d.h" + +// Thanks to Wesser for radar-related things +enum eBlipAppearance { + BLIP_FLAG_FRIEND, // It selects BLIP_COLOUR_BLUE. If unset toghether with BLIP_FLAG_THREAT, any color. + BLIP_FLAG_THREAT // It selects BLIP_COLOUR_RED. If unset toghether with BLIP_FLAG_FRIEND, any color. +}; + +enum eBlipType { + BLIP_NONE, // 0 + BLIP_CAR, // 1 + BLIP_CHAR, // 2 + BLIP_OBJECT, // 3 + BLIP_COORD, // 4 - Checkpoint. + BLIP_CONTACTPOINT, // 5 - Sphere. + BLIP_SPOTLIGHT, // 6 + BLIP_PICKUP, // 7 + BLIP_AIRSTRIP // 8 +}; + +enum eBlipDisplay { + BLIP_DISPLAY_NEITHER, // 0 + BLIP_DISPLAY_MARKER_ONLY, // 1 + BLIP_DISPLAY_BLIP_ONLY, // 2 + BLIP_DISPLAY_BOTH // 3 +}; + +// See to view these colors. +enum eBlipColour { + BLIP_COLOUR_RED, // 0 + BLIP_COLOUR_GREEN, // 1 + BLIP_COLOUR_BLUE, // 2 + BLIP_COLOUR_WHITE, // 3 + BLIP_COLOUR_YELLOW, // 4 + BLIP_COLOUR_REDCOPY, // 5 - What? It was BLIP_COLOUR_PURPLE. + BLIP_COLOUR_BLUECOPY, // 6 - Why? It was BLIP_COLOUR_CYAN. + BLIP_COLOUR_THREAT, // 7 - If BLIP_FLAG_FRIENDLY is not set (by default) it is BLIP_COLOUR_RED, else BLIP_COLOUR_BLUE. + BLIP_COLOUR_DESTINATION // 8 - Default color. +}; + +enum eRadarSprite { + RADAR_SPRITE_NONE, // 0 + RADAR_SPRITE_WHITE, // 1 + RADAR_SPRITE_CENTRE, // 2 + RADAR_SPRITE_MAP_HERE, // 3 + RADAR_SPRITE_NORTH, // 4 + RADAR_SPRITE_AIRYARD, // 5 + RADAR_SPRITE_AMMUGUN, // 6 + RADAR_SPRITE_BARBERS, // 7 + RADAR_SPRITE_BIGSMOKE, // 8 + RADAR_SPRITE_BOATYARD, // 9 + RADAR_SPRITE_BURGERSHOT, // 10 + RADAR_SPRITE_BULLDOZER, // 11 + RADAR_SPRITE_CATALINAPINK, // 12 + RADAR_SPRITE_CESARVIAPANDO, // 13 - What? R* mistype? + RADAR_SPRITE_CHICKEN, // 14 + RADAR_SPRITE_CJ, // 15 + RADAR_SPRITE_CRASH1, // 16 + RADAR_SPRITE_DINER, // 17 - Yet another one? + RADAR_SPRITE_EMMETGUN, // 18 + RADAR_SPRITE_ENEMYATTACK, // 19 + RADAR_SPRITE_FIRE, // 20 + RADAR_SPRITE_GIRLFRIEND, // 21 + RADAR_SPRITE_HOSTPITAL, // 22 - Again? + RADAR_SPRITE_LOGOSYNDICATE, // 23 + RADAR_SPRITE_MADDOG, // 24 + RADAR_SPRITE_MAFIACASINO, // 25 + RADAR_SPRITE_MCSTRAP, // 26 + RADAR_SPRITE_MODGARAGE, // 27 + RADAR_SPRITE_OGLOC, // 28 + RADAR_SPRITE_PIZZA, // 29 + RADAR_SPRITE_POLICE, // 30 + RADAR_SPRITE_PROPERTYG, // 31 + RADAR_SPRITE_PROPERTYR, // 32 + RADAR_SPRITE_RACE, // 33 + RADAR_SPRITE_RYDER, // 34 + RADAR_SPRITE_SAVEGAME, // 35 + RADAR_SPRITE_SCHOOL, // 36 + RADAR_SPRITE_QMARK, // 37 + RADAR_SPRITE_SWEET, // 38 + RADAR_SPRITE_TATTOO, // 39 + RADAR_SPRITE_THETRUTH, // 40 + RADAR_SPRITE_WAYPOINT, // 41 + RADAR_SPRITE_TORENORANCH, // 42 + RADAR_SPRITE_TRIADS, // 43 + RADAR_SPRITE_TRIADSCASINO, // 44 + RADAR_SPRITE_TSHIRT, // 45 + RADAR_SPRITE_WOOZIE, // 46 + RADAR_SPRITE_ZERO, // 47 + RADAR_SPRITE_DATEDISCO, // 48 + RADAR_SPRITE_DATEDRINK, // 49 + RADAR_SPRITE_DATEFOOD, // 50 + RADAR_SPRITE_TRUCK, // 51 + RADAR_SPRITE_CASH, // 52 + RADAR_SPRITE_FLAG, // 53 + RADAR_SPRITE_GYM, // 54 + RADAR_SPRITE_IMPOUND, // 55 + RADAR_SPRITE_LIGHT, // 56 + RADAR_SPRITE_RUNWAY, // 57 + RADAR_SPRITE_GANGB, // 58 + RADAR_SPRITE_GANGP, // 59 + RADAR_SPRITE_GANGY, // 60 + RADAR_SPRITE_GANGN, // 61 + RADAR_SPRITE_GANGG, // 62 + RADAR_SPRITE_SPRAY,/*, // 63 + RADAR_SPRITE_TORENO*/ // 64 + RADAR_SPRITE_COUNT, +}; + +enum eRadarTraceHeight { + RADAR_TRACE_LOW, + RADAR_TRACE_HIGH, + RADAR_TRACE_NORMAL +}; + +struct tBlipHandle { + unsigned short arrayIndex; + unsigned short number; +}; + +VALIDATE_SIZE(tBlipHandle, 4); + +struct airstrip_info { + float x; + float y; + float direction; // angle + float radius; // not sure +}; + +VALIDATE_SIZE(airstrip_info, 0x10); + + +struct tRadarTrace { + unsigned int m_nColour; // see eBlipColour + unsigned int m_nEntityHandle; + CVector m_vecPos; + unsigned short m_nCounter; + float m_fSphereRadius; + unsigned short m_nBlipSize; + class CEntryExit *m_pEntryExit; + unsigned char m_nRadarSprite; // see eRadarSprite + unsigned char m_bBright : 1; // It makes use of bright colors. Always set. + unsigned char m_bInUse : 1; // It is available. + unsigned char m_bShortRange : 1; // It doesn't show permanently on the radar. + unsigned char m_bFriendly : 1; // It is affected by BLIP_COLOUR_THREAT. + unsigned char m_bBlipRemain : 1; // It has the priority over the entity (it will still appear after the entity's deletion). + unsigned char m_bBlipFade : 1; // Possibly a leftover. Always unset (unused). + unsigned char m_nCoordBlipAppearance : 2; // see eBlipAppearance + unsigned char m_nBlipDisplay : 2; // see eBlipDisplay + unsigned char m_nBlipType : 4; // see eBlipType +}; + +VALIDATE_SIZE(tRadarTrace, 0x28); + +extern unsigned int MAX_RADAR_SPRITES; +extern unsigned int MAX_RADAR_TRACES; + +class CRadar { +public: + static float &cachedCos; + static float &cachedSin; + static float &m_fRadarOrientation; + + // 2990.0 by default + static float &m_radarRange; + // static unsigned short MapLegendList[175]; + static unsigned short *MapLegendList; + // num icons in legend + static unsigned short &MapLegendCounter; + // static CRGBA ArrowBlipColours[6]; + static CRGBA *ArrowBlipColour; + // static tRadarTrace ms_RadarTrace[175]; + static tRadarTrace *ms_RadarTrace; + // static CVector2D vec2DRadarOrigin; + static CVector2D &vec2DRadarOrigin; + // static CSprite2d RadarBlipSprites[64]; + static CSprite2d *RadarBlipSprites; + // + static CRect &m_radarRect; + // current airstrip index in airstrip_table + static unsigned char &airstrip_location; + // blip handle + static int &airstrip_blip; + + static void LoadTextures(); + static int GetNewUniqueBlipIndex(int blipArrId); + static int GetActualBlipArrayIndex(int blipIndex); + static void DrawLegend(int x, int y, int blipType); + static float LimitRadarPoint(CVector2D& point); + static void LimitToMap(float* pX, float* pY); + static unsigned char CalculateBlipAlpha(float distance); + static void TransformRadarPointToScreenSpace(CVector2D& out, CVector2D const& in); + static void TransformRealWorldPointToRadarSpace(CVector2D& out, CVector2D const& in); + static void TransformRadarPointToRealWorldSpace(CVector2D& out, CVector2D const& in); + static void TransformRealWorldToTexCoordSpace(CVector2D& out, CVector2D const& in, int arg2, int arg3); + static void CalculateCachedSinCos(); + static int SetCoordBlip(eBlipType type, CVector posn, _IGNORED_ unsigned int arg2 , eBlipDisplay blipDisplay, _IGNORED_ char* scriptName ); + static int SetShortRangeCoordBlip(eBlipType type, CVector posn, unsigned int arg2, eBlipDisplay blipDisplay, char* scriptName); + static int SetEntityBlip(eBlipType type, int entityHandle, unsigned int arg2, eBlipDisplay blipDisplay); + static void ChangeBlipColour(int blipIndex, unsigned int color); + static bool HasThisBlipBeenRevealed(int blipArrId); + static bool DisplayThisBlip(int spriteId, char priority); + static void ChangeBlipBrightness(int blipIndex, int brightness); + static void ChangeBlipScale(int blipIndex, int size); + static void ChangeBlipDisplay(int blipIndex, eBlipDisplay blipDisplay); + static void SetBlipSprite(int blipIndex, int spriteId); + static void SetBlipAlwaysDisplayInZoom(int blipIndex, unsigned char display); + static void SetBlipFade(int blipIndex, unsigned char fade); + static void SetCoordBlipAppearance(int blipIndex, unsigned char appearance); + static void SetBlipFriendly(int blipIndex, unsigned char friendly); + static void SetBlipEntryExit(int blipIndex, CEntryExit* enex); + static void ShowRadarTrace(float x, float y, unsigned int size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha); + // type 2 - box, 0,1 - triangles + static void ShowRadarTraceWithHeight(float x, float y, unsigned int size, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, unsigned char type); + // show debug line at this position + static void ShowRadarMarker(CVector posn, unsigned int color, float radius); + static unsigned int GetRadarTraceColour(unsigned int color, unsigned char bright, unsigned char friendly); + static void DrawRotatingRadarSprite(CSprite2d* sprite, float x, float y, float angle, unsigned int width, unsigned int height, CRGBA color); + static void DrawYouAreHereSprite(float x, float y); + static void SetupRadarRect(int x, int y); + static void RequestMapSection(int x, int y); + static void RemoveMapSection(int x, int y); + static void RemoveRadarSections(); + static void StreamRadarSections(int x, int y); + static int ClipRadarPoly(CVector2D* out, CVector2D const* in); + static void DrawAreaOnRadar(CRect const& rect, CRGBA const& color, bool inMenu); + static void DrawRadarMask(); + static void StreamRadarSections(CVector const& worldPosn); + static void Shutdown(); + static void InitFrontEndMap(); + static void AddBlipToLegendList(unsigned char arg0, int blipArrId); + static void SetMapCentreToPlayerCoords(); + static void Draw3dMarkers(); + static void SetRadarMarkerState(int arg0, unsigned char arg1); + static void DrawRadarSprite(unsigned short spriteId, float x, float y, unsigned char alpha); + static void DrawRadarSection(int x, int y); + static void DrawRadarSectionMap(int x, int y, CRect rect); + static void DrawRadarGangOverlay(bool inMenu); + static void DrawRadarMap(); + static void DrawMap(); + static void DrawCoordBlip(int blipArrId, unsigned char isSprite); + static void DrawEntityBlip(int blipArrId, unsigned char arg1); + static void ClearActualBlip(int blipArrId); + static void ClearBlipForEntity(eBlipType blipType, int entityHandle); + static void ClearBlip(int blipIndex); + static void SetupAirstripBlips(); + static void Initialise(); + static void DrawBlips(); + // Load radar blips from save file + static void Load(); + // Save radar blips to save file + static void Save(); +}; + +extern airstrip_info *airstrip_table; // airstrip_info airstrip_table[4] + +extern unsigned int MAX_AIRSTRIP_INFOS; + +extern int *gRadarTextures; // int gRadarTextures[12][12] + +extern unsigned int MAX_RADAR_WIDTH_TILES; +extern unsigned int MAX_RADAR_HEIHGT_TILES; + +bool ClipRadarTileCoords(int& x, int& y); +bool IsPointInsideRadar(CVector2D const& point); +void GetTextureCorners(int x, int y, CVector2D* corners); +// returns number of intersections +int LineRadarBoxCollision(CVector2D& result, CVector2D const& lineStart, CVector2D const& lineEnd); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRealTimeShadow.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CRealTimeShadow.cpp new file mode 100644 index 00000000..712c090f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRealTimeShadow.cpp @@ -0,0 +1,60 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CRealTimeShadow.h" + +CRealTimeShadow::CRealTimeShadow() +{ + ((void (__thiscall *)(CRealTimeShadow *))0x706410)(this); +} + +CRealTimeShadow::~CRealTimeShadow() +{ + ((void (__thiscall *)(CRealTimeShadow *))0x706440)(this); +} + +RwFrame *CRealTimeShadow::SetLightProperties(float angle, float _unused_param, bool setLight) +{ + return ((RwFrame *(__thiscall *)(CRealTimeShadow *, float, float, bool))0x705900)(this, angle, _unused_param, setLight); +} + +void CRealTimeShadow::Destroy() +{ + ((void (__thiscall *)(CRealTimeShadow *))0x705990)(this); +} + +CShadowCamera *CRealTimeShadow::GetShadowCamera() +{ + return ((CShadowCamera *(__thiscall *)(CRealTimeShadow *))0x7059E0)(this); +} + +RwTexture *CRealTimeShadow::GetShadowRwTexture() +{ + return ((RwTexture *(__thiscall *)(CRealTimeShadow *))0x7059F0)(this); +} + +void CRealTimeShadow::DrawBorderAroundTexture(RwRGBA const& color) +{ + ((void (__thiscall *)(CRealTimeShadow *, RwRGBA const&))0x705A00)(this, color); +} + +// this creates all stuff for shadow processing (cameras, textures) +bool CRealTimeShadow::Create(bool isBlurred, int blurPasses, bool drawMoreBlur) +{ + return ((bool (__thiscall *)(CRealTimeShadow *, bool, int, bool))0x706460)(this, isBlurred, blurPasses, drawMoreBlur); +} + +// this one registers shadow for entity +bool CRealTimeShadow::SetupForThisEntity(CPhysical *owner) +{ + return ((bool (__thiscall *)(CRealTimeShadow *, CPhysical *))0x706520)(this, owner); +} + +// this updates texture and give it to us +RwTexture *CRealTimeShadow::Update() +{ + return ((RwTexture *(__thiscall *)(CRealTimeShadow *))0x706600)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRealTimeShadow.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRealTimeShadow.h new file mode 100644 index 00000000..5fe739ab --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRealTimeShadow.h @@ -0,0 +1,47 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CShadowCamera.h" +#include "CSphere.h" + +class CPhysical; + +class PLUGIN_API CRealTimeShadow { +public: + CPhysical *m_pOwner; + bool m_bCreated; + unsigned char m_nIntensity; + CShadowCamera m_camera; + bool m_bBlurred; + CShadowCamera m_blurCamera; + unsigned int m_nBlurPasses; + bool m_bDrawMoreBlur; + unsigned int m_nRwObjectType; + RpLight *m_pLight; + CSphere m_boundingSphere; + CSphere m_baseSphere; + + CRealTimeShadow(); + ~CRealTimeShadow(); + + struct RwFrame *SetLightProperties(float angle, float _unused_param, bool setLight); + void Destroy(); + CShadowCamera *GetShadowCamera(); + struct RwTexture *GetShadowRwTexture(); + void DrawBorderAroundTexture(RwRGBA const& color); + // this creates all stuff for shadow processing (cameras, textures) + bool Create(bool isBlurred, int blurPasses, bool drawMoreBlur); + // this one registers shadow for entity + bool SetupForThisEntity(class CPhysical *owner); + // this updates texture and give it to us + RwTexture *Update(); +}; + +VALIDATE_SIZE(CRealTimeShadow, 0x4C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRect.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CRect.cpp new file mode 100644 index 00000000..ac9af1d4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRect.cpp @@ -0,0 +1,57 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CRect.h" + +CRect::CRect(float x1, float y1, float x2, float y2) +{ + ((void (__thiscall *)(CRect *, float, float, float, float))0x4041C0)(this, x1, y1, x2, y2); +} + +CRect::CRect() +{ + ((void (__thiscall *)(CRect *))0x4041E0)(this); +} + +bool CRect::IsFlipped() +{ + return ((bool (__thiscall *)(CRect *))0x404190)(this); +} + +void CRect::Restrict(CRect const& restriction) +{ + ((void (__thiscall *)(CRect *, CRect const&))0x404200)(this, restriction); +} + +void CRect::Resize(float resizeX, float resizeY) +{ + ((void (__thiscall *)(CRect *, float, float))0x404260)(this, resizeX, resizeY); +} + +bool CRect::IsPointInside(CVector2D const& point) +{ + return ((bool (__thiscall *)(CRect *, CVector2D const&))0x404290)(this, point); +} + +bool CRect::IsCircleInside(CVector2D const& circleCenter, float circleRadius) +{ + return ((bool (__thiscall *)(CRect *, CVector2D const&, float))0x4042D0)(this, circleCenter, circleRadius); +} + +void CRect::SetFromCenter(float x, float y, float size) +{ + ((void (__thiscall *)(CRect *, float, float, float))0x43E020)(this, x, y, size); +} + +void CRect::GetCenter(float *x, float *y) +{ + ((void (__thiscall *)(CRect *, float *, float *))0x43E050)(this, x, y); +} + +void CRect::StretchToPoint(float x, float y) +{ + ((void (__thiscall *)(CRect *, float, float))0x5327F0)(this, x, y); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRect.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRect.h new file mode 100644 index 00000000..a6f56d4f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRect.h @@ -0,0 +1,57 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector2D.h" + +/* CRect class describes a rectangle. + + A(left;top)_____________________ + | | + | | + | | + |_________________B(right;bottom) + +*/ + +class PLUGIN_API CRect +{ +public: + float left; // x1 + float bottom; // y1 + float right; // x2 + float top; // y2 + + CRect(float left, float top, float right, float bottom); + CRect(); + + bool IsFlipped(); + void Restrict(CRect const& restriction); + void Resize(float resizeX, float resizeY); + bool IsPointInside(CVector2D const& point); + bool IsCircleInside(CVector2D const& circleCenter, float circleRadius); + void SetFromCenter(float x, float y, float size); + void GetCenter(float *x, float *y); + void StretchToPoint(float x, float y); + + void Grow(float l, float r, float t, float b) { + left -= l; + top -= t; + right += r; + bottom += b; + } + + void Translate(float x, float y) { + left += x; + right += x; + bottom += y; + top += y; + } +}; + +VALIDATE_SIZE(CRect, 0x10); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CReference.h b/third-party/plugin-sdk/plugin_sa/game_sa/CReference.h new file mode 100644 index 00000000..1878aba2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CReference.h @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + + +class PLUGIN_API CReference +{ +public: + class CReference *m_pNext; + class CEntity **m_ppEntity; +}; + +VALIDATE_SIZE(CReference, 8); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CReferences.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CReferences.cpp new file mode 100644 index 00000000..b3f7e930 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CReferences.cpp @@ -0,0 +1,30 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CReferences.h" + +CReference *CReferences::aRefs = (CReference *)0xB9B9A8; +CReference **CReferences::pEmptyList = (CReference **)0xBA1768; + +void CReferences::Init() +{ + ((void (__cdecl *)())0x5719B0)(); +} + +unsigned int CReferences::ListSize(CReference *ref) +{ + return ((unsigned int (__cdecl *)(CReference *))0x5719E0)(ref); +} + +void CReferences::RemoveReferencesToPlayer() +{ + ((void (__cdecl *)())0x571AD0)(); +} + +void CReferences::PruneAllReferencesInWorld() +{ + ((void (__cdecl *)())0x571CC0)(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CReferences.h b/third-party/plugin-sdk/plugin_sa/game_sa/CReferences.h new file mode 100644 index 00000000..c7f3ad8e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CReferences.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CReference.h" + +#define MAX_NUM_REFERENCES 3000 + +class PLUGIN_API CReferences +{ +public: + // count: MAX_NUM_REFERENCES (3000) + static CReference *aRefs; + static CReference **pEmptyList; + + static void Init(); + static unsigned int ListSize(CReference *ref); + static void RemoveReferencesToPlayer(); + static void PruneAllReferencesInWorld(); +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRegisteredCorona.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CRegisteredCorona.cpp new file mode 100644 index 00000000..758bcdb2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRegisteredCorona.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CRegisteredCorona.h" + +void CRegisteredCorona::Update() +{ + ((void (__thiscall *)(CRegisteredCorona *))0x6FABF0)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRegisteredCorona.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRegisteredCorona.h new file mode 100644 index 00000000..ef5076b2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRegisteredCorona.h @@ -0,0 +1,66 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" +#include "RenderWare.h" +#include "CRGBA.h" +#include "CEntity.h" + +enum eCoronaType +{ + CORONATYPE_SHINYSTAR, + CORONATYPE_HEADLIGHT, + CORONATYPE_MOON, + CORONATYPE_REFLECTION, + CORONATYPE_HEADLIGHTLINE, + CORONATYPE_HEX, + CORONATYPE_CIRCLE, + CORONATYPE_RING, + CORONATYPE_STREAK, + CORONATYPE_TORUS, + CORONATYPE_NONE +}; + +enum eCoronaFlareType : unsigned char +{ + FLARETYPE_NONE, + FLARETYPE_SUN, + FLARETYPE_HEADLIGHTS +}; + +class CRegisteredCorona { +public: + CVector m_vPosn; + unsigned int m_dwId; // Should be unique for each corona. Address or something + RwTexture *m_pTexture; // Pointer to the actual texture to be rendered + float m_fSize; + float m_fAngle; // left from III&VC + float m_fFarClip; // How far away this corona stays visible + float m_fNearClip; // How far away is the z value pulled towards camera. + float m_fHeightAboveGround; + float m_fFadeSpeed; // The speed the corona fades in and out + CRGBA m_Color; + unsigned char m_nFadeState; // Intensity that lags behind the given intenisty and fades out if the LOS is blocked + unsigned char m_bRegisteredThisFrame; // Has this corona been registered by game code this frame + eCoronaFlareType m_nFlareType; + unsigned char m_bUsesReflection; + unsigned char m_bCheckObstacles : 1; // Do we check the LOS or do we render at the right Z value -> bLOSCheck + unsigned char m_bOffScreen : 1; // Set by the rendering code to be used by the update code + unsigned char m_bJustCreated; // If this corona has been created this frame we won't delete it (It hasn't had the time to get its OffScreen cleared) + unsigned char m_bFlashWhileFading : 1; // Does the corona fade out when closer to cam + unsigned char m_bOnlyFromBelow : 1; // This corona is only visible if the camera is below it + unsigned char m_bReflectionDelay : 1; // this corona Has Valid Height Above Ground + unsigned char m_bDrawWithWhiteCore : 1; // This corona rendered with a small white core. + unsigned char m_bAttached : 1; // This corona is attached to an entity. + CEntity *m_pAttachedTo; + + void Update(); +}; + +VALIDATE_SIZE(CRegisteredCorona, 0x3C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRegisteredMotionBlurStreak.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CRegisteredMotionBlurStreak.cpp new file mode 100644 index 00000000..ff08ef56 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRegisteredMotionBlurStreak.cpp @@ -0,0 +1,16 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CRegisteredMotionBlurStreak.h" + +void CRegisteredMotionBlurStreak::Update() { + plugin::CallMethod<0x721EE0, CRegisteredMotionBlurStreak *>(this); +} + +// Converted from thiscall void CRegisteredMotionBlurStreak::Render(void) 0x721F70 +void CRegisteredMotionBlurStreak::Render() { + plugin::CallMethod<0x721F70, CRegisteredMotionBlurStreak *>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRegisteredMotionBlurStreak.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRegisteredMotionBlurStreak.h new file mode 100644 index 00000000..462cc997 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRegisteredMotionBlurStreak.h @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVector.h" +#include "CRGBA.h" + +class CRegisteredMotionBlurStreak { +public: + int m_nId; + CRGBA m_color; + CVector m_avecLeftPoints[3]; + CVector m_avecRightPoints[3]; + bool m_bExists; + bool field_51; + char field_52; + char field_53; + + void Update(); + void Render(); +}; + +VALIDATE_SIZE(CRegisteredMotionBlurStreak, 0x54); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRenderer.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CRenderer.cpp new file mode 100644 index 00000000..9f21c7bd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRenderer.cpp @@ -0,0 +1,209 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CRenderer.h" + +unsigned int MAX_INVISIBLE_ENTITY_PTRS = 150; +unsigned int MAX_VISIBLE_ENTITY_PTRS = 1000; +unsigned int MAX_VISIBLE_LOD_PTRS = 1000; +unsigned int MAX_VISIBLE_SUPERLOD_PTRS = 50; +bool &CRenderer::ms_bRenderTunnels = *(bool *)0xB745C0; +bool &CRenderer::ms_bRenderOutsideTunnels = *(bool *)0xB745C1; +tRenderListEntry *&CRenderer::ms_pLodDontRenderList = *(tRenderListEntry **)0xB745CC; +tRenderListEntry *&CRenderer::ms_pLodRenderList = *(tRenderListEntry **)0xB745D0; +CVehicle *&CRenderer::m_pFirstPersonVehicle = *(CVehicle **)0xB745D4; +CEntity **CRenderer::ms_aInVisibleEntityPtrs = (CEntity **)0xB745D8; +CEntity **CRenderer::ms_aVisibleSuperLodPtrs = (CEntity **)0xB74830; +CEntity **CRenderer::ms_aVisibleLodPtrs = (CEntity **)0xB748F8; +CEntity **CRenderer::ms_aVisibleEntityPtrs = (CEntity **)0xB75898; +unsigned int &CRenderer::ms_nNoOfVisibleSuperLods = *(unsigned int *)0xB76838; +unsigned int &CRenderer::ms_nNoOfInVisibleEntities = *(unsigned int *)0xB7683C; +unsigned int &CRenderer::ms_nNoOfVisibleLods = *(unsigned int *)0xB76840; +unsigned int &CRenderer::ms_nNoOfVisibleEntities = *(unsigned int *)0xB76844; +float &CRenderer::ms_fFarClipPlane = *(float *)0xB76848; +float &CRenderer::ms_fCameraHeading = *(float *)0xB7684C; +unsigned char &CRenderer::m_loadingPriority = *(unsigned char *)0xB76850; +bool &CRenderer::ms_bInTheSky = *(bool *)0xB76851; +CVector &CRenderer::ms_vecCameraPosition = *(CVector *)0xB76870; +float &CRenderer::ms_lodDistScale = *(float *)0x8CD800; +float &CRenderer::ms_lowLodDistScale = *(float *)0x8CD804; +unsigned int &gnRendererModelRequestFlags = *(unsigned int *)0xB745C4; +CEntity **&gpOutEntitiesForGetObjectsInFrustum = *(CEntity ***)0xB76854; + +// Converted from cdecl void CRenderer::Init(void) 0x5531C0 +void CRenderer::Init() { + plugin::Call<0x5531C0>(); +} + +// Converted from cdecl void CRenderer::Shutdown(void) 0x5531D0 +void CRenderer::Shutdown() { + plugin::Call<0x5531D0>(); +} + +// Converted from cdecl void CRenderer::RenderFadingInEntities(void) 0x5531E0 +void CRenderer::RenderFadingInEntities() { + plugin::Call<0x5531E0>(); +} + +// Converted from cdecl void CRenderer::RenderFadingInUnderwaterEntities(void) 0x553220 +void CRenderer::RenderFadingInUnderwaterEntities() { + plugin::Call<0x553220>(); +} + +// Converted from cdecl void CRenderer::RenderOneRoad(CEntity *entity) 0x553230 +void CRenderer::RenderOneRoad(CEntity* entity) { + plugin::Call<0x553230, CEntity*>(entity); +} + +// Converted from cdecl void CRenderer::RenderOneNonRoad(CEntity *entity) 0x553260 +void CRenderer::RenderOneNonRoad(CEntity* entity) { + plugin::Call<0x553260, CEntity*>(entity); +} + +// Converted from cdecl void CRenderer::RemoveVehiclePedLights(CPhysical *entity) 0x553390 +void CRenderer::RemoveVehiclePedLights(CPhysical* entity) { + plugin::Call<0x553390, CPhysical*>(entity); +} + +// Converted from cdecl void CRenderer::AddEntityToRenderList(CEntity *entity,float distance) 0x5534B0 +void CRenderer::AddEntityToRenderList(CEntity* entity, float distance) { + plugin::Call<0x5534B0, CEntity*, float>(entity, distance); +} + +// Converted from cdecl void CRenderer::ScanSectorList_ListModels(int sector_x,int sector_y) 0x5535D0 +void CRenderer::ScanSectorList_ListModels(int sector_x, int sector_y) { + plugin::Call<0x5535D0, int, int>(sector_x, sector_y); +} + +// Converted from cdecl void CRenderer::ScanSectorList_ListModelsVisible(int sector_x,int sector_y) 0x553650 +void CRenderer::ScanSectorList_ListModelsVisible(int sector_x, int sector_y) { + plugin::Call<0x553650, int, int>(sector_x, sector_y); +} + +// Converted from cdecl tRenderListEntry* CRenderer::GetLodRenderListBase(void) 0x5536D0 +tRenderListEntry* CRenderer::GetLodRenderListBase() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl tRenderListEntry* CRenderer::GetLodDontRenderListBase(void) 0x5536E0 +tRenderListEntry* CRenderer::GetLodDontRenderListBase() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CRenderer::ResetLodRenderLists(void) 0x5536F0 +void CRenderer::ResetLodRenderLists() { + plugin::Call<0x5536F0>(); +} + +// Converted from cdecl void CRenderer::AddToLodRenderList(CEntity *entity,float distance) 0x553710 +void CRenderer::AddToLodRenderList(CEntity* entity, float distance) { + plugin::Call<0x553710, CEntity*, float>(entity, distance); +} + +// Converted from cdecl void CRenderer::AddToLodDontRenderList(CEntity *entity,float distance) 0x553740 +void CRenderer::AddToLodDontRenderList(CEntity* entity, float distance) { + plugin::Call<0x553740, CEntity*, float>(entity, distance); +} + +// Converted from cdecl void CRenderer::ProcessLodRenderLists(void) 0x553770 +void CRenderer::ProcessLodRenderLists() { + plugin::Call<0x553770>(); +} + +// Converted from cdecl void CRenderer::PreRender(void) 0x553910 +void CRenderer::PreRender() { + plugin::Call<0x553910>(); +} + +// Converted from cdecl void CRenderer::RenderRoads(void) 0x553A10 +void CRenderer::RenderRoads() { + plugin::Call<0x553A10>(); +} + +// Converted from cdecl void CRenderer::RenderEverythingBarRoads(void) 0x553AA0 +void CRenderer::RenderEverythingBarRoads() { + plugin::Call<0x553AA0>(); +} + +// Converted from cdecl void CRenderer::RenderFirstPersonVehicle(void) 0x553D00 +void CRenderer::RenderFirstPersonVehicle() { + plugin::Call<0x553D00>(); +} + +// Converted from cdecl bool CRenderer::SetupLightingForEntity(CEntity *entity) 0x553E40 +bool CRenderer::SetupLightingForEntity(CEntity* entity) { + return plugin::CallAndReturn(entity); +} + +// Converted from cdecl int CRenderer::SetupMapEntityVisibility(CEntity *entity,CBaseModelInfo *modelInfo,float distance,bool) 0x553F60 +int CRenderer::SetupMapEntityVisibility(CEntity* entity, CBaseModelInfo* modelInfo, float distance, bool arg3) { + return plugin::CallAndReturn(entity, modelInfo, distance, arg3); +} + +// Converted from cdecl int CRenderer::SetupEntityVisibility(CEntity *entity,float &outDistance) 0x554230 +int CRenderer::SetupEntityVisibility(CEntity* entity, float& outDistance) { + return plugin::CallAndReturn(entity, outDistance); +} + +// Converted from cdecl int CRenderer::SetupBigBuildingVisibility(CEntity *entity,float &outDistance) 0x554650 +int CRenderer::SetupBigBuildingVisibility(CEntity* entity, float& outDistance) { + return plugin::CallAndReturn(entity, outDistance); +} + +// Converted from cdecl void CRenderer::ScanSectorList(int sector_x,int sector_y) 0x554840 +void CRenderer::ScanSectorList(int sector_x, int sector_y) { + plugin::Call<0x554840, int, int>(sector_x, sector_y); +} + +// Converted from cdecl void CRenderer::ScanBigBuildingList(int sector_x,int sector_y) 0x554B10 +void CRenderer::ScanBigBuildingList(int sector_x, int sector_y) { + plugin::Call<0x554B10, int, int>(sector_x, sector_y); +} + +// Converted from cdecl int CRenderer::GetObjectsInFrustum(CEntity **outEntities,float distance,RwMatrixTag *transformMat) 0x554C60 +int CRenderer::GetObjectsInFrustum(CEntity** outEntities, float distance, RwMatrixTag* transformMat) { + return plugin::CallAndReturn(outEntities, distance, transformMat); +} + +// Converted from cdecl bool CRenderer::ShouldModelBeStreamed(CEntity *entity,CVector const&origin,float farClip) 0x554EB0 +bool CRenderer::ShouldModelBeStreamed(CEntity* entity, CVector const& origin, float farClip) { + return plugin::CallAndReturn(entity, origin, farClip); +} + +// Converted from cdecl void CRenderer::ScanWorld(void) 0x554FE0 +void CRenderer::ScanWorld() { + plugin::Call<0x554FE0>(); +} + +// Converted from cdecl void CRenderer::ScanPtrList_RequestModels(CPtrList &ptrList) 0x555680 +void CRenderer::ScanPtrList_RequestModels(CPtrList& ptrList) { + plugin::Call<0x555680, CPtrList&>(ptrList); +} + +// Converted from cdecl void CRenderer::ConstructRenderList(void) 0x5556E0 +void CRenderer::ConstructRenderList() { + plugin::Call<0x5556E0>(); +} + +// Converted from cdecl void CRenderer::ScanSectorList_RequestModels(int sector_x,int sector_y) 0x555900 +void CRenderer::ScanSectorList_RequestModels(int sector_x, int sector_y) { + plugin::Call<0x555900, int, int>(sector_x, sector_y); +} + +// Converted from cdecl void CRenderer::RequestObjectsInFrustum(RwMatrixTag *transformMat,int modelRequesFlags) 0x555960 +void CRenderer::RequestObjectsInFrustum(RwMatrixTag* transformMat, int modelRequesFlags) { + plugin::Call<0x555960, RwMatrixTag*, int>(transformMat, modelRequesFlags); +} + +// Converted from cdecl void CRenderer::RequestObjectsInDirection(CVector const&posn,float angle,int modelRequesFlags) 0x555CB0 +void CRenderer::RequestObjectsInDirection(CVector const& posn, float angle, int modelRequesFlags) { + plugin::Call<0x555CB0, CVector const&, float, int>(posn, angle, modelRequesFlags); +} + +// Converted from cdecl void CRenderer::SetupScanLists(int sector_x, int sector_y) 0x553540 +void CRenderer::SetupScanLists(int sector_x, int sector_y) { + plugin::Call<0x553540, int, int>(sector_x, sector_y); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRenderer.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRenderer.h new file mode 100644 index 00000000..1c82c92a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRenderer.h @@ -0,0 +1,99 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVehicle.h" +#include "CBaseModelInfo.h" +#include "CPtrListDoubleLink.h" + +struct tScanLists { + CPtrListDoubleLink *buildingsList; + CPtrListDoubleLink *objectsList; + CPtrListDoubleLink *vehiclesList; + CPtrListDoubleLink *pedsList; + CPtrListDoubleLink *dummiesList; +}; + +VALIDATE_SIZE(tScanLists, 0x14); + +struct tRenderListEntry { + CEntity *pEntity; + float distance; +}; + +VALIDATE_SIZE(tRenderListEntry, 8); + +extern unsigned int MAX_INVISIBLE_ENTITY_PTRS; // default 150 +extern unsigned int MAX_VISIBLE_ENTITY_PTRS; // default 1000 +extern unsigned int MAX_VISIBLE_LOD_PTRS; // default 1000 +extern unsigned int MAX_VISIBLE_SUPERLOD_PTRS; // default 50 + +class PLUGIN_API CRenderer { +public: + static bool &ms_bRenderTunnels; + static bool &ms_bRenderOutsideTunnels; + static tRenderListEntry *&ms_pLodDontRenderList; + static tRenderListEntry *&ms_pLodRenderList; + static CVehicle *&m_pFirstPersonVehicle; + static CEntity **ms_aInVisibleEntityPtrs; // static CEntity *ms_aInVisibleEntityPtrs[MAX_INVISIBLE_ENTITY_PTRS]; + static CEntity **ms_aVisibleSuperLodPtrs; // static CEntity *ms_aVisibleSuperLodPtrs[MAX_VISIBLE_SUPERLOD_PTRS]; + static CEntity **ms_aVisibleLodPtrs; // static CEntity *ms_aVisibleLodPtrs[MAX_VISIBLE_LOD_PTRS]; + static CEntity **ms_aVisibleEntityPtrs; // static CEntity *ms_aVisibleEntityPtrs[MAX_VISIBLE_ENTITY_PTRS]; + static unsigned int &ms_nNoOfVisibleSuperLods; + static unsigned int &ms_nNoOfInVisibleEntities; + static unsigned int &ms_nNoOfVisibleLods; + static unsigned int &ms_nNoOfVisibleEntities; + static float &ms_fFarClipPlane; + static float &ms_fCameraHeading; + static unsigned char &m_loadingPriority; + static bool &ms_bInTheSky; + static CVector &ms_vecCameraPosition; + static float &ms_lodDistScale; // default 1.2 + static float &ms_lowLodDistScale; // default 1.0 + + // dummy function + static void Init(); + // dummy function + static void Shutdown(); + static void RenderFadingInEntities(); + static void RenderFadingInUnderwaterEntities(); + static void RenderOneRoad(CEntity* entity); + static void RenderOneNonRoad(CEntity* entity); + static void RemoveVehiclePedLights(CPhysical* entity); + static void AddEntityToRenderList(CEntity* entity, float distance); + static void ScanSectorList_ListModels(int sector_x, int sector_y); + static void ScanSectorList_ListModelsVisible(int sector_x, int sector_y); + static tRenderListEntry* GetLodRenderListBase(); + static tRenderListEntry* GetLodDontRenderListBase(); + static void ResetLodRenderLists(); + static void AddToLodRenderList(CEntity* entity, float distance); + static void AddToLodDontRenderList(CEntity* entity, float distance); + static void ProcessLodRenderLists(); + static void PreRender(); + static void RenderRoads(); + static void RenderEverythingBarRoads(); + static void RenderFirstPersonVehicle(); + static bool SetupLightingForEntity(CEntity* entity); + static int SetupMapEntityVisibility(CEntity* entity, CBaseModelInfo* modelInfo, float distance, bool arg3); + static int SetupEntityVisibility(CEntity* entity, float& outDistance); + static int SetupBigBuildingVisibility(CEntity* entity, float& outDistance); + static void ScanSectorList(int sector_x, int sector_y); + static void ScanBigBuildingList(int sector_x, int sector_y); + // returns objects count + static int GetObjectsInFrustum(CEntity** outEntities, float distance, RwMatrixTag* transformMat); + static bool ShouldModelBeStreamed(CEntity* entity, CVector const& origin, float farClip); + static void ScanWorld(); + static void ScanPtrList_RequestModels(CPtrList& ptrList); + static void ConstructRenderList(); + static void ScanSectorList_RequestModels(int sector_x, int sector_y); + static void RequestObjectsInFrustum(RwMatrixTag* transformMat, int modelRequesFlags); + static void RequestObjectsInDirection(CVector const& posn, float angle, int modelRequesFlags); + static void SetupScanLists(int sector_x, int sector_y); +}; + +extern unsigned int &gnRendererModelRequestFlags; +extern CEntity **&gpOutEntitiesForGetObjectsInFrustum; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRepeatSector.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRepeatSector.h new file mode 100644 index 00000000..be574783 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRepeatSector.h @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CPtrListDoubleLink.h" + +enum eRepeatSectorList { + REPEATSECTOR_VEHICLES = 0, + REPEATSECTOR_PEDS = 1, + REPEATSECTOR_OBJECTS = 2 +}; + +class PLUGIN_API CRepeatSector { +public: + CPtrListDoubleLink m_lists[3]; +}; + +VALIDATE_SIZE(CRepeatSector, 0xC); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CReplay.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CReplay.cpp new file mode 100644 index 00000000..d539f374 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CReplay.cpp @@ -0,0 +1,9 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CReplay.h" + +char &CReplay::Mode = *(char*)0xA43088; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CReplay.h b/third-party/plugin-sdk/plugin_sa/game_sa/CReplay.h new file mode 100644 index 00000000..f9bc8fdf --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CReplay.h @@ -0,0 +1,14 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +class PLUGIN_API CReplay { +public: + static char &Mode; + +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRestart.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CRestart.cpp new file mode 100644 index 00000000..37ffe713 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRestart.cpp @@ -0,0 +1,72 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CRestart.h" + +bool &CRestart::bOverrideRespawnBasePointForMission = *(bool *)0xA43248; +CVector *CRestart::OverrideRespawnBasePointForMission = (CVector *)0xA4342C; +float &CRestart::OverrideHeading = *(float *)0xA43260; +bool &CRestart::bOverrideRestart = *(bool *)0xA43264; +CVector *CRestart::OverridePosition = (CVector *)0xA43408; + +short &CRestart::NumberOfPoliceRestarts = *(short *)0xA43268; +int &CRestart::PoliceRestartWhenToUse = *(int *)0xA43270; +float &CRestart::PoliceRestartHeadings = *(float *)0xA43298; +CVector *CRestart::PoliceRestartPoints = (CVector *)0xA43390; + +short &CRestart::NumberOfHospitalRestarts = *(short *)0xA4326C; +int &CRestart::HospitalRestartWhenToUse = *(int *)0xA432C0; +float &CRestart::HospitalRestartHeadings = *(float *)0xA432E8; +CVector *CRestart::HospitalRestartPoints = (CVector *)0xA43318; + +void CRestart::AddHospitalRestartPoint(CVector const &point, float angle, int townId) +{ + ((void(__cdecl *)(CVector const&, float, int))0x460730)(point, angle, townId); +} +void CRestart::AddPoliceRestartPoint(CVector const &point, float angle, int townId) +{ + ((void(__cdecl *)(CVector const&, float, int))0x460780)(point, angle, townId); +} +void CRestart::CancelOverrideRestart() +{ + ((void(__cdecl *)())0x460800)(); +} +void CRestart::ClearRespawnPointForDurationOfMission() +{ + ((void(__cdecl *)())0x460840)(); +} +void CRestart::FindClosestHospitalRestartPoint(CVector point, CVector *storedPoint, float *storedAngle) +{ + ((void(__cdecl *)(CVector, CVector*, float*))0x460A50)(point, storedPoint, storedAngle); +} +void CRestart::FindClosestPoliceRestartPoint(CVector point, CVector *storedPoint, float *storedAngle) +{ + ((void(__cdecl *)(CVector, CVector*, float*))0x460850)(point, storedPoint, storedAngle); +} +void CRestart::Initialise() +{ + ((void(__cdecl *)())0x460630)(); +} +void CRestart::Load() +{ + ((void(__cdecl *)())0x5D3770)(); +} +void CRestart::OverrideNextRestart(CVector const& point, float angle) +{ + ((void(__cdecl *)(CVector const&, float))0x4607D0)(point, angle); +} + +/* +void CRestart::Save() +{ + ((void(__cdecl *)())0x460780)(); +} + +void CRestart::SetRespawnPointForDurationOfMission(CVector point) +{ + ((void(__cdecl *)())0x460780)(); +} +*/ \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRestart.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRestart.h new file mode 100644 index 00000000..8b646d9e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRestart.h @@ -0,0 +1,41 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVector.h" + +class PLUGIN_API CRestart +{ +public: + static bool &bOverrideRespawnBasePointForMission; + static CVector *OverrideRespawnBasePointForMission; + static float &OverrideHeading; + static bool &bOverrideRestart; + static CVector *OverridePosition; + + static short &NumberOfPoliceRestarts; + static int &PoliceRestartWhenToUse; // [10] + static float &PoliceRestartHeadings; // [10] + static CVector *PoliceRestartPoints; // [10] + + static short &NumberOfHospitalRestarts; + static int &HospitalRestartWhenToUse; // [10] + static float &HospitalRestartHeadings; // [10] + static CVector *HospitalRestartPoints; // [10] + + static void AddHospitalRestartPoint(CVector const &point, float angle, int townId); + static void AddPoliceRestartPoint(CVector const &point, float angle, int townId); + static void CancelOverrideRestart(); + static void ClearRespawnPointForDurationOfMission(); + static void FindClosestHospitalRestartPoint(CVector point, CVector *storedPoint, float *storedAngle); + static void FindClosestPoliceRestartPoint(CVector point, CVector *storedPoint, float *storedAngle); + static void Initialise(); + static void Load(); + static void OverrideNextRestart(CVector const& point, float angle); + //static void Save(); + //static void SetRespawnPointForDurationOfMission(CVector point); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRideAnimData.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRideAnimData.h new file mode 100644 index 00000000..67a90b1c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRideAnimData.h @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CRideAnimData { +public: + unsigned int m_nAnimGroup; + float m_fSteerAngle; + float m_fAnimLean; + int dwordC; + float dword10; + float m_fHandlebarsAngle; + float m_fAnimPercentageState; +}; + +VALIDATE_SIZE(CRideAnimData, 0x1C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRoadBlocks.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CRoadBlocks.cpp new file mode 100644 index 00000000..6dbdf1f6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRoadBlocks.cpp @@ -0,0 +1,56 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "CRoadBlocks.h" + +PLUGIN_SOURCE_FILE +tScriptRoadBlocks(&CRoadBlocks::aScriptRoadBlocks)[16] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA913E8, 0, 0, 0, 0, 0)); +tRoadbloxDat(&CRoadBlocks::roadbloxDat)[325] = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA435A0, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned int &CRoadBlocks::roadbloxFlags = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA43438, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned int &CRoadBlocks::roadbloxDatSize = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA43580, 0, 0, 0, 0, 0)); + +int addrof(CRoadBlocks::RegisterScriptRoadBlock) = ADDRESS_BY_VERSION(0x460DF0, 0x45ADCF, 0, 0, 0, 0); +int gaddrof(CRoadBlocks::RegisterScriptRoadBlock) = GLOBAL_ADDRESS_BY_VERSION(0x460DF0, 0x45ADCF, 0, 0, 0, 0); + +void CRoadBlocks::RegisterScriptRoadBlock(CVector *cornerA, CVector *cornerB, byte type) { + plugin::CallDynGlobal(gaddrof(CRoadBlocks::RegisterScriptRoadBlock), cornerA, cornerB, type); +} + +int addrof(CRoadBlocks::ClearScriptRoadBlocks) = ADDRESS_BY_VERSION(0x460EC0, 0x460F40, 0, 0, 0, 0); +int gaddrof(CRoadBlocks::ClearScriptRoadBlocks) = GLOBAL_ADDRESS_BY_VERSION(0x460EC0, 0x460F40, 0, 0, 0, 0); + +void CRoadBlocks::ClearScriptRoadBlocks() { + plugin::CallDynGlobal<>(gaddrof(CRoadBlocks::ClearScriptRoadBlocks)); +} + +int addrof(CRoadBlocks::Init) = ADDRESS_BY_VERSION(0x461100, 0, 0, 0, 0, 0); +int gaddrof(CRoadBlocks::Init) = GLOBAL_ADDRESS_BY_VERSION(0x461100, 0, 0, 0, 0, 0); + +void CRoadBlocks::Init() { + plugin::CallDynGlobal<>(gaddrof(CRoadBlocks::Init)); +} + +int addrof(CRoadBlocks::GenerateRoadBlockCopsForCar) = ADDRESS_BY_VERSION(0x461170, 0x4611F0, 0, 0, 0, 0); +int gaddrof(CRoadBlocks::GenerateRoadBlockCopsForCar) = GLOBAL_ADDRESS_BY_VERSION(0x461170, 0x4611F0, 0, 0, 0, 0); + +void CRoadBlocks::GenerateRoadBlockCopsForCar(CVehicle * car, int pedsPositionsType, byte type) { + plugin::CallDynGlobal(gaddrof(CRoadBlocks::GenerateRoadBlockCopsForCar), car, pedsPositionsType, type); +} + +int addrof(CRoadBlocks::CreateRoadBlockBetween2Points) = ADDRESS_BY_VERSION(0x4619C0, 0x461A40, 0, 0, 0, 0); +int gaddrof(CRoadBlocks::CreateRoadBlockBetween2Points) = GLOBAL_ADDRESS_BY_VERSION(0x4619C0, 0x461A40, 0, 0, 0, 0); + +void CRoadBlocks::CreateRoadBlockBetween2Points(CVector *a, CVector *b, byte type) { + plugin::CallDynGlobal(gaddrof(CRoadBlocks::CreateRoadBlockBetween2Points), a, b, type); +} + +int addrof(CRoadBlocks::GenerateRoadBlocks) = ADDRESS_BY_VERSION(0x4629E0, 0x462A60, 0, 0, 0, 0); +int gaddrof(CRoadBlocks::GenerateRoadBlocks) = GLOBAL_ADDRESS_BY_VERSION(0x4629E0, 0x462A60, 0, 0, 0, 0); + +void CRoadBlocks::GenerateRoadBlocks() { + plugin::CallDynGlobal<>(gaddrof(CRoadBlocks::GenerateRoadBlocks)); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRoadBlocks.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRoadBlocks.h new file mode 100644 index 00000000..9a814558 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRoadBlocks.h @@ -0,0 +1,42 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVehicle.h" +#include "CVector.h" + +struct tScriptRoadBlocks { + CVector cornerA; + CVector cornerB; + char m_nActive; + char m_bIsCreated; + char type; + char field_1B; +}; + +struct tRoadbloxDat { + short areaId; + short nodeId; +}; + +class PLUGIN_API CRoadBlocks { +public: + SUPPORTED_10US static tScriptRoadBlocks(&aScriptRoadBlocks)[16]; // static tScriptRoadBlocks aScriptRoadBlocks[16] + SUPPORTED_10US static tRoadbloxDat(&roadbloxDat)[325]; // static tRoadbloxDat roadbloxDat[325] + SUPPORTED_10US static unsigned int &roadbloxFlags; + SUPPORTED_10US static unsigned int &roadbloxDatSize; + + SUPPORTED_10US_11US static void RegisterScriptRoadBlock(CVector *cornerA, CVector *cornerB, byte type); + SUPPORTED_10US_11US static void ClearScriptRoadBlocks(); + SUPPORTED_10US static void Init(); + SUPPORTED_10US_11US static void GenerateRoadBlockCopsForCar(CVehicle *car, int pedsPositionsType, byte type); + SUPPORTED_10US_11US static void CreateRoadBlockBetween2Points(CVector *a, CVector *b, byte type); + SUPPORTED_10US_11US static void GenerateRoadBlocks(); +}; + +#include "meta/meta.CRoadBlocks.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRope.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CRope.cpp new file mode 100644 index 00000000..41fa1244 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRope.cpp @@ -0,0 +1,42 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CRope.h" + +void CRope::CreateHookObjectForRope() +{ + ((void(__thiscall *)(CRope*))0x556070)(this); +} + +void CRope::PickUpObject(CEntity* object) +{ + ((void(__thiscall *)(CRope*, CEntity*))0x5569C0)(this, object); +} + +void CRope::ReleasePickedUpObject() +{ + ((void(__thiscall *)(CRope*))0x556030)(this); +} + +void CRope::Remove() +{ + ((void(__thiscall *)(CRope*))0x556780)(this); +} + +void CRope::Render() +{ + ((void(__thiscall *)(CRope*))0x556800)(this); +} + +void CRope::Update() +{ + ((void(__thiscall *)(CRope*))0x557530)(this); +} + +void CRope::UpdateWeightInRope(CVector a1, float a2, CVector *a3) +{ + ((void(__thiscall *)(CRope*, CVector, float, CVector*))0x5561B0)(this, a1, a2, a3); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRope.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRope.h new file mode 100644 index 00000000..071b1cc5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRope.h @@ -0,0 +1,42 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class CEntity; +class CObject; + +class PLUGIN_API CRope { +public: + CVector m_avecRopeSegments[32]; + CVector m_avecRopeSegmentsReleased[32]; + int m_nId; + float field_304; + float m_fMass; + float m_fRopeTotalLength; + CEntity *m_pRopeHolder; + CObject *m_pRopeAttachObject; + CEntity *m_pAttachedEntity; + float m_fRopeSegmentLength; + unsigned int m_nTime; + unsigned char m_nNumSegments; + unsigned char m_nRopeType; + unsigned char m_nFlags1; + unsigned char m_nFlags2; + + void CreateHookObjectForRope(); + void PickUpObject(CEntity* object); + void ReleasePickedUpObject(); + void Remove(); + void Render(); + void Update(); + void UpdateWeightInRope(CVector a1, float a2, CVector *a3); +}; + +VALIDATE_SIZE(CRope, 0x328); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRopes.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CRopes.cpp new file mode 100644 index 00000000..cbb12705 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRopes.cpp @@ -0,0 +1,52 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CRopes.h" + +CRope* CRopes::ms_aRopes = (CRope*)0xB768B8; +int& CRopes::ms_bPlayerControlsCrane = *(int*)0xB76898; + + +void CRopes::CreateRopeForSwatPed(CVector const& startPos) +{ + ((void(__cdecl *)(CVector const&))0x558D10)(startPos); +} +void CRopes::FindPickupHeight(CEntity* entity) +{ + ((void(__cdecl *)(CEntity*))0x556760)(entity); +} +int CRopes::FindRope(unsigned int id) +{ + return ((int(__cdecl *)(unsigned int))0x556000)(id); +} +void CRopes::Init() +{ + ((void(__cdecl *)())0x555DC0)(); +} +bool CRopes::IsCarriedByRope(CEntity* entity) +{ + return ((bool(__cdecl *)(CEntity*))0x555F80)(entity); +} +bool CRopes::RegisterRope(CEntity* ropeId, unsigned int ropeType, CVector startPos, bool bExpires, unsigned char segmentCount, unsigned char flags, CEntity* holder, unsigned int timeExpire) +{ + return ((bool(__cdecl *)(CEntity*, unsigned int, CVector, bool, unsigned char, unsigned char, CEntity*, unsigned int))0x556B40)(ropeId, ropeType, startPos, bExpires, segmentCount, flags, holder, timeExpire); +} +void CRopes::Render() +{ + ((void(__cdecl *)())0x556AE0)(); +} +void CRopes::SetSpeedOfTopNode(unsigned int ropeId, CVector dirSpeed) +{ + ((void(__cdecl *)(unsigned int, CVector))0x555DF0)(ropeId, dirSpeed); +} +void CRopes::Shutdown() +{ + ((void(__cdecl *)())0x556B10)(); +} +void CRopes::Update() +{ + ((void(__cdecl *)())0x558D70)(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRopes.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRopes.h new file mode 100644 index 00000000..f05dbfd1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRopes.h @@ -0,0 +1,33 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CRope.h" + + +class PLUGIN_API CRopes +{ +public: + static CRope* ms_aRopes; // array of 8 + static int& ms_bPlayerControlsCrane; + + + static void CreateRopeForSwatPed(CVector const& startPos); + static void FindPickupHeight(CEntity* entity); + + // Returns id to array + static int FindRope(unsigned int id); + static void Init(); + static bool IsCarriedByRope(CEntity* entity); + + // Must be used in loop to make attached to holder + static bool RegisterRope(CEntity* ropeId, unsigned int ropeType, CVector startPos, bool bExpires, unsigned char segmentCount, unsigned char flags, CEntity* holder, unsigned int timeExpire); + static void Render(); + static void SetSpeedOfTopNode(unsigned int ropeId, CVector dirSpeed); + static void Shutdown(); + static void Update(); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRunningScript.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CRunningScript.cpp new file mode 100644 index 00000000..7636085f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRunningScript.cpp @@ -0,0 +1,473 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CRunningScript.h" + +PLUGIN_SOURCE_FILE + +PLUGIN_VARIABLE unsigned char(__thiscall **CRunningScript::CommandHandlerTable)(CRunningScript *_this,unsigned short commandID) = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A6168, 0, 0, 0, 0, 0)); + +int addrof(CRunningScript::AddScriptToList) = ADDRESS_BY_VERSION(0x464C00, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::AddScriptToList) = GLOBAL_ADDRESS_BY_VERSION(0x464C00, 0, 0, 0, 0, 0); + +void CRunningScript::AddScriptToList(CRunningScript **queuelist) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::AddScriptToList), this, queuelist); +} + +int addrof(CRunningScript::CarInAreaCheckCommand) = ADDRESS_BY_VERSION(0x488EC0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::CarInAreaCheckCommand) = GLOBAL_ADDRESS_BY_VERSION(0x488EC0, 0, 0, 0, 0, 0); + +void CRunningScript::CarInAreaCheckCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::CarInAreaCheckCommand), this, commandID); +} + +int addrof(CRunningScript::CharInAngledAreaCheckCommand) = ADDRESS_BY_VERSION(0x487F60, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::CharInAngledAreaCheckCommand) = GLOBAL_ADDRESS_BY_VERSION(0x487F60, 0, 0, 0, 0, 0); + +void CRunningScript::CharInAngledAreaCheckCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::CharInAngledAreaCheckCommand), this, commandID); +} + +int addrof(CRunningScript::CharInAreaCheckCommand) = ADDRESS_BY_VERSION(0x488B50, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::CharInAreaCheckCommand) = GLOBAL_ADDRESS_BY_VERSION(0x488B50, 0, 0, 0, 0, 0); + +void CRunningScript::CharInAreaCheckCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::CharInAreaCheckCommand), this, commandID); +} + +int addrof(CRunningScript::CollectNextParameterWithoutIncreasingPC) = ADDRESS_BY_VERSION(0x464250, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::CollectNextParameterWithoutIncreasingPC) = GLOBAL_ADDRESS_BY_VERSION(0x464250, 0, 0, 0, 0, 0); + +tScriptParam CRunningScript::CollectNextParameterWithoutIncreasingPC() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::CollectNextParameterWithoutIncreasingPC), this); +} + +int addrof(CRunningScript::CollectParameters) = ADDRESS_BY_VERSION(0x464080, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::CollectParameters) = GLOBAL_ADDRESS_BY_VERSION(0x464080, 0, 0, 0, 0, 0); + +void CRunningScript::CollectParameters(short count) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::CollectParameters), this, count); +} + +int addrof(CRunningScript::DoDeatharrestCheck) = ADDRESS_BY_VERSION(0x485A50, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::DoDeatharrestCheck) = GLOBAL_ADDRESS_BY_VERSION(0x485A50, 0, 0, 0, 0, 0); + +void CRunningScript::DoDeatharrestCheck() { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::DoDeatharrestCheck), this); +} + +int addrof(CRunningScript::FlameInAngledAreaCheckCommand) = ADDRESS_BY_VERSION(0x488780, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::FlameInAngledAreaCheckCommand) = GLOBAL_ADDRESS_BY_VERSION(0x488780, 0, 0, 0, 0, 0); + +void CRunningScript::FlameInAngledAreaCheckCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::FlameInAngledAreaCheckCommand), this, commandID); +} + +int addrof(CRunningScript::GetCorrectPedModelIndexForEmergencyServiceType) = ADDRESS_BY_VERSION(0x464F50, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::GetCorrectPedModelIndexForEmergencyServiceType) = GLOBAL_ADDRESS_BY_VERSION(0x464F50, 0, 0, 0, 0, 0); + +void CRunningScript::GetCorrectPedModelIndexForEmergencyServiceType(ePedType pedType, int *pModelId) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::GetCorrectPedModelIndexForEmergencyServiceType), this, pedType, pModelId); +} + +int addrof(CRunningScript::GetIndexOfGlobalVariable) = ADDRESS_BY_VERSION(0x464700, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::GetIndexOfGlobalVariable) = GLOBAL_ADDRESS_BY_VERSION(0x464700, 0, 0, 0, 0, 0); + +short CRunningScript::GetIndexOfGlobalVariable() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::GetIndexOfGlobalVariable), this); +} + +int addrof(CRunningScript::GetPadState) = ADDRESS_BY_VERSION(0x485B10, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::GetPadState) = GLOBAL_ADDRESS_BY_VERSION(0x485B10, 0, 0, 0, 0, 0); + +short CRunningScript::GetPadState(unsigned short playerIndex, unsigned short buttonID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::GetPadState), this, playerIndex, buttonID); +} + +int addrof(CRunningScript::GetPointerToLocalArrayElement) = ADDRESS_BY_VERSION(0x463CC0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::GetPointerToLocalArrayElement) = GLOBAL_ADDRESS_BY_VERSION(0x463CC0, 0, 0, 0, 0, 0); + +void *CRunningScript::GetPointerToLocalArrayElement(int off, unsigned short idx, unsigned char mul) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::GetPointerToLocalArrayElement), this, off, idx, mul); +} + +int addrof(CRunningScript::GetPointerToLocalVariable) = ADDRESS_BY_VERSION(0x463CA0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::GetPointerToLocalVariable) = GLOBAL_ADDRESS_BY_VERSION(0x463CA0, 0, 0, 0, 0, 0); + +void *CRunningScript::GetPointerToLocalVariable(int varId) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::GetPointerToLocalVariable), this, varId); +} + +int addrof(CRunningScript::GetPointerToScriptVariable) = ADDRESS_BY_VERSION(0x464790, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::GetPointerToScriptVariable) = GLOBAL_ADDRESS_BY_VERSION(0x464790, 0, 0, 0, 0, 0); + +tScriptParam *CRunningScript::GetPointerToScriptVariable(unsigned char variableType) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::GetPointerToScriptVariable), this, variableType); +} + +int addrof(CRunningScript::GivePedScriptedTask) = ADDRESS_BY_VERSION(0x465C20, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::GivePedScriptedTask) = GLOBAL_ADDRESS_BY_VERSION(0x465C20, 0, 0, 0, 0, 0); + +void CRunningScript::GivePedScriptedTask(int pedHandle, CTask *task, int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::GivePedScriptedTask), this, pedHandle, task, commandID); +} + +int addrof(CRunningScript::Init) = ADDRESS_BY_VERSION(0x4648E0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::Init) = GLOBAL_ADDRESS_BY_VERSION(0x4648E0, 0, 0, 0, 0, 0); + +void CRunningScript::Init() { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::Init), this); +} + +int addrof(CRunningScript::IsPedDead) = ADDRESS_BY_VERSION(0x464D70, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::IsPedDead) = GLOBAL_ADDRESS_BY_VERSION(0x464D70, 0, 0, 0, 0, 0); + +bool CRunningScript::IsPedDead(CPed *pPed) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::IsPedDead), this, pPed); +} + +int addrof(CRunningScript::LocateCarCommand) = ADDRESS_BY_VERSION(0x487A20, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::LocateCarCommand) = GLOBAL_ADDRESS_BY_VERSION(0x487A20, 0, 0, 0, 0, 0); + +void CRunningScript::LocateCarCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::LocateCarCommand), this, commandID); +} + +int addrof(CRunningScript::LocateCharCarCommand) = ADDRESS_BY_VERSION(0x487420, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::LocateCharCarCommand) = GLOBAL_ADDRESS_BY_VERSION(0x487420, 0, 0, 0, 0, 0); + +void CRunningScript::LocateCharCarCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::LocateCharCarCommand), this, commandID); +} + +int addrof(CRunningScript::LocateCharCharCommand) = ADDRESS_BY_VERSION(0x4870F0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::LocateCharCharCommand) = GLOBAL_ADDRESS_BY_VERSION(0x4870F0, 0, 0, 0, 0, 0); + +void CRunningScript::LocateCharCharCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::LocateCharCharCommand), this, commandID); +} + +int addrof(CRunningScript::LocateCharCommand) = ADDRESS_BY_VERSION(0x486D80, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::LocateCharCommand) = GLOBAL_ADDRESS_BY_VERSION(0x486D80, 0, 0, 0, 0, 0); + +void CRunningScript::LocateCharCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::LocateCharCommand), this, commandID); +} + +int addrof(CRunningScript::LocateCharObjectCommand) = ADDRESS_BY_VERSION(0x487720, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::LocateCharObjectCommand) = GLOBAL_ADDRESS_BY_VERSION(0x487720, 0, 0, 0, 0, 0); + +void CRunningScript::LocateCharObjectCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::LocateCharObjectCommand), this, commandID); +} + +int addrof(CRunningScript::LocateObjectCommand) = ADDRESS_BY_VERSION(0x487D10, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::LocateObjectCommand) = GLOBAL_ADDRESS_BY_VERSION(0x487D10, 0, 0, 0, 0, 0); + +void CRunningScript::LocateObjectCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::LocateObjectCommand), this, commandID); +} + +int addrof(CRunningScript::ObjectInAngledAreaCheckCommand) = ADDRESS_BY_VERSION(0x4883F0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ObjectInAngledAreaCheckCommand) = GLOBAL_ADDRESS_BY_VERSION(0x4883F0, 0, 0, 0, 0, 0); + +void CRunningScript::ObjectInAngledAreaCheckCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::ObjectInAngledAreaCheckCommand), this, commandID); +} + +int addrof(CRunningScript::ObjectInAreaCheckCommand) = ADDRESS_BY_VERSION(0x489150, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ObjectInAreaCheckCommand) = GLOBAL_ADDRESS_BY_VERSION(0x489150, 0, 0, 0, 0, 0); + +void CRunningScript::ObjectInAreaCheckCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::ObjectInAreaCheckCommand), this, commandID); +} + +int addrof(CRunningScript::PlayAnimScriptCommand) = ADDRESS_BY_VERSION(0x470150, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::PlayAnimScriptCommand) = GLOBAL_ADDRESS_BY_VERSION(0x470150, 0, 0, 0, 0, 0); + +void CRunningScript::PlayAnimScriptCommand(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::PlayAnimScriptCommand), this, commandID); +} + +int addrof(CRunningScript::Process) = ADDRESS_BY_VERSION(0x469F00, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::Process) = GLOBAL_ADDRESS_BY_VERSION(0x469F00, 0, 0, 0, 0, 0); + +void CRunningScript::Process() { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::Process), this); +} + +int addrof(CRunningScript::ProcessCommands0To99) = ADDRESS_BY_VERSION(0x465E60, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands0To99) = GLOBAL_ADDRESS_BY_VERSION(0x465E60, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands0To99(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands0To99), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands1000To1099) = ADDRESS_BY_VERSION(0x489500, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands1000To1099) = GLOBAL_ADDRESS_BY_VERSION(0x489500, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands1000To1099(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands1000To1099), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands100To199) = ADDRESS_BY_VERSION(0x466DE0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands100To199) = GLOBAL_ADDRESS_BY_VERSION(0x466DE0, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands100To199(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands100To199), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands1100To1199) = ADDRESS_BY_VERSION(0x48A320, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands1100To1199) = GLOBAL_ADDRESS_BY_VERSION(0x48A320, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands1100To1199(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands1100To1199), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands1200To1299) = ADDRESS_BY_VERSION(0x48B590, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands1200To1299) = GLOBAL_ADDRESS_BY_VERSION(0x48B590, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands1200To1299(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands1200To1299), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands1300To1399) = ADDRESS_BY_VERSION(0x48CDD0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands1300To1399) = GLOBAL_ADDRESS_BY_VERSION(0x48CDD0, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands1300To1399(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands1300To1399), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands1400To1499) = ADDRESS_BY_VERSION(0x48EAA0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands1400To1499) = GLOBAL_ADDRESS_BY_VERSION(0x48EAA0, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands1400To1499(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands1400To1499), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands1500To1599) = ADDRESS_BY_VERSION(0x490DB0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands1500To1599) = GLOBAL_ADDRESS_BY_VERSION(0x490DB0, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands1500To1599(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands1500To1599), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands1600To1699) = ADDRESS_BY_VERSION(0x493FE0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands1600To1699) = GLOBAL_ADDRESS_BY_VERSION(0x493FE0, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands1600To1699(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands1600To1699), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands1700To1799) = ADDRESS_BY_VERSION(0x496E00, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands1700To1799) = GLOBAL_ADDRESS_BY_VERSION(0x496E00, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands1700To1799(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands1700To1799), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands1800To1899) = ADDRESS_BY_VERSION(0x46D050, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands1800To1899) = GLOBAL_ADDRESS_BY_VERSION(0x46D050, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands1800To1899(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands1800To1899), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands1900To1999) = ADDRESS_BY_VERSION(0x46B460, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands1900To1999) = GLOBAL_ADDRESS_BY_VERSION(0x46B460, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands1900To1999(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands1900To1999), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands2000To2099) = ADDRESS_BY_VERSION(0x472310, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands2000To2099) = GLOBAL_ADDRESS_BY_VERSION(0x472310, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands2000To2099(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands2000To2099), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands200To299) = ADDRESS_BY_VERSION(0x469390, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands200To299) = GLOBAL_ADDRESS_BY_VERSION(0x469390, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands200To299(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands200To299), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands2100To2199) = ADDRESS_BY_VERSION(0x470A90, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands2100To2199) = GLOBAL_ADDRESS_BY_VERSION(0x470A90, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands2100To2199(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands2100To2199), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands2200To2299) = ADDRESS_BY_VERSION(0x474900, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands2200To2299) = GLOBAL_ADDRESS_BY_VERSION(0x474900, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands2200To2299(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands2200To2299), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands2300To2399) = ADDRESS_BY_VERSION(0x4762D0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands2300To2399) = GLOBAL_ADDRESS_BY_VERSION(0x4762D0, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands2300To2399(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands2300To2399), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands2400To2499) = ADDRESS_BY_VERSION(0x478000, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands2400To2499) = GLOBAL_ADDRESS_BY_VERSION(0x478000, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands2400To2499(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands2400To2499), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands2500To2599) = ADDRESS_BY_VERSION(0x47A760, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands2500To2599) = GLOBAL_ADDRESS_BY_VERSION(0x47A760, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands2500To2599(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands2500To2599), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands2600To2699) = ADDRESS_BY_VERSION(0x479DA0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands2600To2699) = GLOBAL_ADDRESS_BY_VERSION(0x479DA0, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands2600To2699(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands2600To2699), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands300To399) = ADDRESS_BY_VERSION(0x47C100, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands300To399) = GLOBAL_ADDRESS_BY_VERSION(0x47C100, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands300To399(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands300To399), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands400To499) = ADDRESS_BY_VERSION(0x47D210, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands400To499) = GLOBAL_ADDRESS_BY_VERSION(0x47D210, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands400To499(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands400To499), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands500To599) = ADDRESS_BY_VERSION(0x47E090, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands500To599) = GLOBAL_ADDRESS_BY_VERSION(0x47E090, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands500To599(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands500To599), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands600To699) = ADDRESS_BY_VERSION(0x47F370, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands600To699) = GLOBAL_ADDRESS_BY_VERSION(0x47F370, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands600To699(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands600To699), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands700To799) = ADDRESS_BY_VERSION(0x47FA30, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands700To799) = GLOBAL_ADDRESS_BY_VERSION(0x47FA30, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands700To799(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands700To799), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands800To899) = ADDRESS_BY_VERSION(0x481300, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands800To899) = GLOBAL_ADDRESS_BY_VERSION(0x481300, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands800To899(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands800To899), this, commandID); +} + +int addrof(CRunningScript::ProcessCommands900To999) = ADDRESS_BY_VERSION(0x483BD0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessCommands900To999) = GLOBAL_ADDRESS_BY_VERSION(0x483BD0, 0, 0, 0, 0, 0); + +char CRunningScript::ProcessCommands900To999(int commandID) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ProcessCommands900To999), this, commandID); +} + +int addrof(CRunningScript::ProcessOneCommand) = ADDRESS_BY_VERSION(0x469EB0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ProcessOneCommand) = GLOBAL_ADDRESS_BY_VERSION(0x469EB0, 0, 0, 0, 0, 0); + +void CRunningScript::ProcessOneCommand() { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::ProcessOneCommand), this); +} + +int addrof(CRunningScript::ReadArrayInformation) = ADDRESS_BY_VERSION(0x463CF0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ReadArrayInformation) = GLOBAL_ADDRESS_BY_VERSION(0x463CF0, 0, 0, 0, 0, 0); + +void CRunningScript::ReadArrayInformation(int move, unsigned short *pOffset, int *pIdx) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::ReadArrayInformation), this, move, pOffset, pIdx); +} + +int addrof(CRunningScript::ReadParametersForNewlyStartedScript) = ADDRESS_BY_VERSION(0x464500, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ReadParametersForNewlyStartedScript) = GLOBAL_ADDRESS_BY_VERSION(0x464500, 0, 0, 0, 0, 0); + +void CRunningScript::ReadParametersForNewlyStartedScript(CRunningScript *pNewScript) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::ReadParametersForNewlyStartedScript), this, pNewScript); +} + +int addrof(CRunningScript::ReadTextLabelFromScript) = ADDRESS_BY_VERSION(0x463D50, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ReadTextLabelFromScript) = GLOBAL_ADDRESS_BY_VERSION(0x463D50, 0, 0, 0, 0, 0); + +void CRunningScript::ReadTextLabelFromScript(char *pBuffer, unsigned char nBufferLength) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::ReadTextLabelFromScript), this, pBuffer, nBufferLength); +} + +int addrof(CRunningScript::RemoveScriptFromList) = ADDRESS_BY_VERSION(0x464BD0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::RemoveScriptFromList) = GLOBAL_ADDRESS_BY_VERSION(0x464BD0, 0, 0, 0, 0, 0); + +void CRunningScript::RemoveScriptFromList(CRunningScript **queuelist) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::RemoveScriptFromList), this, queuelist); +} + +int addrof(CRunningScript::ScriptTaskPickUpObject) = ADDRESS_BY_VERSION(0x46AF50, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ScriptTaskPickUpObject) = GLOBAL_ADDRESS_BY_VERSION(0x46AF50, 0, 0, 0, 0, 0); + +void CRunningScript::ScriptTaskPickUpObject(int commandID) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::ScriptTaskPickUpObject), this, commandID); +} + +int addrof(CRunningScript::SetCharCoordinates) = ADDRESS_BY_VERSION(0x464DC0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::SetCharCoordinates) = GLOBAL_ADDRESS_BY_VERSION(0x464DC0, 0, 0, 0, 0, 0); + +void CRunningScript::SetCharCoordinates(CPed *pPed, float x_coord, float y_coord, float z_coord, bool bWarpGang, bool bOffset) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::SetCharCoordinates), this, pPed, x_coord, y_coord, z_coord, bWarpGang, bOffset); +} + +int addrof(CRunningScript::ShutdownThisScript) = ADDRESS_BY_VERSION(0x465AA0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ShutdownThisScript) = GLOBAL_ADDRESS_BY_VERSION(0x465AA0, 0, 0, 0, 0, 0); + +void CRunningScript::ShutdownThisScript() { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::ShutdownThisScript), this); +} + +int addrof(CRunningScript::StoreParameters) = ADDRESS_BY_VERSION(0x464370, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::StoreParameters) = GLOBAL_ADDRESS_BY_VERSION(0x464370, 0, 0, 0, 0, 0); + +void CRunningScript::StoreParameters(short count) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::StoreParameters), this, count); +} + +int addrof(CRunningScript::ThisIsAValidRandomPed) = ADDRESS_BY_VERSION(0x489490, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::ThisIsAValidRandomPed) = GLOBAL_ADDRESS_BY_VERSION(0x489490, 0, 0, 0, 0, 0); + +bool CRunningScript::ThisIsAValidRandomPed(ePedType pedType, bool civilian, bool gang, bool criminal) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CRunningScript::ThisIsAValidRandomPed), this, pedType, civilian, gang, criminal); +} + +int addrof(CRunningScript::UpdateCompareFlag) = ADDRESS_BY_VERSION(0x4859D0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::UpdateCompareFlag) = GLOBAL_ADDRESS_BY_VERSION(0x4859D0, 0, 0, 0, 0, 0); + +void CRunningScript::UpdateCompareFlag(bool state) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::UpdateCompareFlag), this, state); +} + +int addrof(CRunningScript::UpdatePC) = ADDRESS_BY_VERSION(0x464DA0, 0, 0, 0, 0, 0); +int gaddrof(CRunningScript::UpdatePC) = GLOBAL_ADDRESS_BY_VERSION(0x464DA0, 0, 0, 0, 0, 0); + +void CRunningScript::UpdatePC(int newIP) { + plugin::CallMethodDynGlobal(gaddrof(CRunningScript::UpdatePC), this, newIP); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CRunningScript.h b/third-party/plugin-sdk/plugin_sa/game_sa/CRunningScript.h new file mode 100644 index 00000000..d004a0b5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CRunningScript.h @@ -0,0 +1,196 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "ePedType.h" +#include "eScriptCommands.h" +#include "eWeaponType.h" +#include "CPed.h" + +enum eScriptParameterType { + SCRIPTPARAM_END_OF_ARGUMENTS, + SCRIPTPARAM_STATIC_INT_32BITS, + SCRIPTPARAM_GLOBAL_NUMBER_VARIABLE, + SCRIPTPARAM_LOCAL_NUMBER_VARIABLE, + SCRIPTPARAM_STATIC_INT_8BITS, + SCRIPTPARAM_STATIC_INT_16BITS, + SCRIPTPARAM_STATIC_FLOAT, + + // Types below are only available in GTA SA + + // Number arrays + SCRIPTPARAM_GLOBAL_NUMBER_ARRAY, + SCRIPTPARAM_LOCAL_NUMBER_ARRAY, + SCRIPTPARAM_STATIC_SHORT_STRING, + SCRIPTPARAM_GLOBAL_SHORT_STRING_VARIABLE, + SCRIPTPARAM_LOCAL_SHORT_STRING_VARIABLE, + SCRIPTPARAM_GLOBAL_SHORT_STRING_ARRAY, + SCRIPTPARAM_LOCAL_SHORT_STRING_ARRAY, + SCRIPTPARAM_STATIC_PASCAL_STRING, + SCRIPTPARAM_STATIC_LONG_STRING, + SCRIPTPARAM_GLOBAL_LONG_STRING_VARIABLE, + SCRIPTPARAM_LOCAL_LONG_STRING_VARIABLE, + SCRIPTPARAM_GLOBAL_LONG_STRING_ARRAY, + SCRIPTPARAM_LOCAL_LONG_STRING_ARRAY, +}; + +enum eButtonID +{ + BUTTON_LEFT_STICK_X, + BUTTON_LEFT_STICK_Y, + BUTTON_RIGHT_STICK_X, + BUTTON_RIGHT_STICK_Y, + BUTTON_LEFT_SHOULDER1, + BUTTON_LEFT_SHOULDER2, + BUTTON_RIGHT_SHOULDER1, + BUTTON_RIGHT_SHOULDER2, + BUTTON_DPAD_UP, + BUTTON_DPAD_DOWN, + BUTTON_DPAD_LEFT, + BUTTON_DPAD_RIGHT, + BUTTON_START, + BUTTON_SELECT, + BUTTON_SQUARE, + BUTTON_TRIANGLE, + BUTTON_CROSS, + BUTTON_CIRCLE, + BUTTON_LEFTSHOCK, + BUTTON_RIGHTSHOCK, +}; + +union tScriptParam { + unsigned int uParam; + int iParam; + float fParam; + void *pParam; + char *szParam; +}; + +VALIDATE_SIZE(tScriptParam, 0x4); + +class PLUGIN_API CRunningScript { +public: + CRunningScript *m_pNext; + CRunningScript *m_pPrev; + char m_szName[8]; + unsigned char *m_pBaseIP; + unsigned char *m_pCurrentIP; + unsigned char *m_apStack[8]; + unsigned short m_nSP; +private: + char _pad3A[2]; +public: + tScriptParam m_aLocalVars[32]; + int m_anTimers[2]; + bool m_bIsActive; + bool m_bCondResult; + bool m_bUseMissionCleanup; + bool m_bIsExternal; + bool m_bTextBlockOverride; +private: + char _padC9[3]; +public: + int m_nWakeTime; + unsigned short m_nLogicalOp; + bool m_bNotFlag; + bool m_bWastedBustedCheck; + bool m_bWastedOrBusted; +private: + char _padD5[3]; +public: + unsigned char *m_pSceneSkipIP; + bool m_bIsMission; +private: + char _padDD[3]; +public: + + SUPPORTED_10US static unsigned char(__thiscall **CommandHandlerTable)(CRunningScript *_this,unsigned short commandID); // static unsigned char(__thiscall *CommandHandlerTable[27])(CRunningScript *,unsigned short ) + + //! Adds script to list + SUPPORTED_10US void AddScriptToList(CRunningScript **queuelist); + SUPPORTED_10US void CarInAreaCheckCommand(int commandID); + SUPPORTED_10US void CharInAngledAreaCheckCommand(int commandID); + SUPPORTED_10US void CharInAreaCheckCommand(int commandID); + //! Collects parameter and returns it. + SUPPORTED_10US tScriptParam CollectNextParameterWithoutIncreasingPC(); + SUPPORTED_10US void CollectParameters(short count); + SUPPORTED_10US void DoDeatharrestCheck(); + SUPPORTED_10US void FlameInAngledAreaCheckCommand(int commandID); + SUPPORTED_10US void GetCorrectPedModelIndexForEmergencyServiceType(ePedType pedType, int *pModelId); + //! Returns offset of global variable + SUPPORTED_10US short GetIndexOfGlobalVariable(); + //! Returns state of pad button , see eButtonID. + SUPPORTED_10US short GetPadState(unsigned short playerIndex, unsigned short buttonID); + //! Returns pointer to local variable pointed by offset and array index as well as multiplier. + SUPPORTED_10US void *GetPointerToLocalArrayElement(int off, unsigned short idx, unsigned char mul); + SUPPORTED_10US void *GetPointerToLocalVariable(int varId); + //! Returns pointer to script variable of any type. + SUPPORTED_10US tScriptParam *GetPointerToScriptVariable(unsigned char variableType); + SUPPORTED_10US void GivePedScriptedTask(int pedHandle, CTask *task, int commandID); + SUPPORTED_10US void Init(); + SUPPORTED_10US bool IsPedDead(CPed *pPed); + SUPPORTED_10US void LocateCarCommand(int commandID); + SUPPORTED_10US void LocateCharCarCommand(int commandID); + SUPPORTED_10US void LocateCharCharCommand(int commandID); + SUPPORTED_10US void LocateCharCommand(int commandID); + SUPPORTED_10US void LocateCharObjectCommand(int commandID); + SUPPORTED_10US void LocateObjectCommand(int commandID); + SUPPORTED_10US void ObjectInAngledAreaCheckCommand(int commandID); + SUPPORTED_10US void ObjectInAreaCheckCommand(int commandID); + SUPPORTED_10US void PlayAnimScriptCommand(int commandID); + SUPPORTED_10US void Process(); + SUPPORTED_10US char ProcessCommands0To99(int commandID); + SUPPORTED_10US char ProcessCommands1000To1099(int commandID); + SUPPORTED_10US char ProcessCommands100To199(int commandID); + SUPPORTED_10US char ProcessCommands1100To1199(int commandID); + SUPPORTED_10US char ProcessCommands1200To1299(int commandID); + SUPPORTED_10US char ProcessCommands1300To1399(int commandID); + SUPPORTED_10US char ProcessCommands1400To1499(int commandID); + SUPPORTED_10US char ProcessCommands1500To1599(int commandID); + SUPPORTED_10US char ProcessCommands1600To1699(int commandID); + SUPPORTED_10US char ProcessCommands1700To1799(int commandID); + SUPPORTED_10US char ProcessCommands1800To1899(int commandID); + SUPPORTED_10US char ProcessCommands1900To1999(int commandID); + SUPPORTED_10US char ProcessCommands2000To2099(int commandID); + SUPPORTED_10US char ProcessCommands200To299(int commandID); + SUPPORTED_10US char ProcessCommands2100To2199(int commandID); + SUPPORTED_10US char ProcessCommands2200To2299(int commandID); + SUPPORTED_10US char ProcessCommands2300To2399(int commandID); + SUPPORTED_10US char ProcessCommands2400To2499(int commandID); + SUPPORTED_10US char ProcessCommands2500To2599(int commandID); + SUPPORTED_10US char ProcessCommands2600To2699(int commandID); + SUPPORTED_10US char ProcessCommands300To399(int commandID); + SUPPORTED_10US char ProcessCommands400To499(int commandID); + SUPPORTED_10US char ProcessCommands500To599(int commandID); + SUPPORTED_10US char ProcessCommands600To699(int commandID); + SUPPORTED_10US char ProcessCommands700To799(int commandID); + SUPPORTED_10US char ProcessCommands800To899(int commandID); + SUPPORTED_10US char ProcessCommands900To999(int commandID); + SUPPORTED_10US void ProcessOneCommand(); + //! Reads array offset and value from array index variable. + SUPPORTED_10US void ReadArrayInformation(int move, unsigned short *pOffset, int *pIdx); + //! Collects parameters and puts them to local variables of new script + SUPPORTED_10US void ReadParametersForNewlyStartedScript(CRunningScript *pNewScript); + //! Collects string parameter + SUPPORTED_10US void ReadTextLabelFromScript(char *pBuffer, unsigned char nBufferLength); + //! Removes script from list + SUPPORTED_10US void RemoveScriptFromList(CRunningScript **queuelist); + SUPPORTED_10US void ScriptTaskPickUpObject(int commandID); + SUPPORTED_10US void SetCharCoordinates(CPed *pPed, float x_coord, float y_coord, float z_coord, bool bWarpGang, bool bOffset); + //! Terminates a script + SUPPORTED_10US void ShutdownThisScript(); + SUPPORTED_10US void StoreParameters(short count); + SUPPORTED_10US bool ThisIsAValidRandomPed(ePedType pedType, bool civilian, bool gang, bool criminal); + //! Updates comparement flag, used in conditional commands + SUPPORTED_10US void UpdateCompareFlag(bool state); + //! Sets instruction pointer, used in GOTO-like commands + SUPPORTED_10US void UpdatePC(int newIP); +}; + +#include "meta/meta.CRunningScript.h" + +VALIDATE_SIZE(CRunningScript, 0xE0); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CScene.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CScene.cpp new file mode 100644 index 00000000..770864af --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CScene.cpp @@ -0,0 +1,9 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CScene.h" + +CScene &Scene = *(CScene *)0xC17038; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CScene.h b/third-party/plugin-sdk/plugin_sa/game_sa/CScene.h new file mode 100644 index 00000000..8147eb33 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CScene.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" + +class PLUGIN_API CScene +{ +public: + RpWorld *m_pRpWorld; + RwCamera *m_pRwCamera; +}; + +VALIDATE_SIZE(CScene, 0x8); + +extern PLUGIN_API CScene &Scene; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CScriptResourceManager.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CScriptResourceManager.cpp new file mode 100644 index 00000000..125fe191 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CScriptResourceManager.cpp @@ -0,0 +1,30 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CScriptResourceManager.h" + +PLUGIN_SOURCE_FILE + +int addrof(CScriptResourceManager::AddToResourceManager) = ADDRESS_BY_VERSION(0x4704B0, 0, 0, 0, 0, 0); +int gaddrof(CScriptResourceManager::AddToResourceManager) = GLOBAL_ADDRESS_BY_VERSION(0x4704B0, 0, 0, 0, 0, 0); + +void CScriptResourceManager::AddToResourceManager(int modelID, unsigned int ResourceType, CRunningScript *pScript) { + plugin::CallMethodDynGlobal(gaddrof(CScriptResourceManager::AddToResourceManager), this, modelID, ResourceType, pScript); +} + +int addrof(CScriptResourceManager::HasResourceBeenRequested) = ADDRESS_BY_VERSION(0x470620, 0, 0, 0, 0, 0); +int gaddrof(CScriptResourceManager::HasResourceBeenRequested) = GLOBAL_ADDRESS_BY_VERSION(0x470620, 0, 0, 0, 0, 0); + +bool CScriptResourceManager::HasResourceBeenRequested(int ModelId, unsigned int a4) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CScriptResourceManager::HasResourceBeenRequested), this, ModelId, a4); +} + +int addrof(CScriptResourceManager::RemoveFromResourceManager) = ADDRESS_BY_VERSION(0x470510, 0, 0, 0, 0, 0); +int gaddrof(CScriptResourceManager::RemoveFromResourceManager) = GLOBAL_ADDRESS_BY_VERSION(0x470510, 0, 0, 0, 0, 0); + +bool CScriptResourceManager::RemoveFromResourceManager(int modelID, unsigned int ResourceType, CRunningScript *pScript) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CScriptResourceManager::RemoveFromResourceManager), this, modelID, ResourceType, pScript); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CScriptResourceManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/CScriptResourceManager.h new file mode 100644 index 00000000..4ac0c869 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CScriptResourceManager.h @@ -0,0 +1,39 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CRunningScript.h" + +enum eScriptResourceType +{ + RESOURCETYPE_ANIMATION = 1, + RESOURCETYPE_MODEL_OR_SPECIAL_CHAR, + RESOURCETYPE_DECISION_MAKER +}; + + +class PLUGIN_API CScriptResourceManager { +public: + + struct { + int m_nModelId; + void *m_pThread; + unsigned short type; //see eScriptResourceType + } m_aScriptResources[75]; + + //! see eScriptResourceType + SUPPORTED_10US void AddToResourceManager(int modelID, unsigned int ResourceType, CRunningScript *pScript); + //! see eScriptResourceType + SUPPORTED_10US bool HasResourceBeenRequested(int ModelId, unsigned int a4); + //! see eScriptResourceType + SUPPORTED_10US bool RemoveFromResourceManager(int modelID, unsigned int ResourceType, CRunningScript *pScript); +}; + +VALIDATE_SIZE(CScriptResourceManager,0x384); + +#include "meta/meta.CScriptResourceManager.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CScriptsForBrains.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CScriptsForBrains.cpp new file mode 100644 index 00000000..d5788357 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CScriptsForBrains.cpp @@ -0,0 +1,110 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CScriptsForBrains.h" + +PLUGIN_SOURCE_FILE + +int ctor_addr(CScriptsForBrains) = ADDRESS_BY_VERSION(0x46B260, 0, 0, 0, 0, 0); +int ctor_gaddr(CScriptsForBrains) = GLOBAL_ADDRESS_BY_VERSION(0x46B260, 0, 0, 0, 0, 0); + +int addrof(CScriptsForBrains::AddNewScriptBrain) = ADDRESS_BY_VERSION(0x46A930, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::AddNewScriptBrain) = GLOBAL_ADDRESS_BY_VERSION(0x46A930, 0, 0, 0, 0, 0); + +void CScriptsForBrains::AddNewScriptBrain(short ImgIndex, short Model, unsigned short Priority, signed char attachType, signed char Type, float Radius) { + plugin::CallMethodDynGlobal(gaddrof(CScriptsForBrains::AddNewScriptBrain), this, ImgIndex, Model, Priority, attachType, Type, Radius); +} + +int addrof(CScriptsForBrains::AddNewStreamedScriptBrainForCodeUse) = ADDRESS_BY_VERSION(0x46A9C0, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::AddNewStreamedScriptBrainForCodeUse) = GLOBAL_ADDRESS_BY_VERSION(0x46A9C0, 0, 0, 0, 0, 0); + +void CScriptsForBrains::AddNewStreamedScriptBrainForCodeUse(short a2, char *a3, signed char attachtype) { + plugin::CallMethodDynGlobal(gaddrof(CScriptsForBrains::AddNewStreamedScriptBrainForCodeUse), this, a2, a3, attachtype); +} + +int addrof(CScriptsForBrains::CheckIfNewEntityNeedsScript) = ADDRESS_BY_VERSION(0x46FF20, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::CheckIfNewEntityNeedsScript) = GLOBAL_ADDRESS_BY_VERSION(0x46FF20, 0, 0, 0, 0, 0); + +void CScriptsForBrains::CheckIfNewEntityNeedsScript(CEntity *pEntity, signed char attachType, void *unused) { + plugin::CallMethodDynGlobal(gaddrof(CScriptsForBrains::CheckIfNewEntityNeedsScript), this, pEntity, attachType, unused); +} + +int addrof(CScriptsForBrains::GetIndexOfScriptBrainWithThisName) = ADDRESS_BY_VERSION(0x46AA30, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::GetIndexOfScriptBrainWithThisName) = GLOBAL_ADDRESS_BY_VERSION(0x46AA30, 0, 0, 0, 0, 0); + +signed short CScriptsForBrains::GetIndexOfScriptBrainWithThisName(char const *name, signed char Attachtype) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CScriptsForBrains::GetIndexOfScriptBrainWithThisName), this, name, Attachtype); +} + +int addrof(CScriptsForBrains::HasAttractorScriptBrainWithThisNameLoaded) = ADDRESS_BY_VERSION(0x46AB20, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::HasAttractorScriptBrainWithThisNameLoaded) = GLOBAL_ADDRESS_BY_VERSION(0x46AB20, 0, 0, 0, 0, 0); + +bool CScriptsForBrains::HasAttractorScriptBrainWithThisNameLoaded(char const *name) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CScriptsForBrains::HasAttractorScriptBrainWithThisNameLoaded), this, name); +} + +int addrof(CScriptsForBrains::Init) = ADDRESS_BY_VERSION(0x46A8C0, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::Init) = GLOBAL_ADDRESS_BY_VERSION(0x46A8C0, 0, 0, 0, 0, 0); + +void CScriptsForBrains::Init() { + plugin::CallMethodDynGlobal(gaddrof(CScriptsForBrains::Init), this); +} + +int addrof(CScriptsForBrains::IsObjectWithinBrainActivationRange) = ADDRESS_BY_VERSION(0x46B3D0, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::IsObjectWithinBrainActivationRange) = GLOBAL_ADDRESS_BY_VERSION(0x46B3D0, 0, 0, 0, 0, 0); + +bool CScriptsForBrains::IsObjectWithinBrainActivationRange(CObject *entity, CVector const *point) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CScriptsForBrains::IsObjectWithinBrainActivationRange), this, entity, point); +} + +int addrof(CScriptsForBrains::MarkAttractorScriptBrainWithThisNameAsNoLongerNeeded) = ADDRESS_BY_VERSION(0x46AAE0, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::MarkAttractorScriptBrainWithThisNameAsNoLongerNeeded) = GLOBAL_ADDRESS_BY_VERSION(0x46AAE0, 0, 0, 0, 0, 0); + +void CScriptsForBrains::MarkAttractorScriptBrainWithThisNameAsNoLongerNeeded(char const *name) { + plugin::CallMethodDynGlobal(gaddrof(CScriptsForBrains::MarkAttractorScriptBrainWithThisNameAsNoLongerNeeded), this, name); +} + +int addrof(CScriptsForBrains::RequestAttractorScriptBrainWithThisName) = ADDRESS_BY_VERSION(0x46AA80, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::RequestAttractorScriptBrainWithThisName) = GLOBAL_ADDRESS_BY_VERSION(0x46AA80, 0, 0, 0, 0, 0); + +void CScriptsForBrains::RequestAttractorScriptBrainWithThisName(char const *name) { + plugin::CallMethodDynGlobal(gaddrof(CScriptsForBrains::RequestAttractorScriptBrainWithThisName), this, name); +} + +int addrof(CScriptsForBrains::StartAttractorScriptBrainWithThisName) = ADDRESS_BY_VERSION(0x46B390, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::StartAttractorScriptBrainWithThisName) = GLOBAL_ADDRESS_BY_VERSION(0x46B390, 0, 0, 0, 0, 0); + +void CScriptsForBrains::StartAttractorScriptBrainWithThisName(char const *name, CEntity *pEntity, unsigned char bHasAScriptBrain) { + plugin::CallMethodDynGlobal(gaddrof(CScriptsForBrains::StartAttractorScriptBrainWithThisName), this, name, pEntity, bHasAScriptBrain); +} + +int addrof(CScriptsForBrains::StartNewStreamedScriptBrain) = ADDRESS_BY_VERSION(0x46B270, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::StartNewStreamedScriptBrain) = GLOBAL_ADDRESS_BY_VERSION(0x46B270, 0, 0, 0, 0, 0); + +void CScriptsForBrains::StartNewStreamedScriptBrain(unsigned char index, CEntity *pEntity, unsigned char bHasAScriptBrain) { + plugin::CallMethodDynGlobal(gaddrof(CScriptsForBrains::StartNewStreamedScriptBrain), this, index, pEntity, bHasAScriptBrain); +} + +int addrof(CScriptsForBrains::StartOrRequestNewStreamedScriptBrain) = ADDRESS_BY_VERSION(0x46CD80, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::StartOrRequestNewStreamedScriptBrain) = GLOBAL_ADDRESS_BY_VERSION(0x46CD80, 0, 0, 0, 0, 0); + +void CScriptsForBrains::StartOrRequestNewStreamedScriptBrain(unsigned char index, CEntity *pEntity, signed char attachType, unsigned char bAddToWaitingArray) { + plugin::CallMethodDynGlobal(gaddrof(CScriptsForBrains::StartOrRequestNewStreamedScriptBrain), this, index, pEntity, attachType, bAddToWaitingArray); +} + +int addrof(CScriptsForBrains::StartOrRequestNewStreamedScriptBrainWithThisName) = ADDRESS_BY_VERSION(0x46CED0, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::StartOrRequestNewStreamedScriptBrainWithThisName) = GLOBAL_ADDRESS_BY_VERSION(0x46CED0, 0, 0, 0, 0, 0); + +void CScriptsForBrains::StartOrRequestNewStreamedScriptBrainWithThisName(char const *name, CEntity *pEntity, signed char attachType) { + plugin::CallMethodDynGlobal(gaddrof(CScriptsForBrains::StartOrRequestNewStreamedScriptBrainWithThisName), this, name, pEntity, attachType); +} + +int addrof(CScriptsForBrains::SwitchAllObjectBrainsWithThisID) = ADDRESS_BY_VERSION(0x46A900, 0, 0, 0, 0, 0); +int gaddrof(CScriptsForBrains::SwitchAllObjectBrainsWithThisID) = GLOBAL_ADDRESS_BY_VERSION(0x46A900, 0, 0, 0, 0, 0); + +void CScriptsForBrains::SwitchAllObjectBrainsWithThisID(signed char ID, bool bStatus) { + plugin::CallMethodDynGlobal(gaddrof(CScriptsForBrains::SwitchAllObjectBrainsWithThisID), this, ID, bStatus); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CScriptsForBrains.h b/third-party/plugin-sdk/plugin_sa/game_sa/CScriptsForBrains.h new file mode 100644 index 00000000..84a2a761 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CScriptsForBrains.h @@ -0,0 +1,49 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CEntity.h" +#include "CObject.h" +#include "CVector.h" + +class PLUGIN_API CScriptsForBrains { + PLUGIN_NO_DEFAULT_CONSTRUCTION(CScriptsForBrains) +public: + + struct + { + short m_nIMGindex; + char m_nAttachType; + char m_nType; + char Status; + private: + char __pad[3]; + public: + float Radius; + unsigned short m_nModelID; + unsigned short m_nPriority; + int field_10; + } m_aScriptForBrains[70]; + + SUPPORTED_10US void AddNewScriptBrain(short ImgIndex, short Model, unsigned short Priority, signed char attachType, signed char Type, float Radius); + SUPPORTED_10US void AddNewStreamedScriptBrainForCodeUse(short a2, char *a3, signed char attachtype); + SUPPORTED_10US void CheckIfNewEntityNeedsScript(CEntity *pEntity, signed char attachType, void *unused); + SUPPORTED_10US signed short GetIndexOfScriptBrainWithThisName(char const *name, signed char Attachtype); + SUPPORTED_10US bool HasAttractorScriptBrainWithThisNameLoaded(char const *name); + SUPPORTED_10US void Init(); + SUPPORTED_10US bool IsObjectWithinBrainActivationRange(CObject *entity, CVector const *point); + SUPPORTED_10US void MarkAttractorScriptBrainWithThisNameAsNoLongerNeeded(char const *name); + SUPPORTED_10US void RequestAttractorScriptBrainWithThisName(char const *name); + SUPPORTED_10US void StartAttractorScriptBrainWithThisName(char const *name, CEntity *pEntity, unsigned char bHasAScriptBrain); + SUPPORTED_10US void StartNewStreamedScriptBrain(unsigned char index, CEntity *pEntity, unsigned char bHasAScriptBrain); + SUPPORTED_10US void StartOrRequestNewStreamedScriptBrain(unsigned char index, CEntity *pEntity, signed char attachType, unsigned char bAddToWaitingArray); + SUPPORTED_10US void StartOrRequestNewStreamedScriptBrainWithThisName(char const *name, CEntity *pEntity, signed char attachType); + SUPPORTED_10US void SwitchAllObjectBrainsWithThisID(signed char ID, bool bStatus); +}; + +#include "meta/meta.CScriptsForBrains.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSector.h b/third-party/plugin-sdk/plugin_sa/game_sa/CSector.h new file mode 100644 index 00000000..f84e8124 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSector.h @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CPtrListDoubleLink.h" + +class PLUGIN_API CSector { +public: + CPtrListDoubleLink m_buildings; + CPtrListDoubleLink m_dummies; +}; + +VALIDATE_SIZE(CSector, 8); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSetPiece.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CSetPiece.cpp new file mode 100644 index 00000000..d55eb992 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSetPiece.cpp @@ -0,0 +1,145 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CSetPiece.h" + +// Converted from thiscall CCopPed* CSetPiece::TryToGenerateCopPed(CVector2D posn) 0x499690 +CCopPed* CSetPiece::TryToGenerateCopPed(CVector2D posn) { + return plugin::CallMethodAndReturn(this, posn); +} + +// Converted from thiscall CVector2D CSetPiece::GetSpawnCoord1() 0x4997A0 +CVector2D CSetPiece::GetSpawnCoord1() { + CVector2D result; + plugin::CallMethod<0x4997A0, CSetPiece *, CVector2D*>(this, &result); + return result; +} + +// Converted from thiscall CVector2D CSetPiece::GetSpawnCoord2() 0x4997E0 +CVector2D CSetPiece::GetSpawnCoord2() { + CVector2D result; + plugin::CallMethod<0x4997E0, CSetPiece *, CVector2D*>(this, &result); + return result; +} + +// Converted from thiscall CVector2D CSetPiece::GetTargetCoord1() 0x499820 +CVector2D CSetPiece::GetTargetCoord1() { + CVector2D result; + plugin::CallMethod<0x499820, CSetPiece *, CVector2D*>(this, &result); + return result; +} + +// Converted from thiscall CVector2D CSetPiece::GetTargetCoord2() 0x499860 +CVector2D CSetPiece::GetTargetCoord2() { + CVector2D result; + plugin::CallMethod<0x499860, CSetPiece *, CVector2D*>(this, &result); + return result; +} + +// Converted from thiscall CVehicle* CSetPiece::TryToGenerateCopCar(CVector2D posn,CVector2D target) 0x4998A0 +CVehicle* CSetPiece::TryToGenerateCopCar(CVector2D posn, CVector2D target) { + return plugin::CallMethodAndReturn(this, posn, target); +} + +// Converted from thiscall void CSetPiece::Update(void) 0x499A80 +void CSetPiece::Update() { + plugin::CallMethod<0x499A80, CSetPiece *>(this); +} + +// Converted from thiscall void CSetPiece::SetCornerA(CVector2D coord) 0x499120 +void CSetPiece::SetCornerA(CVector2D coord) { + plugin::CallMethod<0x499120, CSetPiece *, CVector2D>(this, coord); +} + +// Converted from thiscall void CSetPiece::SetCornerB(CVector2D coord) 0x499150 +void CSetPiece::SetCornerB(CVector2D coord) { + plugin::CallMethod<0x499150, CSetPiece *, CVector2D>(this, coord); +} + +// Converted from thiscall void CSetPiece::SetSpawnCoord1(CVector2D coord) 0x499180 +void CSetPiece::SetSpawnCoord1(CVector2D coord) { + plugin::CallMethod<0x499180, CSetPiece *, CVector2D>(this, coord); +} + +// Converted from thiscall void CSetPiece::SetSpawnCoord2(CVector2D coord) 0x4991B0 +void CSetPiece::SetSpawnCoord2(CVector2D coord) { + plugin::CallMethod<0x4991B0, CSetPiece *, CVector2D>(this, coord); +} + +// Converted from thiscall void CSetPiece::SetTargetCoord1(CVector2D coord) 0x4991E0 +void CSetPiece::SetTargetCoord1(CVector2D coord) { + plugin::CallMethod<0x4991E0, CSetPiece *, CVector2D>(this, coord); +} + +// Converted from thiscall void CSetPiece::SetTargetCoord2(CVector2D coord) 0x499210 +void CSetPiece::SetTargetCoord2(CVector2D coord) { + plugin::CallMethod<0x499210, CSetPiece *, CVector2D>(this, coord); +} + +// Converted from thiscall float CSetPiece::GetCornerAX() 0x499240 +float CSetPiece::GetCornerAX() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CSetPiece::GetCornerAY() 0x499260 +float CSetPiece::GetCornerAY() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CSetPiece::GetCornerBX() 0x499280 +float CSetPiece::GetCornerBX() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CSetPiece::GetCornerBY() 0x4992A0 +float CSetPiece::GetCornerBY() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CSetPiece::GetSpawnCoord1X() 0x4992C0 +float CSetPiece::GetSpawnCoord1X() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CSetPiece::GetSpawnCoord1Y() 0x4992E0 +float CSetPiece::GetSpawnCoord1Y() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CSetPiece::GetSpawnCoord2X() 0x499300 +float CSetPiece::GetSpawnCoord2X() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CSetPiece::GetSpawnCoord2Y() 0x499320 +float CSetPiece::GetSpawnCoord2Y() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CSetPiece::GetTargetCoord1X() 0x499340 +float CSetPiece::GetTargetCoord1X() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CSetPiece::GetTargetCoord1Y() 0x499360 +float CSetPiece::GetTargetCoord1Y() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CSetPiece::GetTargetCoord2X() 0x499380 +float CSetPiece::GetTargetCoord2X() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall float CSetPiece::GetTargetCoord2Y() 0x4993A0 +float CSetPiece::GetTargetCoord2Y() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void CSetPiece::CSetPiece() 0x4993C0 +CSetPiece::CSetPiece() { + plugin::CallMethod<0x4993C0, CSetPiece *>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSetPiece.h b/third-party/plugin-sdk/plugin_sa/game_sa/CSetPiece.h new file mode 100644 index 00000000..2ac6bb89 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSetPiece.h @@ -0,0 +1,74 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CCopPed.h" +#include "CVehicle.h" + +enum eSetPieceType { + /* http://gtaforums.com/topic/194990-gtasa-opcodes/?p=1057374595 */ + + SETPIECE_2CARS_SLOW_SPEED = 1, + SETPIECE_1CAR_QUICK_SPEED = 2, + SETPIECE_1CAR_MEDIUM_SPEED = 3, + SETPIECE_1PED = 4, + SETPIECE_2PEDS = 5, + SETPIECE_2CARS_QUICK_SPEED_BEFORE_HIT = 6, + SETPIECE_2CARS_QUICK_SPEED = 7, + SETPIECE_2CARS_MEDIUM_SPEED = 8 +}; + +class PLUGIN_API CSetPiece { +public: + int m_nLastGenerationTime; + short m_nAreaCornerX1; + short m_nAreaCornerY1; + short m_nAreaCornerX2; + short m_nAreaCornerY2; + short m_nSpawnCoord1X; + short m_nSpawnCoord1Y; + short m_nSpawnCoord2X; + short m_nSpawnCoord2Y; + short m_nTargetCoord1X; + short m_nTargetCoord1Y; + short m_nTargetCoord2X; + short m_nTargetCoord2Y; + unsigned char m_nType; // see eSetPieceType +private: + char _pad1D[3]; +public: + + CSetPiece(); + CVector2D GetSpawnCoord1(); + CVector2D GetSpawnCoord2(); + CVector2D GetTargetCoord1(); + CVector2D GetTargetCoord2(); + void SetCornerA(CVector2D coord); + void SetCornerB(CVector2D coord); + void SetSpawnCoord1(CVector2D coord); + void SetSpawnCoord2(CVector2D coord); + void SetTargetCoord1(CVector2D coord); + void SetTargetCoord2(CVector2D coord); + float GetCornerAX(); + float GetCornerAY(); + float GetCornerBX(); + float GetCornerBY(); + float GetSpawnCoord1X(); + float GetSpawnCoord1Y(); + float GetSpawnCoord2X(); + float GetSpawnCoord2Y(); + float GetTargetCoord1X(); + float GetTargetCoord1Y(); + float GetTargetCoord2X(); + float GetTargetCoord2Y(); + CCopPed* TryToGenerateCopPed(CVector2D posn); + CVehicle* TryToGenerateCopCar(CVector2D posn, CVector2D target); + void Update(); +}; + +VALIDATE_SIZE(CSetPiece, 0x20); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSetPieces.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CSetPieces.cpp new file mode 100644 index 00000000..1f2672e2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSetPieces.cpp @@ -0,0 +1,36 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CSetPieces.h" + +bool &CSetPieces::bDebug = *(bool *)0xA957F8; +unsigned int &CSetPieces::NumSetPieces = *(unsigned int *)0xA957FC; +CSetPiece *CSetPieces::aSetPieces = (CSetPiece *)0xA95818; + +// Converted from cdecl void CSetPieces::AddOne(uchar type,CVector2D cornerA,CVector2D cornerB,CVector2D spawnCoord1,CVector2D targetCoord1,CVector2D spawnCoord2,CVector2D targetCoord2) 0x499500 +void CSetPieces::AddOne(unsigned char type, CVector2D cornerA, CVector2D cornerB, CVector2D spawnCoord1, CVector2D targetCoord1, CVector2D spawnCoord2, CVector2D targetCoord2) { + plugin::Call<0x499500, unsigned char, CVector2D, CVector2D, CVector2D, CVector2D, CVector2D, CVector2D>(type, cornerA, cornerB, spawnCoord1, targetCoord1, spawnCoord2, targetCoord2); +} + +// Converted from cdecl void CSetPieces::Init(void) 0x4994F0 +void CSetPieces::Init() { + plugin::Call<0x4994F0>(); +} + +// Converted from cdecl bool CSetPieces::Load(void) 0x5D3CA0 +bool CSetPieces::Load() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CSetPieces::Save(void) 0x5D3C70 +bool CSetPieces::Save() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CSetPieces::Update(void) 0x49AA00 +void CSetPieces::Update() { + plugin::Call<0x49AA00>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSetPieces.h b/third-party/plugin-sdk/plugin_sa/game_sa/CSetPieces.h new file mode 100644 index 00000000..57bd58ff --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSetPieces.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CSetPiece.h" + +extern unsigned int MAX_SET_PIECES; // default 210 + +class PLUGIN_API CSetPieces { +public: + static void AddOne(unsigned char type, CVector2D cornerA, CVector2D cornerB, CVector2D spawnCoord1, CVector2D targetCoord1, CVector2D spawnCoord2, CVector2D targetCoord2); + static void Init(); + static bool Load(); + static bool Save(); + static void Update(); + + static bool &bDebug; + static unsigned int &NumSetPieces; + static CSetPiece *aSetPieces; // static CSetPiece aSetPieces[MAX_SET_PIECES] +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CShadowCamera.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CShadowCamera.cpp new file mode 100644 index 00000000..95eff88b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CShadowCamera.cpp @@ -0,0 +1,97 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CShadowCamera.h" + +CShadowCamera::CShadowCamera() +{ + ((void (__thiscall *)(CShadowCamera *))0x7053F0)(this); +} + +CShadowCamera::~CShadowCamera() +{ + ((void (__thiscall *)(CShadowCamera *))0x705400)(this); +} + +void CShadowCamera::CreateTexture() +{ + ((void (__thiscall *)(CShadowCamera *))0x705480)(this); +} + +RwCamera *CShadowCamera::SetFrustum(float viewWindow) +{ + return ((RwCamera *(__thiscall *)(CShadowCamera *, float))0x7054C0)(this, viewWindow); +} + +RwCamera *CShadowCamera::SetLight(RpLight *light) +{ + return ((RwCamera *(__thiscall *)(CShadowCamera *, RpLight *))0x705520)(this, light); +} + +RwCamera *CShadowCamera::SetCenter(RwV3d *center) +{ + return ((RwCamera *(__thiscall *)(CShadowCamera *, RwV3d *))0x705590)(this, center); +} + +void CShadowCamera::InvertRaster() +{ + ((void (__thiscall *)(CShadowCamera *))0x705660)(this); +} + +RwRaster *CShadowCamera::GetRwRenderRaster() +{ + return ((RwRaster *(__thiscall *)(CShadowCamera *))0x705770)(this); +} + +RwTexture *CShadowCamera::GetRwRenderTexture() +{ + return ((RwTexture *(__thiscall *)(CShadowCamera *))0x705780)(this); +} + +RwRaster *CShadowCamera::DrawOutlineBorder(RwRGBA const& color) +{ + return ((RwRaster *(__thiscall *)(CShadowCamera *, RwRGBA const&))0x705790)(this, color); +} + +RwCamera *CShadowCamera::Create(int rasterSize) +{ + return ((RwCamera *(__thiscall *)(CShadowCamera *, int))0x705B60)(this, rasterSize); +} + +RwCamera *CShadowCamera::Update(RpClump *object) +{ + return ((RwCamera *(__thiscall *)(CShadowCamera *, RpClump *))0x705BF0)(this, object); +} + +RwCamera *CShadowCamera::Update(RpAtomic *object) +{ + return ((RwCamera *(__thiscall *)(CShadowCamera *, RpAtomic *))0x705C80)(this, object); +} + +void CShadowCamera::MakeGradientRaster() +{ + ((void (__thiscall *)(CShadowCamera *))0x705D20)(this); +} + +RwImage *CShadowCamera::CreateRwImage() +{ + return ((RwImage *(__thiscall *)(CShadowCamera *))0x705EF0)(this); +} + +RwRaster *CShadowCamera::DrawBlurInRect(RwRect *rect) +{ + return ((RwRaster *(__thiscall *)(CShadowCamera *, RwRect *))0x705F50)(this, rect); +} + +void CShadowCamera::RasterResample(RwRaster *raster) +{ + ((void (__thiscall *)(CShadowCamera *, RwRaster *))0x706070)(this, raster); +} + +void CShadowCamera::RasterBlur(RwRaster *raster, int numPasses) +{ + ((void (__thiscall *)(CShadowCamera *, RwRaster *, int))0x706170)(this, raster, numPasses); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CShadowCamera.h b/third-party/plugin-sdk/plugin_sa/game_sa/CShadowCamera.h new file mode 100644 index 00000000..fc44a64d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CShadowCamera.h @@ -0,0 +1,40 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" + +class PLUGIN_API CShadowCamera +{ +public: + RwCamera *m_pRwCamera; + RwTexture *m_pRwRenderTexture; + + CShadowCamera(); + ~CShadowCamera(); + + void CreateTexture(); + RwCamera *SetFrustum(float viewWindow); + RwCamera *SetLight(RpLight *light); + RwCamera *SetCenter(RwV3d *center); + void InvertRaster(); + RwRaster *GetRwRenderRaster(); + RwTexture *GetRwRenderTexture(); + RwRaster *DrawOutlineBorder(RwRGBA const& color); + RwCamera *Create(int rasterSize); + RwCamera *Update(RpClump *object); + RwCamera *Update(RpAtomic *object); + void MakeGradientRaster(); + RwImage *CreateRwImage(); + RwRaster *DrawBlurInRect(RwRect *rect); + void RasterResample(RwRaster *raster); + void RasterBlur(RwRaster *raster, int numPasses); +}; + + +VALIDATE_SIZE(CShadowCamera, 8); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CShadows.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CShadows.cpp new file mode 100644 index 00000000..2564a714 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CShadows.cpp @@ -0,0 +1,201 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CShadows.h" + +unsigned int MAX_STORED_SHADOWS = 48; +unsigned int MAX_PERMANENT_SHADOWS = 48; +unsigned int MAX_STATIC_SHADOWS = 48; +unsigned int MAX_SHADOW_POLY_BUNCHES = 360; + +float &MAX_DISTANCE_PED_SHADOWS = *(float *)0x8D5240; +float &MAX_DISTANCE_PED_SHADOWS_SQR = *(float *)0xC4B6B0; +RwTexture *&gpShadowCarTex = *(RwTexture **)0xC403E0; +RwTexture *&gpShadowPedTex = *(RwTexture **)0xC403E4; +RwTexture *&gpShadowHeliTex = *(RwTexture **)0xC403E8; +RwTexture *&gpShadowBikeTex = *(RwTexture **)0xC403EC; +RwTexture *&gpShadowBaronTex = *(RwTexture **)0xC403F0; +RwTexture *&gpShadowExplosionTex = *(RwTexture **)0xC403F4; +RwTexture *&gpShadowHeadLightsTex = *(RwTexture **)0xC403F8; +RwTexture *&gpShadowHeadLightsTex2 = *(RwTexture **)0xC403FC; +RwTexture *&gpBloodPoolTex = *(RwTexture **)0xC40400; +RwTexture *&gpHandManTex = *(RwTexture **)0xC40404; +RwTexture *&gpCrackedGlassTex = *(RwTexture **)0xC40408; +RwTexture *&gpPostShadowTex = *(RwTexture **)0xC4040C; +CPolyBunch *&CShadows::pEmptyBunchList = *(CPolyBunch **)0xC403D8; +unsigned short &CShadows::ShadowsStoredToBeRendered = *(unsigned short *)0xC403DC; +CRegisteredShadow *CShadows::asShadowsStored = (CRegisteredShadow *)0xC40430; +CPolyBunch *CShadows::aPolyBunches = (CPolyBunch *)0xC40DF0; +CStaticShadow *CShadows::aStaticShadows = (CStaticShadow *)0xC4A030; +CPermanentShadow *CShadows::aPermanentShadows = (CPermanentShadow *)0xC4AC30; + +// Converted from thiscall void CStaticShadow::Free(void) 0x707670 +void CStaticShadow::Free() { + ((void(__thiscall *)(CStaticShadow*))0x707670)(this); +} + +// Converted from cdecl void CShadows::Init(void) 0x706CD0 +void CShadows::Init() { + ((void(__cdecl *)())0x706CD0)(); +} + +// Converted from cdecl void CShadows::Shutdown(void) 0x706ED0 +void CShadows::Shutdown() { + ((void(__cdecl *)())0x706ED0)(); +} + +// Converted from cdecl void CShadows::AddPermanentShadow(uchar type,RwTexture *texture,CVector *posn,float topX,float topY,float rightX,float rightY,short intensity,uchar red,uchar greeb,uchar blue,float drawDistance,uint time,float upDistance) 0x706F60 +void CShadows::AddPermanentShadow(unsigned char type, RwTexture* texture, CVector* posn, float topX, float topY, float rightX, float rightY, short intensity, unsigned char red, unsigned char greeb, unsigned char blue, float drawDistance, unsigned int time, float upDistance) { + ((void(__cdecl *)(unsigned char, RwTexture*, CVector*, float, float, float, float, short, unsigned char, unsigned char, unsigned char, float, unsigned int, float))0x706F60)(type, texture, posn, topX, topY, rightX, rightY, intensity, red, greeb, blue, drawDistance, time, upDistance); +} + +// Converted from cdecl void CShadows::StoreShadowToBeRendered(uchar type,RwTexture *texture,CVector *posn,float topX,float topY,float rightX,float rightY,short intensity,uchar red,uchar green,uchar blue,float zDistance,bool drawOnWater,float scale,CRealTimeShadow *realTimeShadow,bool drawOnBuildings) 0x707390 +void CShadows::StoreShadowToBeRendered(unsigned char type, RwTexture* texture, CVector const* posn, float topX, float topY, float rightX, float rightY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, bool drawOnWater, float scale, CRealTimeShadow* realTimeShadow, bool drawOnBuildings) { + ((void(__cdecl *)(unsigned char, RwTexture*, CVector const*, float, float, float, float, short, unsigned char, unsigned char, unsigned char, float, bool, float, CRealTimeShadow*, bool))0x707390)(type, texture, posn, topX, topY, rightX, rightY, intensity, red, green, blue, zDistance, drawOnWater, scale, realTimeShadow, drawOnBuildings); +} + +// Converted from cdecl void CShadows::SetRenderModeForShadowType(uchar shadowType) 0x707460 +void CShadows::SetRenderModeForShadowType(unsigned char shadowType) { + ((void(__cdecl *)(unsigned char))0x707460)(shadowType); +} + +// Converted from cdecl void CShadows::RemoveOilInArea(float x1,float y1,float x2,float y2) 0x7074F0 +void CShadows::RemoveOilInArea(float x1, float y1, float x2, float y2) { + ((void(__cdecl *)(float, float, float, float))0x7074F0)(x1, y1, x2, y2); +} + +// Converted from cdecl void CShadows::GunShotSetsOilOnFire(CVector const* shotOrigin,CVector const* shotTarget) 0x707550 +void CShadows::GunShotSetsOilOnFire(CVector const*shotOrigin, CVector const*shotTarget) { + ((void(__cdecl *)(CVector const*, CVector const*))0x707550)(shotOrigin, shotTarget); +} + +// Converted from cdecl void CShadows::PrintDebugPoly(CVector *a,CVector *b,CVector *c) 0x7076B0 +void CShadows::PrintDebugPoly(CVector* a, CVector* b, CVector* c) { + ((void(__cdecl *)(CVector*, CVector*, CVector*))0x7076B0)(a, b, c); +} + +// Converted from cdecl void CShadows::CalcPedShadowValues(CVector sunPosn,float *displacementX,float *displacementY,float *frontX,float *frontY,float *sideX,float *sideY) 0x7076C0 +void CShadows::CalcPedShadowValues(CVector sunPosn, float* displacementX, float* displacementY, float* frontX, float* frontY, float* sideX, float* sideY) { + ((void(__cdecl *)(CVector, float*, float*, float*, float*, float*, float*))0x7076C0)(sunPosn, displacementX, displacementY, frontX, frontY, sideX, sideY); +} + +// Converted from cdecl void CShadows::TidyUpShadows(void) 0x707770 +void CShadows::TidyUpShadows() { + ((void(__cdecl *)())0x707770)(); +} + +// Converted from cdecl void CShadows::AffectColourWithLighting(uchar shadowType, uchar dayNightIntensity, uchar red, uchar green, uchar blue, uchar *outRed, uchar *outGreen, uchar *outBlue) 0x707850 +void CShadows::AffectColourWithLighting(unsigned char shadowType, unsigned char dayNightIntensity, unsigned char red, unsigned char green, unsigned char blue, unsigned char* outRed, unsigned char* outGreen, unsigned char* outBlue) { + ((void(__cdecl *)(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char*, unsigned char*, unsigned char*))0x707850)(shadowType, dayNightIntensity, red, green, blue, outRed, outGreen, outBlue); +} + +// Converted from cdecl void CShadows::StoreShadowToBeRendered(uchar shadowTextureType,CVector const *posn,float frontX,float frontY,float sideX,float sideY,short intensity,uchar red,uchar green,uchar blue) 0x707930 +void CShadows::StoreShadowToBeRendered(unsigned char shadowTextureType, CVector const* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue) { + ((void(__cdecl *)(unsigned char, CVector const*, float, float, float, float, short, unsigned char, unsigned char, unsigned char))0x707930)(shadowTextureType, posn, frontX, frontY, sideX, sideY, intensity, red, green, blue); +} + +// Converted from cdecl void CShadows::StoreShadowForPedObject(CEntity *ped,float displacementX,float displacementY,float frontX,float frontY,float sideX,float sideY) 0x707B40 +void CShadows::StoreShadowForPedObject(CEntity* ped, float displacementX, float displacementY, float frontX, float frontY, float sideX, float sideY) { + ((void(__cdecl *)(CEntity*, float, float, float, float, float, float))0x707B40)(ped, displacementX, displacementY, frontX, frontY, sideX, sideY); +} + +// Converted from cdecl void CShadows::StoreRealTimeShadow(CPhysical *physical,float displacementX,float displacementY,float frontX,float frontY,float sideX,float sideY) 0x707CA0 +void CShadows::StoreRealTimeShadow(CPhysical* physical, float displacementX, float displacementY, float frontX, float frontY, float sideX, float sideY) { + ((void(__cdecl *)(CPhysical*, float, float, float, float, float, float))0x707CA0)(physical, displacementX, displacementY, frontX, frontY, sideX, sideY); +} + +// Converted from cdecl void CShadows::UpdateStaticShadows(void) 0x707F40 +void CShadows::UpdateStaticShadows() { + ((void(__cdecl *)())0x707F40)(); +} + +// Converted from cdecl void CShadows::RenderExtraPlayerShadows(void) 0x707FA0 +void CShadows::RenderExtraPlayerShadows() { + ((void(__cdecl *)())0x707FA0)(); +} + +// Converted from cdecl void CShadows::RenderStaticShadows(void) 0x708300 +void CShadows::RenderStaticShadows() { + ((void(__cdecl *)())0x708300)(); +} + +// Converted from cdecl void CShadows::CastShadowEntityXY(CEntity *entity,float conrerAX,float cornerAY,float cornerBX,float cornerBY,CVector *posn,float frontX,float frontY,float sideX,float sideY,short intensity,uchar red,uchar green,uchar blue,float zDistance,float scale,CPolyBunch **ppPolyBunch,uchar *pDayNightIntensity,int shadowType) 0x7086B0 +void CShadows::CastShadowEntityXY(CEntity* entity, float conrerAX, float cornerAY, float cornerBX, float cornerBY, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, float scale, CPolyBunch** ppPolyBunch, unsigned char* pDayNightIntensity, int shadowType) { + ((void(__cdecl *)(CEntity*, float, float, float, float, CVector*, float, float, float, float, short, unsigned char, unsigned char, unsigned char, float, float, CPolyBunch**, unsigned char*, int))0x7086B0)(entity, conrerAX, cornerAY, cornerBX, cornerBY, posn, frontX, frontY, sideX, sideY, intensity, red, green, blue, zDistance, scale, ppPolyBunch, pDayNightIntensity, shadowType); +} + +// Converted from cdecl void CShadows::CastShadowEntityXYZ(CEntity *entity,CVector *posn,float frontX,float frontY,float sideX,float sideY,short intensity,uchar red,uchar green,uchar blue,float zDistance,float scale,CPolyBunch **ppPolyBunch,CRealTimeShadow *realTimeShadow) 0x70A040 +void CShadows::CastShadowEntityXYZ(CEntity* entity, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, float scale, CPolyBunch** ppPolyBunch, CRealTimeShadow* realTimeShadow) { + ((void(__cdecl *)(CEntity*, CVector*, float, float, float, float, short, unsigned char, unsigned char, unsigned char, float, float, CPolyBunch**, CRealTimeShadow*))0x70A040)(entity, posn, frontX, frontY, sideX, sideY, intensity, red, green, blue, zDistance, scale, ppPolyBunch, realTimeShadow); +} + +// Converted from cdecl void CShadows::CastPlayerShadowSectorList(CPtrList &ptrList,float conrerAX,float cornerAY,float cornerBX,float cornerBY,CVector *posn, float frontX, float frontY, float sideX, float sideY, short intensity, uchar red, uchar green, uchar blue, float zDistance, float scale,CPolyBunch **ppPolyBunch,uchar *pDayNightIntensity,int shadowType) 0x70A470 +void CShadows::CastPlayerShadowSectorList(CPtrList& ptrList, float conrerAX, float cornerAY, float cornerBX, float cornerBY, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, float scale, CPolyBunch** ppPolyBunch, unsigned char* pDayNightIntensity, int shadowType) { + ((void(__cdecl *)(CPtrList&, float, float, float, float, CVector*, float, float, float, float, short, unsigned char, unsigned char, unsigned char, float, float, CPolyBunch**, unsigned char*, int))0x70A470)(ptrList, conrerAX, cornerAY, cornerBX, cornerBY, posn, frontX, frontY, sideX, sideY, intensity, red, green, blue, zDistance, scale, ppPolyBunch, pDayNightIntensity, shadowType); +} + +// Converted from cdecl void CShadows::CastShadowSectorList(CPtrList &ptrList,float conrerAX,float cornerAY,float cornerBX,float cornerBY,CVector *posn, float frontX, float frontY, float sideX, float sideY, short intensity, uchar red, uchar green, uchar blue, float zDistance, float scale,CPolyBunch **ppPolyBunch,uchar *pDayNightIntensity,int shadowType) 0x70A630 +void CShadows::CastShadowSectorList(CPtrList& ptrList, float conrerAX, float cornerAY, float cornerBX, float cornerBY, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, float scale, CPolyBunch** ppPolyBunch, unsigned char* pDayNightIntensity, int shadowType) { + ((void(__cdecl *)(CPtrList&, float, float, float, float, CVector*, float, float, float, float, short, unsigned char, unsigned char, unsigned char, float, float, CPolyBunch**, unsigned char*, int))0x70A630)(ptrList, conrerAX, cornerAY, cornerBX, cornerBY, posn, frontX, frontY, sideX, sideY, intensity, red, green, blue, zDistance, scale, ppPolyBunch, pDayNightIntensity, shadowType); +} + +// Converted from cdecl void CShadows::CastRealTimeShadowSectorList(CPtrList &ptrList,float conrerAX,float cornerAY,float cornerBX,float cornerBY,CVector *posn, float frontX, float frontY, float sideX, float sideY, short intensity, uchar red, uchar green, uchar blue, float zDistance, float scale,CPolyBunch **ppPolyBunch,CRealTimeShadow *realTimeShadow,uchar *pDayNightIntensity) 0x70A7E0 +void CShadows::CastRealTimeShadowSectorList(CPtrList& ptrList, float conrerAX, float cornerAY, float cornerBX, float cornerBY, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, float scale, CPolyBunch** ppPolyBunch, CRealTimeShadow* realTimeShadow, unsigned char* pDayNightIntensity) { + ((void(__cdecl *)(CPtrList&, float, float, float, float, CVector*, float, float, float, float, short, unsigned char, unsigned char, unsigned char, float, float, CPolyBunch**, CRealTimeShadow*, unsigned char*))0x70A7E0)(ptrList, conrerAX, cornerAY, cornerBX, cornerBY, posn, frontX, frontY, sideX, sideY, intensity, red, green, blue, zDistance, scale, ppPolyBunch, realTimeShadow, pDayNightIntensity); +} + +// Converted from cdecl void CShadows::RenderStoredShadows(void) 0x70A960 +void CShadows::RenderStoredShadows() { + ((void(__cdecl *)())0x70A960)(); +} + +// Converted from cdecl void CShadows::GeneratePolysForStaticShadow(short staticShadowIndex) 0x70B730 +void CShadows::GeneratePolysForStaticShadow(short staticShadowIndex) { + ((void(__cdecl *)(short))0x70B730)(staticShadowIndex); +} + +// Converted from cdecl bool CShadows::StoreStaticShadow(uint id,uchar type,RwTexture *texture,CVector *posn,float frontX,float frontY,float sideX,float sideY,short intensity,uchar red,uchar green,uchar blue,float zDistane,float scale,float drawDistance,bool temporaryShadow,float upDistance) 0x70BA00 +bool CShadows::StoreStaticShadow(unsigned int id, unsigned char type, RwTexture* texture, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistane, float scale, float drawDistance, bool temporaryShadow, float upDistance) { + return ((bool(__cdecl *)(unsigned int, unsigned char, RwTexture*, CVector*, float, float, float, float, short, unsigned char, unsigned char, unsigned char, float, float, float, bool, float))0x70BA00)(id, type, texture, posn, frontX, frontY, sideX, sideY, intensity, red, green, blue, zDistane, scale, drawDistance, temporaryShadow, upDistance); +} + +// Converted from cdecl void CShadows::StoreShadowForVehicle(CVehicle *vehicle,VEH_SHD_TYPE vehShadowType) 0x70BDA0 +void CShadows::StoreShadowForVehicle(CVehicle* vehicle, VEH_SHD_TYPE vehShadowType) { + ((void(__cdecl *)(CVehicle*, VEH_SHD_TYPE))0x70BDA0)(vehicle, vehShadowType); +} + +// Converted from cdecl void CShadows::StoreCarLightShadow(CVehicle *vehicle,int id,RwTexture *texture,CVector *posn,float frontX,float frontY,float sideX,float sideY,uchar red,uchar green,uchar blue,float maxViewAngle) 0x70C500 +void CShadows::StoreCarLightShadow(CVehicle* vehicle, int id, RwTexture* texture, CVector* posn, float frontX, float frontY, float sideX, float sideY, unsigned char red, unsigned char green, unsigned char blue, float maxViewAngle) { + ((void(__cdecl *)(CVehicle*, int, RwTexture*, CVector*, float, float, float, float, unsigned char, unsigned char, unsigned char, float))0x70C500)(vehicle, id, texture, posn, frontX, frontY, sideX, sideY, red, green, blue, maxViewAngle); +} + +// Converted from cdecl void CShadows::StoreShadowForPole(CEntity *entity,float offsetX,float offsetY,float offsetZ,float poleHeight,float poleWidth,uint localId) 0x70C750 +void CShadows::StoreShadowForPole(CEntity* entity, float offsetX, float offsetY, float offsetZ, float poleHeight, float poleWidth, unsigned int localId) { + ((void(__cdecl *)(CEntity*, float, float, float, float, float, unsigned int))0x70C750)(entity, offsetX, offsetY, offsetZ, poleHeight, poleWidth, localId); +} + +// Converted from cdecl void CShadows::UpdatePermanentShadows(void) 0x70C950 +void CShadows::UpdatePermanentShadows() { + ((void(__cdecl *)())0x70C950)(); +} + +// Converted from cdecl void CShadows::RenderIndicatorShadow(uint id,uchar shadowType,RwTexture *texture,CVector *posn,float frontX,float frontY,float sideX,float sideY, short intensity) 0x70CCB0 +void CShadows::RenderIndicatorShadow(unsigned int id, unsigned char shadowType, RwTexture* texture, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity) { + ((void(__cdecl *)(unsigned int, unsigned char, RwTexture*, CVector*, float, float, float, float, short))0x70CCB0)(id, shadowType, texture, posn, frontX, frontY, sideX, sideY, intensity); +} + +#ifdef _MSC_VER +RwV3d *ShadowRenderTriangleCB(RwV3d *pNormal, RwV3d *pTrianglePos, _ProjectionParam *param) { + RwV3d *result = 0; + __asm mov eax, pNormal + __asm mov ebx, pTrianglePos + __asm mov edi, param + __asm mov ecx, 0x709CF0 + __asm call ecx + __asm mov result, eax + return result; +} +#endif \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CShadows.h b/third-party/plugin-sdk/plugin_sa/game_sa/CShadows.h new file mode 100644 index 00000000..0e128244 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CShadows.h @@ -0,0 +1,229 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CVector.h" +#include "CRealTimeShadow.h" +#include "CPolyBunch.h" +#include "CPtrList.h" + +/* + Shadow rectangle: + Front + +---------+---------+ + | | | + | | | + | | Posn | + +---------+---------+ Side + | | | + | | | + | | | + +---------+---------+ + + Posn - world coordinates (x,y,z) + Front - local coordinates (x,y) relatively to center + Side - local coordinates (x,y) relatively to center +*/ + +enum eShadowType { + SHADOW_DEFAULT = 1, + SHADOW_ADDITIVE = 2, + SHADOW_INVCOLOR = 3, + SHADOW_OIL_1 = 4, + SHADOW_OIL_2 = 5, + SHADOW_OIL_3 = 6, + SHADOW_OIL_4 = 7, + SHADOW_OIL_5 = 8 +}; + +enum eShadowTextureType { + SHADOWTEX_CAR = 1, + SHADOWTEX_PED = 2, + SHADOWTEX_EXPLOSION = 3, + SHADOWTEX_HELI = 4, + SHADOWTEX_HEADLIGHTS = 5, + SHADOWTEX_BLOOD = 6 +}; + +enum VEH_SHD_TYPE { + VEH_SHD_CAR = 0, + VEH_SHD_BIKE = 1, + VEH_SHD_HELI = 2, + VEH_SHD_PLANE = 3, + VEH_SHD_RC = 4, + VEH_SHD_BIG_PLANE = 5 // AT400; ANDROM +}; + +class CRegisteredShadow { +public: + CVector m_vecPosn; + float m_fFrontX; + float m_fFrontY; + float m_fSideX; + float m_fSideY; + float m_fZDistance; + float m_fScale; + RwTexture *m_pTexture; + CRealTimeShadow *m_pRTShadow; + unsigned short m_nIntensity; + unsigned char m_nType; + unsigned char m_nRed; + unsigned char m_nGreen; + unsigned char m_nBlue; + struct { + unsigned char bDrawOnWater : 1; + unsigned char bIgnoreMapObjects : 1; + unsigned char bDrawOnBuildings : 1; + } m_nFlags; +}; + +VALIDATE_SIZE(CRegisteredShadow, 0x34); + +class CPermanentShadow { +public: + CVector m_vecPosn; + float m_fFrontX; + float m_fFrontY; + float m_fSideX; + float m_fSideY; + float m_fZDistance; + float m_fScale; + unsigned int m_nTimeCreated; + unsigned int m_nTimeDuration; + RwTexture *m_pTexture; + unsigned short m_nIntensity; + unsigned char m_nType; + unsigned char m_nRed; + unsigned char m_nGreen; + unsigned char m_nBlue; + struct { + unsigned char bDrawOnWater : 1; + unsigned char bIgnoreMapObjects : 1; + unsigned char bDrawOnBuildings : 1; + } m_nFlags; +}; + +VALIDATE_SIZE(CPermanentShadow, 0x38); + +class CStaticShadow { +public: + unsigned int m_nId; + CPolyBunch *m_pPolyBunch; + unsigned int m_nTimeCreated; + CVector m_vecPosn; + float m_fFrontX; + float m_fFrontY; + float m_fSideX; + float m_fSideY; + float m_fZDistance; + float m_fScale; + RwTexture *m_pTexture; + unsigned short m_nIntensity; + unsigned char m_nType; + unsigned char m_nRed; + unsigned char m_nGreen; + unsigned char m_nBlue; + char m_bJustCreated; + char m_bRendered; + char m_bTemporaryShadow; // delete after 5000ms + union { + struct { + unsigned char m_nDayIntensity : 4; + unsigned char m_nNightIntensity : 4; + }; + unsigned char m_nDayNightIntensity; + }; +private: + short _pad0; +public: + + void Free(); +}; + +VALIDATE_SIZE(CStaticShadow, 0x40); + +struct _ProjectionParam { + RwV3d at; /* Camera at vector */ + RwMatrix invMatrix; /* Transforms to shadow camera space */ + RwUInt8 shadowValue; /* Shadow opacity value */ + RwBool fade; /* Shadow fades with distance */ + RwUInt32 numIm3DBatch; /* Number of buffer flushes */ // unused + RwMatrix entityMatrix; +}; + +VALIDATE_SIZE(_ProjectionParam, 0x98); + +class CEntity; +class CPhysical; +class CVehicle; + +extern unsigned int MAX_STORED_SHADOWS; // default: 48 +extern unsigned int MAX_PERMANENT_SHADOWS; // default: 48 +extern unsigned int MAX_STATIC_SHADOWS; // default: 48 +extern unsigned int MAX_SHADOW_POLY_BUNCHES; // default: 360 + +class CShadows { +public: + static void Init(); + static void Shutdown(); + static void AddPermanentShadow(unsigned char type, RwTexture* texture, CVector* posn, float topX, float topY, float rightX, float rightY, short intensity, unsigned char red, unsigned char greeb, unsigned char blue, float drawDistance, unsigned int time, float upDistance); + static void StoreShadowToBeRendered(unsigned char type, RwTexture* texture, CVector const* posn, float topX, float topY, float rightX, float rightY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, bool drawOnWater, float scale, CRealTimeShadow* realTimeShadow, bool drawOnBuildings); + static void SetRenderModeForShadowType(unsigned char shadowType); + static void RemoveOilInArea(float x1, float y1, float x2, float y2); + static void GunShotSetsOilOnFire(CVector const*shotOrigin, CVector const*shotTarget); + static void PrintDebugPoly(CVector* a, CVector* b, CVector* c); // dummy function + static void CalcPedShadowValues(CVector sunPosn, float* displacementX, float* displacementY, float* frontX, float* frontY, float* sideX, float* sideY); + static void TidyUpShadows(); + static void AffectColourWithLighting(unsigned char shadowType, unsigned char dayNightIntensity, unsigned char red, unsigned char green, unsigned char blue, unsigned char* outRed, unsigned char* outGreen, unsigned char* outBlue); + static void StoreShadowToBeRendered(unsigned char shadowTextureType, CVector const* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue); + static void StoreShadowForPedObject(CEntity* ped, float displacementX, float displacementY, float frontX, float frontY, float sideX, float sideY); + static void StoreRealTimeShadow(CPhysical* physical, float displacementX, float displacementY, float frontX, float frontY, float sideX, float sideY); + static void UpdateStaticShadows(); + static void RenderExtraPlayerShadows(); + static void RenderStaticShadows(); + static void CastShadowEntityXY(CEntity* entity, float conrerAX, float cornerAY, float cornerBX, float cornerBY, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, float scale, CPolyBunch** ppPolyBunch, unsigned char* pDayNightIntensity, int shadowType); + static void CastShadowEntityXYZ(CEntity* entity, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, float scale, CPolyBunch** ppPolyBunch, CRealTimeShadow* realTimeShadow); + static void CastPlayerShadowSectorList(CPtrList& ptrList, float conrerAX, float cornerAY, float cornerBX, float cornerBY, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, float scale, CPolyBunch** ppPolyBunch, unsigned char* pDayNightIntensity, int shadowType); + static void CastShadowSectorList(CPtrList& ptrList, float conrerAX, float cornerAY, float cornerBX, float cornerBY, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, float scale, CPolyBunch** ppPolyBunch, unsigned char* pDayNightIntensity, int shadowType); + static void CastRealTimeShadowSectorList(CPtrList& ptrList, float conrerAX, float cornerAY, float cornerBX, float cornerBY, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, float scale, CPolyBunch** ppPolyBunch, CRealTimeShadow* realTimeShadow, unsigned char* pDayNightIntensity); + static void RenderStoredShadows(); + static void GeneratePolysForStaticShadow(short staticShadowIndex); + static bool StoreStaticShadow(unsigned int id, unsigned char type, RwTexture* texture, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistane, float scale, float drawDistance, bool temporaryShadow, float upDistance); + static void StoreShadowForVehicle(CVehicle* vehicle, VEH_SHD_TYPE vehShadowType); + static void StoreCarLightShadow(CVehicle* vehicle, int id, RwTexture* texture, CVector* posn, float frontX, float frontY, float sideX, float sideY, unsigned char red, unsigned char green, unsigned char blue, float maxViewAngle); + static void StoreShadowForPole(CEntity* entity, float offsetX, float offsetY, float offsetZ, float poleHeight, float poleWidth, unsigned int localId); + static void UpdatePermanentShadows(); + static void RenderIndicatorShadow(unsigned int id, unsigned char shadowType, RwTexture* texture, CVector* posn, float frontX, float frontY, float sideX, float sideY, short intensity); + + static CPolyBunch *&pEmptyBunchList; + static unsigned short &ShadowsStoredToBeRendered; + static CRegisteredShadow *asShadowsStored; // static CRegisteredShadow asShadowsStored[default: 48] + static CPolyBunch *aPolyBunches; // static CPolyBunch aPolyBunches[default: 360] + static CStaticShadow *aStaticShadows; // static CStaticShadow aStaticShadows[default: 48] + static CPermanentShadow *aPermanentShadows; // static CPermanentShadow aPermanentShadows[default: 48] +}; + +#ifdef _MSC_VER +RwV3d *ShadowRenderTriangleCB(RwV3d *pNormal, RwV3d *pTrianglePos, _ProjectionParam *param); +#endif + +extern float &MAX_DISTANCE_PED_SHADOWS; // const 15.0f +extern float &MAX_DISTANCE_PED_SHADOWS_SQR; +extern RwTexture *&gpShadowCarTex; +extern RwTexture *&gpShadowPedTex; +extern RwTexture *&gpShadowHeliTex; +extern RwTexture *&gpShadowBikeTex; +extern RwTexture *&gpShadowBaronTex; +extern RwTexture *&gpShadowExplosionTex; +extern RwTexture *&gpShadowHeadLightsTex; +extern RwTexture *&gpShadowHeadLightsTex2; +extern RwTexture *&gpBloodPoolTex; +extern RwTexture *&gpHandManTex; +extern RwTexture *&gpCrackedGlassTex; +extern RwTexture *&gpPostShadowTex; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CShinyTexts.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CShinyTexts.cpp new file mode 100644 index 00000000..198060df --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CShinyTexts.cpp @@ -0,0 +1,32 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CShinyTexts.h" + +unsigned int MAX_SHINYTEXTS = 32; + +CRegisteredShinyText *CShinyTexts::aShinyTexts = (CRegisteredShinyText *)0xC7D258; +unsigned int &CShinyTexts::NumShinyTexts = *(unsigned int *)0xC7C6F8; + +// Converted from cdecl void CShinyTexts::Init(void) 0x7221B0 +void CShinyTexts::Init() { + plugin::Call<0x7221B0>(); +} + +// Converted from cdecl void CShinyTexts::RenderOutGeometryBuffer(void) 0x7221C0 +void CShinyTexts::RenderOutGeometryBuffer() { + plugin::Call<0x7221C0>(); +} + +// Converted from cdecl void CShinyTexts::Render(void) 0x724890 +void CShinyTexts::Render() { + plugin::Call<0x724890>(); +} + +// Converted from cdecl void CShinyTexts::RegisterOne(CVector cornerAA,CVector cornerBA,CVector cornerBB,CVector cornerAB,float u1,float v1,float u2,float v2,float u3,float v3,float u4,float v4,uchar red,uchar green,uchar blue,uchar alpha,float maxDistance) 0x724B60 +void CShinyTexts::RegisterOne(CVector cornerAA, CVector cornerBA, CVector cornerBB, CVector cornerAB, float u1, float v1, float u2, float v2, float u3, float v3, float u4, float v4, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, float maxDistance) { + plugin::Call<0x724B60, CVector, CVector, CVector, CVector, float, float, float, float, float, float, float, float, unsigned char, unsigned char, unsigned char, unsigned char, float>(cornerAA, cornerBA, cornerBB, cornerAB, u1, v1, u2, v2, u3, v3, u4, v4, red, green, blue, alpha, maxDistance); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CShinyTexts.h b/third-party/plugin-sdk/plugin_sa/game_sa/CShinyTexts.h new file mode 100644 index 00000000..e22b3b0b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CShinyTexts.h @@ -0,0 +1,38 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVector.h" + +class CRegisteredShinyText { +public: + CVector m_vecCornerAA; + CVector m_vecCornerAB; + CVector m_vecCornerBA; + CVector m_vecCornerBB; + RwTexCoords m_texCoorsAA; + RwTexCoords m_texCoorsAB; + RwTexCoords m_texCoorsBA; + RwTexCoords m_texCoorsBB; + float m_fDistanceToCamera; + RwRGBA m_color; +}; + +VALIDATE_SIZE(CRegisteredShinyText, 0x58); + +class CShinyTexts { +public: + static CRegisteredShinyText *aShinyTexts; // static CRegisteredShinyText aShinyTexts[MAX_SHINYTEXTS]; + static unsigned int &NumShinyTexts; + + static void Init(); + static void RenderOutGeometryBuffer(); + static void Render(); + static void RegisterOne(CVector cornerAA, CVector cornerBA, CVector cornerBB, CVector cornerAB, float u1, float v1, float u2, float v2, float u3, float v3, float u4, float v4, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, float maxDistance); +}; + +extern unsigned int MAX_SHINYTEXTS; // default = 32 \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CShotInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CShotInfo.cpp new file mode 100644 index 00000000..3ec054ce --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CShotInfo.cpp @@ -0,0 +1,36 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CShotInfo.h" + +float *CShotInfo::ms_afRandTable = (float *)0xC89628; +unsigned int MAX_SHOT_INFOS = 100; +CShotInfo *aShotInfos = (CShotInfo *)0xC89690; + +// Converted from cdecl void CShotInfo::Initialise(void) 0x739B60 +void CShotInfo::Initialise() { + plugin::Call<0x739B60>(); +} + +// Converted from cdecl void CShotInfo::Shutdown(void) 0x739C20 +void CShotInfo::Shutdown() { + plugin::Call<0x739C20>(); +} + +// Converted from cdecl bool CShotInfo::AddShot(CEntity *creator,eWeaponType weaponType,CVector origin,CVector target) 0x739C30 +bool CShotInfo::AddShot(CEntity* creator, eWeaponType weaponType, CVector origin, CVector target) { + return plugin::CallAndReturn(creator, weaponType, origin, target); +} + +// Converted from cdecl bool CShotInfo::GetFlameThrowerShotPosn(uchar shotId,CVector *outPosn) 0x739DE0 +bool CShotInfo::GetFlameThrowerShotPosn(unsigned char shotId, CVector* outPosn) { + return plugin::CallAndReturn(shotId, outPosn); +} + +// Converted from cdecl void CShotInfo::Update(void) 0x739E60 +void CShotInfo::Update() { + plugin::Call<0x739E60>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CShotInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CShotInfo.h new file mode 100644 index 00000000..0a2054dc --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CShotInfo.h @@ -0,0 +1,42 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" +#include "eWeaponType.h" + +class CEntity; + +class PLUGIN_API CShotInfo { +public: + int m_nWeaponType; + CVector m_vecOrigin; + CVector m_vecTargetOffset; + float m_fRange; + CEntity *m_pCreator; + int m_nDestroyTime; + bool m_bExist; + bool m_bExecuted; +private: + char _pad2A[2]; +public: + + static float *ms_afRandTable; // static float ms_afRandTable[20] + + static void Initialise(); + // dummy function + static void Shutdown(); + static bool AddShot(CEntity* creator, eWeaponType weaponType, CVector origin, CVector target); + static bool GetFlameThrowerShotPosn(unsigned char shotId, CVector* outPosn); + static void Update(); +}; + +VALIDATE_SIZE(CShotInfo, 0x2C); + +extern unsigned int MAX_SHOT_INFOS; // default 100 +extern CShotInfo *aShotInfos; // CShotInfo aShotInfos[MAX_SHOT_INFOS] \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSimpleTransform.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CSimpleTransform.cpp new file mode 100644 index 00000000..30916a40 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSimpleTransform.cpp @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CSimpleTransform.h" + +void CSimpleTransform::UpdateRwMatrix(RwMatrix *out) +{ + ((void (__thiscall *)(CSimpleTransform *, RwMatrix *))0x54EF40)(this, out); +} + +void CSimpleTransform::Invert(CSimpleTransform const& base) +{ + ((void (__thiscall *)(CSimpleTransform *, CSimpleTransform const&))0x54EF90)(this, base); +} + +void CSimpleTransform::UpdateMatrix(CMatrix *out) +{ + ((void (__thiscall *)(CSimpleTransform *, class CMatrix *))0x54F1B0)(this, out); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSimpleTransform.h b/third-party/plugin-sdk/plugin_sa/game_sa/CSimpleTransform.h new file mode 100644 index 00000000..7a73450c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSimpleTransform.h @@ -0,0 +1,24 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CVector.h" + +class PLUGIN_API CSimpleTransform +{ +public: + CVector m_vPosn; + float m_fHeading; + + void UpdateRwMatrix(RwMatrix *out); + void Invert(CSimpleTransform const& base); + void UpdateMatrix(class CMatrix *out); +}; + +VALIDATE_SIZE(CSimpleTransform, 0x10); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSpecialFX.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CSpecialFX.cpp new file mode 100644 index 00000000..1a295c85 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSpecialFX.cpp @@ -0,0 +1,48 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CSpecialFX.h" + +bool &CSpecialFX::bVideoCam = *(bool *)0xC7C70C; +bool &CSpecialFX::bLiftCam = *(bool *)0xC7C70D; +unsigned int &CSpecialFX::SnapShotFrames = *(unsigned int *)0xC7C710; +bool &CSpecialFX::bSnapShotActive = *(bool *)0xC7C714; +RwTexture *&gpFinishFlagTex = *(RwTexture **)0xC7C718; + +// Converted from cdecl void CSpecialFX::AddWeaponStreak(int weaponType) 0x7233F0 +void CSpecialFX::AddWeaponStreak(int weaponType) { + plugin::Call<0x7233F0, int>(weaponType); +} + +// Converted from cdecl void CSpecialFX::Init(void) 0x7268F0 +void CSpecialFX::Init() { + plugin::Call<0x7268F0>(); +} + +// Converted from cdecl void CSpecialFX::Render(void) 0x726AD0 +void CSpecialFX::Render() { + plugin::Call<0x726AD0>(); +} + +// Converted from cdecl void CSpecialFX::Render2DFXs(void) 0x721660 +void CSpecialFX::Render2DFXs() { + plugin::Call<0x721660>(); +} + +// Converted from cdecl void CSpecialFX::ReplayStarted(void) 0x721D30 +void CSpecialFX::ReplayStarted() { + plugin::Call<0x721D30>(); +} + +// Converted from cdecl void CSpecialFX::Shutdown(void) 0x723390 +void CSpecialFX::Shutdown() { + plugin::Call<0x723390>(); +} + +// Converted from cdecl void CSpecialFX::Update(void) 0x726AA0 +void CSpecialFX::Update() { + plugin::Call<0x726AA0>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSpecialFX.h b/third-party/plugin-sdk/plugin_sa/game_sa/CSpecialFX.h new file mode 100644 index 00000000..d1110448 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSpecialFX.h @@ -0,0 +1,28 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "RenderWare.h" + +class CSpecialFX { +public: + static bool &bVideoCam; + static bool &bLiftCam; + static unsigned int &SnapShotFrames; + static bool &bSnapShotActive; + + // unused function; for 'weaponType', see eWeaponType + static void AddWeaponStreak(int weaponType); + static void Init(); + static void Render(); + static void Render2DFXs(); + static void ReplayStarted(); + static void Shutdown(); + static void Update(); +}; + +extern RwTexture *&gpFinishFlagTex; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSpecialPlateHandler.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CSpecialPlateHandler.cpp new file mode 100644 index 00000000..509f22a1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSpecialPlateHandler.cpp @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CSpecialPlateHandler.h" + +// Converted from thiscall void CSpecialPlateHandler::Init(void) 0x6F2D10 +void CSpecialPlateHandler::Init() { + plugin::CallMethod<0x6F2D10, CSpecialPlateHandler *>(this); +} + +// Converted from thiscall int CSpecialPlateHandler::Find(int carGenId,char *outText) 0x6F2D30 +int CSpecialPlateHandler::Find(int carGenId, char* outText) { + return plugin::CallMethodAndReturn(this, carGenId, outText); +} + +// Converted from thiscall void CSpecialPlateHandler::Add(int carGenId,char *plateText) 0x6F2D90 +void CSpecialPlateHandler::Add(int carGenId, char* plateText) { + plugin::CallMethod<0x6F2D90, CSpecialPlateHandler *, int, char*>(this, carGenId, plateText); +} + +// Converted from thiscall void CSpecialPlateHandler::Remove(int plateTextId) 0x6F2DD0 +void CSpecialPlateHandler::Remove(int plateTextId) { + plugin::CallMethod<0x6F2DD0, CSpecialPlateHandler *, int>(this, plateTextId); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSpecialPlateHandler.h b/third-party/plugin-sdk/plugin_sa/game_sa/CSpecialPlateHandler.h new file mode 100644 index 00000000..f15d29dc --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSpecialPlateHandler.h @@ -0,0 +1,30 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +struct tCarGenPlateText { + int m_nCarGenId; // -1 - empty + char m_szPlateText[12]; +}; + +VALIDATE_SIZE(tCarGenPlateText, 0x10); + +class CSpecialPlateHandler { +public: + tCarGenPlateText m_plateTextEntries[15]; + unsigned int m_nCount; + + void Init(); + // Returns -1 if not found, or plate text id if found. outText contain plate text if found, "\0" otherwise. + int Find(int carGenId, char* outText); + void Add(int carGenId, char* plateText); + void Remove(int plateTextId); +}; + +VALIDATE_SIZE(CSpecialPlateHandler, 0xF4); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSphere.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CSphere.cpp new file mode 100644 index 00000000..24946963 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSphere.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CSphere.h" + +void CSphere::Set(float radius, CVector const& center) +{ + ((void (__thiscall *)(CSphere *, float, CVector const&))0x40FCF0)(this, radius, center); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSphere.h b/third-party/plugin-sdk/plugin_sa/game_sa/CSphere.h new file mode 100644 index 00000000..238d3f29 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSphere.h @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class CSphere { +public: + CVector m_vecCenter; + float m_fRadius; + + void Set(float radius, CVector const& center); +}; + +VALIDATE_SIZE(CSphere, 0x10); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSprite.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CSprite.cpp new file mode 100644 index 00000000..87c64a10 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSprite.cpp @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CSprite.h" + +void CSprite::RenderOneXLUSprite(float x, float y, float z, float halfWidth, float halfHeight, + unsigned char red, unsigned char green, unsigned char blue, + short alpha, float rhw, unsigned char intensity, unsigned char udir, + unsigned char vdir) +{ + ((void (__cdecl *)(float, float, float, float, float, unsigned char, unsigned char, unsigned char, + short, float, unsigned char, unsigned char, unsigned char))0x70D000)(x, y, z, halfWidth, halfHeight, + red, green, blue, alpha, rhw, intensity, udir, vdir); +} + +bool CSprite::CalcScreenCoors(RwV3d const &posn, RwV3d *out, float *w, float *h, bool checkMaxVisible, bool checkMinVisible) +{ + return ((bool (__cdecl *)(RwV3d const &, RwV3d *, float *, float *, bool, bool))0x70CE30) + (posn, out, w, h, checkMaxVisible, checkMinVisible); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSprite.h b/third-party/plugin-sdk/plugin_sa/game_sa/CSprite.h new file mode 100644 index 00000000..3dc9d13f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSprite.h @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" + +class PLUGIN_API CSprite +{ +public: + static void RenderOneXLUSprite(float x, float y, float z, float halfWidth, float halfHeight, + unsigned char red, unsigned char green, unsigned char blue, short alpha, float rhw, + unsigned char intensity, unsigned char udir, unsigned char vdir); + static bool CalcScreenCoors(RwV3d const &posn, RwV3d *out, float *w, float *h, bool checkMaxVisible, bool checkMinVisible); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSprite2d.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CSprite2d.cpp new file mode 100644 index 00000000..b01971d0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSprite2d.cpp @@ -0,0 +1,231 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CSprite2d.h" + +// static variables +unsigned int& CSprite2d::nextBufferIndex = *(unsigned int *)0xC80458; +unsigned int& CSprite2d::nextBufferVertex = *(unsigned int *)0xC8045C; +float& CSprite2d::NearScreenZ = *(float *)0xC80460; +float& CSprite2d::RecipNearClip = *(float *)0xC80464; +RwD3D9Vertex *CSprite2d::maVertices = (RwD3D9Vertex *)0xC80468; +// class functions +CSprite2d::CSprite2d() +{ + ((void (__thiscall *)(CSprite2d *))0x727230)(this); +} + +CSprite2d::~CSprite2d() +{ + ((void (__thiscall *)(CSprite2d *))0x7281E0)(this); +} + +// delete this sprite (similar to destructor) +void CSprite2d::Delete() +{ + ((void (__thiscall *)(CSprite2d *))0x727240)(this); +} + +// set texture by name from current txd +void CSprite2d::SetTexture(char *name) +{ + ((void (__thiscall *)(CSprite2d *, char *))0x727270)(this, name); +} + +// set texture by name from current txd (+alpha mask name) +void CSprite2d::SetTexture(char *name, char *maskName) +{ + ((void (__thiscall *)(CSprite2d *, char *, char *))0x7272B0)(this, name, maskName); +} + +void CSprite2d::SetAddressingUV(RwTextureAddressMode modeU, RwTextureAddressMode modeV) +{ + ((void (__thiscall *)(CSprite2d *, RwTextureAddressMode, RwTextureAddressMode))0x7272E0)(this, modeU, modeV); +} + +void CSprite2d::SetAddressing(RwTextureAddressMode modeUV) +{ + ((void (__thiscall *)(CSprite2d *, RwTextureAddressMode))0x727320)(this, modeUV); +} + +// sets sprite texture as current for device rendering +void CSprite2d::SetRenderState() +{ + ((void (__thiscall *)(CSprite2d *))0x727B30)(this); +} + +// draw this sprite +void CSprite2d::Draw(float x, float y, float width, float height, CRGBA const& color) +{ + ((void (__thiscall *)(CSprite2d *, float, float, float, float, CRGBA const&))0x7282C0)(this, x, y, width, height, color); +} + +void CSprite2d::Draw(CRect const& posn, CRGBA const& color) +{ + ((void (__thiscall *)(CSprite2d *, CRect const&, CRGBA const&))0x728350)(this, posn, color); +} + +void CSprite2d::DrawWithBilinearOffset(CRect const& posn, CRGBA const& color) +{ + ((void (__thiscall *)(CSprite2d *, CRect const&, CRGBA const&))0x7283B0)(this, posn, color); +} + +void CSprite2d::Draw(CRect const& posn, CRGBA const& color, float u1, float v1, float u2, float v2, float u3, float v3, float u4, float v4) +{ + ((void (__thiscall *)(CSprite2d *, CRect const&, CRGBA const&, float, float, float, float, float, float, float, float))0x728420)(this, posn, color, u1, v1, u2, v2, u3, v3, u4, v4); +} + +void CSprite2d::Draw(CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4) +{ + ((void (__thiscall *)(CSprite2d *, CRect const&, CRGBA const&, CRGBA const&, CRGBA const&, CRGBA const&))0x7284B0)(this, posn, color1, color2,color3, color4); +} + +void CSprite2d::Draw(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, CRGBA const& color) +{ + ((void (__thiscall *)(CSprite2d *, float, float, float, float, float, float, float, float, CRGBA const&))0x728520)(this, x1, y1, x2, y2, x3, y3, x4, y4, color); +} + +// static functions +void CSprite2d::SetRecipNearClip() +{ + ((void (__cdecl *)())0x727260)(); +} + +void CSprite2d::InitPerFrame() +{ + ((void (__cdecl *)())0x727350)(); +} + +bool CSprite2d::IsVertexBufferEmpty() +{ + return ((bool (__cdecl *)())0x727390)(); +} + +bool CSprite2d::IsVertexBufferFull() +{ + return ((bool (__cdecl *)())0x7273A0)(); +} + +void CSprite2d::RenderVertexBuffer() +{ + ((void (__cdecl *)())0x7273D0)(); +} + +// different kinds of vertices' defining +void CSprite2d::SetVertices(CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4) +{ + ((void (__cdecl *)(CRect const&, CRGBA const&, CRGBA const&, CRGBA const&, CRGBA const&))0x727420)(posn, color1, color2,color3, color4); +} + +void CSprite2d::SetVertices(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4) +{ + ((void (__cdecl *)(float, float, float, float, float, float, float, float, CRGBA const&, CRGBA const&, CRGBA const&, CRGBA const&))0x727590)(x1, y1, x2, y2, x3, y3, x4, y4, color1, color2, color3, color4); +} + +void CSprite2d::SetVertices(CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4, float u1, float v1, float u2, float v2, float u3, float v3, float u4, float v4) +{ + ((void (__cdecl *)(CRect const&, CRGBA const&, CRGBA const&, CRGBA const&, CRGBA const&, float, float, float, float, float, float, float, float))0x727710)(posn, color1, color2, color3, color4, u1, v1, u2, v2, u3, v3, u4, v4); +} + +void CSprite2d::SetVertices(int numVerts, float *posn, float *texCoors, CRGBA const& color) +{ + ((void (__cdecl *)(int, float *, float *, CRGBA const&))0x727890)(numVerts, posn, texCoors, color); +} + +void CSprite2d::SetVertices(int numVerts, float *posn, CRGBA *color) +{ + ((void (__cdecl *)(int, float *, CRGBA *))0x727920)(numVerts, posn, color); +} + +void CSprite2d::SetMaskVertices(int numVerts, float *posn, float depth) +{ + ((void (__cdecl *)(int, float *, float))0x7279B0)(numVerts, posn, depth); +} + +void CSprite2d::SetVertices(RwD3D9Vertex *vertices, CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4, float u1, float v1, float u2, float v2, float u3, float v3, float u4, float v4) +{ + ((void (__cdecl *)(RwD3D9Vertex *, CRect const&, CRGBA const&, CRGBA const&, CRGBA const&, CRGBA const&, float, float, float, float, float, float, float, float))0x727A00)(vertices, posn, color1, color2, color3, color4, u1, v1, u2, v2, u3, v3, u4, v4); +} + +// draws non-textured rectangle +void CSprite2d::DrawRect(CRect const& posn, CRGBA const& color) +{ + ((void (__cdecl *)(CRect const&, CRGBA const&))0x727B60)(posn, color); +} + +//this could be used for drawing textured rectangle (use SetRenderState() before this) +void CSprite2d::DrawTxRect(CRect const& posn, CRGBA const& color) +{ + ((void (__cdecl *)(CRect const&, CRGBA const&))0x727BE0)(posn, color); +} + +// draw non-textured rectangle, with setupable corners' colors. +void CSprite2d::DrawRect(CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4) +{ + ((void (__cdecl *)(CRect const&, CRGBA const&, CRGBA const&, CRGBA const&, CRGBA const&))0x727C10)(posn, color1, color2, color3, color4); +} + +// draws non-textured rectangle with default blending states +void CSprite2d::DrawRectXLU(CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4) +{ + ((void (__cdecl *)(CRect const&, CRGBA const&, CRGBA const&, CRGBA const&, CRGBA const&))0x727C50)(posn, color1, color2, color3, color4); +} + +// draws rectangle, texture could be set with SetRenderState(). +void CSprite2d::DrawAnyRect(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4) +{ + ((void (__cdecl *)(float, float, float, float, float, float, float, float, CRGBA const&, CRGBA const&, CRGBA const&, CRGBA const&))0x727CC0)(x1, y1, x2, y2, x3, y3, x4, y4, color1, color2, color3, color4); +} + +// draws a triangle with rotation (degrees) +void CSprite2d::DrawCircleAtNearClip(CVector2D const& posn, float size, CRGBA const& color, int angle) +{ + ((void (__cdecl *)(CVector2D const&, float, CRGBA const&, int))0x727D60)(posn, size, color, angle); +} + +// this makes some trick with sprite z position (z = NearScreenZ + 0.000001). +void CSprite2d::SetVerticesForSniper(CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4) +{ + ((void (__cdecl *)(CRect const&, CRGBA const&, CRGBA const&, CRGBA const&, CRGBA const&))0x727FD0)(posn, color1, color2, color3, color4); +} + +void CSprite2d::OffsetTexCoordForBilinearFiltering(float width, float height) +{ + ((void (__cdecl *)(float, float))0x728150)(width, height); +} + +// add vertices to buffer +void CSprite2d::AddToBuffer(CRect const& posn, CRGBA const& color, float u1, float v1, float u2, float v2, float u3, float v3, float u4, float v4) +{ + ((void (__cdecl *)(CRect const&, CRGBA const&, float, float, float, float, float, float, float, float))0x728200)(posn, color, u1, v1, u2, v2, u3, v3, u4, v4); +} + +// non-textured polygon +void CSprite2d::Draw2DPolygon(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, CRGBA const& color) +{ + ((void (__cdecl *)(float, float, float, float, float, float, float, float, CRGBA const&))0x7285B0)(x1, y1, x2, y2, x3, y3, x4, y4, color); +} + +// draws progress line. Progress is a value in ranges 0 - 100. +void CSprite2d::DrawBarChart(float x, float y, unsigned short width, unsigned char height, float progress, + signed char progressAdd, unsigned char drawPercentage, unsigned char drawBlackBorder, + CRGBA color, CRGBA addColor) +{ + ((void (__cdecl *)(float, float, unsigned short, unsigned char, float, signed char, unsigned char, + unsigned char, CRGBA, CRGBA))0x728640)(x, y, width, height, progress, progressAdd, drawPercentage, + drawBlackBorder, color, addColor); +} + +#define DrawBarChart(x, y, width, height, progress, progressAdd, drawPercentage, \ + drawBlackBorder, color, addColor) ((void (__cdecl *)(float, float, unsigned short,\ + unsigned char, float, signed char, unsigned char, unsigned char, int, int))0x728640)\ + (x, y, width, height, progress, progressAdd, drawPercentage, drawBlackBorder, color,\ + addColor); + +void Draw() +{ + DrawBarChart(300.0, 100.0, 300, 50, 60.0, 0, false, true, 0xFF0000FF, 0); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CSprite2d.h b/third-party/plugin-sdk/plugin_sa/game_sa/CSprite2d.h new file mode 100644 index 00000000..e5ee9cf0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CSprite2d.h @@ -0,0 +1,87 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CRect.h" +#include "CRGBA.h" +#include "CVector2D.h" +#include "RenderWare.h" + +#define NUM_SPRITE_VERTICES 8 + +class PLUGIN_API CSprite2d +{ +public: + // class variables + struct RwTexture *m_pTexture; + // static variables + static unsigned int& nextBufferIndex; + static unsigned int& nextBufferVertex; + static float& NearScreenZ; + static float& RecipNearClip; + // count: 8 + static struct RwD3D9Vertex *maVertices; + // class functions + CSprite2d(); + ~CSprite2d(); + // delete this sprite (similar to destructor) + void Delete(); + // set texture by name from current txd + void SetTexture(char *name); + // set texture by name from current txd (+alpha mask name) + void SetTexture(char *name, char *maskName); + void SetAddressingUV(RwTextureAddressMode modeU, RwTextureAddressMode modeV); + void SetAddressing(RwTextureAddressMode modeUV); + // sets sprite texture as current for device rendering + void SetRenderState(); + // draw this sprite + void Draw(float x, float y, float width, float height, CRGBA const& color); + void Draw(CRect const& posn, CRGBA const& color); + void DrawWithBilinearOffset(CRect const& posn, CRGBA const& color); + void Draw(CRect const& posn, CRGBA const& color, float u1, float v1, float u2, float v2, float u3, float v3, float u4, float v4); + void Draw(CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4); + void Draw(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, CRGBA const& color); + // static functions + static void SetRecipNearClip(); + static void InitPerFrame(); + static bool IsVertexBufferEmpty(); + static bool IsVertexBufferFull(); + static void RenderVertexBuffer(); + // different kinds of vertices' defining + static void SetVertices(CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4); + static void SetVertices(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4); + static void SetVertices(CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4, float u1, float v1, float u2, float v2, float u3, float v3, float u4, float v4); + static void SetVertices(int numVerts, float *posn, float *texCoors, CRGBA const& color); + static void SetVertices(int numVerts, float *posn, CRGBA *color); + static void SetMaskVertices(int numVerts, float *posn, float depth); + static void SetVertices(RwD3D9Vertex *vertices, CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4, float u1, float v1, float u2, float v2, float u3, float v3, float u4, float v4); + // draws non-textured rectangle + static void DrawRect(CRect const& posn, CRGBA const& color); + //this could be used for drawing textured rectangle (use SetRenderState() before this) + static void DrawTxRect(CRect const& posn, CRGBA const& color); + // draw non-textured rectangle, with setupable corners' colors. + static void DrawRect(CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4); + // draws non-textured rectangle with default blending states + static void DrawRectXLU(CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4); + // draws rectangle, texture could be set with SetRenderState(). + static void DrawAnyRect(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4); + // draws a triangle with rotation (degrees) + static void DrawCircleAtNearClip(CVector2D const& posn, float size, CRGBA const& color, int angle); + // this makes some trick with sprite z position (z = NearScreenZ + 0.000001). + static void SetVerticesForSniper(CRect const& posn, CRGBA const& color1, CRGBA const& color2, CRGBA const& color3, CRGBA const& color4); + static void OffsetTexCoordForBilinearFiltering(float width, float height); + // add vertices to buffer + static void AddToBuffer(CRect const& posn, CRGBA const& color, float u1, float v1, float u2, float v2, float u3, float v3, float u4, float v4); + // non-textured polygon + static void Draw2DPolygon(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, CRGBA const& color); + // draws progress line. Progress is a value in ranges 0 - 100. + static void DrawBarChart(float x, float y, unsigned short width, unsigned char height, float progress, signed char progressAdd, + unsigned char drawPercentage, unsigned char drawBlackBorder, CRGBA color, CRGBA addColor); +}; + +VALIDATE_SIZE(CSprite2d, 4); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CStats.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CStats.cpp new file mode 100644 index 00000000..62d5061e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CStats.cpp @@ -0,0 +1,295 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CStats.h" + +tStatMessage *CStats::StatMessage = (tStatMessage*)0xB78200; +char *CStats::LastMissionPassedName = (char*)0xB78A00; +int *CStats::TimesMissionAttempted = (int*)0xB78CC8; +int *CStats::FavoriteRadioStationList = (int*)0xB78E58; +int *CStats::PedsKilledOfThisType = (int*)0xB78E90; +float *CStats::StatReactionValue = (float*)0xB78F10; +int *CStats::StatTypesInt = (int*)0xB79000; +float *CStats::StatTypesFloat = (float*)0xB79380; +short &CStats::m_ThisStatIsABarChart = *(short*)0xB794CC; +unsigned int &CStats::TotalNumStatMessages = *(unsigned int*)0xB794D0; +bool &CStats::bStatUpdateMessageDisplayed = *(bool*)0xB794D4; +unsigned int &CStats::m_SprintStaminaCounter = *(unsigned int*)0xB794D8; +unsigned int &CStats::m_CycleStaminaCounter = *(unsigned int*)0xB794DC; +unsigned int &CStats::m_CycleSkillCounter = *(unsigned int*)0xB794E0; +unsigned int &CStats::m_SwimStaminaCounter = *(unsigned int*)0xB794E4; +unsigned int &CStats::m_SwimUnderWaterCounter = *(unsigned int*)0xB794E8; +unsigned int &CStats::m_DrivingCounter = *(unsigned int*)0xB794EC; +unsigned int &CStats::m_FlyingCounter = *(unsigned int*)0xB794F0; +unsigned int &CStats::m_BoatCounter = *(unsigned int*)0xB794F4; +unsigned int &CStats::m_BikeCounter = *(unsigned int*)0xB794F8; +unsigned int &CStats::m_FatCounter = *(unsigned int*)0xB794FC; +unsigned int &CStats::m_RunningCounter = *(unsigned int*)0xB79500; +unsigned int &CStats::m_WeaponCounter = *(unsigned int*)0xB79504; +unsigned int &CStats::m_DeathCounter = *(unsigned int*)0xB79508; +unsigned int &CStats::m_MaxHealthCounter = *(unsigned int*)0xB7950C; +unsigned int &CStats::m_AddToHealthCounter = *(unsigned int*)0xB79510; +unsigned int &CStats::m_LastWeaponTypeFired = *(unsigned int*)0xB79514; + +// Converted from cdecl char* CStats::GetStatID(ushort stat) 0x558DE0 +char* CStats::GetStatID(unsigned short stat) { + return plugin::CallAndReturn(stat); +} + +// Converted from cdecl bool CStats::GetStatType(ushort stat) 0x558E30 +bool CStats::GetStatType(unsigned short stat) { + return plugin::CallAndReturn(stat); +} + +// Converted from cdecl float CStats::GetStatValue(ushort stat) 0x558E40 +float CStats::GetStatValue(unsigned short stat) { + return plugin::CallAndReturn(stat); +} + +// Converted from cdecl char CStats::GetTimesMissionAttempted(uchar missionId) 0x558E70 +char CStats::GetTimesMissionAttempted(unsigned char missionId) { + return plugin::CallAndReturn(missionId); +} + +// Converted from cdecl void CStats::RegisterMissionAttempted(uchar missionId) 0x558E80 +void CStats::RegisterMissionAttempted(unsigned char missionId) { + plugin::Call<0x558E80, unsigned char>(missionId); +} + +// Converted from cdecl void CStats::RegisterMissionPassed(uchar missionId) 0x558EA0 +void CStats::RegisterMissionPassed(unsigned char missionId) { + plugin::Call<0x558EA0, unsigned char>(missionId); +} + +// Converted from cdecl bool CStats::PopulateFavoriteRadioStationList(void) 0x558EC0 +bool CStats::PopulateFavoriteRadioStationList() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl int* CStats::GetFullFavoriteRadioStationList(void) 0x558F90 +int *CStats::GetFullFavoriteRadioStationList() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl int CStats::FindMostFavoriteRadioStation(void) 0x558FA0 +int CStats::FindMostFavoriteRadioStation() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl int CStats::FindLeastFavoriteRadioStation(void) 0x559010 +int CStats::FindLeastFavoriteRadioStation() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl int CStats::FindCriminalRatingNumber(void) 0x559080 +int CStats::FindCriminalRatingNumber() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl float CStats::GetPercentageProgress(void) 0x5591E0 +float CStats::GetPercentageProgress() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CStats::BuildStatLine(char *line, void *pValue1, int metrics, void *pValue2, int type) 0x559230 +void CStats::BuildStatLine(char* line, void* pValue1, int metrics, void* pValue2, int type) { + plugin::Call<0x559230, char*, void*, int, void*, int>(line, pValue1, metrics, pValue2, type); +} + +// Converted from cdecl int CStats::ConvertToMins(int value) 0x559540 +int CStats::ConvertToMins(int value) { + return plugin::CallAndReturn(value); +} + +// Converted from cdecl int CStats::ConvertToSecs(int value) 0x559560 +int CStats::ConvertToSecs(int value) { + return plugin::CallAndReturn(value); +} + +// Converted from cdecl bool CStats::SafeToShowThisStat(uchar stat) 0x559590 +bool CStats::SafeToShowThisStat(unsigned char stat) { + return plugin::CallAndReturn(stat); +} + +// Converted from cdecl bool CStats::CheckForThreshold(float *pValue, float range) 0x5595F0 +bool CStats::CheckForThreshold(float* pValue, float range) { + return plugin::CallAndReturn(pValue, range); +} + +// Converted from cdecl bool CStats::IsStatCapped(ushort stat) 0x559630 +bool CStats::IsStatCapped(unsigned short stat) { + return plugin::CallAndReturn(stat); +} + +// Converted from cdecl void CStats::ProcessReactionStatsOnDecrement(uchar stat) 0x559730 +void CStats::ProcessReactionStatsOnDecrement(unsigned char stat) { + plugin::Call<0x559730, unsigned char>(stat); +} + +// Converted from cdecl void CStats::CheckForStatsMessage() 0x559760 +void CStats::CheckForStatsMessage() { + plugin::Call<0x559760>(); +} + +// Converted from cdecl void CStats::LoadStatUpdateConditions(void) 0x559860 +void CStats::LoadStatUpdateConditions() { + plugin::Call<0x559860>(); +} + +// Converted from cdecl void CStats::LoadActionReactionStats(void) 0x5599B0 +void CStats::LoadActionReactionStats() { + plugin::Call<0x5599B0>(); +} + +// Converted from cdecl int CStats::FindMaxNumberOfGroupMembers(void) 0x559A50 +int CStats::FindMaxNumberOfGroupMembers() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl float CStats::GetFatAndMuscleModifier(eStatModAbilities statMod) 0x559AF0 +float CStats::GetFatAndMuscleModifier(eStatModAbilities statMod) { + return plugin::CallAndReturn(statMod); +} + +// Converted from cdecl void CStats::DecrementStat(ushort stat, float value) 0x559FA0 +void CStats::DecrementStat(unsigned short stat, float value) { + plugin::Call<0x559FA0, unsigned short, float>(stat, value); +} + +// Converted from cdecl void CStats::SetStatValue(ushort stat, float value) 0x55A070 +void CStats::SetStatValue(unsigned short stat, float value) { + plugin::Call<0x55A070, unsigned short, float>(stat, value); +} + +// Converted from cdecl void CStats::RegisterFastestTime(int stat, int time) 0x55A0B0 +void CStats::RegisterFastestTime(int stat, int time) { + plugin::Call<0x55A0B0, int, int>(stat, time); +} + +// Converted from cdecl void CStats::RegisterBestPosition(int stat, int position) 0x55A160 +void CStats::RegisterBestPosition(int stat, int position) { + plugin::Call<0x55A160, int, int>(stat, position); +} + +// Converted from cdecl char* CStats::FindCriminalRatingString(void) 0x55A210 +char* CStats::FindCriminalRatingString() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl int CStats::ConstructStatLine(int, uchar) 0x55A780 +int CStats::ConstructStatLine(int arg0, unsigned char arg1) { + return plugin::CallAndReturn(arg0, arg1); +} + +// Converted from cdecl void CStats::ProcessReactionStatsOnIncrement(uchar stat) 0x55B900 +void CStats::ProcessReactionStatsOnIncrement(unsigned char stat) { + plugin::Call<0x55B900, unsigned char>(stat); +} + +// Converted from cdecl void CStats::DisplayScriptStatUpdateMessage(uchar state, uint stat, float value) 0x55B980 +void CStats::DisplayScriptStatUpdateMessage(unsigned char state, unsigned int stat, float value) { + plugin::Call<0x55B980, unsigned char, unsigned int, float>(state, stat, value); +} + +// Converted from cdecl void CStats::UpdateRespectStat(uchar) 0x55BC50 +void CStats::UpdateRespectStat(unsigned char arg0) { + plugin::Call<0x55BC50, unsigned char>(arg0); +} + +// Converted from cdecl void CStats::UpdateSexAppealStat(void) 0x55BF20 +void CStats::UpdateSexAppealStat() { + plugin::Call<0x55BF20>(); +} + +// Converted from cdecl void CStats::Init(void) 0x55C0C0 +void CStats::Init() { + plugin::Call<0x55C0C0>(); +} + +// Converted from cdecl void CStats::IncrementStat(ushort stat, float value) 0x55C180 +void CStats::IncrementStat(unsigned short stat, float value) { + plugin::Call<0x55C180, unsigned short, float>(stat, value); +} + +// Converted from cdecl void CStats::SetNewRecordStat(ushort stat, float value) 0x55C410 +void CStats::SetNewRecordStat(unsigned short stat, float value) { + plugin::Call<0x55C410, unsigned short, float>(stat, value); +} + +// Converted from cdecl void CStats::UpdateFatAndMuscleStats(uint value) 0x55C470 +void CStats::UpdateFatAndMuscleStats(unsigned int value) { + plugin::Call<0x55C470, unsigned int>(value); +} + +// Converted from cdecl void CStats::UpdateStatsWhenSprinting(void) 0x55C660 +void CStats::UpdateStatsWhenSprinting() { + plugin::Call<0x55C660>(); +} + +// Converted from cdecl void CStats::UpdateStatsWhenRunning(void) 0x55C6F0 +void CStats::UpdateStatsWhenRunning() { + plugin::Call<0x55C6F0>(); +} + +// Converted from cdecl void CStats::UpdateStatsWhenCycling(bool, CBmx *bmx) 0x55C780 +void CStats::UpdateStatsWhenCycling(bool arg0, CBmx* bmx) { + plugin::Call<0x55C780, bool, CBmx*>(arg0, bmx); +} + +// Converted from cdecl void CStats::UpdateStatsWhenSwimming(bool, bool) 0x55C990 +void CStats::UpdateStatsWhenSwimming(bool arg0, bool arg1) { + plugin::Call<0x55C990, bool, bool>(arg0, arg1); +} + +// Converted from cdecl void CStats::UpdateStatsWhenDriving(CVehicle *vehicle) 0x55CAC0 +void CStats::UpdateStatsWhenDriving(CVehicle* vehicle) { + plugin::Call<0x55CAC0, CVehicle*>(vehicle); +} + +// Converted from cdecl void CStats::UpdateStatsWhenFlying(CVehicle *vehicle) 0x55CC00 +void CStats::UpdateStatsWhenFlying(CVehicle* vehicle) { + plugin::Call<0x55CC00, CVehicle*>(vehicle); +} + +// Converted from cdecl void CStats::UpdateStatsWhenOnMotorBike(CBike *bike) 0x55CD60 +void CStats::UpdateStatsWhenOnMotorBike(CBike* bike) { + plugin::Call<0x55CD60, CBike*>(bike); +} + +// Converted from cdecl void CStats::UpdateStatsWhenWeaponHit(int weaponType) 0x55CEB0 +void CStats::UpdateStatsWhenWeaponHit(int weaponType) { + plugin::Call<0x55CEB0, int>(weaponType); +} + +// Converted from cdecl void CStats::UpdateStatsWhenFighting(void) 0x55CFA0 +void CStats::UpdateStatsWhenFighting() { + plugin::Call<0x55CFA0>(); +} + +// Converted from cdecl void CStats::UpdateStatsOnRespawn(void) 0x55CFC0 +void CStats::UpdateStatsOnRespawn() { + plugin::Call<0x55CFC0>(); +} + +// Converted from cdecl void CStats::UpdateStatsAddToHealth(uint addToHealth) 0x55D030 +void CStats::UpdateStatsAddToHealth(unsigned int addToHealth) { + plugin::Call<0x55D030, unsigned int>(addToHealth); +} + +// Converted from cdecl void CStats::ModifyStat(ushort stat, float value) 0x55D090 +void CStats::ModifyStat(unsigned short stat, float value) { + plugin::Call<0x55D090, unsigned short, float>(stat, value); +} + +// Converted from cdecl bool CStats::Save(void) 0x5D3B40 +bool CStats::Save() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl bool CStats::Load(void) 0x5D3BF0 +bool CStats::Load() { + return plugin::CallAndReturn(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CStats.h b/third-party/plugin-sdk/plugin_sa/game_sa/CStats.h new file mode 100644 index 00000000..a64f15db --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CStats.h @@ -0,0 +1,120 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "eStats.h" +#include "eStatModAbilities.h" +#include "eStatsReactions.h" + +enum eStatUpdateState { + STAT_UPDATE_DECREASE = 0, + STAT_UPDATE_INCREASE = 1 +}; + +enum eStatMessageCondition { + STATMESSAGE_LESSTHAN = 0, + STATMESSAGE_MORETHAN = 1 +}; + +struct tStatMessage { + short stat_num; // unique stat id + bool displayed; + unsigned char condition; // this can be lessthan/morethan, see eStatMessageCondition + float value; // value stat must reach to display message + char text_id[8]; // text id from american.gxt text file to display +}; + +VALIDATE_SIZE(tStatMessage, 0x10); + +class CVehicle; +class CBike; +class CBmx; + +class CStats { +public: + static tStatMessage *StatMessage; // static tStatMessage StatMessage + static unsigned int &TotalNumStatMessages; + static char *LastMissionPassedName; // static char LastMissionPassedName[8] + static int *TimesMissionAttempted; // static int TimesMissionAttempted[100] + static int *FavoriteRadioStationList; // static int FavoriteRadioStationList[14] + static int *PedsKilledOfThisType; // static int PedsKilledOfThisType[32] + static float *StatReactionValue; // static float StatReactionValue[59] + static int *StatTypesInt; // static int StatTypesInt[224] + static float *StatTypesFloat; // static float StatTypesFloat[83] + static short &m_ThisStatIsABarChart; + static bool &bStatUpdateMessageDisplayed; + static unsigned int &m_SprintStaminaCounter; + static unsigned int &m_CycleStaminaCounter; + static unsigned int &m_CycleSkillCounter; + static unsigned int &m_SwimStaminaCounter; + static unsigned int &m_SwimUnderWaterCounter; + static unsigned int &m_DrivingCounter; + static unsigned int &m_FlyingCounter; + static unsigned int &m_BoatCounter; + static unsigned int &m_BikeCounter; + static unsigned int &m_FatCounter; + static unsigned int &m_RunningCounter; + static unsigned int &m_WeaponCounter; + static unsigned int &m_DeathCounter; + static unsigned int &m_MaxHealthCounter; + static unsigned int &m_AddToHealthCounter; + static unsigned int &m_LastWeaponTypeFired; + + static char* GetStatID(unsigned short stat); + static bool GetStatType(unsigned short stat); + static float GetStatValue(unsigned short stat); + static char GetTimesMissionAttempted(unsigned char missionId); + static void RegisterMissionAttempted(unsigned char missionId); + static void RegisterMissionPassed(unsigned char missionId); + static bool PopulateFavoriteRadioStationList(); + static int* GetFullFavoriteRadioStationList(); + static int FindMostFavoriteRadioStation(); + static int FindLeastFavoriteRadioStation(); + static int FindCriminalRatingNumber(); + static float GetPercentageProgress(); + static void BuildStatLine(char* line, void* pValue1, int metrics, void* pValue2, int type); + static int ConvertToMins(int value); + static int ConvertToSecs(int value); + static bool SafeToShowThisStat(unsigned char stat); + static bool CheckForThreshold(float* pValue, float range); + static bool IsStatCapped(unsigned short stat); + static void ProcessReactionStatsOnDecrement(unsigned char stat); + static void CheckForStatsMessage(); + static void LoadStatUpdateConditions(); + static void LoadActionReactionStats(); + static int FindMaxNumberOfGroupMembers(); + static float GetFatAndMuscleModifier(eStatModAbilities statMod); + static void DecrementStat(unsigned short stat, float value); + static void SetStatValue(unsigned short stat, float value); + static void RegisterFastestTime(int stat, int time); + static void RegisterBestPosition(int stat, int position); + static char* FindCriminalRatingString(); + static int ConstructStatLine(int arg0, unsigned char arg1); + static void ProcessReactionStatsOnIncrement(unsigned char stat); + static void DisplayScriptStatUpdateMessage(unsigned char state, unsigned int stat, float value); + static void UpdateRespectStat(unsigned char arg0); + static void UpdateSexAppealStat(); + static void Init(); + static void IncrementStat(unsigned short stat, float value); + static void SetNewRecordStat(unsigned short stat, float value); + static void UpdateFatAndMuscleStats(unsigned int value); + static void UpdateStatsWhenSprinting(); + static void UpdateStatsWhenRunning(); + static void UpdateStatsWhenCycling(bool arg0, CBmx* bmx); + static void UpdateStatsWhenSwimming(bool arg0, bool arg1); + static void UpdateStatsWhenDriving(CVehicle* vehicle); + static void UpdateStatsWhenFlying(CVehicle* vehicle); + static void UpdateStatsWhenOnMotorBike(CBike* bike); + static void UpdateStatsWhenWeaponHit(int weaponType); + static void UpdateStatsWhenFighting(); + static void UpdateStatsOnRespawn(); + static void UpdateStatsAddToHealth(unsigned int addToHealth); + static void ModifyStat(unsigned short stat, float value); + static bool Save(); + static bool Load(); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CStore.h b/third-party/plugin-sdk/plugin_sa/game_sa/CStore.h new file mode 100644 index 00000000..1c1f2548 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CStore.h @@ -0,0 +1,26 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +template +class CStore { +public: + unsigned int count; + ObjectType objects[Capacity]; + + CStore() { + count = 0; + } + + ObjectType* Alloc() { + if (count <= Capacity) + return &objects[count++]; + + return nullptr; + } +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CStoredCollPoly.h b/third-party/plugin-sdk/plugin_sa/game_sa/CStoredCollPoly.h new file mode 100644 index 00000000..d0b8e1e6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CStoredCollPoly.h @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class PLUGIN_API CStoredCollPoly { +public: + CVector m_aMeshVertices[3]; // triangle vertices + bool m_bIsActual; + unsigned int m_nLighting; +}; + +VALIDATE_SIZE(CStoredCollPoly, 0x2C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CStreamedScripts.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CStreamedScripts.cpp new file mode 100644 index 00000000..8075a0e7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CStreamedScripts.cpp @@ -0,0 +1,93 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CStreamedScripts.h" + +PLUGIN_SOURCE_FILE + +int addrof(CStreamedScripts::FindStreamedScript) = ADDRESS_BY_VERSION(0x470740, 0, 0, 0, 0, 0); +int gaddrof(CStreamedScripts::FindStreamedScript) = GLOBAL_ADDRESS_BY_VERSION(0x470740, 0, 0, 0, 0, 0); + +signed int CStreamedScripts::FindStreamedScript(char const *scriptname) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamedScripts::FindStreamedScript), this, scriptname); +} + +int addrof(CStreamedScripts::FindStreamedScriptQuiet) = ADDRESS_BY_VERSION(0x4706F0, 0, 0, 0, 0, 0); +int gaddrof(CStreamedScripts::FindStreamedScriptQuiet) = GLOBAL_ADDRESS_BY_VERSION(0x4706F0, 0, 0, 0, 0, 0); + +signed int CStreamedScripts::FindStreamedScriptQuiet(char const *scriptName) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamedScripts::FindStreamedScriptQuiet), this, scriptName); +} + +int addrof(CStreamedScripts::GetProperIndexFromIndexUsedByScript) = ADDRESS_BY_VERSION(0x470810, 0, 0, 0, 0, 0); +int gaddrof(CStreamedScripts::GetProperIndexFromIndexUsedByScript) = GLOBAL_ADDRESS_BY_VERSION(0x470810, 0, 0, 0, 0, 0); + +signed short CStreamedScripts::GetProperIndexFromIndexUsedByScript(short scmIndex) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamedScripts::GetProperIndexFromIndexUsedByScript), this, scmIndex); +} + +int addrof(CStreamedScripts::GetStreamedScriptFilename) = ADDRESS_BY_VERSION(0x470900, 0, 0, 0, 0, 0); +int gaddrof(CStreamedScripts::GetStreamedScriptFilename) = GLOBAL_ADDRESS_BY_VERSION(0x470900, 0, 0, 0, 0, 0); + +char const *CStreamedScripts::GetStreamedScriptFilename(unsigned short index) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamedScripts::GetStreamedScriptFilename), this, index); +} + +int addrof(CStreamedScripts::GetStreamedScriptWithThisStartAddress) = ADDRESS_BY_VERSION(0x470910, 0, 0, 0, 0, 0); +int gaddrof(CStreamedScripts::GetStreamedScriptWithThisStartAddress) = GLOBAL_ADDRESS_BY_VERSION(0x470910, 0, 0, 0, 0, 0); + +unsigned short CStreamedScripts::GetStreamedScriptWithThisStartAddress(unsigned char *dataPtr) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamedScripts::GetStreamedScriptWithThisStartAddress), this, dataPtr); +} + +int addrof(CStreamedScripts::Initialise) = ADDRESS_BY_VERSION(0x470660, 0, 0, 0, 0, 0); +int gaddrof(CStreamedScripts::Initialise) = GLOBAL_ADDRESS_BY_VERSION(0x470660, 0, 0, 0, 0, 0); + +void CStreamedScripts::Initialise() { + plugin::CallMethodDynGlobal(gaddrof(CStreamedScripts::Initialise), this); +} + +int addrof(CStreamedScripts::LoadStreamedScript) = ADDRESS_BY_VERSION(0x470840, 0, 0, 0, 0, 0); +int gaddrof(CStreamedScripts::LoadStreamedScript) = GLOBAL_ADDRESS_BY_VERSION(0x470840, 0, 0, 0, 0, 0); + +void CStreamedScripts::LoadStreamedScript(RwStream *stream, int index) { + plugin::CallMethodDynGlobal(gaddrof(CStreamedScripts::LoadStreamedScript), this, stream, index); +} + +int addrof(CStreamedScripts::ReInitialise) = ADDRESS_BY_VERSION(0x4706A0, 0, 0, 0, 0, 0); +int gaddrof(CStreamedScripts::ReInitialise) = GLOBAL_ADDRESS_BY_VERSION(0x4706A0, 0, 0, 0, 0, 0); + +void CStreamedScripts::ReInitialise() { + plugin::CallMethodDynGlobal(gaddrof(CStreamedScripts::ReInitialise), this); +} + +int addrof(CStreamedScripts::ReadStreamedScriptData) = ADDRESS_BY_VERSION(0x470750, 0, 0, 0, 0, 0); +int gaddrof(CStreamedScripts::ReadStreamedScriptData) = GLOBAL_ADDRESS_BY_VERSION(0x470750, 0, 0, 0, 0, 0); + +void CStreamedScripts::ReadStreamedScriptData() { + plugin::CallMethodDynGlobal(gaddrof(CStreamedScripts::ReadStreamedScriptData), this); +} + +int addrof(CStreamedScripts::RegisterScript) = ADDRESS_BY_VERSION(0x4706C0, 0, 0, 0, 0, 0); +int gaddrof(CStreamedScripts::RegisterScript) = GLOBAL_ADDRESS_BY_VERSION(0x4706C0, 0, 0, 0, 0, 0); + +int CStreamedScripts::RegisterScript(char const *scriptName) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamedScripts::RegisterScript), this, scriptName); +} + +int addrof(CStreamedScripts::RemoveStreamedScriptFromMemory) = ADDRESS_BY_VERSION(0x4708E0, 0, 0, 0, 0, 0); +int gaddrof(CStreamedScripts::RemoveStreamedScriptFromMemory) = GLOBAL_ADDRESS_BY_VERSION(0x4708E0, 0, 0, 0, 0, 0); + +void CStreamedScripts::RemoveStreamedScriptFromMemory(int index) { + plugin::CallMethodDynGlobal(gaddrof(CStreamedScripts::RemoveStreamedScriptFromMemory), this, index); +} + +int addrof(CStreamedScripts::StartNewStreamedScript) = ADDRESS_BY_VERSION(0x470890, 0, 0, 0, 0, 0); +int gaddrof(CStreamedScripts::StartNewStreamedScript) = GLOBAL_ADDRESS_BY_VERSION(0x470890, 0, 0, 0, 0, 0); + +CRunningScript *CStreamedScripts::StartNewStreamedScript(int index) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamedScripts::StartNewStreamedScript), this, index); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CStreamedScripts.h b/third-party/plugin-sdk/plugin_sa/game_sa/CStreamedScripts.h new file mode 100644 index 00000000..d400babb --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CStreamedScripts.h @@ -0,0 +1,44 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CRunningScript.h" + +class PLUGIN_API CStreamedScripts { +public: + struct + { + void *data; + char m_nStatus; + char field_5; + short m_nScmIndex; + char m_Name[20]; + int m_nsize; + } m_aScripts[82]; + + int m_nLargestExternalSize; + short m_nCountOfScripts; + short field_A46; + + SUPPORTED_10US signed int FindStreamedScript(char const *scriptname); + SUPPORTED_10US signed int FindStreamedScriptQuiet(char const *scriptName); + SUPPORTED_10US signed short GetProperIndexFromIndexUsedByScript(short scmIndex); + SUPPORTED_10US char const *GetStreamedScriptFilename(unsigned short index); + SUPPORTED_10US unsigned short GetStreamedScriptWithThisStartAddress(unsigned char *dataPtr); + SUPPORTED_10US void Initialise(); + SUPPORTED_10US void LoadStreamedScript(RwStream *stream, int index); + SUPPORTED_10US void ReInitialise(); + SUPPORTED_10US void ReadStreamedScriptData(); + SUPPORTED_10US int RegisterScript(char const *scriptName); + SUPPORTED_10US void RemoveStreamedScriptFromMemory(int index); + SUPPORTED_10US CRunningScript *StartNewStreamedScript(int index); +}; +VALIDATE_SIZE(CStreamedScripts, 0xA48); + +#include "meta/meta.CStreamedScripts.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CStreaming.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CStreaming.cpp new file mode 100644 index 00000000..fea03af7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CStreaming.cpp @@ -0,0 +1,827 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CStreaming.h" + +PLUGIN_SOURCE_FILE + +unsigned int &CStreaming::ms_memoryAvailable = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5A80, 0, 0, 0, 0, 0)); +unsigned int &CStreaming::desiredNumVehiclesLoaded = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5A84, 0, 0, 0, 0, 0)); +bool &CStreaming::ms_bLoadVehiclesInLoadScene = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5A88, 0, 0, 0, 0, 0)); +int *CStreaming::ms_aDefaultCopCarModel = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5A8C, 0, 0, 0, 0, 0)); +int &CStreaming::ms_DefaultCopBikeModel = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5A9C, 0, 0, 0, 0, 0)); +int *CStreaming::ms_aDefaultCopModel = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5AA0, 0, 0, 0, 0, 0)); +int &CStreaming::ms_DefaultCopBikerModel = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5AB0, 0, 0, 0, 0, 0)); +signed int *CStreaming::ms_aDefaultAmbulanceModel = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5AB4, 0, 0, 0, 0, 0)); +signed int *CStreaming::ms_aDefaultMedicModel = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5AC4, 0, 0, 0, 0, 0)); +signed int *CStreaming::ms_aDefaultFireEngineModel = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5AD4, 0, 0, 0, 0, 0)); +signed int *CStreaming::ms_aDefaultFiremanModel = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5AE4, 0, 0, 0, 0, 0)); +signed int *CStreaming::ms_aDefaultCabDriverModel = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8A5AF4, 0, 0, 0, 0, 0)); +CDirectory *&CStreaming::ms_pExtraObjectsDir = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E48D0, 0, 0, 0, 0, 0)); +tStreamingFileDesc *CStreaming::ms_files = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E48D8, 0, 0, 0, 0, 0)); +bool &CStreaming::ms_bLoadingBigModel = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4A58, 0, 0, 0, 0, 0)); +tStreamingChannel *CStreaming::ms_channel = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4A60, 0, 0, 0, 0, 0)); +signed int &CStreaming::ms_channelError = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4B90, 0, 0, 0, 0, 0)); +bool &CStreaming::m_bHarvesterModelsRequested = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4B9C, 0, 0, 0, 0, 0)); +bool &CStreaming::m_bStreamHarvesterModelsThisFrame = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4B9D, 0, 0, 0, 0, 0)); +unsigned int &CStreaming::ms_numPriorityRequests = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4BA0, 0, 0, 0, 0, 0)); +int &CStreaming::ms_lastCullZone = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4BA4, 0, 0, 0, 0, 0)); +unsigned short &CStreaming::ms_loadedGangCars = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4BA8, 0, 0, 0, 0, 0)); +unsigned short &CStreaming::ms_loadedGangs = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4BAC, 0, 0, 0, 0, 0)); +unsigned int &CStreaming::ms_numPedsLoaded = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4BB0, 0, 0, 0, 0, 0)); +unsigned int **CStreaming::ms_pedsLoaded = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4C00, 0, 0, 0, 0, 0)); +int &CStreaming::ms_currentZoneType = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4C20, 0, 0, 0, 0, 0)); +CLoadedCarGroup &CStreaming::ms_vehiclesLoaded = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4C24, 0, 0, 0, 0, 0)); +CStreamingInfo *&CStreaming::ms_pEndRequestedList = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4C54, 0, 0, 0, 0, 0)); +CStreamingInfo *&CStreaming::ms_pStartRequestedList = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4C58, 0, 0, 0, 0, 0)); +CStreamingInfo *&CStreaming::ms_pEndLoadedList = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4C5C, 0, 0, 0, 0, 0)); +CStreamingInfo *&CStreaming::ms_startLoadedList = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4C60, 0, 0, 0, 0, 0)); +int &CStreaming::ms_lastImageRead = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4C64, 0, 0, 0, 0, 0)); +signed int *CStreaming::ms_imageOffsets = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4C8C, 0, 0, 0, 0, 0)); +bool &CStreaming::ms_bEnableRequestListPurge = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4CA4, 0, 0, 0, 0, 0)); +unsigned int &CStreaming::ms_streamingBufferSize = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4CA8, 0, 0, 0, 0, 0)); +char *&CStreaming::ms_pStreamingBuffer = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4CAC, 0, 0, 0, 0, 0)); +unsigned int &CStreaming::ms_memoryUsed = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4CB4, 0, 0, 0, 0, 0)); +unsigned int &CStreaming::ms_numModelsRequested = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4CB8, 0, 0, 0, 0, 0)); +CStreamingInfo *CStreaming::ms_aInfoForModel = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E4CC0, 0, 0, 0, 0, 0)); +bool &CStreaming::ms_disableStreaming = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x9654B0, 0, 0, 0, 0, 0)); +int &CStreaming::ms_bIsInitialised = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x9654B8, 0, 0, 0, 0, 0)); +bool &CStreaming::m_bBoatsNeeded = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x9654BC, 0, 0, 0, 0, 0)); +bool &CStreaming::m_bLoadingScene = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x9654BD, 0, 0, 0, 0, 0)); +bool &CStreaming::m_bCopBikeLoaded = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x9654BE, 0, 0, 0, 0, 0)); +bool &CStreaming::m_bDisableCopBikes = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x9654BF, 0, 0, 0, 0, 0)); +CLinkList &CStreaming::ms_rwObjectInstances = *reinterpret_cast *>(GLOBAL_ADDRESS_BY_VERSION(0x9654F0, 0, 0, 0, 0, 0)); +RwStream &gRwStream = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x8E48AC, 0, 0, 0, 0, 0)); + +int addrof(CStreaming::AddEntity) = ADDRESS_BY_VERSION(0x409650, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::AddEntity) = GLOBAL_ADDRESS_BY_VERSION(0x409650, 0, 0, 0, 0, 0); + +void *CStreaming::AddEntity(CEntity *a2) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::AddEntity), a2); +} + +int addrof(CStreaming::AddImageToList) = ADDRESS_BY_VERSION(0x407610, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::AddImageToList) = GLOBAL_ADDRESS_BY_VERSION(0x407610, 0, 0, 0, 0, 0); + +int CStreaming::AddImageToList(char const *lpFileName, bool bNotPlayerImg) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::AddImageToList), lpFileName, bNotPlayerImg); +} + +int addrof(CStreaming::AddLodsToRequestList) = ADDRESS_BY_VERSION(0x40C520, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::AddLodsToRequestList) = GLOBAL_ADDRESS_BY_VERSION(0x40C520, 0, 0, 0, 0, 0); + +void CStreaming::AddLodsToRequestList(CVector const *Posn, unsigned int Streamingflags) { + plugin::CallDynGlobal(gaddrof(CStreaming::AddLodsToRequestList), Posn, Streamingflags); +} + +int addrof(CStreaming::AddModelsToRequestList) = ADDRESS_BY_VERSION(0x40D3F0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::AddModelsToRequestList) = GLOBAL_ADDRESS_BY_VERSION(0x40D3F0, 0, 0, 0, 0, 0); + +void CStreaming::AddModelsToRequestList(CVector const *posn, unsigned int StreamingFlags) { + plugin::CallDynGlobal(gaddrof(CStreaming::AddModelsToRequestList), posn, StreamingFlags); +} + +int addrof(CStreaming::AddToLoadedVehiclesList) = ADDRESS_BY_VERSION(0x408000, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::AddToLoadedVehiclesList) = GLOBAL_ADDRESS_BY_VERSION(0x408000, 0, 0, 0, 0, 0); + +bool CStreaming::AddToLoadedVehiclesList() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::AddToLoadedVehiclesList)); +} + +int addrof(CStreaming::AreAnimsUsedByRequestedModels) = ADDRESS_BY_VERSION(0x407AD0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::AreAnimsUsedByRequestedModels) = GLOBAL_ADDRESS_BY_VERSION(0x407AD0, 0, 0, 0, 0, 0); + +bool CStreaming::AreAnimsUsedByRequestedModels(int AnimFileIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::AreAnimsUsedByRequestedModels), AnimFileIndex); +} + +int addrof(CStreaming::AreTexturesUsedByRequestedModels) = ADDRESS_BY_VERSION(0x409A90, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::AreTexturesUsedByRequestedModels) = GLOBAL_ADDRESS_BY_VERSION(0x409A90, 0, 0, 0, 0, 0); + +bool CStreaming::AreTexturesUsedByRequestedModels(int txdIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::AreTexturesUsedByRequestedModels), txdIndex); +} + +int addrof(CStreaming::ClearFlagForAll) = ADDRESS_BY_VERSION(0x407A40, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::ClearFlagForAll) = GLOBAL_ADDRESS_BY_VERSION(0x407A40, 0, 0, 0, 0, 0); + +void CStreaming::ClearFlagForAll(unsigned int eStreamingFlag) { + plugin::CallDynGlobal(gaddrof(CStreaming::ClearFlagForAll), eStreamingFlag); +} + +int addrof(CStreaming::ClearSlots) = ADDRESS_BY_VERSION(0x40BAA0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::ClearSlots) = GLOBAL_ADDRESS_BY_VERSION(0x40BAA0, 0, 0, 0, 0, 0); + +void CStreaming::ClearSlots(int NumOfSlots) { + plugin::CallDynGlobal(gaddrof(CStreaming::ClearSlots), NumOfSlots); +} + +int addrof(CStreaming::ConvertBufferToObject) = ADDRESS_BY_VERSION(0x40C6B0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::ConvertBufferToObject) = GLOBAL_ADDRESS_BY_VERSION(0x40C6B0, 0, 0, 0, 0, 0); + +char CStreaming::ConvertBufferToObject(char *pFileContect, int index, int ChannelIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::ConvertBufferToObject), pFileContect, index, ChannelIndex); +} + +int addrof(CStreaming::DeleteAllRwObjects) = ADDRESS_BY_VERSION(0x4090A0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::DeleteAllRwObjects) = GLOBAL_ADDRESS_BY_VERSION(0x4090A0, 0, 0, 0, 0, 0); + +void CStreaming::DeleteAllRwObjects() { + plugin::CallDynGlobal(gaddrof(CStreaming::DeleteAllRwObjects)); +} + +int addrof(CStreaming::DeleteLeastUsedEntityRwObject) = ADDRESS_BY_VERSION(0x409760, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::DeleteLeastUsedEntityRwObject) = GLOBAL_ADDRESS_BY_VERSION(0x409760, 0, 0, 0, 0, 0); + +bool CStreaming::DeleteLeastUsedEntityRwObject(bool bNotOnScreen, unsigned int StreamingFlags) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::DeleteLeastUsedEntityRwObject), bNotOnScreen, StreamingFlags); +} + +int addrof(CStreaming::DeleteRwObjectsAfterDeath) = ADDRESS_BY_VERSION(0x409210, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::DeleteRwObjectsAfterDeath) = GLOBAL_ADDRESS_BY_VERSION(0x409210, 0, 0, 0, 0, 0); + +void CStreaming::DeleteRwObjectsAfterDeath(CVector const *PlayerPosn) { + plugin::CallDynGlobal(gaddrof(CStreaming::DeleteRwObjectsAfterDeath), PlayerPosn); +} + +int addrof(CStreaming::DeleteRwObjectsBehindCamera) = ADDRESS_BY_VERSION(0x40D7C0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::DeleteRwObjectsBehindCamera) = GLOBAL_ADDRESS_BY_VERSION(0x40D7C0, 0, 0, 0, 0, 0); + +void CStreaming::DeleteRwObjectsBehindCamera(int memoryToCleanInBytes) { + plugin::CallDynGlobal(gaddrof(CStreaming::DeleteRwObjectsBehindCamera), memoryToCleanInBytes); +} + +int addrof(CStreaming::DeleteRwObjectsBehindCameraInSectorList) = ADDRESS_BY_VERSION(0x409940, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::DeleteRwObjectsBehindCameraInSectorList) = GLOBAL_ADDRESS_BY_VERSION(0x409940, 0, 0, 0, 0, 0); + +bool CStreaming::DeleteRwObjectsBehindCameraInSectorList(CPtrList *List, int memoryToCleanInBytes) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::DeleteRwObjectsBehindCameraInSectorList), List, memoryToCleanInBytes); +} + +int addrof(CStreaming::DeleteRwObjectsInSectorList) = ADDRESS_BY_VERSION(0x407A70, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::DeleteRwObjectsInSectorList) = GLOBAL_ADDRESS_BY_VERSION(0x407A70, 0, 0, 0, 0, 0); + +void CStreaming::DeleteRwObjectsInSectorList(CPtrList *PtrList, int arg2, int arg3) { + plugin::CallDynGlobal(gaddrof(CStreaming::DeleteRwObjectsInSectorList), PtrList, arg2, arg3); +} + +int addrof(CStreaming::DeleteRwObjectsNotInFrustumInSectorList) = ADDRESS_BY_VERSION(0x4099E0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::DeleteRwObjectsNotInFrustumInSectorList) = GLOBAL_ADDRESS_BY_VERSION(0x4099E0, 0, 0, 0, 0, 0); + +char CStreaming::DeleteRwObjectsNotInFrustumInSectorList(CPtrList *List, int memoryToCleanInBytes) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::DeleteRwObjectsNotInFrustumInSectorList), List, memoryToCleanInBytes); +} + +int addrof(CStreaming::DisableCopBikes) = ADDRESS_BY_VERSION(0x407D10, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::DisableCopBikes) = GLOBAL_ADDRESS_BY_VERSION(0x407D10, 0, 0, 0, 0, 0); + +void CStreaming::DisableCopBikes(bool bDisable) { + plugin::CallDynGlobal(gaddrof(CStreaming::DisableCopBikes), bDisable); +} + +int addrof(CStreaming::FindMIPedSlotForInterior) = ADDRESS_BY_VERSION(0x407FB0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::FindMIPedSlotForInterior) = GLOBAL_ADDRESS_BY_VERSION(0x407FB0, 0, 0, 0, 0, 0); + +int CStreaming::FindMIPedSlotForInterior(int RandFactor) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::FindMIPedSlotForInterior), RandFactor); +} + +int addrof(CStreaming::FinishLoadingLargeFile) = ADDRESS_BY_VERSION(0x408CB0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::FinishLoadingLargeFile) = GLOBAL_ADDRESS_BY_VERSION(0x408CB0, 0, 0, 0, 0, 0); + +bool CStreaming::FinishLoadingLargeFile(char *FileName, int modelIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::FinishLoadingLargeFile), FileName, modelIndex); +} + +int addrof(CStreaming::FlushChannels) = ADDRESS_BY_VERSION(0x40E460, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::FlushChannels) = GLOBAL_ADDRESS_BY_VERSION(0x40E460, 0, 0, 0, 0, 0); + +bool CStreaming::FlushChannels() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::FlushChannels)); +} + +int addrof(CStreaming::FlushRequestList) = ADDRESS_BY_VERSION(0x40E4E0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::FlushRequestList) = GLOBAL_ADDRESS_BY_VERSION(0x40E4E0, 0, 0, 0, 0, 0); + +bool CStreaming::FlushRequestList() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::FlushRequestList)); +} + +int addrof(CStreaming::ForceLayerToRead) = ADDRESS_BY_VERSION(0x407A10, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::ForceLayerToRead) = GLOBAL_ADDRESS_BY_VERSION(0x407A10, 0, 0, 0, 0, 0); + +void CStreaming::ForceLayerToRead(int arg1) { + plugin::CallDynGlobal(gaddrof(CStreaming::ForceLayerToRead), arg1); +} + +int addrof(CStreaming::GetDefaultCabDriverModel) = ADDRESS_BY_VERSION(0x407D50, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::GetDefaultCabDriverModel) = GLOBAL_ADDRESS_BY_VERSION(0x407D50, 0, 0, 0, 0, 0); + +int CStreaming::GetDefaultCabDriverModel() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::GetDefaultCabDriverModel)); +} + +int addrof(CStreaming::GetDefaultCopCarModel) = ADDRESS_BY_VERSION(0x407C50, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::GetDefaultCopCarModel) = GLOBAL_ADDRESS_BY_VERSION(0x407C50, 0, 0, 0, 0, 0); + +int CStreaming::GetDefaultCopCarModel(unsigned int bIncludeCopBike) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::GetDefaultCopCarModel), bIncludeCopBike); +} + +int addrof(CStreaming::GetDefaultCopModel) = ADDRESS_BY_VERSION(0x407C00, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::GetDefaultCopModel) = GLOBAL_ADDRESS_BY_VERSION(0x407C00, 0, 0, 0, 0, 0); + +int CStreaming::GetDefaultCopModel() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::GetDefaultCopModel)); +} + +int addrof(CStreaming::GetDefaultFiremanModel) = ADDRESS_BY_VERSION(0x407D40, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::GetDefaultFiremanModel) = GLOBAL_ADDRESS_BY_VERSION(0x407D40, 0, 0, 0, 0, 0); + +int CStreaming::GetDefaultFiremanModel() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::GetDefaultFiremanModel)); +} + +int addrof(CStreaming::GetDefaultMedicModel) = ADDRESS_BY_VERSION(0x407D20, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::GetDefaultMedicModel) = GLOBAL_ADDRESS_BY_VERSION(0x407D20, 0, 0, 0, 0, 0); + +int CStreaming::GetDefaultMedicModel() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::GetDefaultMedicModel)); +} + +int addrof(CStreaming::GetDiscInDrive) = ADDRESS_BY_VERSION(0x40E9B0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::GetDiscInDrive) = GLOBAL_ADDRESS_BY_VERSION(0x40E9B0, 0, 0, 0, 0, 0); + +signed int CStreaming::GetDiscInDrive() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::GetDiscInDrive)); +} + +int addrof(CStreaming::GetNextFileOnCd) = ADDRESS_BY_VERSION(0x408E20, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::GetNextFileOnCd) = GLOBAL_ADDRESS_BY_VERSION(0x408E20, 0, 0, 0, 0, 0); + +int CStreaming::GetNextFileOnCd(int pos, bool bNotPriority) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::GetNextFileOnCd), pos, bNotPriority); +} + +int addrof(CStreaming::HasSpecialCharLoaded) = ADDRESS_BY_VERSION(0x407F00, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::HasSpecialCharLoaded) = GLOBAL_ADDRESS_BY_VERSION(0x407F00, 0, 0, 0, 0, 0); + +bool CStreaming::HasSpecialCharLoaded(int slot) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::HasSpecialCharLoaded), slot); +} + +int addrof(CStreaming::HasVehicleUpgradeLoaded) = ADDRESS_BY_VERSION(0x407820, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::HasVehicleUpgradeLoaded) = GLOBAL_ADDRESS_BY_VERSION(0x407820, 0, 0, 0, 0, 0); + +bool CStreaming::HasVehicleUpgradeLoaded(int ModelIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::HasVehicleUpgradeLoaded), ModelIndex); +} + +int addrof(CStreaming::IHaveUsedStreamingMemory) = ADDRESS_BY_VERSION(0x407BF0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::IHaveUsedStreamingMemory) = GLOBAL_ADDRESS_BY_VERSION(0x407BF0, 0, 0, 0, 0, 0); + +void CStreaming::IHaveUsedStreamingMemory() { + plugin::CallDynGlobal(gaddrof(CStreaming::IHaveUsedStreamingMemory)); +} + +int addrof(CStreaming::ImGonnaUseStreamingMemory) = ADDRESS_BY_VERSION(0x407BE0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::ImGonnaUseStreamingMemory) = GLOBAL_ADDRESS_BY_VERSION(0x407BE0, 0, 0, 0, 0, 0); + +void CStreaming::ImGonnaUseStreamingMemory() { + plugin::CallDynGlobal(gaddrof(CStreaming::ImGonnaUseStreamingMemory)); +} + +int addrof(CStreaming::Init) = ADDRESS_BY_VERSION(0x5B9020, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::Init) = GLOBAL_ADDRESS_BY_VERSION(0x5B9020, 0, 0, 0, 0, 0); + +void CStreaming::Init() { + plugin::CallDynGlobal(gaddrof(CStreaming::Init)); +} + +int addrof(CStreaming::Init2) = ADDRESS_BY_VERSION(0x5B8AD0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::Init2) = GLOBAL_ADDRESS_BY_VERSION(0x5B8AD0, 0, 0, 0, 0, 0); + +void CStreaming::Init2() { + plugin::CallDynGlobal(gaddrof(CStreaming::Init2)); +} + +int addrof(CStreaming::InitImageList) = ADDRESS_BY_VERSION(0x4083C0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::InitImageList) = GLOBAL_ADDRESS_BY_VERSION(0x4083C0, 0, 0, 0, 0, 0); + +void CStreaming::InitImageList() { + plugin::CallDynGlobal(gaddrof(CStreaming::InitImageList)); +} + +int addrof(CStreaming::InstanceLoadedModels) = ADDRESS_BY_VERSION(0x4084F0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::InstanceLoadedModels) = GLOBAL_ADDRESS_BY_VERSION(0x4084F0, 0, 0, 0, 0, 0); + +void CStreaming::InstanceLoadedModels(CVector const *posn) { + plugin::CallDynGlobal(gaddrof(CStreaming::InstanceLoadedModels), posn); +} + +int addrof(CStreaming::IsCarModelNeededInCurrentZone) = ADDRESS_BY_VERSION(0x407DD0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::IsCarModelNeededInCurrentZone) = GLOBAL_ADDRESS_BY_VERSION(0x407DD0, 0, 0, 0, 0, 0); + +bool CStreaming::IsCarModelNeededInCurrentZone(int VehicleModelIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::IsCarModelNeededInCurrentZone), VehicleModelIndex); +} + +int addrof(CStreaming::IsInitialised) = ADDRESS_BY_VERSION(0x407600, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::IsInitialised) = GLOBAL_ADDRESS_BY_VERSION(0x407600, 0, 0, 0, 0, 0); + +bool CStreaming::IsInitialised() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::IsInitialised)); +} + +int addrof(CStreaming::IsObjectInCdImage) = ADDRESS_BY_VERSION(0x407800, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::IsObjectInCdImage) = GLOBAL_ADDRESS_BY_VERSION(0x407800, 0, 0, 0, 0, 0); + +bool CStreaming::IsObjectInCdImage(int ModelInex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::IsObjectInCdImage), ModelInex); +} + +int addrof(CStreaming::IsVeryBusy) = ADDRESS_BY_VERSION(0x4076A0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::IsVeryBusy) = GLOBAL_ADDRESS_BY_VERSION(0x4076A0, 0, 0, 0, 0, 0); + +bool CStreaming::IsVeryBusy() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::IsVeryBusy)); +} + +int addrof(CStreaming::Load) = ADDRESS_BY_VERSION(0x5D29E0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::Load) = GLOBAL_ADDRESS_BY_VERSION(0x5D29E0, 0, 0, 0, 0, 0); + +void CStreaming::Load() { + plugin::CallDynGlobal(gaddrof(CStreaming::Load)); +} + +int addrof(CStreaming::LoadAllRequestedModels) = ADDRESS_BY_VERSION(0x40EA10, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::LoadAllRequestedModels) = GLOBAL_ADDRESS_BY_VERSION(0x40EA10, 0, 0, 0, 0, 0); + +void CStreaming::LoadAllRequestedModels(bool bOnlyPriorityRequests) { + plugin::CallDynGlobal(gaddrof(CStreaming::LoadAllRequestedModels), bOnlyPriorityRequests); +} + +int addrof_o(CStreaming::LoadCdDirectory, void (*)(char const *, int)) = ADDRESS_BY_VERSION(0x5B6170, 0, 0, 0, 0, 0); +int gaddrof_o(CStreaming::LoadCdDirectory, void (*)(char const *, int)) = GLOBAL_ADDRESS_BY_VERSION(0x5B6170, 0, 0, 0, 0, 0); + +void CStreaming::LoadCdDirectory(char const *ArchiveName, int archiveID) { + plugin::CallDynGlobal(gaddrof_o(CStreaming::LoadCdDirectory, void (*)(char const *, int)), ArchiveName, archiveID); +} + +int addrof_o(CStreaming::LoadCdDirectory, void (*)()) = ADDRESS_BY_VERSION(0x5B82C0, 0, 0, 0, 0, 0); +int gaddrof_o(CStreaming::LoadCdDirectory, void (*)()) = GLOBAL_ADDRESS_BY_VERSION(0x5B82C0, 0, 0, 0, 0, 0); + +void CStreaming::LoadCdDirectory() { + plugin::CallDynGlobal(gaddrof_o(CStreaming::LoadCdDirectory, void (*)())); +} + +int addrof(CStreaming::LoadInitialPeds) = ADDRESS_BY_VERSION(0x40D3D0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::LoadInitialPeds) = GLOBAL_ADDRESS_BY_VERSION(0x40D3D0, 0, 0, 0, 0, 0); + +void CStreaming::LoadInitialPeds() { + plugin::CallDynGlobal(gaddrof(CStreaming::LoadInitialPeds)); +} + +int addrof(CStreaming::LoadInitialVehicles) = ADDRESS_BY_VERSION(0x407F20, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::LoadInitialVehicles) = GLOBAL_ADDRESS_BY_VERSION(0x407F20, 0, 0, 0, 0, 0); + +void CStreaming::LoadInitialVehicles() { + plugin::CallDynGlobal(gaddrof(CStreaming::LoadInitialVehicles)); +} + +int addrof(CStreaming::LoadInitialWeapons) = ADDRESS_BY_VERSION(0x40A120, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::LoadInitialWeapons) = GLOBAL_ADDRESS_BY_VERSION(0x40A120, 0, 0, 0, 0, 0); + +void CStreaming::LoadInitialWeapons() { + plugin::CallDynGlobal(gaddrof(CStreaming::LoadInitialWeapons)); +} + +int addrof(CStreaming::LoadRequestedModels) = ADDRESS_BY_VERSION(0x40E3A0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::LoadRequestedModels) = GLOBAL_ADDRESS_BY_VERSION(0x40E3A0, 0, 0, 0, 0, 0); + +void CStreaming::LoadRequestedModels() { + plugin::CallDynGlobal(gaddrof(CStreaming::LoadRequestedModels)); +} + +int addrof(CStreaming::LoadScene) = ADDRESS_BY_VERSION(0x40EB70, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::LoadScene) = GLOBAL_ADDRESS_BY_VERSION(0x40EB70, 0, 0, 0, 0, 0); + +void CStreaming::LoadScene(CVector const *Posn) { + plugin::CallDynGlobal(gaddrof(CStreaming::LoadScene), Posn); +} + +int addrof(CStreaming::LoadSceneCollision) = ADDRESS_BY_VERSION(0x40ED80, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::LoadSceneCollision) = GLOBAL_ADDRESS_BY_VERSION(0x40ED80, 0, 0, 0, 0, 0); + +void CStreaming::LoadSceneCollision(CVector const *Posn) { + plugin::CallDynGlobal(gaddrof(CStreaming::LoadSceneCollision), Posn); +} + +int addrof(CStreaming::LoadZoneVehicle) = ADDRESS_BY_VERSION(0x40B4B0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::LoadZoneVehicle) = GLOBAL_ADDRESS_BY_VERSION(0x40B4B0, 0, 0, 0, 0, 0); + +void CStreaming::LoadZoneVehicle(CVector const *posn) { + plugin::CallDynGlobal(gaddrof(CStreaming::LoadZoneVehicle), posn); +} + +int addrof(CStreaming::MakeSpaceFor) = ADDRESS_BY_VERSION(0x40E120, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::MakeSpaceFor) = GLOBAL_ADDRESS_BY_VERSION(0x40E120, 0, 0, 0, 0, 0); + +void CStreaming::MakeSpaceFor(int memoryToCleanInBytes) { + plugin::CallDynGlobal(gaddrof(CStreaming::MakeSpaceFor), memoryToCleanInBytes); +} + +int addrof(CStreaming::PossiblyStreamCarOutAfterCreation) = ADDRESS_BY_VERSION(0x40BA70, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::PossiblyStreamCarOutAfterCreation) = GLOBAL_ADDRESS_BY_VERSION(0x40BA70, 0, 0, 0, 0, 0); + +void CStreaming::PossiblyStreamCarOutAfterCreation(int modelId) { + plugin::CallDynGlobal(gaddrof(CStreaming::PossiblyStreamCarOutAfterCreation), modelId); +} + +int addrof_o(CStreaming::ProcessEntitiesInSectorList, void (*)(CPtrList *, float, float, float, float, float, float, float, unsigned int)) = ADDRESS_BY_VERSION(0x40C270, 0, 0, 0, 0, 0); +int gaddrof_o(CStreaming::ProcessEntitiesInSectorList, void (*)(CPtrList *, float, float, float, float, float, float, float, unsigned int)) = GLOBAL_ADDRESS_BY_VERSION(0x40C270, 0, 0, 0, 0, 0); + +void CStreaming::ProcessEntitiesInSectorList(CPtrList *list, float posn_x, float posn_y, float min_posn_x, float min_posn_y, float max_posn_x, float max_posn_y, float distance, unsigned int Streamingflags) { + plugin::CallDynGlobal(gaddrof_o(CStreaming::ProcessEntitiesInSectorList, void (*)(CPtrList *, float, float, float, float, float, float, float, unsigned int)), list, posn_x, posn_y, min_posn_x, min_posn_y, max_posn_x, max_posn_y, distance, Streamingflags); +} + +int addrof_o(CStreaming::ProcessEntitiesInSectorList, void (*)(CPtrList *, unsigned int)) = ADDRESS_BY_VERSION(0x40C450, 0, 0, 0, 0, 0); +int gaddrof_o(CStreaming::ProcessEntitiesInSectorList, void (*)(CPtrList *, unsigned int)) = GLOBAL_ADDRESS_BY_VERSION(0x40C450, 0, 0, 0, 0, 0); + +void CStreaming::ProcessEntitiesInSectorList(CPtrList *list, unsigned int streamingFlags) { + plugin::CallDynGlobal(gaddrof_o(CStreaming::ProcessEntitiesInSectorList, void (*)(CPtrList *, unsigned int)), list, streamingFlags); +} + +int addrof(CStreaming::ProcessLoadingChannel) = ADDRESS_BY_VERSION(0x40E170, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::ProcessLoadingChannel) = GLOBAL_ADDRESS_BY_VERSION(0x40E170, 0, 0, 0, 0, 0); + +bool CStreaming::ProcessLoadingChannel(int channelIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::ProcessLoadingChannel), channelIndex); +} + +int addrof(CStreaming::PurgeRequestList) = ADDRESS_BY_VERSION(0x40C1E0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::PurgeRequestList) = GLOBAL_ADDRESS_BY_VERSION(0x40C1E0, 0, 0, 0, 0, 0); + +void CStreaming::PurgeRequestList() { + plugin::CallDynGlobal(gaddrof(CStreaming::PurgeRequestList)); +} + +int addrof(CStreaming::ReInit) = ADDRESS_BY_VERSION(0x40E560, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::ReInit) = GLOBAL_ADDRESS_BY_VERSION(0x40E560, 0, 0, 0, 0, 0); + +unsigned int CStreaming::ReInit() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::ReInit)); +} + +int addrof(CStreaming::ReadIniFile) = ADDRESS_BY_VERSION(0x5BCCD0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::ReadIniFile) = GLOBAL_ADDRESS_BY_VERSION(0x5BCCD0, 0, 0, 0, 0, 0); + +void CStreaming::ReadIniFile() { + plugin::CallDynGlobal(gaddrof(CStreaming::ReadIniFile)); +} + +int addrof(CStreaming::ReclassifyLoadedCars) = ADDRESS_BY_VERSION(0x40AFA0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::ReclassifyLoadedCars) = GLOBAL_ADDRESS_BY_VERSION(0x40AFA0, 0, 0, 0, 0, 0); + +void CStreaming::ReclassifyLoadedCars() { + plugin::CallDynGlobal(gaddrof(CStreaming::ReclassifyLoadedCars)); +} + +int addrof(CStreaming::RemoveAllUnusedModels) = ADDRESS_BY_VERSION(0x40CF80, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveAllUnusedModels) = GLOBAL_ADDRESS_BY_VERSION(0x40CF80, 0, 0, 0, 0, 0); + +void CStreaming::RemoveAllUnusedModels() { + plugin::CallDynGlobal(gaddrof(CStreaming::RemoveAllUnusedModels)); +} + +int addrof(CStreaming::RemoveBigBuildings) = ADDRESS_BY_VERSION(0x4093B0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveBigBuildings) = GLOBAL_ADDRESS_BY_VERSION(0x4093B0, 0, 0, 0, 0, 0); + +void CStreaming::RemoveBigBuildings() { + plugin::CallDynGlobal(gaddrof(CStreaming::RemoveBigBuildings)); +} + +int addrof(CStreaming::RemoveBuildingsNotInArea) = ADDRESS_BY_VERSION(0x4094B0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveBuildingsNotInArea) = GLOBAL_ADDRESS_BY_VERSION(0x4094B0, 0, 0, 0, 0, 0); + +void CStreaming::RemoveBuildingsNotInArea(int AreaCode) { + plugin::CallDynGlobal(gaddrof(CStreaming::RemoveBuildingsNotInArea), AreaCode); +} + +int addrof(CStreaming::RemoveCarModel) = ADDRESS_BY_VERSION(0x4080F0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveCarModel) = GLOBAL_ADDRESS_BY_VERSION(0x4080F0, 0, 0, 0, 0, 0); + +void CStreaming::RemoveCarModel(int modelIndex) { + plugin::CallDynGlobal(gaddrof(CStreaming::RemoveCarModel), modelIndex); +} + +int addrof(CStreaming::RemoveCurrentZonesModels) = ADDRESS_BY_VERSION(0x40B080, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveCurrentZonesModels) = GLOBAL_ADDRESS_BY_VERSION(0x40B080, 0, 0, 0, 0, 0); + +void CStreaming::RemoveCurrentZonesModels() { + plugin::CallDynGlobal(gaddrof(CStreaming::RemoveCurrentZonesModels)); +} + +int addrof(CStreaming::RemoveDodgyPedsFromRandomSlots) = ADDRESS_BY_VERSION(0x40BE60, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveDodgyPedsFromRandomSlots) = GLOBAL_ADDRESS_BY_VERSION(0x40BE60, 0, 0, 0, 0, 0); + +void CStreaming::RemoveDodgyPedsFromRandomSlots() { + plugin::CallDynGlobal(gaddrof(CStreaming::RemoveDodgyPedsFromRandomSlots)); +} + +int addrof(CStreaming::RemoveEntity) = ADDRESS_BY_VERSION(0x409710, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveEntity) = GLOBAL_ADDRESS_BY_VERSION(0x409710, 0, 0, 0, 0, 0); + +void CStreaming::RemoveEntity(CLink *streamingLink) { + plugin::CallDynGlobal *>(gaddrof(CStreaming::RemoveEntity), streamingLink); +} + +int addrof(CStreaming::RemoveInappropriatePedModels) = ADDRESS_BY_VERSION(0x40B3A0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveInappropriatePedModels) = GLOBAL_ADDRESS_BY_VERSION(0x40B3A0, 0, 0, 0, 0, 0); + +void CStreaming::RemoveInappropriatePedModels() { + plugin::CallDynGlobal(gaddrof(CStreaming::RemoveInappropriatePedModels)); +} + +int addrof(CStreaming::RemoveLeastUsedModel) = ADDRESS_BY_VERSION(0x40CFD0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveLeastUsedModel) = GLOBAL_ADDRESS_BY_VERSION(0x40CFD0, 0, 0, 0, 0, 0); + +bool CStreaming::RemoveLeastUsedModel(unsigned int StreamingFlags) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::RemoveLeastUsedModel), StreamingFlags); +} + +int addrof(CStreaming::RemoveLoadedVehicle) = ADDRESS_BY_VERSION(0x40C020, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveLoadedVehicle) = GLOBAL_ADDRESS_BY_VERSION(0x40C020, 0, 0, 0, 0, 0); + +bool CStreaming::RemoveLoadedVehicle() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::RemoveLoadedVehicle)); +} + +int addrof(CStreaming::RemoveLoadedZoneModel) = ADDRESS_BY_VERSION(0x40B340, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveLoadedZoneModel) = GLOBAL_ADDRESS_BY_VERSION(0x40B340, 0, 0, 0, 0, 0); + +bool CStreaming::RemoveLoadedZoneModel() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::RemoveLoadedZoneModel)); +} + +int addrof(CStreaming::RemoveModel) = ADDRESS_BY_VERSION(0x4089A0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveModel) = GLOBAL_ADDRESS_BY_VERSION(0x4089A0, 0, 0, 0, 0, 0); + +void CStreaming::RemoveModel(int Modelindex) { + plugin::CallDynGlobal(gaddrof(CStreaming::RemoveModel), Modelindex); +} + +int addrof(CStreaming::RemoveUnusedModelsInLoadedList) = ADDRESS_BY_VERSION(0x407AC0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RemoveUnusedModelsInLoadedList) = GLOBAL_ADDRESS_BY_VERSION(0x407AC0, 0, 0, 0, 0, 0); + +unsigned int CStreaming::RemoveUnusedModelsInLoadedList() { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::RemoveUnusedModelsInLoadedList)); +} + +int addrof(CStreaming::RenderEntity) = ADDRESS_BY_VERSION(0x4096D0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RenderEntity) = GLOBAL_ADDRESS_BY_VERSION(0x4096D0, 0, 0, 0, 0, 0); + +void CStreaming::RenderEntity(CLink *streamingLink) { + plugin::CallDynGlobal *>(gaddrof(CStreaming::RenderEntity), streamingLink); +} + +int addrof(CStreaming::RequestBigBuildings) = ADDRESS_BY_VERSION(0x409430, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RequestBigBuildings) = GLOBAL_ADDRESS_BY_VERSION(0x409430, 0, 0, 0, 0, 0); + +void CStreaming::RequestBigBuildings(CVector const *posn) { + plugin::CallDynGlobal(gaddrof(CStreaming::RequestBigBuildings), posn); +} + +int addrof(CStreaming::RequestFile) = ADDRESS_BY_VERSION(0x40A080, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RequestFile) = GLOBAL_ADDRESS_BY_VERSION(0x40A080, 0, 0, 0, 0, 0); + +void CStreaming::RequestFile(int index, int offset, int size, int imgId, int streamingFlags) { + plugin::CallDynGlobal(gaddrof(CStreaming::RequestFile), index, offset, size, imgId, streamingFlags); +} + +int addrof(CStreaming::RequestFilesInChannel) = ADDRESS_BY_VERSION(0x409050, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RequestFilesInChannel) = GLOBAL_ADDRESS_BY_VERSION(0x409050, 0, 0, 0, 0, 0); + +void CStreaming::RequestFilesInChannel(int channelId) { + plugin::CallDynGlobal(gaddrof(CStreaming::RequestFilesInChannel), channelId); +} + +int addrof(CStreaming::RequestModel) = ADDRESS_BY_VERSION(0x4087E0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RequestModel) = GLOBAL_ADDRESS_BY_VERSION(0x4087E0, 0, 0, 0, 0, 0); + +void CStreaming::RequestModel(int dwModelId, int Streamingflags) { + plugin::CallDynGlobal(gaddrof(CStreaming::RequestModel), dwModelId, Streamingflags); +} + +int addrof(CStreaming::RequestModelStream) = ADDRESS_BY_VERSION(0x40CBA0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RequestModelStream) = GLOBAL_ADDRESS_BY_VERSION(0x40CBA0, 0, 0, 0, 0, 0); + +void CStreaming::RequestModelStream(int streamNum) { + plugin::CallDynGlobal(gaddrof(CStreaming::RequestModelStream), streamNum); +} + +int addrof(CStreaming::RequestPlayerSection) = ADDRESS_BY_VERSION(0x409FF0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RequestPlayerSection) = GLOBAL_ADDRESS_BY_VERSION(0x409FF0, 0, 0, 0, 0, 0); + +void CStreaming::RequestPlayerSection(int modelIndex, char const *string, int streamingFlags) { + plugin::CallDynGlobal(gaddrof(CStreaming::RequestPlayerSection), modelIndex, string, streamingFlags); +} + +int addrof(CStreaming::RequestSpecialChar) = ADDRESS_BY_VERSION(0x40B450, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RequestSpecialChar) = GLOBAL_ADDRESS_BY_VERSION(0x40B450, 0, 0, 0, 0, 0); + +void CStreaming::RequestSpecialChar(int slot, char const *Name, int streamingFlags) { + plugin::CallDynGlobal(gaddrof(CStreaming::RequestSpecialChar), slot, Name, streamingFlags); +} + +int addrof(CStreaming::RequestSpecialModel) = ADDRESS_BY_VERSION(0x409D10, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RequestSpecialModel) = GLOBAL_ADDRESS_BY_VERSION(0x409D10, 0, 0, 0, 0, 0); + +void CStreaming::RequestSpecialModel(int slot, char const*name, int StreamingFlags) { + plugin::CallDynGlobal(gaddrof(CStreaming::RequestSpecialModel), slot, name, StreamingFlags); +} + +int addrof(CStreaming::RequestTxdModel) = ADDRESS_BY_VERSION(0x407100, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RequestTxdModel) = GLOBAL_ADDRESS_BY_VERSION(0x407100, 0, 0, 0, 0, 0); + +void CStreaming::RequestTxdModel(int TxdModelID, int Streamingflags) { + plugin::CallDynGlobal(gaddrof(CStreaming::RequestTxdModel), TxdModelID, Streamingflags); +} + +int addrof(CStreaming::RequestVehicleUpgrade) = ADDRESS_BY_VERSION(0x408C70, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RequestVehicleUpgrade) = GLOBAL_ADDRESS_BY_VERSION(0x408C70, 0, 0, 0, 0, 0); + +void CStreaming::RequestVehicleUpgrade(int modelIndex, int StreamingFlags) { + plugin::CallDynGlobal(gaddrof(CStreaming::RequestVehicleUpgrade), modelIndex, StreamingFlags); +} + +int addrof(CStreaming::RetryLoadFile) = ADDRESS_BY_VERSION(0x4076C0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::RetryLoadFile) = GLOBAL_ADDRESS_BY_VERSION(0x4076C0, 0, 0, 0, 0, 0); + +void CStreaming::RetryLoadFile(int streamNum) { + plugin::CallDynGlobal(gaddrof(CStreaming::RetryLoadFile), streamNum); +} + +int addrof(CStreaming::Save) = ADDRESS_BY_VERSION(0x5D29A0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::Save) = GLOBAL_ADDRESS_BY_VERSION(0x5D29A0, 0, 0, 0, 0, 0); + +void CStreaming::Save() { + plugin::CallDynGlobal(gaddrof(CStreaming::Save)); +} + +int addrof(CStreaming::SetLoadVehiclesInLoadScene) = ADDRESS_BY_VERSION(0x407A30, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::SetLoadVehiclesInLoadScene) = GLOBAL_ADDRESS_BY_VERSION(0x407A30, 0, 0, 0, 0, 0); + +void CStreaming::SetLoadVehiclesInLoadScene(bool bEnable) { + plugin::CallDynGlobal(gaddrof(CStreaming::SetLoadVehiclesInLoadScene), bEnable); +} + +int addrof(CStreaming::SetMissionDoesntRequireAnim) = ADDRESS_BY_VERSION(0x48B570, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::SetMissionDoesntRequireAnim) = GLOBAL_ADDRESS_BY_VERSION(0x48B570, 0, 0, 0, 0, 0); + +void CStreaming::SetMissionDoesntRequireAnim(int slot) { + plugin::CallDynGlobal(gaddrof(CStreaming::SetMissionDoesntRequireAnim), slot); +} + +int addrof(CStreaming::SetMissionDoesntRequireModel) = ADDRESS_BY_VERSION(0x409C90, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::SetMissionDoesntRequireModel) = GLOBAL_ADDRESS_BY_VERSION(0x409C90, 0, 0, 0, 0, 0); + +void CStreaming::SetMissionDoesntRequireModel(int modelIndex) { + plugin::CallDynGlobal(gaddrof(CStreaming::SetMissionDoesntRequireModel), modelIndex); +} + +int addrof(CStreaming::SetMissionDoesntRequireSpecialChar) = ADDRESS_BY_VERSION(0x40B490, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::SetMissionDoesntRequireSpecialChar) = GLOBAL_ADDRESS_BY_VERSION(0x40B490, 0, 0, 0, 0, 0); + +void CStreaming::SetMissionDoesntRequireSpecialChar(int slot) { + plugin::CallDynGlobal(gaddrof(CStreaming::SetMissionDoesntRequireSpecialChar), slot); +} + +int addrof(CStreaming::SetModelIsDeletable) = ADDRESS_BY_VERSION(0x409C10, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::SetModelIsDeletable) = GLOBAL_ADDRESS_BY_VERSION(0x409C10, 0, 0, 0, 0, 0); + +void CStreaming::SetModelIsDeletable(int modelIndex) { + plugin::CallDynGlobal(gaddrof(CStreaming::SetModelIsDeletable), modelIndex); +} + +int addrof(CStreaming::SetModelTxdIsDeletable) = ADDRESS_BY_VERSION(0x409C70, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::SetModelTxdIsDeletable) = GLOBAL_ADDRESS_BY_VERSION(0x409C70, 0, 0, 0, 0, 0); + +void CStreaming::SetModelTxdIsDeletable(int modelIndex) { + plugin::CallDynGlobal(gaddrof(CStreaming::SetModelTxdIsDeletable), modelIndex); +} + +int addrof(CStreaming::SetSpecialCharIsDeletable) = ADDRESS_BY_VERSION(0x40B470, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::SetSpecialCharIsDeletable) = GLOBAL_ADDRESS_BY_VERSION(0x40B470, 0, 0, 0, 0, 0); + +void CStreaming::SetSpecialCharIsDeletable(int slot) { + plugin::CallDynGlobal(gaddrof(CStreaming::SetSpecialCharIsDeletable), slot); +} + +int addrof(CStreaming::Shutdown) = ADDRESS_BY_VERSION(0x4084B0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::Shutdown) = GLOBAL_ADDRESS_BY_VERSION(0x4084B0, 0, 0, 0, 0, 0); + +void CStreaming::Shutdown() { + plugin::CallDynGlobal(gaddrof(CStreaming::Shutdown)); +} + +int addrof(CStreaming::StartRenderEntities) = ADDRESS_BY_VERSION(0x4096C0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::StartRenderEntities) = GLOBAL_ADDRESS_BY_VERSION(0x4096C0, 0, 0, 0, 0, 0); + +void CStreaming::StartRenderEntities() { + plugin::CallDynGlobal(gaddrof(CStreaming::StartRenderEntities)); +} + +int addrof(CStreaming::StreamAmbulanceAndMedic) = ADDRESS_BY_VERSION(0x40A2A0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::StreamAmbulanceAndMedic) = GLOBAL_ADDRESS_BY_VERSION(0x40A2A0, 0, 0, 0, 0, 0); + +bool CStreaming::StreamAmbulanceAndMedic(bool bStreamForAccident) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::StreamAmbulanceAndMedic), bStreamForAccident); +} + +int addrof(CStreaming::StreamCopModels) = ADDRESS_BY_VERSION(0x40A150, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::StreamCopModels) = GLOBAL_ADDRESS_BY_VERSION(0x40A150, 0, 0, 0, 0, 0); + +void CStreaming::StreamCopModels(int townID) { + plugin::CallDynGlobal(gaddrof(CStreaming::StreamCopModels), townID); +} + +int addrof(CStreaming::StreamFireEngineAndFireman) = ADDRESS_BY_VERSION(0x40A400, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::StreamFireEngineAndFireman) = GLOBAL_ADDRESS_BY_VERSION(0x40A400, 0, 0, 0, 0, 0); + +bool CStreaming::StreamFireEngineAndFireman(bool bStreamForFire) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::StreamFireEngineAndFireman), bStreamForFire); +} + +int addrof(CStreaming::StreamOneNewCar) = ADDRESS_BY_VERSION(0x40B4F0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::StreamOneNewCar) = GLOBAL_ADDRESS_BY_VERSION(0x40B4F0, 0, 0, 0, 0, 0); + +void CStreaming::StreamOneNewCar() { + plugin::CallDynGlobal(gaddrof(CStreaming::StreamOneNewCar)); +} + +int addrof(CStreaming::StreamPedsForInterior) = ADDRESS_BY_VERSION(0x40BBB0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::StreamPedsForInterior) = GLOBAL_ADDRESS_BY_VERSION(0x40BBB0, 0, 0, 0, 0, 0); + +void CStreaming::StreamPedsForInterior(int interiorType) { + plugin::CallDynGlobal(gaddrof(CStreaming::StreamPedsForInterior), interiorType); +} + +int addrof(CStreaming::StreamPedsIntoRandomSlots) = ADDRESS_BY_VERSION(0x40BDA0, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::StreamPedsIntoRandomSlots) = GLOBAL_ADDRESS_BY_VERSION(0x40BDA0, 0, 0, 0, 0, 0); + +void CStreaming::StreamPedsIntoRandomSlots(int *pModelID) { + plugin::CallDynGlobal(gaddrof(CStreaming::StreamPedsIntoRandomSlots), pModelID); +} + +int addrof(CStreaming::StreamVehiclesAndPeds) = ADDRESS_BY_VERSION(0x40B700, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::StreamVehiclesAndPeds) = GLOBAL_ADDRESS_BY_VERSION(0x40B700, 0, 0, 0, 0, 0); + +void CStreaming::StreamVehiclesAndPeds() { + plugin::CallDynGlobal(gaddrof(CStreaming::StreamVehiclesAndPeds)); +} + +int addrof(CStreaming::StreamVehiclesAndPeds_Always) = ADDRESS_BY_VERSION(0x40B650, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::StreamVehiclesAndPeds_Always) = GLOBAL_ADDRESS_BY_VERSION(0x40B650, 0, 0, 0, 0, 0); + +void CStreaming::StreamVehiclesAndPeds_Always(CVector const *posn) { + plugin::CallDynGlobal(gaddrof(CStreaming::StreamVehiclesAndPeds_Always), posn); +} + +int addrof(CStreaming::StreamZoneModels) = ADDRESS_BY_VERSION(0x40A560, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::StreamZoneModels) = GLOBAL_ADDRESS_BY_VERSION(0x40A560, 0, 0, 0, 0, 0); + +void CStreaming::StreamZoneModels(CVector const *posn) { + plugin::CallDynGlobal(gaddrof(CStreaming::StreamZoneModels), posn); +} + +int addrof(CStreaming::StreamZoneModels_Gangs) = ADDRESS_BY_VERSION(0x40AA10, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::StreamZoneModels_Gangs) = GLOBAL_ADDRESS_BY_VERSION(0x40AA10, 0, 0, 0, 0, 0); + +void CStreaming::StreamZoneModels_Gangs(CVector const *unused) { + plugin::CallDynGlobal(gaddrof(CStreaming::StreamZoneModels_Gangs), unused); +} + +int addrof(CStreaming::Update) = ADDRESS_BY_VERSION(0x40E670, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::Update) = GLOBAL_ADDRESS_BY_VERSION(0x40E670, 0, 0, 0, 0, 0); + +void CStreaming::Update() { + plugin::CallDynGlobal(gaddrof(CStreaming::Update)); +} + +int addrof(CStreaming::UpdateForAnimViewer) = ADDRESS_BY_VERSION(0x40E960, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::UpdateForAnimViewer) = GLOBAL_ADDRESS_BY_VERSION(0x40E960, 0, 0, 0, 0, 0); + +void CStreaming::UpdateForAnimViewer() { + plugin::CallDynGlobal(gaddrof(CStreaming::UpdateForAnimViewer)); +} + +int addrof(CStreaming::WeAreTryingToPhaseVehicleOut) = ADDRESS_BY_VERSION(0x407F80, 0, 0, 0, 0, 0); +int gaddrof(CStreaming::WeAreTryingToPhaseVehicleOut) = GLOBAL_ADDRESS_BY_VERSION(0x407F80, 0, 0, 0, 0, 0); + +bool CStreaming::WeAreTryingToPhaseVehicleOut(int modelIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CStreaming::WeAreTryingToPhaseVehicleOut), modelIndex); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CStreaming.h b/third-party/plugin-sdk/plugin_sa/game_sa/CStreaming.h new file mode 100644 index 00000000..ceba6def --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CStreaming.h @@ -0,0 +1,232 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" +#include "CStreamingInfo.h" +#include "RenderWare.h" +#include "CEntity.h" +#include "CPtrList.h" +#include "CLinkList.h" +#include "CLoadedCarGroup.h" +#include "CDirectory.h" + +enum eStreamStatus +{ + STREAM_STATUS_IDLE , + STREAM_STATUS_READING , + STREAM_STATUS_FINISHING_BIGFILE +}; + + +struct tStreamingFileDesc +{ + char m_szName[40]; + bool bNotPlayerImg; + char __pad[3]; + int m_StreamHandle; +}; + +struct tStreamingChannel +{ + int modelIds[16]; + int field_40[16]; + eStreamStatus m_nStreamStatus; + int field_84; + int field_88; + int field_8C; + int field_90; + int m_nCdStreamStatus; +}; + + +class PLUGIN_API CStreaming { +public: + SUPPORTED_10US static unsigned int &ms_memoryAvailable; + SUPPORTED_10US static unsigned int &desiredNumVehiclesLoaded; + SUPPORTED_10US static bool &ms_bLoadVehiclesInLoadScene; + SUPPORTED_10US static int *ms_aDefaultCopCarModel; // static int ms_aDefaultCopCarModel[4] + SUPPORTED_10US static int &ms_DefaultCopBikeModel; + SUPPORTED_10US static int *ms_aDefaultCopModel; // static int ms_aDefaultCopModel[4] + SUPPORTED_10US static int &ms_DefaultCopBikerModel; + SUPPORTED_10US static signed int *ms_aDefaultAmbulanceModel; // static signed int ms_aDefaultAmbulanceModel[4] + SUPPORTED_10US static signed int *ms_aDefaultMedicModel; // static signed int ms_aDefaultMedicModel[4] + SUPPORTED_10US static signed int *ms_aDefaultFireEngineModel; // static signed int ms_aDefaultFireEngineModel[4] + SUPPORTED_10US static signed int *ms_aDefaultFiremanModel; // static signed int ms_aDefaultFiremanModel[4] + SUPPORTED_10US static signed int *ms_aDefaultCabDriverModel; // static signed int ms_aDefaultCabDriverModel[7] + SUPPORTED_10US static CDirectory *&ms_pExtraObjectsDir; + SUPPORTED_10US static tStreamingFileDesc *ms_files; // static tStreamingFileDesc ms_files[8] + SUPPORTED_10US static bool &ms_bLoadingBigModel; + SUPPORTED_10US static tStreamingChannel *ms_channel; // static tStreamingChannel ms_channel[2] + SUPPORTED_10US static signed int &ms_channelError; + SUPPORTED_10US static bool &m_bHarvesterModelsRequested; + SUPPORTED_10US static bool &m_bStreamHarvesterModelsThisFrame; + SUPPORTED_10US static unsigned int &ms_numPriorityRequests; + //! // initialized to -1 and never used + SUPPORTED_10US static int &ms_lastCullZone; + SUPPORTED_10US static unsigned short &ms_loadedGangCars; + SUPPORTED_10US static unsigned short &ms_loadedGangs; + SUPPORTED_10US static unsigned int &ms_numPedsLoaded; + SUPPORTED_10US static unsigned int **ms_pedsLoaded; // static unsigned int* ms_pedsLoaded[8] + SUPPORTED_10US static int &ms_currentZoneType; + SUPPORTED_10US static CLoadedCarGroup &ms_vehiclesLoaded; + SUPPORTED_10US static CStreamingInfo *&ms_pEndRequestedList; + SUPPORTED_10US static CStreamingInfo *&ms_pStartRequestedList; + SUPPORTED_10US static CStreamingInfo *&ms_pEndLoadedList; + SUPPORTED_10US static CStreamingInfo *&ms_startLoadedList; + //! initialized but not used? + SUPPORTED_10US static int &ms_lastImageRead; + //! initialized but never used? + SUPPORTED_10US static signed int *ms_imageOffsets; // static signed int ms_imageOffsets[6] + SUPPORTED_10US static bool &ms_bEnableRequestListPurge; + SUPPORTED_10US static unsigned int &ms_streamingBufferSize; + SUPPORTED_10US static char *&ms_pStreamingBuffer; + SUPPORTED_10US static unsigned int &ms_memoryUsed; + SUPPORTED_10US static unsigned int &ms_numModelsRequested; + SUPPORTED_10US static CStreamingInfo *ms_aInfoForModel; // static CStreamingInfo ms_aInfoForModel[26316] + SUPPORTED_10US static bool &ms_disableStreaming; + SUPPORTED_10US static int &ms_bIsInitialised; + SUPPORTED_10US static bool &m_bBoatsNeeded; + SUPPORTED_10US static bool &m_bLoadingScene; + SUPPORTED_10US static bool &m_bCopBikeLoaded; + SUPPORTED_10US static bool &m_bDisableCopBikes; + SUPPORTED_10US static CLinkList &ms_rwObjectInstances; + + SUPPORTED_10US static void *AddEntity(CEntity *a2); + //! return StreamingFile Index in CStreaming::ms_files + SUPPORTED_10US static int AddImageToList(char const *lpFileName, bool bNotPlayerImg); + SUPPORTED_10US static void AddLodsToRequestList(CVector const *Posn, unsigned int Streamingflags); + SUPPORTED_10US static void AddModelsToRequestList(CVector const *posn, unsigned int StreamingFlags); + SUPPORTED_10US static bool AddToLoadedVehiclesList(); + SUPPORTED_10US static bool AreAnimsUsedByRequestedModels(int AnimFileIndex); + SUPPORTED_10US static bool AreTexturesUsedByRequestedModels(int txdIndex); + SUPPORTED_10US static void ClearFlagForAll(unsigned int eStreamingFlag); + SUPPORTED_10US static void ClearSlots(int NumOfSlots); + //! ChanndelIndex is unused + SUPPORTED_10US static char ConvertBufferToObject(char *pFileContect, int index, int ChannelIndex); + SUPPORTED_10US static void DeleteAllRwObjects(); + SUPPORTED_10US static bool DeleteLeastUsedEntityRwObject(bool bNotOnScreen, unsigned int StreamingFlags); + SUPPORTED_10US static void DeleteRwObjectsAfterDeath(CVector const *PlayerPosn); + SUPPORTED_10US static void DeleteRwObjectsBehindCamera(int memoryToCleanInBytes); + SUPPORTED_10US static bool DeleteRwObjectsBehindCameraInSectorList(CPtrList *List, int memoryToCleanInBytes); + //! unused + SUPPORTED_10US static void DeleteRwObjectsInSectorList(CPtrList *PtrList, int arg2, int arg3); + SUPPORTED_10US static char DeleteRwObjectsNotInFrustumInSectorList(CPtrList *List, int memoryToCleanInBytes); + SUPPORTED_10US static void DisableCopBikes(bool bDisable); + //! RandFactor : random number between 1-7 + SUPPORTED_10US static int FindMIPedSlotForInterior(int RandFactor); + SUPPORTED_10US static bool FinishLoadingLargeFile(char *FileName, int modelIndex); + SUPPORTED_10US static bool FlushChannels(); + SUPPORTED_10US static bool FlushRequestList(); + SUPPORTED_10US static void ForceLayerToRead(int arg1); + SUPPORTED_10US static int GetDefaultCabDriverModel(); + SUPPORTED_10US static int GetDefaultCopCarModel(unsigned int bIncludeCopBike); + SUPPORTED_10US static int GetDefaultCopModel(); + SUPPORTED_10US static int GetDefaultFiremanModel(); + SUPPORTED_10US static int GetDefaultMedicModel(); + //! unused + SUPPORTED_10US static signed int GetDiscInDrive(); + //! return modelIndex + SUPPORTED_10US static int GetNextFileOnCd(int pos, bool bNotPriority); + SUPPORTED_10US static bool HasSpecialCharLoaded(int slot); + SUPPORTED_10US static bool HasVehicleUpgradeLoaded(int ModelIndex); + //! does nothing (NOP) + SUPPORTED_10US static void IHaveUsedStreamingMemory(); + //! does nothing (NOP) + SUPPORTED_10US static void ImGonnaUseStreamingMemory(); + SUPPORTED_10US static void Init(); + SUPPORTED_10US static void Init2(); + SUPPORTED_10US static void InitImageList(); + SUPPORTED_10US static void InstanceLoadedModels(CVector const *posn); + SUPPORTED_10US static bool IsCarModelNeededInCurrentZone(int VehicleModelIndex); + //! unused + SUPPORTED_10US static bool IsInitialised(); + SUPPORTED_10US static bool IsObjectInCdImage(int ModelInex); + SUPPORTED_10US static bool IsVeryBusy(); + SUPPORTED_10US static void Load(); + SUPPORTED_10US static void LoadAllRequestedModels(bool bOnlyPriorityRequests); + SUPPORTED_10US static void LoadCdDirectory(char const *ArchiveName, int archiveID); + SUPPORTED_10US static void LoadCdDirectory(); + SUPPORTED_10US static void LoadInitialPeds(); + //! does nothing (NOP) + SUPPORTED_10US static void LoadInitialVehicles(); + SUPPORTED_10US static void LoadInitialWeapons(); + SUPPORTED_10US static void LoadRequestedModels(); + SUPPORTED_10US static void LoadScene(CVector const *Posn); + SUPPORTED_10US static void LoadSceneCollision(CVector const *Posn); + //! unused + SUPPORTED_10US static void LoadZoneVehicle(CVector const *posn); + SUPPORTED_10US static void MakeSpaceFor(int memoryToCleanInBytes); + SUPPORTED_10US static void PossiblyStreamCarOutAfterCreation(int modelId); + SUPPORTED_10US static void ProcessEntitiesInSectorList(CPtrList *list, float posn_x, float posn_y, float min_posn_x, float min_posn_y, float max_posn_x, float max_posn_y, float distance, unsigned int Streamingflags); + SUPPORTED_10US static void ProcessEntitiesInSectorList(CPtrList *list, unsigned int streamingFlags); + SUPPORTED_10US static bool ProcessLoadingChannel(int channelIndex); + SUPPORTED_10US static void PurgeRequestList(); + SUPPORTED_10US static unsigned int ReInit(); + SUPPORTED_10US static void ReadIniFile(); + SUPPORTED_10US static void ReclassifyLoadedCars(); + SUPPORTED_10US static void RemoveAllUnusedModels(); + SUPPORTED_10US static void RemoveBigBuildings(); + SUPPORTED_10US static void RemoveBuildingsNotInArea(int AreaCode); + SUPPORTED_10US static void RemoveCarModel(int modelIndex); + SUPPORTED_10US static void RemoveCurrentZonesModels(); + SUPPORTED_10US static void RemoveDodgyPedsFromRandomSlots(); + SUPPORTED_10US static void RemoveEntity(CLink *streamingLink); + SUPPORTED_10US static void RemoveInappropriatePedModels(); + SUPPORTED_10US static bool RemoveLeastUsedModel(unsigned int StreamingFlags); + SUPPORTED_10US static bool RemoveLoadedVehicle(); + SUPPORTED_10US static bool RemoveLoadedZoneModel(); + SUPPORTED_10US static void RemoveModel(int Modelindex); + //! does nothing (NOP) + SUPPORTED_10US static unsigned int RemoveUnusedModelsInLoadedList(); + SUPPORTED_10US static void RenderEntity(CLink *streamingLink); + SUPPORTED_10US static void RequestBigBuildings(CVector const *posn); + SUPPORTED_10US static void RequestFile(int index, int offset, int size, int imgId, int streamingFlags); + //! unused + SUPPORTED_10US static void RequestFilesInChannel(int channelId); + SUPPORTED_10US static void RequestModel(int dwModelId, int Streamingflags); + SUPPORTED_10US static void RequestModelStream(int streamNum); + //! unused + SUPPORTED_10US static void RequestPlayerSection(int modelIndex, char const *string, int streamingFlags); + SUPPORTED_10US static void RequestSpecialChar(int slot, char const *Name, int streamingFlags); + SUPPORTED_10US static void RequestSpecialModel(int slot, char const*name, int StreamingFlags); + SUPPORTED_10US static void RequestTxdModel(int TxdModelID, int Streamingflags); + SUPPORTED_10US static void RequestVehicleUpgrade(int modelIndex, int StreamingFlags); + SUPPORTED_10US static void RetryLoadFile(int streamNum); + SUPPORTED_10US static void Save(); + SUPPORTED_10US static void SetLoadVehiclesInLoadScene(bool bEnable); + SUPPORTED_10US static void SetMissionDoesntRequireAnim(int slot); + SUPPORTED_10US static void SetMissionDoesntRequireModel(int modelIndex); + SUPPORTED_10US static void SetMissionDoesntRequireSpecialChar(int slot); + SUPPORTED_10US static void SetModelIsDeletable(int modelIndex); + SUPPORTED_10US static void SetModelTxdIsDeletable(int modelIndex); + //! unused + SUPPORTED_10US static void SetSpecialCharIsDeletable(int slot); + SUPPORTED_10US static void Shutdown(); + SUPPORTED_10US static void StartRenderEntities(); + SUPPORTED_10US static bool StreamAmbulanceAndMedic(bool bStreamForAccident); + SUPPORTED_10US static void StreamCopModels(int townID); + SUPPORTED_10US static bool StreamFireEngineAndFireman(bool bStreamForFire); + SUPPORTED_10US static void StreamOneNewCar(); + //! interiorType : 0 - house , 1 - shop , 2 - office + SUPPORTED_10US static void StreamPedsForInterior(int interiorType); + SUPPORTED_10US static void StreamPedsIntoRandomSlots(int *pModelID); + SUPPORTED_10US static void StreamVehiclesAndPeds(); + SUPPORTED_10US static void StreamVehiclesAndPeds_Always(CVector const *posn); + SUPPORTED_10US static void StreamZoneModels(CVector const *posn); + SUPPORTED_10US static void StreamZoneModels_Gangs(CVector const *unused); + SUPPORTED_10US static void Update(); + //! unused + SUPPORTED_10US static void UpdateForAnimViewer(); + SUPPORTED_10US static bool WeAreTryingToPhaseVehicleOut(int modelIndex); +}; + +SUPPORTED_10US extern RwStream &gRwStream; + + +#include "meta/meta.CStreaming.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CStreamingInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CStreamingInfo.cpp new file mode 100644 index 00000000..2488324e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CStreamingInfo.cpp @@ -0,0 +1,81 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CStreamingInfo.h" + +PLUGIN_SOURCE_FILE + +CStreamingInfo *&CStreamingInfo::ms_pArrayBase = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x9654B4, 0, 0, 0, 0, 0)); + +int addrof(CStreamingInfo::AddToList) = ADDRESS_BY_VERSION(0x407480, 0, 0, 0, 0, 0); +int gaddrof(CStreamingInfo::AddToList) = GLOBAL_ADDRESS_BY_VERSION(0x407480, 0, 0, 0, 0, 0); + +void CStreamingInfo::AddToList(CStreamingInfo *listStart) { + plugin::CallMethodDynGlobal(gaddrof(CStreamingInfo::AddToList), this, listStart); +} + +int addrof(CStreamingInfo::GetCdPosn) = ADDRESS_BY_VERSION(0x407570, 0, 0, 0, 0, 0); +int gaddrof(CStreamingInfo::GetCdPosn) = GLOBAL_ADDRESS_BY_VERSION(0x407570, 0, 0, 0, 0, 0); + +unsigned int CStreamingInfo::GetCdPosn() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamingInfo::GetCdPosn), this); +} + +int addrof(CStreamingInfo::GetCdPosnAndSize) = ADDRESS_BY_VERSION(0x4075A0, 0, 0, 0, 0, 0); +int gaddrof(CStreamingInfo::GetCdPosnAndSize) = GLOBAL_ADDRESS_BY_VERSION(0x4075A0, 0, 0, 0, 0, 0); + +bool CStreamingInfo::GetCdPosnAndSize(unsigned int *CdPosn, unsigned int *CdSize) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamingInfo::GetCdPosnAndSize), this, CdPosn, CdSize); +} + +int addrof(CStreamingInfo::GetCdSize) = ADDRESS_BY_VERSION(0x407590, 0, 0, 0, 0, 0); +int gaddrof(CStreamingInfo::GetCdSize) = GLOBAL_ADDRESS_BY_VERSION(0x407590, 0, 0, 0, 0, 0); + +unsigned int CStreamingInfo::GetCdSize() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamingInfo::GetCdSize), this); +} + +int addrof(CStreamingInfo::GetNext) = ADDRESS_BY_VERSION(0x407520, 0, 0, 0, 0, 0); +int gaddrof(CStreamingInfo::GetNext) = GLOBAL_ADDRESS_BY_VERSION(0x407520, 0, 0, 0, 0, 0); + +CStreamingInfo *CStreamingInfo::GetNext() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamingInfo::GetNext), this); +} + +int addrof(CStreamingInfo::GetPrev) = ADDRESS_BY_VERSION(0x407540, 0, 0, 0, 0, 0); +int gaddrof(CStreamingInfo::GetPrev) = GLOBAL_ADDRESS_BY_VERSION(0x407540, 0, 0, 0, 0, 0); + +CStreamingInfo *CStreamingInfo::GetPrev() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamingInfo::GetPrev), this); +} + +int addrof(CStreamingInfo::InList) = ADDRESS_BY_VERSION(0x407560, 0, 0, 0, 0, 0); +int gaddrof(CStreamingInfo::InList) = GLOBAL_ADDRESS_BY_VERSION(0x407560, 0, 0, 0, 0, 0); + +bool CStreamingInfo::InList() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStreamingInfo::InList), this); +} + +int addrof(CStreamingInfo::Init) = ADDRESS_BY_VERSION(0x407460, 0, 0, 0, 0, 0); +int gaddrof(CStreamingInfo::Init) = GLOBAL_ADDRESS_BY_VERSION(0x407460, 0, 0, 0, 0, 0); + +void CStreamingInfo::Init() { + plugin::CallMethodDynGlobal(gaddrof(CStreamingInfo::Init), this); +} + +int addrof(CStreamingInfo::RemoveFromList) = ADDRESS_BY_VERSION(0x4074E0, 0, 0, 0, 0, 0); +int gaddrof(CStreamingInfo::RemoveFromList) = GLOBAL_ADDRESS_BY_VERSION(0x4074E0, 0, 0, 0, 0, 0); + +void CStreamingInfo::RemoveFromList() { + plugin::CallMethodDynGlobal(gaddrof(CStreamingInfo::RemoveFromList), this); +} + +int addrof(CStreamingInfo::SetCdPosnAndSize) = ADDRESS_BY_VERSION(0x4075E0, 0, 0, 0, 0, 0); +int gaddrof(CStreamingInfo::SetCdPosnAndSize) = GLOBAL_ADDRESS_BY_VERSION(0x4075E0, 0, 0, 0, 0, 0); + +void CStreamingInfo::SetCdPosnAndSize(unsigned int CdPosn, unsigned int CdSize) { + plugin::CallMethodDynGlobal(gaddrof(CStreamingInfo::SetCdPosnAndSize), this, CdPosn, CdSize); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CStreamingInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CStreamingInfo.h new file mode 100644 index 00000000..0d5647e5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CStreamingInfo.h @@ -0,0 +1,61 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +enum eStreamingFlags { + GAME_REQUIRED = 0x2, + MISSION_REQUIRED = 0x4, + KEEP_IN_MEMORY = 0x8, + PRIORITY_REQUEST = 0x10 +}; + +enum eStreamingLoadState { + LOADSTATE_NOT_LOADED = 0, + LOADSTATE_LOADED = 1, + LOADSTATE_Requested = 2, + LOADSTATE_Channeled = 3, + LOADSTATE_Finishing = 4 +}; + +class PLUGIN_API CStreamingInfo { +public: + short m_nNextIndex; // ms_pArrayBase array index + short m_nPrevIndex; // ms_pArrayBase array index + short m_nNextIndexOnCd; + unsigned char m_nFlags; // see eStreamingFlags + unsigned char m_nImgId; + unsigned int m_nCdPosn; + unsigned int m_nCdSize; + unsigned char m_nLoadState; // see eStreamingLoadState +private: + char __pad[3]; + +public: + SUPPORTED_10US static CStreamingInfo *&ms_pArrayBase; + + SUPPORTED_10US void AddToList(CStreamingInfo *listStart); + //! unused + SUPPORTED_10US unsigned int GetCdPosn(); + SUPPORTED_10US bool GetCdPosnAndSize(unsigned int *CdPosn, unsigned int *CdSize); + //! unused + SUPPORTED_10US unsigned int GetCdSize(); + //! unused + SUPPORTED_10US CStreamingInfo *GetNext(); + //! unused + SUPPORTED_10US CStreamingInfo *GetPrev(); + //! unused + SUPPORTED_10US bool InList(); + SUPPORTED_10US void Init(); + SUPPORTED_10US void RemoveFromList(); + SUPPORTED_10US void SetCdPosnAndSize(unsigned int CdPosn, unsigned int CdSize); +}; + +VALIDATE_SIZE(CStreamingInfo, 0x14); + +#include "meta/meta.CStreamingInfo.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CStuckCarCheck.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CStuckCarCheck.cpp new file mode 100644 index 00000000..4bbe27c8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CStuckCarCheck.cpp @@ -0,0 +1,72 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CStuckCarCheck.h" + +PLUGIN_SOURCE_FILE + +int addrof(CStuckCarCheck::AddCarToCheck) = ADDRESS_BY_VERSION(0x465970, 0, 0, 0, 0, 0); +int gaddrof(CStuckCarCheck::AddCarToCheck) = GLOBAL_ADDRESS_BY_VERSION(0x465970, 0, 0, 0, 0, 0); + +void CStuckCarCheck::AddCarToCheck(int carHandle, float distance, unsigned int time, unsigned char a5, unsigned char bStuck, unsigned char bFlipped, unsigned char bWarp, signed char pathID) { + plugin::CallMethodDynGlobal(gaddrof(CStuckCarCheck::AddCarToCheck), this, carHandle, distance, time, a5, bStuck, bFlipped, bWarp, pathID); +} + +int addrof(CStuckCarCheck::AttemptToWarpVehicle) = ADDRESS_BY_VERSION(0x463A60, 0, 0, 0, 0, 0); +int gaddrof(CStuckCarCheck::AttemptToWarpVehicle) = GLOBAL_ADDRESS_BY_VERSION(0x463A60, 0, 0, 0, 0, 0); + +bool CStuckCarCheck::AttemptToWarpVehicle(CVehicle *vehicle, CVector *origin, float orientation) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStuckCarCheck::AttemptToWarpVehicle), this, vehicle, origin, orientation); +} + +int addrof(CStuckCarCheck::ClearStuckFlagForCar) = ADDRESS_BY_VERSION(0x463C40, 0, 0, 0, 0, 0); +int gaddrof(CStuckCarCheck::ClearStuckFlagForCar) = GLOBAL_ADDRESS_BY_VERSION(0x463C40, 0, 0, 0, 0, 0); + +void CStuckCarCheck::ClearStuckFlagForCar(int carHandle) { + plugin::CallMethodDynGlobal(gaddrof(CStuckCarCheck::ClearStuckFlagForCar), this, carHandle); +} + +int addrof(CStuckCarCheck::HasCarBeenStuckForAWhile) = ADDRESS_BY_VERSION(0x463C00, 0, 0, 0, 0, 0); +int gaddrof(CStuckCarCheck::HasCarBeenStuckForAWhile) = GLOBAL_ADDRESS_BY_VERSION(0x463C00, 0, 0, 0, 0, 0); + +bool CStuckCarCheck::HasCarBeenStuckForAWhile(int carHandle) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStuckCarCheck::HasCarBeenStuckForAWhile), this, carHandle); +} + +int addrof(CStuckCarCheck::Init) = ADDRESS_BY_VERSION(0x4639E0, 0, 0, 0, 0, 0); +int gaddrof(CStuckCarCheck::Init) = GLOBAL_ADDRESS_BY_VERSION(0x4639E0, 0, 0, 0, 0, 0); + +void CStuckCarCheck::Init() { + plugin::CallMethodDynGlobal(gaddrof(CStuckCarCheck::Init), this); +} + +int addrof(CStuckCarCheck::IsCarInStuckCarArray) = ADDRESS_BY_VERSION(0x463C70, 0, 0, 0, 0, 0); +int gaddrof(CStuckCarCheck::IsCarInStuckCarArray) = GLOBAL_ADDRESS_BY_VERSION(0x463C70, 0, 0, 0, 0, 0); + +bool CStuckCarCheck::IsCarInStuckCarArray(int carHandle) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CStuckCarCheck::IsCarInStuckCarArray), this, carHandle); +} + +int addrof(CStuckCarCheck::Process) = ADDRESS_BY_VERSION(0x465680, 0, 0, 0, 0, 0); +int gaddrof(CStuckCarCheck::Process) = GLOBAL_ADDRESS_BY_VERSION(0x465680, 0, 0, 0, 0, 0); + +void CStuckCarCheck::Process() { + plugin::CallMethodDynGlobal(gaddrof(CStuckCarCheck::Process), this); +} + +int addrof(CStuckCarCheck::RemoveCarFromCheck) = ADDRESS_BY_VERSION(0x463B80, 0, 0, 0, 0, 0); +int gaddrof(CStuckCarCheck::RemoveCarFromCheck) = GLOBAL_ADDRESS_BY_VERSION(0x463B80, 0, 0, 0, 0, 0); + +void CStuckCarCheck::RemoveCarFromCheck(int carHandle) { + plugin::CallMethodDynGlobal(gaddrof(CStuckCarCheck::RemoveCarFromCheck), this, carHandle); +} + +int addrof(CStuckCarCheck::ResetArrayElement) = ADDRESS_BY_VERSION(0x463970, 0, 0, 0, 0, 0); +int gaddrof(CStuckCarCheck::ResetArrayElement) = GLOBAL_ADDRESS_BY_VERSION(0x463970, 0, 0, 0, 0, 0); + +void CStuckCarCheck::ResetArrayElement(unsigned short index) { + plugin::CallMethodDynGlobal(gaddrof(CStuckCarCheck::ResetArrayElement), this, index); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CStuckCarCheck.h b/third-party/plugin-sdk/plugin_sa/game_sa/CStuckCarCheck.h new file mode 100644 index 00000000..c81ed29a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CStuckCarCheck.h @@ -0,0 +1,44 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVehicle.h" +#include "CVector.h" + +class PLUGIN_API CStuckCarCheck { +public: + + struct { + int m_nCarHandle; + CVector m_vCarPos; + int m_nStartTime; + float m_fDistance; + int m_nTime; + bool m_bCarStuck; + char field_1D; + char m_bStuck; + char m_bFlipped; + char m_bbWarp; + char pathID; + char __pad[2]; + } m_aStuckCars[16]; + + SUPPORTED_10US void AddCarToCheck(int carHandle, float distance, unsigned int time, unsigned char a5, unsigned char bStuck, unsigned char bFlipped, unsigned char bWarp, signed char pathID); + SUPPORTED_10US bool AttemptToWarpVehicle(CVehicle *vehicle, CVector *origin, float orientation); + SUPPORTED_10US void ClearStuckFlagForCar(int carHandle); + SUPPORTED_10US bool HasCarBeenStuckForAWhile(int carHandle); + SUPPORTED_10US void Init(); + SUPPORTED_10US bool IsCarInStuckCarArray(int carHandle); + SUPPORTED_10US void Process(); + SUPPORTED_10US void RemoveCarFromCheck(int carHandle); + SUPPORTED_10US void ResetArrayElement(unsigned short index); +}; + +VALIDATE_SIZE(CStuckCarCheck, 0x240); + +#include "meta/meta.CStuckCarCheck.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTask.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTask.cpp new file mode 100644 index 00000000..e8aadd0e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTask.cpp @@ -0,0 +1,47 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTask.h" + +void *CTask::operator new(unsigned int size) +{ + return ((CTask *(__cdecl *)(unsigned int))0x61A5A0)(size); +} + +void CTask::operator delete(void *object) +{ + ((void (__cdecl *)(void *))0x61A5B0)(object); +} + +CTask *CTask::Clone() +{ + return ((CTask *(__thiscall *)(CTask *))plugin::GetVMT(this, 1))(this); +} + +CTask *CTask::GetSubTask() +{ + return ((CTask *(__thiscall *)(CTask *))plugin::GetVMT(this, 2))(this); +} + +bool CTask::IsSimple() +{ + return ((bool (__thiscall *)(CTask *))plugin::GetVMT(this, 3))(this); +} + +eTaskType CTask::GetId() +{ + return ((eTaskType (__thiscall *)(CTask *))plugin::GetVMT(this, 4))(this); +} + +void CTask::StopTimer(class CEvent *_event) +{ + ((void (__thiscall *)(CTask *, class CEvent *))plugin::GetVMT(this, 5))(this, _event); +} + +bool CTask::MakeAbortable(class CPed *ped, eAbortPriority priority, class CEvent *_event) +{ + return ((bool (__thiscall *)(CTask *, CPed *, int, class CEvent *))plugin::GetVMT(this, 6))(this, ped, priority, _event); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTask.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTask.h new file mode 100644 index 00000000..d3d135e5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTask.h @@ -0,0 +1,38 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "eTaskType.h" + +enum eAbortPriority +{ + ABORT_PRIORITY_LEISURE = 0, + ABORT_PRIORITY_URGENT, + ABORT_PRIORITY_IMMEDIATE +}; + +class PLUGIN_API CTask { + CTask() = delete; +protected: + CTask(plugin::dummy_func_t) {} +public: + class CTask *m_pParentTask; + + void *operator new(unsigned int size); + void operator delete(void *object); + + virtual ~CTask() {} + virtual class CTask *Clone();//=0 + virtual class CTask *GetSubTask();//=0 + virtual bool IsSimple();//=0 + virtual eTaskType GetId();//=0 + virtual void StopTimer(class CEvent *_event); + virtual bool MakeAbortable(class CPed *ped, eAbortPriority priority, class CEvent *_event);//=0 +}; + +VALIDATE_SIZE(CTask, 8); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplex.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplex.cpp new file mode 100644 index 00000000..f0060043 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplex.cpp @@ -0,0 +1,32 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplex.h" + +CTaskComplex::CTaskComplex() : CTask(plugin::dummy) +{ + plugin::CallMethod<0x61A3B0, CTaskComplex *>(this); +} + +void CTaskComplex::SetSubTask(CTask *subTask) +{ + ((void (__thiscall *)(CTaskComplex *, CTask *))plugin::GetVMT(this, 7))(this, subTask); +} + +CTask *CTaskComplex::CreateNextSubTask(class CPed *ped) +{ + return ((CTask *(__thiscall *)(CTaskComplex *, class CPed *))plugin::GetVMT(this, 8))(this, ped); +} + +CTask *CTaskComplex::CreateFirstSubTask(class CPed *ped) +{ + return ((CTask *(__thiscall *)(CTaskComplex *, class CPed *))plugin::GetVMT(this, 9))(this, ped); +} + +CTask *CTaskComplex::ControlSubTask(class CPed *ped) +{ + return ((CTask *(__thiscall *)(CTaskComplex *, class CPed *))plugin::GetVMT(this, 10))(this, ped); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplex.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplex.h new file mode 100644 index 00000000..7cf692d7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplex.h @@ -0,0 +1,26 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTask.h" + +class PLUGIN_API CTaskComplex : public CTask { +protected: + CTaskComplex(plugin::dummy_func_t a) : CTask(a) {} +public: + CTaskComplex(); + CTask *m_pSubTask; + + // vtable + virtual void SetSubTask(CTask *subTask); + virtual CTask *CreateNextSubTask(class CPed *ped);//=0 + virtual CTask *CreateFirstSubTask(class CPed *ped);//=0 + virtual CTask *ControlSubTask(class CPed *ped);//=0 +}; + +VALIDATE_SIZE(CTaskComplex, 0xC); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexClimb.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexClimb.cpp new file mode 100644 index 00000000..edfac2f9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexClimb.cpp @@ -0,0 +1,13 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexClimb.h" + +CTaskComplexClimb::CTaskComplexClimb() : CTaskComplexJump(plugin::dummy) +{ + plugin::CallMethod<0x46A630, CTaskComplexClimb*>(this); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexClimb.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexClimb.h new file mode 100644 index 00000000..cd5ac537 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexClimb.h @@ -0,0 +1,21 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplexJump.h" + +class PLUGIN_API CTaskComplexClimb : public CTaskComplexJump { +protected: + CTaskComplexClimb(plugin::dummy_func_t a) : CTaskComplexJump(a) {} +public: + + CTaskComplexClimb(); +}; + +VALIDATE_SIZE(CTaskComplexClimb, 0x14); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexCopInCar.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexCopInCar.cpp new file mode 100644 index 00000000..2e4bdb2b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexCopInCar.cpp @@ -0,0 +1,14 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ + +#include "CTaskComplexCopInCar.h" + +CTaskComplexCopInCar::CTaskComplexCopInCar(CVehicle* pVeh,CPed* pCop1,CPed* pCop2,bool arg3) + : CTaskComplex(plugin::dummy) , m_timer1(plugin::dummy) , m_timer2(plugin::dummy) +{ + ((void(__thiscall *)(CTaskComplexCopInCar *, CVehicle*, CPed*, CPed*, bool))0x68C7F0)(this, pVeh, pCop1, pCop2, arg3); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexCopInCar.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexCopInCar.h new file mode 100644 index 00000000..b9c6756a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexCopInCar.h @@ -0,0 +1,30 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" +#include "CVehicle.h" +#include "CPed.h" + +class PLUGIN_API CTaskComplexCopInCar : public CTaskComplex { +protected: + CTaskComplexCopInCar(plugin::dummy_func_t a) : CTaskComplex(a), m_timer1(a), m_timer2(a) {} +public: + CVehicle *m_pVehicle; + CPed *m_pCop1; + CPed *m_pCop2; + CTaskTimer m_timer1; + CTaskTimer m_timer2; + unsigned char m_nFlags; + char __flags[3]; + + CTaskComplexCopInCar(CVehicle* pVeh, CPed* pCop1, CPed* pCop2, bool arg3); +}; + +VALIDATE_SIZE(CTaskComplexCopInCar, 0x34); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexDie.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexDie.cpp new file mode 100644 index 00000000..d93550d2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexDie.cpp @@ -0,0 +1,17 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexDie.h" + +CTaskComplexDie::CTaskComplexDie(eWeaponType nWeaponType, int animGroup, int animID, float fBlendDelta, + float fAnimSpeed, bool bBeingKilledByStealth, bool bFallingToDeath, int nFallToDeathDir, bool bFallToDeathOverRailing) + : CTaskComplex(plugin::dummy) +{ + plugin::CallMethod<0x630040, CTaskComplexDie*, eWeaponType, int, int, float, float, bool, bool, int, bool> + (this, nWeaponType, animGroup, animID, fBlendDelta, fAnimSpeed, bBeingKilledByStealth, + bFallingToDeath, nFallToDeathDir, bFallToDeathOverRailing); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexDie.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexDie.h new file mode 100644 index 00000000..b228e482 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexDie.h @@ -0,0 +1,44 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" +#include "eWeaponType.h" +#include "CVehicle.h" + +class PLUGIN_API CTaskComplexDie : public CTaskComplex { +protected: + CTaskComplexDie(plugin::dummy_func_t a) : CTaskComplex(a) {} +public: + eWeaponType m_nWeaponType; // Means Of Death + int m_animGroup; + int m_animID; + float m_fBlendDelta; + float m_fAnimSpeed; + + union + { + unsigned int m_nFlags; + struct + { + unsigned int bBeingKilledByStealth : 1; + unsigned int bFallingToDeath : 1; + unsigned int bFallToDeathOverRailing : 1; + + }; + }; + int nFallToDeathDir; + + + CTaskComplexDie(eWeaponType nWeaponType/*=WEAPONTYPE_UNARMED*/, int animGroup/*ANIM_STD_PED*/, int animID/*ANIM_STD_KO_FRONT*/, + float fBlendDelta, float fAnimSpeed, bool bBeingKilledByStealth, bool bFallingToDeath, int nFallToDeathDir, bool bFallToDeathOverRailing); + +}; + +VALIDATE_SIZE(CTaskComplexDie, 0x28); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterBoatAsDriver.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterBoatAsDriver.cpp new file mode 100644 index 00000000..de4c2abd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterBoatAsDriver.cpp @@ -0,0 +1,13 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ + +#include "CTaskComplexEnterBoatAsDriver.h" + +CTaskComplexEnterBoatAsDriver::CTaskComplexEnterBoatAsDriver(CVehicle* pTargetVehicle) : CTaskComplex(plugin::dummy) +{ + plugin::CallMethod<0x63B5E0, CTaskComplexEnterBoatAsDriver*, CVehicle*>(this, pTargetVehicle); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterBoatAsDriver.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterBoatAsDriver.h new file mode 100644 index 00000000..1b72bb9b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterBoatAsDriver.h @@ -0,0 +1,24 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" +#include "CVehicle.h" + +class PLUGIN_API CTaskComplexEnterBoatAsDriver : public CTaskComplex { +protected: + CTaskComplexEnterBoatAsDriver(plugin::dummy_func_t a) : CTaskComplex(a) {} +public: + CVehicle* m_pTargetVehicle; + + CTaskComplexEnterBoatAsDriver(CVehicle* pTargetVehicle); + +}; + +VALIDATE_SIZE(CTaskComplexEnterBoatAsDriver, 0x10); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCar.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCar.cpp new file mode 100644 index 00000000..45fde353 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCar.cpp @@ -0,0 +1,14 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexEnterCar.h" + +CTaskComplexEnterCar::CTaskComplexEnterCar(CVehicle* pTargetVehicle, bool bAsDriver, bool bQuitAfterOpeningDoor, + bool bQuitAfterDraggingPedOut, bool bCarryOnAfterFallingOff) : CTaskComplex(plugin::dummy) +{ + plugin::CallMethod<0x63A220, CTaskComplexEnterCar*, CVehicle*, bool, bool, bool, bool> + (this, pTargetVehicle, bAsDriver, bQuitAfterOpeningDoor, bQuitAfterDraggingPedOut, bCarryOnAfterFallingOff); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCar.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCar.h new file mode 100644 index 00000000..33f52c60 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCar.h @@ -0,0 +1,72 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" +#include "CPathFind.h" +#include "CTaskUtilityLineUpPedWithCar.h" + +enum eTargetDoor +{ + TARGET_DOOR_FRONT_LEFT = 0, + TARGET_DOOR_FRONT_RIGHT = 8, + TARGET_DOOR_REAR_RIGHT = 9, + TARGET_DOOR_REAR_LEFT = 11 +}; + +class PLUGIN_API CTaskComplexEnterCar : public CTaskComplex { +protected: + CTaskComplexEnterCar(plugin::dummy_func_t a) : CTaskComplex(a) {} +public: + CVehicle* m_pTargetVehicle; + union + { + unsigned char m_nFlags; + struct + { + unsigned char m_bAsDriver : 1; + unsigned char m_bQuitAfterOpeningDoor : 1; + unsigned char m_bQuitAfterDraggingPedOut : 1; + unsigned char m_bCarryOnAfterFallingOff : 1; + }; + }; +private: + char _pad[3]; +public: + int m_nTargetDoor; + int m_nTargetDoorOppositeToFlag; + int m_nTargetSeat; + int m_nDraggedPedDownTime; + int m_nMoveState; // see eMoveState + + unsigned char m_nNumGettingInSet; + unsigned char m_nCamMovementChoice; +private: + char _pad2[2]; +public: + CVector m_vTargetDoorPos; + CTaskUtilityLineUpPedWithCar* m_pTaskUtilityLineUpPedWithCar; + bool m_bIsAborting; +private: + char _pad3[3]; +public: + CPed* m_pDraggedPed; + unsigned char m_nDoorFlagsSet; // used for CVehicle::SetGettingInFlags +private: + char _pad4[3]; +public: + float m_fCruiseSpeed; + int m_nEnterCarStartTime; + + // Shouldn't be used directly, use CTaskComplexEnterCarAsDriver or CTaskComplexEnterCarAsPassenger instead + CTaskComplexEnterCar(CVehicle* pTargetVehicle, bool bAsDriver, bool bQuitAfterOpeningDoor, + bool bQuitAfterDraggingPedOut, bool bCarryOnAfterFallingOff = false); + +}; + +VALIDATE_SIZE(CTaskComplexEnterCar, 0x50); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCarAsDriver.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCarAsDriver.cpp new file mode 100644 index 00000000..b2cf8e2e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCarAsDriver.cpp @@ -0,0 +1,12 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexEnterCarAsDriver.h" + +CTaskComplexEnterCarAsDriver::CTaskComplexEnterCarAsDriver(CVehicle* pTargetVehicle) : CTaskComplexEnterCar(plugin::dummy) +{ + plugin::CallMethod<0x6402F0, CTaskComplexEnterCarAsDriver*, CVehicle*>(this,pTargetVehicle); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCarAsDriver.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCarAsDriver.h new file mode 100644 index 00000000..f9fdc3a6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCarAsDriver.h @@ -0,0 +1,21 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplexEnterCar.h" + +class PLUGIN_API CTaskComplexEnterCarAsDriver : public CTaskComplexEnterCar { +protected: + CTaskComplexEnterCarAsDriver(plugin::dummy_func_t a) : CTaskComplexEnterCar(a) {} +public: + + CTaskComplexEnterCarAsDriver(CVehicle* pTargetVehicle); + +}; + +VALIDATE_SIZE(CTaskComplexEnterCarAsDriver, 0x50); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCarAsPassenger.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCarAsPassenger.cpp new file mode 100644 index 00000000..6c622073 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCarAsPassenger.cpp @@ -0,0 +1,13 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexEnterCarAsPassenger.h" + +CTaskComplexEnterCarAsPassenger::CTaskComplexEnterCarAsPassenger(CVehicle* pTargetVehicle, int nTargetSeat, bool bCarryOnAfterFallingOff) : CTaskComplexEnterCar(plugin::dummy) +{ + plugin::CallMethod<0x640340, CTaskComplexEnterCarAsPassenger*, CVehicle*,int,bool> + (this, pTargetVehicle,nTargetSeat,bCarryOnAfterFallingOff); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCarAsPassenger.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCarAsPassenger.h new file mode 100644 index 00000000..6cff3a1d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexEnterCarAsPassenger.h @@ -0,0 +1,21 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplexEnterCar.h" + +class PLUGIN_API CTaskComplexEnterCarAsPassenger : public CTaskComplexEnterCar { +protected: + CTaskComplexEnterCarAsPassenger(plugin::dummy_func_t a) : CTaskComplexEnterCar(a) {} +public: + + CTaskComplexEnterCarAsPassenger(CVehicle* pTargetVehicle, int nTargetSeat, bool bCarryOnAfterFallingOff); + +}; + +VALIDATE_SIZE(CTaskComplexEnterCarAsPassenger, 0x50); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexFacial.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexFacial.cpp new file mode 100644 index 00000000..ddab962f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexFacial.cpp @@ -0,0 +1,13 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ + +#include "CTaskComplexFacial.h" + +CTaskComplexFacial::CTaskComplexFacial() : CTaskComplex(plugin::dummy) +{ + plugin::CallMethod<0x690D20, CTaskComplexFacial*>(this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexFacial.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexFacial.h new file mode 100644 index 00000000..e514c850 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexFacial.h @@ -0,0 +1,29 @@ +/* +Plugin-SDK (Grand Theft Auto) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" +#include "CTaskSimpleFacial.h" + +class PLUGIN_API CTaskComplexFacial : public CTaskComplex { +protected: + CTaskComplexFacial(plugin::dummy_func_t a) : CTaskComplex(a) {} +public: + bool m_bNotPlayer; + bool m_bStarted; + bool m_bIsAborting; + eFacialExpression m_nFacialExpression1; + int m_nDuration1; + eFacialExpression m_nFacialExpression2; + int m_nDuration2; + + CTaskComplexFacial(); +}; + +VALIDATE_SIZE(CTaskComplexFacial, 0x20); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexJump.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexJump.cpp new file mode 100644 index 00000000..a038dae9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexJump.cpp @@ -0,0 +1,13 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexJump.h" + +CTaskComplexJump::CTaskComplexJump(unsigned int jumpType) : CTaskComplex(plugin::dummy) +{ + plugin::CallMethod<0x67A030, CTaskComplexJump*, unsigned int>(this, jumpType); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexJump.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexJump.h new file mode 100644 index 00000000..bb97e93b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexJump.h @@ -0,0 +1,24 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" + +class PLUGIN_API CTaskComplexJump : public CTaskComplex { +protected: + CTaskComplexJump(plugin::dummy_func_t a) : CTaskComplex(a) {} +public: + unsigned int m_nType; // 0 - jump , 1 - climb + bool bUnkFlag; + + // 0 - jump , 1 - climb + CTaskComplexJump(unsigned int jumpType); +}; + +VALIDATE_SIZE(CTaskComplexJump, 0x14); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexKillPedFromBoat.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexKillPedFromBoat.cpp new file mode 100644 index 00000000..2057a1a1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexKillPedFromBoat.cpp @@ -0,0 +1,13 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ + +#include "CTaskComplexKillPedFromBoat.h" + +CTaskComplexKillPedFromBoat::CTaskComplexKillPedFromBoat(CPed* ped) : CTaskComplex(plugin::dummy) +{ + ((void(__thiscall *)(CTaskComplexKillPedFromBoat *,CPed*))0x6227C0)(this,ped); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexKillPedFromBoat.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexKillPedFromBoat.h new file mode 100644 index 00000000..28a3883f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexKillPedFromBoat.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" +#include "CPed.h" + +class PLUGIN_API CTaskComplexKillPedFromBoat : public CTaskComplex { +protected: + CTaskComplexKillPedFromBoat(plugin::dummy_func_t a) : CTaskComplex(a) {} +public: + CPed *pPed; + + CTaskComplexKillPedFromBoat(CPed* ped); +}; + +VALIDATE_SIZE(CTaskComplexKillPedFromBoat, 0x10); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexKillPedOnFoot.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexKillPedOnFoot.cpp new file mode 100644 index 00000000..65a14dd1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexKillPedOnFoot.cpp @@ -0,0 +1,14 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexKillPedOnFoot.h" + +CTaskComplexKillPedOnFoot::CTaskComplexKillPedOnFoot(CPed *target, int time, int specFlags, int delay, int chance, char a7) : CTaskComplex(plugin::dummy), + m_taskTimer(plugin::dummy) +{ + ((void (__thiscall *)(CTaskComplexKillPedOnFoot *, CPed *, int, int, int, int, char))0x620E30) + (this, target, time, specFlags, delay, chance, a7); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexKillPedOnFoot.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexKillPedOnFoot.h new file mode 100644 index 00000000..273597d6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexKillPedOnFoot.h @@ -0,0 +1,31 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" +#include "CTaskTimer.h" +#include "CPed.h" + +class PLUGIN_API CTaskComplexKillPedOnFoot : public CTaskComplex { +protected: + CTaskComplexKillPedOnFoot(plugin::dummy_func_t a) : CTaskComplex(a) , m_taskTimer(a) {} +public: + unsigned char m_nFlags; + CPed *m_pTarget; + unsigned int m_nAttackFlags; + unsigned int m_nActionDelay; + unsigned int m_nActionChance; + char field_20; + unsigned int m_nLaunchTime; + signed int m_nTime; + CTaskTimer m_taskTimer; + + CTaskComplexKillPedOnFoot(CPed *target, int time, int specFlags, int delay, int chance, char a7); +}; + +VALIDATE_SIZE(CTaskComplexKillPedOnFoot, 0x38); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexLeaveCar.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexLeaveCar.cpp new file mode 100644 index 00000000..0f07ec79 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexLeaveCar.cpp @@ -0,0 +1,14 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ + +#include "CTaskComplexLeaveCar.h" + +CTaskComplexLeaveCar::CTaskComplexLeaveCar(CVehicle* pTargetVehicle, int nTargetDoor, int nDelayTime, bool bSensibleLeaveCar, bool bForceGetOut) : CTaskComplex(plugin::dummy) +{ + plugin::CallMethod<0x63B8C0, CTaskComplexLeaveCar*, CVehicle*, int, int, bool, bool> + (this, pTargetVehicle, nTargetDoor, nDelayTime, bSensibleLeaveCar, bForceGetOut); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexLeaveCar.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexLeaveCar.h new file mode 100644 index 00000000..2da6d30d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexLeaveCar.h @@ -0,0 +1,49 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" +#include "CVehicle.h" +#include "CTaskUtilityLineUpPedWithCar.h" + +class PLUGIN_API CTaskComplexLeaveCar : public CTaskComplex { +protected: + CTaskComplexLeaveCar(plugin::dummy_func_t a) : CTaskComplex(a) {} +public: + CVehicle* m_pTargetVehicle; + int m_nTargetDoor; + int m_nDelayTime; + bool m_bSensibleLeaveCar; + bool m_bForceGetOut; + bool m_bDie; +private: + char _pad1; +public: + + CTaskUtilityLineUpPedWithCar *m_pTaskUtilityLineUpPedWithCa; + unsigned char m_nDoorFlagsSet; + unsigned char m_nNumGettingInSet; +private: + char _pad2[2]; +public: + + int m_nDieAnimID; + float m_fDieAnimBlendDelta; + float m_fDieAnimSpeed; + + bool m_bIsInAir; +private: + char _pad3[3]; +public: + + CTaskComplexLeaveCar(CVehicle* pTargetVehicle, int nTargetDoor, int nDelayTime, bool bSensibleLeaveCar, bool bForceGetOut); + +}; + +VALIDATE_SIZE(CTaskComplexLeaveCar, 0x34); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexPlayHandSignalAnim.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexPlayHandSignalAnim.cpp new file mode 100644 index 00000000..bade1397 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexPlayHandSignalAnim.cpp @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexPlayHandSignalAnim.h" + +// Converted from thiscall void CTaskComplexPlayHandSignalAnim::CTaskComplexPlayHandSignalAnim(AnimationId animationId, float blendFactor) 0x61B2B0 +CTaskComplexPlayHandSignalAnim::CTaskComplexPlayHandSignalAnim(AnimationId animationId, float blendFactor) : CTaskComplex(plugin::dummy) { + ((void(__thiscall *)(CTaskComplexPlayHandSignalAnim*, AnimationId, float))0x61B2B0)(this, animationId, blendFactor); +} + +// Converted from thiscall CTask* CTaskComplexPlayHandSignalAnim::CreateSubTask(int taskType) 0x61B2F0 +CTask* CTaskComplexPlayHandSignalAnim::CreateSubTask(int taskType) { + return ((CTask* (__thiscall *)(CTaskComplexPlayHandSignalAnim*, int))0x61B2F0)(this, taskType); +} + +// Converted from thiscall int CTaskComplexPlayHandSignalAnim::GetAnimIdForPed(CPed *ped) 0x61B460 +int CTaskComplexPlayHandSignalAnim::GetAnimIdForPed(CPed* ped) { + return ((int(__thiscall *)(CTaskComplexPlayHandSignalAnim*, CPed*))0x61B460)(this, ped); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexPlayHandSignalAnim.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexPlayHandSignalAnim.h new file mode 100644 index 00000000..2c928d28 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexPlayHandSignalAnim.h @@ -0,0 +1,35 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" + +typedef int AnimationId; + +class PLUGIN_API CTaskComplexPlayHandSignalAnim : public CTaskComplex { +public: + int m_animationId; + float m_fBlendFactor; + union { + unsigned char m_nFlags; + struct + { + unsigned char m_bLeftHandLoaded : 1; + unsigned char m_bRightHandLoaded : 1; + unsigned char m_bAnimationLoaded : 1; + unsigned char m_bUseFatHands : 1; + }; + }; + unsigned char _pad[3]; + + CTaskComplexPlayHandSignalAnim(AnimationId animationId, float blendFactor); + CTask* CreateSubTask(int taskType); + int GetAnimIdForPed(CPed* ped); +}; + +VALIDATE_SIZE(CTaskComplexPlayHandSignalAnim, 0x18); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexProstituteSolicit.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexProstituteSolicit.cpp new file mode 100644 index 00000000..aba140bb --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexProstituteSolicit.cpp @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexProstituteSolicit.h" + +// Converted from thiscall void CTaskComplexProstituteSolicit::CTaskComplexProstituteSolicit(CPed *pClient) 0x661A60 +CTaskComplexProstituteSolicit::CTaskComplexProstituteSolicit(CPed* pClient) : CTaskComplex(plugin::dummy) { + plugin::CallMethod<0x661A60, CTaskComplexProstituteSolicit *, CPed*>(this, pClient); +} + +// Converted from thiscall CTask* CTaskComplexProstituteSolicit::CreateSubTask(int taskId,CPed *pProstitute) 0x666360 +CTask* CTaskComplexProstituteSolicit::CreateSubTask(int taskId, CPed* pProstitute) { + return plugin::CallMethodAndReturn(this, taskId, pProstitute); +} + +// Converted from cdecl void CTaskComplexProstituteSolicit::GetRidOfPlayerProstitute(void) 0x661D30 +void CTaskComplexProstituteSolicit::GetRidOfPlayerProstitute() { + plugin::Call<0x661D30>(); +} + +// Converted from cdecl bool CTaskComplexProstituteSolicit::IsTaskValid(CPed *pProstitute,CPed *pClient) 0x661BB0 +bool CTaskComplexProstituteSolicit::IsTaskValid(CPed* pProstitute, CPed* pClient) { + return plugin::CallAndReturn(pProstitute, pClient); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexProstituteSolicit.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexProstituteSolicit.h new file mode 100644 index 00000000..bf463d7c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexProstituteSolicit.h @@ -0,0 +1,48 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" +#include "CPed.h" + +class CTaskComplexProstituteSolicit : public CTaskComplex { +protected: + CTaskComplexProstituteSolicit(plugin::dummy_func_t a) : CTaskComplex(a) {} +public: + CPed *m_pClient; // player only + CVector m_vecVehiclePosn; + int m_nLastSavedTime; + int m_nNextTimeToCheckForSecludedPlace; // when we will scan nearby peds again + int m_nLastPaymentTime; // when CJ will pay $2 again + short m_nVehicleMovementTimer; // wait some time and push vehicle again + short m_nCurrentTimer; + struct { + unsigned short bSearchingForSecludedPlace : 1; + unsigned short bSexProcessStarted : 1; + unsigned short bTaskCanBeFinished : 1; + unsigned short bPedsCanPotentiallySeeThis : 1; + unsigned short bPedsCanSeeThis : 1; + unsigned short bCopsCanSeeThis : 1; + unsigned short bUnused07 : 1; + unsigned short bUnused08 : 1; + unsigned short bMoveCameraDown : 1; + unsigned short bShouldProstituteBeQuiet : 1; + unsigned short bPlayerHasAcceptedSexProposition : 1; + unsigned short bVehicleShifted : 1; + unsigned short bSecludedPlaceMessageShown : 1; + } m_nFlags; +private: + unsigned short _pad2E; +public: + CTaskComplexProstituteSolicit(CPed* pClient); + CTask* CreateSubTask(int taskId, CPed* pProstitute); + static void GetRidOfPlayerProstitute(); + static bool IsTaskValid(CPed* pProstitute, CPed* pClient); +}; + +VALIDATE_SIZE(CTaskComplexProstituteSolicit, 0x30); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexSequence.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexSequence.cpp new file mode 100644 index 00000000..c36d3ec1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexSequence.cpp @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexSequence.h" + +CTaskComplexSequence::CTaskComplexSequence() : CTaskComplex(plugin::dummy) +{ + plugin::CallMethod<0x632BD0, CTaskComplexSequence *>(this); +} + + +CTaskComplexSequence::~CTaskComplexSequence() +{ + plugin::CallMethod<0x6389F0, CTaskComplexSequence *>(this); +} + +bool CTaskComplexSequence::AddTask(CTask * pTask) +{ + return plugin::CallMethodAndReturn(this, pTask); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexSequence.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexSequence.h new file mode 100644 index 00000000..b2d35b91 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexSequence.h @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" + +class CTaskComplexSequence : public CTaskComplex { +protected: + CTaskComplexSequence(plugin::dummy_func_t a) : CTaskComplex(a) {} +public: + CTaskComplexSequence(); + ~CTaskComplexSequence(); + bool AddTask(CTask *pTask); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexStuckInAir.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexStuckInAir.cpp new file mode 100644 index 00000000..d6402fd0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexStuckInAir.cpp @@ -0,0 +1,13 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ + +#include "CTaskComplexStuckInAir.h" + +CTaskComplexStuckInAir::CTaskComplexStuckInAir() : CTaskComplex(plugin::dummy) +{ + plugin::CallMethod<0x67BA40, CTaskComplexStuckInAir*>(this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexStuckInAir.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexStuckInAir.h new file mode 100644 index 00000000..43f55afd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexStuckInAir.h @@ -0,0 +1,22 @@ +/* +Plugin-SDK (Grand Theft Auto) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" + +class PLUGIN_API CTaskComplexStuckInAir : public CTaskComplex { +protected: + CTaskComplexStuckInAir(plugin::dummy_func_t a) : CTaskComplex(a) {} +public: + + + CTaskComplexStuckInAir(); +}; + +VALIDATE_SIZE(CTaskComplexStuckInAir, 0xC); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexSunbathe.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexSunbathe.cpp new file mode 100644 index 00000000..b04448af --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexSunbathe.cpp @@ -0,0 +1,14 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexSunbathe.h" + +CTaskComplexSunbathe::CTaskComplexSunbathe(CObject* pTowel, bool bStartStanding) + : CTaskComplex(plugin::dummy) , m_BathingTimer(plugin::dummy) +{ + plugin::CallMethod<0x631F80, CTaskComplexSunbathe*, CObject*, bool>(this, pTowel, bStartStanding); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexSunbathe.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexSunbathe.h new file mode 100644 index 00000000..3c1590d4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexSunbathe.h @@ -0,0 +1,48 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" +#include "CTaskTimer.h" +#include "CAnimBlock.h" +#include "CObject.h" + +enum eSunbatherType : unsigned int +{ + SUNBATHER_MALE_1 = 0, + SUNBATHER_MALE_2, + SUNBATHER_FEMALE_1, + SUNBATHER_FEMALE_2, + SUNBATHER_FEMALE_3, +}; + +class PLUGIN_API CTaskComplexSunbathe : public CTaskComplex { +protected: + CTaskComplexSunbathe(plugin::dummy_func_t a) : CTaskComplex(a), m_BathingTimer(a) {} +public: + bool m_bStartStanding; + bool m_bBathing; + bool m_bBeachAnimsReferenced; + bool m_bSunbatheAnimsReferenced; + bool m_bAborted; +private: + char _pad[3]; +public: + CTaskTimer m_BathingTimer; + eSunbatherType m_SunbatherType; + CAnimBlock* m_pBeachAnimBlock; + CAnimBlock* m_pSunbatheAnimBlock; + int m_BeachAnimBlockIndex; + int m_SunbatheAnimBlockIndex; + CObject* m_pTowel; + + CTaskComplexSunbathe(CObject* pTowel, bool bStartStanding); +}; + +VALIDATE_SIZE(CTaskComplexSunbathe, 0x38); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexUseMobilePhone.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexUseMobilePhone.cpp new file mode 100644 index 00000000..28afbb46 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexUseMobilePhone.cpp @@ -0,0 +1,14 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexUseMobilePhone.h" + +CTaskComplexUseMobilePhone::CTaskComplexUseMobilePhone(int nDuration) + : CTaskComplex(plugin::dummy) , m_timer(plugin::dummy) +{ + plugin::CallMethod<0x6348A0, CTaskComplexUseMobilePhone*, int>(this, nDuration); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexUseMobilePhone.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexUseMobilePhone.h new file mode 100644 index 00000000..a01916c7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexUseMobilePhone.h @@ -0,0 +1,26 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" +#include "CTaskTimer.h" + +class PLUGIN_API CTaskComplexUseMobilePhone : public CTaskComplex { +protected: + CTaskComplexUseMobilePhone(plugin::dummy_func_t a) : CTaskComplex(a) , m_timer(a) {} +public: + int m_nDuration; + CTaskTimer m_timer; + bool m_bIsAborting; + bool m_bQuit; + + CTaskComplexUseMobilePhone(int nDuration); +}; + +VALIDATE_SIZE(CTaskComplexUseMobilePhone, 0x20); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexWander.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexWander.cpp new file mode 100644 index 00000000..4e226d5a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexWander.cpp @@ -0,0 +1,14 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexWander.h" + +CTaskComplexWander::CTaskComplexWander(int MoveState, unsigned char Dir, bool bWanderSensibly, float TargetRadius) + : CTaskComplex(plugin::dummy) +{ + plugin::CallMethod<0x66F450, CTaskComplexWander*, int, unsigned char, bool, float> + (this, MoveState, Dir, bWanderSensibly, TargetRadius); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexWander.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexWander.h new file mode 100644 index 00000000..ad4d6ae1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexWander.h @@ -0,0 +1,56 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplex.h" +#include "CNodeAddress.h" + +enum eWanderType +{ + WANDER_TYPE_STANDARD = 0, + WANDER_TYPE_COP, + WANDER_TYPE_MEDIC, + WANDER_TYPE_CRIMINAL, + WANDER_TYPE_GANG, + WANDER_TYPE_SHOP, + WANDER_TYPE_FLEE, + WANDER_TYPE_PROSTITUTE +}; + +class PLUGIN_API CTaskComplexWander : public CTaskComplex { +protected: + CTaskComplexWander(plugin::dummy_func_t a) : CTaskComplex(a) {} +public: + int m_nMoveState; // see eMoveState + unsigned char m_nDir; +private: + char _pad[3]; +public: + float m_fTargetRadius; + + CNodeAddress m_LastNode; + CNodeAddress m_NextNode; + + int m_nLastUpdateDirFrameCount; + + union + { + unsigned char m_nFlags; + struct { + unsigned char m_bWanderSensibly : 1; + unsigned char m_bNewDir : 1; + unsigned char m_bNewNodes : 1; + unsigned char m_bAllNodesBlocked : 1; + }; + }; + + CTaskComplexWander(int MoveState, unsigned char Dir, bool bWanderSensibly, float TargetRadius = 0.5f); + +}; + +VALIDATE_SIZE(CTaskComplexWander, 0x28); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexWanderStandard.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexWanderStandard.cpp new file mode 100644 index 00000000..8865ef8d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexWanderStandard.cpp @@ -0,0 +1,13 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskComplexWanderStandard.h" + +CTaskComplexWanderStandard::CTaskComplexWanderStandard(int MoveState, unsigned char Dir, bool bWanderSensibly) + : CTaskComplexWander(plugin::dummy) , m_TaskTimer(plugin::dummy) +{ + plugin::CallMethod<0x48E4F0, CTaskComplexWanderStandard*, int, unsigned char, bool>(this, MoveState, Dir, bWanderSensibly); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexWanderStandard.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexWanderStandard.h new file mode 100644 index 00000000..c6fbb243 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskComplexWanderStandard.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskComplexWander.h" +#include "CTaskTimer.h" + +class PLUGIN_API CTaskComplexWanderStandard : public CTaskComplexWander { +protected: + CTaskComplexWanderStandard(plugin::dummy_func_t a) : CTaskComplexWander(a) , m_TaskTimer(a) {} +public: + CTaskTimer m_TaskTimer; + int m_nMinNextScanTime; + + CTaskComplexWanderStandard(int MoveState, unsigned char Dir, bool bWanderSensibly = true); +}; + +VALIDATE_SIZE(CTaskComplexWanderStandard, 0x38); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskManager.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskManager.cpp new file mode 100644 index 00000000..196e63b0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskManager.cpp @@ -0,0 +1,107 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskManager.h" + +// Converted from thiscall void CTaskManager::CTaskManager(CPed *ped) 0x6816A0 +CTaskManager::CTaskManager(CPed* ped) { + ((void(__thiscall *)(CTaskManager*, CPed*))0x6816A0)(this, ped); +} + +// Converted from thiscall void CTaskManager::~CTaskManager() 0x6816D0 +CTaskManager::~CTaskManager() { + ((void(__thiscall *)(CTaskManager*))0x6816D0)(this); +} + +// Converted from thiscall CTask* CTaskManager::GetActiveTask(void) 0x681720 +CTask* CTaskManager::GetActiveTask() { + return ((CTask* (__thiscall *)(CTaskManager*))0x681720)(this); +} + +// Converted from thiscall CTask* CTaskManager::FindActiveTaskByType(int taskType) 0x681740 +CTask* CTaskManager::FindActiveTaskByType(int taskType) { + return ((CTask* (__thiscall *)(CTaskManager*, int))0x681740)(this, taskType); +} + +// Converted from thiscall CTask* CTaskManager::FindTaskByType(int taskIndex,int taskType) 0x6817D0 +CTask* CTaskManager::FindTaskByType(int taskIndex, int taskType) { + return ((CTask* (__thiscall *)(CTaskManager*, int, int))0x6817D0)(this, taskIndex, taskType); +} + +// Converted from thiscall CTask* CTaskManager::GetTaskSecondary(int taskIndex) 0x681810 +CTask* CTaskManager::GetTaskSecondary(int taskIndex) { + return ((CTask* (__thiscall *)(CTaskManager*, int))0x681810)(this, taskIndex); +} + +// Converted from thiscall bool CTaskManager::HasTaskSecondary(CTask const*task) 0x681820 +bool CTaskManager::HasTaskSecondary(CTask const* task) { + return ((bool(__thiscall *)(CTaskManager*, CTask const*))0x681820)(this, task); +} + +// Converted from thiscall void CTaskManager::Flush(void) 0x681850 +void CTaskManager::Flush() { + ((void(__thiscall *)(CTaskManager*))0x681850)(this); +} + +// Converted from thiscall void CTaskManager::FlushImmediately(void) 0x6818A0 +void CTaskManager::FlushImmediately() { + ((void(__thiscall *)(CTaskManager*))0x6818A0)(this); +} + +// Converted from thiscall void CTaskManager::SetNextSubTask(CTask *task) 0x681920 +void CTaskManager::SetNextSubTask(CTask* task) { + ((void(__thiscall *)(CTaskManager*, CTask*))0x681920)(this, task); +} + +// Converted from thiscall CTask* CTaskManager::GetSimplestTask(CTask *task) 0x681970 +CTask* CTaskManager::GetSimplestTask(CTask* task) { + return ((CTask* (__cdecl *)(CTask*))0x681970)(task); +} + +// Converted from thiscall void CTaskManager::StopTimers(CEvent const*_event) 0x6819A0 +void CTaskManager::StopTimers(CEvent const* _event) { + ((void(__thiscall *)(CTaskManager*, CEvent const*))0x6819A0)(this, _event); +} + +// Converted from thiscall CTask* CTaskManager::GetSimplestActiveTask(void) 0x6819D0 +CTask* CTaskManager::GetSimplestActiveTask() { + return ((CTask* (__thiscall *)(CTaskManager*))0x6819D0)(this); +} + +// Converted from thiscall CTask* CTaskManager::GetSimplestTask(int taskIndex) 0x681A00 +CTask* CTaskManager::GetSimplestTask(int taskIndex) { + return ((CTask* (__thiscall *)(CTaskManager*, int))0x681A00)(this, taskIndex); +} + +// Converted from thiscall void CTaskManager::AddSubTasks(CTask *task) 0x681A30 +void CTaskManager::AddSubTasks(CTask* task) { + ((void(__thiscall *)(CTaskManager*, CTask*))0x681A30)(this, task); +} + +// Converted from thiscall void CTaskManager::ParentsControlChildren(CTask *task) 0x681A80 +void CTaskManager::ParentsControlChildren(CTask* task) { + ((void(__thiscall *)(CTaskManager*, CTask*))0x681A80)(this, task); +} + +// Converted from thiscall void CTaskManager::SetTask(CTask *task,int taskIndex,bool) 0x681AF0 +void CTaskManager::SetTask(CTask* task, int taskIndex, bool arg2) { + ((void(__thiscall *)(CTaskManager*, CTask*, int, bool))0x681AF0)(this, task, taskIndex, arg2); +} + +// Converted from thiscall void CTaskManager::SetTaskSecondary(CTask *task,int taskIndex) 0x681B60 +void CTaskManager::SetTaskSecondary(CTask* task, int taskIndex) { + ((void(__thiscall *)(CTaskManager*, CTask*, int))0x681B60)(this, task, taskIndex); +} + +// Converted from thiscall void CTaskManager::ClearTaskEventResponse(void) 0x681BD0 +void CTaskManager::ClearTaskEventResponse() { + ((void(__thiscall *)(CTaskManager*))0x681BD0)(this); +} + +// Converted from thiscall void CTaskManager::ManageTasks(void) 0x681C10 +void CTaskManager::ManageTasks() { + ((void(__thiscall *)(CTaskManager*))0x681C10)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskManager.h new file mode 100644 index 00000000..6c2dfdcc --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskManager.h @@ -0,0 +1,61 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTask.h" + +enum ePrimaryTasks //array indexes +{ + TASK_PRIMARY_PHYSICAL_RESPONSE = 0, + TASK_PRIMARY_EVENT_RESPONSE_TEMP, + TASK_PRIMARY_EVENT_RESPONSE_NONTEMP, + TASK_PRIMARY_PRIMARY, + TASK_PRIMARY_DEFAULT, + TASK_PRIMARY_MAX +}; + +enum eSecondaryTasks //array indexes +{ + TASK_SECONDARY_ATTACK = 0, // want duck to be after attack + TASK_SECONDARY_DUCK, // because attack controls ducking movement + TASK_SECONDARY_SAY, + TASK_SECONDARY_FACIAL_COMPLEX, + TASK_SECONDARY_PARTIAL_ANIM, + TASK_SECONDARY_IK, + TASK_SECONDARY_MAX +}; + +class PLUGIN_API CTaskManager { +public: + CTask *m_aPrimaryTasks[5]; + CTask *m_aSecondaryTasks[6]; + class CPed *m_pPed; + + CTaskManager(CPed* ped); + ~CTaskManager(); + CTask* GetActiveTask(); + CTask* FindActiveTaskByType(int taskType); + CTask* FindTaskByType(int taskIndex, int taskType); + CTask* GetTaskSecondary(int taskIndex); + bool HasTaskSecondary(CTask const* task); + void Flush(); + void FlushImmediately(); + void SetNextSubTask(CTask* task); + static CTask* GetSimplestTask(CTask* task); + void StopTimers(CEvent const* _event); + CTask* GetSimplestActiveTask(); + CTask* GetSimplestTask(int taskIndex); + void AddSubTasks(CTask* task); + void ParentsControlChildren(CTask* task); + void SetTask(CTask* task, int taskIndex, bool arg2); + void SetTaskSecondary(CTask* task, int taskIndex); + void ClearTaskEventResponse(); + void ManageTasks(); +}; + +VALIDATE_SIZE(CTaskManager, 0x30); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimple.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimple.cpp new file mode 100644 index 00000000..418690fe --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimple.cpp @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimple.h" + +bool CTaskSimple::ProcessPed(class CPed *ped) +{ + return ((bool (__thiscall *)(CTaskSimple *, class CPed *))plugin::GetVMT(this, 7))(this, ped); +} + +bool CTaskSimple::SetPedPosition(class CPed *ped) +{ + return ((bool (__thiscall *)(CTaskSimple *, class CPed *))plugin::GetVMT(this, 8))(this, ped); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimple.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimple.h new file mode 100644 index 00000000..383f2fbd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimple.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTask.h" + +class PLUGIN_API CTaskSimple : public CTask { + CTaskSimple() = delete; +protected: + CTaskSimple(plugin::dummy_func_t a) : CTask(a) {} +public: + virtual bool ProcessPed(class CPed *ped);//=0 + virtual bool SetPedPosition(class CPed *ped); +}; + +VALIDATE_SIZE(CTaskSimple, 8); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleAnim.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleAnim.cpp new file mode 100644 index 00000000..7fbde375 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleAnim.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleAnim.h" + +CTaskSimpleAnim::CTaskSimpleAnim(bool bHoldLastFrame) : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x61A6C0, CTaskSimpleAnim*, bool>(this, bHoldLastFrame); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleAnim.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleAnim.h new file mode 100644 index 00000000..e46565b1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleAnim.h @@ -0,0 +1,44 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CAnimBlendAssociation.h" + +class PLUGIN_API CTaskSimpleAnim : public CTaskSimple { +protected: + CTaskSimpleAnim(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + CAnimBlendAssociation *m_pAnim; + union + { + unsigned char m_nFlags; + struct + { + unsigned char m_bIsFinished : 1; + unsigned char m_bDontInterrupt : 1; + unsigned char m_bHoldLastFrame : 1; + + // These flags are used in CTaskSimpleRunAnim only + unsigned char m_bDontBlendOut : 1; + + // These flags are used in CTaskSimpleRunNamedAnim only + unsigned char m_bRunInSequence : 1; + unsigned char m_bOffsetAtEnd : 1; + unsigned char m_bOffsetAvailable : 1; + }; + }; +private: + char _pad[3]; +public: + + CTaskSimpleAnim(bool bHoldLastFrame); + +}; + +VALIDATE_SIZE(CTaskSimpleAnim, 0x10); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedInAsDriver.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedInAsDriver.cpp new file mode 100644 index 00000000..cf5021b4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedInAsDriver.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleCarSetPedInAsDriver.h" + +CTaskSimpleCarSetPedInAsDriver::CTaskSimpleCarSetPedInAsDriver(CVehicle *pTargetVehicle, CTaskUtilityLineUpPedWithCar *pUtility) : CTaskSimple(plugin::dummy) { + ((void(__thiscall *)(CTaskSimpleCarSetPedInAsDriver*,CVehicle*, CTaskUtilityLineUpPedWithCar*))0x6470E0)(this, pTargetVehicle, pUtility); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedInAsDriver.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedInAsDriver.h new file mode 100644 index 00000000..a3c455cf --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedInAsDriver.h @@ -0,0 +1,37 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CVehicle.h" +#include "CTaskUtilityLineUpPedWithCar.h" + +class PLUGIN_API CTaskSimpleCarSetPedInAsDriver : public CTaskSimple { +protected: + CTaskSimpleCarSetPedInAsDriver(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + bool m_bIsFinished; +private: + char _pad[3]; +public: + CAnimBlendAssociation* m_pAnim; + CVehicle * m_pTargetVehicle; + CTaskUtilityLineUpPedWithCar* m_pUtility; + bool m_bWarpingInToCar; + unsigned char m_nDoorFlagsToClear; + unsigned char m_nNumGettingInToClear; +private: + char _pad2[1]; +public: + + CTaskSimpleCarSetPedInAsDriver(CVehicle *pTargetVehicle, CTaskUtilityLineUpPedWithCar *pUtility); + + +}; + +VALIDATE_SIZE(CTaskSimpleCarSetPedInAsDriver, 0x1C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedInAsPassenger.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedInAsPassenger.cpp new file mode 100644 index 00000000..0722b94f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedInAsPassenger.cpp @@ -0,0 +1,17 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleCarSetPedInAsPassenger.h" + +CTaskSimpleCarSetPedInAsPassenger::CTaskSimpleCarSetPedInAsPassenger(CVehicle *pTargetVehicle, int nTargetDoor, + CTaskUtilityLineUpPedWithCar *pUtility) : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x646FE0, CTaskSimpleCarSetPedInAsPassenger*, CVehicle*, int, CTaskUtilityLineUpPedWithCar*> + (this,pTargetVehicle, nTargetDoor, pUtility); +} + + + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedInAsPassenger.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedInAsPassenger.h new file mode 100644 index 00000000..e48bb6a7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedInAsPassenger.h @@ -0,0 +1,38 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CVehicle.h" +#include "CTaskUtilityLineUpPedWithCar.h" + +class PLUGIN_API CTaskSimpleCarSetPedInAsPassenger : public CTaskSimple { +protected: + CTaskSimpleCarSetPedInAsPassenger(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + bool m_bIsFinished; +private: + char gap9[3]; +public: + CAnimBlendAssociation* m_pAnim; + CVehicle* m_pTargetVehicle; + int m_iTargetDoor; + CTaskUtilityLineUpPedWithCar* m_pUtility; + bool m_bWarpingInToCar; + unsigned char m_nDoorFlagsToClear; + unsigned char m_nNumGettingInToClear; +private: + char _pad2[1]; +public: + + CTaskSimpleCarSetPedInAsPassenger(CVehicle *pTargetVehicle, int nTargetDoor, CTaskUtilityLineUpPedWithCar *pUtility); + +}; + +VALIDATE_SIZE(CTaskSimpleCarSetPedInAsPassenger, 0x20); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedOut.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedOut.cpp new file mode 100644 index 00000000..a8f0f3ab --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedOut.cpp @@ -0,0 +1,13 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleCarSetPedOut.h" + +CTaskSimpleCarSetPedOut::CTaskSimpleCarSetPedOut(CVehicle *pTargetVehicle, int nTargetDoor, bool bSwitchOffEngine) + : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x6478B0, CTaskSimpleCarSetPedOut*, CVehicle*, int, bool>(this, pTargetVehicle, nTargetDoor, bSwitchOffEngine); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedOut.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedOut.h new file mode 100644 index 00000000..274d0224 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleCarSetPedOut.h @@ -0,0 +1,34 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CVehicle.h" + +class PLUGIN_API CTaskSimpleCarSetPedOut : public CTaskSimple { +protected: + CTaskSimpleCarSetPedOut(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + CVehicle* m_pTargetVehicle; + int m_nTargetDoor; + bool m_bSwitchOffEngine; + bool m_bWarpingOutOfCar; + bool m_bFallingOutOfCar; // jumping or falling off car or bike + bool m_bKnockedOffBike; + unsigned char m_nDoorFlagsToClear; + unsigned char m_nNumGettingInToClear; +private: + char pad[2]; +public: + + CTaskSimpleCarSetPedOut(CVehicle *pTargetVehicle, int nTargetDoor, bool bSwitchOffEngine); + +}; + +VALIDATE_SIZE(CTaskSimpleCarSetPedOut, 0x18); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleChoking.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleChoking.cpp new file mode 100644 index 00000000..07368846 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleChoking.cpp @@ -0,0 +1,18 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleChoking.h" + +CTaskSimpleChoking::CTaskSimpleChoking(CPed* pAttacker, bool bIsTeargas) + : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x6202C0, CTaskSimpleChoking*, CPed*, bool>(this, pAttacker, bIsTeargas); +} + +void CTaskSimpleChoking::UpdateChoke(CPed* pVictim, CPed* pAttacker, bool bIsTeargas) +{ + plugin::CallMethod<0x620660, CTaskSimpleChoking*, CPed* , CPed* , bool>(this, pVictim, pAttacker, bIsTeargas); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleChoking.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleChoking.h new file mode 100644 index 00000000..c5d499c0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleChoking.h @@ -0,0 +1,30 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CAnimBlendAssociation.h" + + +class PLUGIN_API CTaskSimpleChoking : public CTaskSimple { +protected: + CTaskSimpleChoking(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + CPed* m_pAttacker; + CAnimBlendAssociation* m_pAnim; + unsigned int m_nTimeRemaining; + unsigned int m_nTimeStarted; + bool m_bIsTeargas; + bool m_bIsFinished; + + CTaskSimpleChoking(CPed* pAttacker, bool bIsTeargas); + void UpdateChoke(CPed* pVictim, CPed* pAttacker, bool bIsTeargas); + +}; + +VALIDATE_SIZE(CTaskSimpleChoking, 0x1C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleClimb.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleClimb.cpp new file mode 100644 index 00000000..119dcd59 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleClimb.cpp @@ -0,0 +1,14 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleClimb.h" + +CTaskSimpleClimb::CTaskSimpleClimb(CEntity *pClimbEnt, const CVector &vecTarget, float fHeading, unsigned char nSurfaceType, eClimbHeights nHeight, bool bForceClimb) + : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x67A110, CTaskSimpleClimb*, CEntity*, const CVector&, float, unsigned char, eClimbHeights, bool> + (this, pClimbEnt, vecTarget, fHeading, nSurfaceType, nHeight, bForceClimb); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleClimb.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleClimb.h new file mode 100644 index 00000000..c743b59c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleClimb.h @@ -0,0 +1,47 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CAnimBlendAssociation.h" +#include "CEntity.h" + +enum eClimbHeights : char +{ + CLIMB_NOT_READY = 0, + CLIMB_GRAB, + CLIMB_PULLUP, + CLIMB_STANDUP, + CLIMB_FINISHED, + CLIMB_VAULT, + CLIMB_FINISHED_V +}; + +class PLUGIN_API CTaskSimpleClimb : public CTaskSimple { +protected: + CTaskSimpleClimb(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + bool m_bIsFinished; + bool m_bChangeAnimation; + bool m_bChangePosition; + bool m_bForceClimb; + bool m_bInvalidClimb; + char m_nHeightForAnim; + char m_nHeightForPos; + unsigned char m_nSurfaceType; + char m_nFallAfterVault; + float m_fHandholdHeading; + CVector m_vecHandholdPos; + CEntity *m_pClimbEnt; + short m_nGetToPosCounter; + CAnimBlendAssociation* m_pAnim; + + CTaskSimpleClimb(CEntity *pClimbEnt, const CVector &vecTarget, float fHeading, unsigned char nSurfaceType, eClimbHeights nHeight, bool bForceClimb); +}; + +VALIDATE_SIZE(CTaskSimpleClimb, 0x30); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleDuck.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleDuck.cpp new file mode 100644 index 00000000..a2516d3e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleDuck.cpp @@ -0,0 +1,13 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleDuck.h" + +CTaskSimpleDuck::CTaskSimpleDuck(eDuckControlTypes DuckControlType, unsigned short nLengthOfDuck, short nUseShotsWhizzingEvents) + : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x691FC0, CTaskSimpleDuck*, eDuckControlTypes, unsigned short, short>(this, DuckControlType, nLengthOfDuck, nUseShotsWhizzingEvents); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleDuck.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleDuck.h new file mode 100644 index 00000000..1e65318e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleDuck.h @@ -0,0 +1,47 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CAnimBlendAssociation.h" +#include "CVector2D.h" + +enum eDuckControlTypes : unsigned char +{ + DUCK_STANDALONE = 0, // duck anim removed when task removed + DUCK_STANDALONE_WEAPON_CROUCH,// duck anim removed when task removed + DUCK_TASK_CONTROLLED, // duck directly linked to a controlling task + DUCK_ANIM_CONTROLLED, // duck linked to duck anim (make duck partial?) + DUCK_SCRIPT_CONTROLLED, +}; + +class PLUGIN_API CTaskSimpleDuck : public CTaskSimple { +protected: + CTaskSimpleDuck(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + unsigned int m_nStartTime; + unsigned short m_nLengthOfDuck; + short m_nShotWhizzingCounter; + CAnimBlendAssociation *m_pDuckAnim; + CAnimBlendAssociation *m_pMoveAnim; + + bool m_bIsFinished; + bool m_bIsAborting; + bool m_bNeedToSetDuckFlag; // incase bIsDucking flag gets cleared elsewhere, so we know to stop duck task + bool m_bIsInControl; // if duck task is being controlled by another task then it requires continuous control + + CVector2D m_vecMoveCommand; + unsigned char m_nDuckControlType; + + unsigned char m_nCountDownFrames; + + CTaskSimpleDuck(eDuckControlTypes DuckControlType, unsigned short nLengthOfDuck, short nUseShotsWhizzingEvents = -1); + +}; + +VALIDATE_SIZE(CTaskSimpleDuck, 0x28); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleDuckToggle.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleDuckToggle.cpp new file mode 100644 index 00000000..ab58488a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleDuckToggle.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleDuckToggle.h" + +CTaskSimpleDuckToggle::CTaskSimpleDuckToggle(int toggleType) : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x62F690, CTaskSimpleDuckToggle*,int>(this, toggleType); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleDuckToggle.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleDuckToggle.h new file mode 100644 index 00000000..cc2a67bd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleDuckToggle.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" + +class PLUGIN_API CTaskSimpleDuckToggle : public CTaskSimple { +protected: + CTaskSimpleDuckToggle(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + int m_nToggleType; // -1 toggle , 0 UnSet , 1 Set + + + + // -1 toggle , 0 UnSet , 1 Set + CTaskSimpleDuckToggle(int toggleType); + +}; + +VALIDATE_SIZE(CTaskSimpleDuckToggle, 0xC); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleFacial.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleFacial.cpp new file mode 100644 index 00000000..906b7416 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleFacial.cpp @@ -0,0 +1,13 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleFacial.h" + +CTaskSimpleFacial::CTaskSimpleFacial(eFacialExpression nFacialExpress, int nDuration) + : CTaskSimple(plugin::dummy) , m_Timer(plugin::dummy) +{ + plugin::CallMethod<0x690C70, CTaskSimpleFacial*, eFacialExpression, int>(this, nFacialExpress, nDuration); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleFacial.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleFacial.h new file mode 100644 index 00000000..883878f2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleFacial.h @@ -0,0 +1,34 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CTaskTimer.h" + +enum eFacialExpression +{ + ANIM_FACSURP = 0x0, + ANIM_FACSURPM = 0x1, + ANIM_FACURIOS = 0x2, // can be 2 or 4 + ANIM_FACANGER = 0x3, // can be 3 or 5 + ANIM_FACTALK = 0x7, + ANIM_FACGUM = 0x8, +}; + +class PLUGIN_API CTaskSimpleFacial : public CTaskSimple { +protected: + CTaskSimpleFacial(plugin::dummy_func_t a) : CTaskSimple(a), m_Timer(a) {} +public: + CTaskTimer m_Timer; + eFacialExpression m_nFacialExpression; + int m_nDuration; + + CTaskSimpleFacial(eFacialExpression nFacialExpress,int nDuration); +}; + +VALIDATE_SIZE(CTaskSimpleFacial, 0x1C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleFight.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleFight.cpp new file mode 100644 index 00000000..50c21454 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleFight.cpp @@ -0,0 +1,13 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleFight.h" + +CTaskSimpleFight::CTaskSimpleFight(CEntity *pTargetEntity, int nCommand, unsigned int nIdlePeriod) + : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x61C470, CTaskSimpleFight*, CEntity*, int, unsigned int>(this, pTargetEntity, nCommand, nIdlePeriod); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleFight.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleFight.h new file mode 100644 index 00000000..12b9c990 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleFight.h @@ -0,0 +1,49 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CAnimBlendAssociation.h" +#include "CEntity.h" + + +class PLUGIN_API CTaskSimpleFight : public CTaskSimple { +protected: + CTaskSimpleFight(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + + bool m_bIsFinished; + bool m_bIsInControl; + + bool m_bAnimsReferenced; +private: + char _pad; +public: + unsigned int m_nRequiredAnimGroup; + + unsigned short m_nIdlePeriod; + unsigned short m_nIdleCounter; + char m_nContinueStrike; + char m_nChainCounter; +private: + char _pad2[2]; +public: + + CEntity *m_pTargetEntity; + CAnimBlendAssociation *m_pAnim; + CAnimBlendAssociation *m_pIdleAnim; + + char m_nComboSet; + char m_nCurrentMove; + unsigned char m_nNextCommand; + unsigned char m_nLastCommand; + + CTaskSimpleFight(CEntity *pTargetEntity, int nCommand, unsigned int nIdlePeriod = 10000); +}; + +VALIDATE_SIZE(CTaskSimpleFight, 0x28); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleGangDriveBy.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleGangDriveBy.cpp new file mode 100644 index 00000000..8176f4b5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleGangDriveBy.cpp @@ -0,0 +1,14 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleGangDriveBy.h" + +CTaskSimpleGangDriveBy::CTaskSimpleGangDriveBy(CEntity *pTargetEntity, const CVector *pVecTarget, float fAbortRange, + char FrequencyPercentage, char nDrivebyStyle, bool bSeatRHS) : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x6217D0, CTaskSimpleGangDriveBy*, CEntity *, const CVector *, float, char, char, bool> + (this, pTargetEntity, pVecTarget, fAbortRange, FrequencyPercentage, nDrivebyStyle, bSeatRHS); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleGangDriveBy.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleGangDriveBy.h new file mode 100644 index 00000000..cc79fc61 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleGangDriveBy.h @@ -0,0 +1,56 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CAnimBlendAssociation.h" +#include "CEntity.h" +#include "CWeaponInfo.h" + + + +class PLUGIN_API CTaskSimpleGangDriveBy : public CTaskSimple { +protected: + CTaskSimpleGangDriveBy(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + bool m_bIsFinished; + bool m_bAnimsReferenced; + bool m_bSeatRHS; + bool m_bInRangeToShoot; + bool m_bInWeaponRange; + bool m_bReachedAbortRange; + bool m_bFromScriptCommand; + char m_nNextCommand; + char m_nLastCommand; + char m_nBurstShots; + char m_nDrivebyStyle; + char m_nFrequencyPercentage; + char m_nFakeShootDirn; +private: + char _pad; +public: + short m_nAttackTimer; + unsigned int m_nLOSCheckTime; + bool m_nLOSBlocked; +private: + char _pad2[3]; +public: + float m_fAbortRange; + int m_nRequiredAnimID; + int m_nRequiredAnimGroup; + CAnimBlendAssociation *m_pAnim; + CWeaponInfo *m_pWeaponInfo; + CEntity *m_pTargetEntity; + CVector m_vecCoords; + + CTaskSimpleGangDriveBy(CEntity *pTargetEntity, const CVector *pVecTarget, float fAbortRange, + char FrequencyPercentage, char nDrivebyStyle, bool bSeatRHS); +}; + +VALIDATE_SIZE(CTaskSimpleGangDriveBy, 0x44); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleHoldEntity.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleHoldEntity.cpp new file mode 100644 index 00000000..697015e1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleHoldEntity.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleHoldEntity.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleHoldEntity.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleHoldEntity.h new file mode 100644 index 00000000..4b90396a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleHoldEntity.h @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" + +class PLUGIN_API CTaskSimpleHoldEntity : public CTaskSimple { +protected: + CTaskSimpleHoldEntity(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + +}; + +//VALIDATE_SIZE(CTaskSimpleHoldEntity, 0x); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKChain.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKChain.cpp new file mode 100644 index 00000000..abf29125 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKChain.cpp @@ -0,0 +1,15 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ + +#include "CTaskSimpleIKChain.h" + +CTaskSimpleIKChain::CTaskSimpleIKChain(char* _IGNORED_ idString , int effectorBoneTag, RwV3d effectorVec, int pivotBoneTag, + CEntity* pEntity, int offsetBoneTag, RwV3d offsetPos, float speed, int time, int blendTime) : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x6339C0, CTaskSimpleIKChain*, char*, int, RwV3d, int, CEntity*, int, RwV3d, float, int, int> + (this, idString, effectorBoneTag, effectorVec, pivotBoneTag, pEntity, offsetBoneTag, offsetPos, speed, time, blendTime); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKChain.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKChain.h new file mode 100644 index 00000000..bb8cdb9b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKChain.h @@ -0,0 +1,48 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CAnimBlendAssociation.h" +#include "CEntity.h" + + +class PLUGIN_API CTaskSimpleIKChain : public CTaskSimple { +protected: + CTaskSimpleIKChain(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + int m_time; + int m_blendTime; + void* m_pIKChain; + short m_slotID; + short m_pivotBoneTag; + short m_effectorBoneTag; +private: + char _pad[2]; +public: + RwV3d m_effectorVec; + CEntity* m_pEntity; + int m_offsetBoneTag; + RwV3d m_offsetPos; + float m_speed; + bool m_bEntityExist; +private: + char _pad2[3]; +public: + // blending info + float m_blend; + int m_endTime; + float m_targetBlend; + int m_targetTime; + int m_isBlendingOut; + + CTaskSimpleIKChain(char* _IGNORED_ idString ,int effectorBoneTag,RwV3d effectorVec,int pivotBoneTag, + CEntity* pEntity,int offsetBoneTag, RwV3d offsetPos,float speed,int time,int blendTime); +}; + +VALIDATE_SIZE(CTaskSimpleIKChain, 0x58); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKLookAt.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKLookAt.cpp new file mode 100644 index 00000000..86def4b5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKLookAt.cpp @@ -0,0 +1,15 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleIKLookAt.h" + +CTaskSimpleIKLookAt::CTaskSimpleIKLookAt(char* idString _IGNORED_, CEntity* pEntity, int time, int offsetBoneTag, RwV3d offsetPos, + bool bUseTorso, float speed, int blendTime, int m_priority) + : CTaskSimpleIKChain(plugin::dummy) +{ + plugin::CallMethod<0x633E00, CTaskSimpleIKLookAt*, char*, CEntity*, int, int, RwV3d, bool, float, int, int> + (this, idString, pEntity, time, offsetBoneTag, offsetPos, bUseTorso, speed, blendTime, m_priority); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKLookAt.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKLookAt.h new file mode 100644 index 00000000..26bcb1c8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKLookAt.h @@ -0,0 +1,26 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CAnimBlendAssociation.h" +#include "CTaskSimpleIKChain.h" + + +class PLUGIN_API CTaskSimpleIKLookAt : public CTaskSimpleIKChain { +protected: + CTaskSimpleIKLookAt(plugin::dummy_func_t a) : CTaskSimpleIKChain(a) {} +public: + bool m_bUseTorso; + char m_priority; + + CTaskSimpleIKLookAt(char* idString _IGNORED_ ,CEntity* pEntity,int time,int offsetBoneTag, RwV3d offsetPos, + bool bUseTorso,float speed,int blendTime,int m_priority); +}; + +VALIDATE_SIZE(CTaskSimpleIKLookAt, 0x5C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKManager.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKManager.cpp new file mode 100644 index 00000000..38e3d9d5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKManager.cpp @@ -0,0 +1,12 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleIKManager.h" + +CTaskSimpleIKManager::CTaskSimpleIKManager(): CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x6337F0, CTaskSimpleIKManager*>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKManager.h new file mode 100644 index 00000000..114c4b80 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleIKManager.h @@ -0,0 +1,26 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimpleIKChain.h" + + +class PLUGIN_API CTaskSimpleIKManager : public CTaskSimple { +protected: + CTaskSimpleIKManager(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + CTaskSimpleIKChain * m_pIKChainTasks[4]; + bool m_bAborting; +private: + char _pad[3]; +public: + + CTaskSimpleIKManager(); +}; + +VALIDATE_SIZE(CTaskSimpleIKManager, 0x1C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleInAir.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleInAir.cpp new file mode 100644 index 00000000..f13034a0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleInAir.cpp @@ -0,0 +1,14 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleInAir.h" + +CTaskSimpleInAir::CTaskSimpleInAir(bool bUsingJumpGlide, bool bUsingFallGlide, bool bUsingClimbJump) + : CTaskSimple(plugin::dummy), m_timer(plugin::dummy) +{ + plugin::CallMethod<0x678CD0, CTaskSimpleInAir*, bool, bool, bool> + (this, bUsingJumpGlide, bUsingFallGlide, bUsingClimbJump); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleInAir.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleInAir.h new file mode 100644 index 00000000..9d271897 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleInAir.h @@ -0,0 +1,43 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CTaskTimer.h" +#include "CVector.h" +#include "CAnimBlendAssociation.h" +#include "CEntity.h" + +class PLUGIN_API CTaskSimpleInAir : public CTaskSimple { +protected: + CTaskSimpleInAir(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + CVector m_vecPosn; + float m_fAngle; + unsigned char m_nSurfaceType; + char _pad[3]; + CAnimBlendAssociation *m_pAnim; + float m_fHeight; + union { + unsigned char m_nFlags; + struct + { + unsigned char bUsingJumpGlide : 1; + unsigned char bUsingFallGlide : 1; + unsigned char bUsingClimbJump : 1; + }; + }; + char _pad2[3]; + int m_nProcessCounter; + CTaskTimer m_timer; + CEntity *m_pEntity; + CTaskSimpleInAir(bool bUsingJumpGlide, bool bUsingFallGlide, bool bUsingClimbJump); + +}; + +VALIDATE_SIZE(CTaskSimpleInAir, 0x3C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleJetPack.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleJetPack.cpp new file mode 100644 index 00000000..474dc3ec --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleJetPack.cpp @@ -0,0 +1,29 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleJetPack.h" + +float &CTaskSimpleJetPack::THRUST_NOMINAL = *(float *)0x8D2F38; // 0.8 +float &CTaskSimpleJetPack::THRUST_FULL = *(float *)0x8D2F3C; // 0.6 +float &CTaskSimpleJetPack::THRUST_STRAFE = *(float *)0x8D2F40; // 0.3 +float &CTaskSimpleJetPack::THRUST_STOP = *(float *)0x8D2F44; // 0.5 +float &CTaskSimpleJetPack::THRUST_MAX_ANGLE = *(float *)0x8D2F48; // 1.309 +float &CTaskSimpleJetPack::THRUST_MOVE_DAMPING = *(float *)0x8D2F4C; // 0.02 +float &CTaskSimpleJetPack::JETPACK_TURN_RATE = *(float *)0x8D2F50; // -0.05 +float &CTaskSimpleJetPack::JETPACK_ANGLE_RATE = *(float *)0x8D2F54; // 0.9 +float &CTaskSimpleJetPack::LEG_SWING_MAX_ANGLE = *(float *)0x8D2F58; // 0.7854 +float &CTaskSimpleJetPack::LEG_SWING_DELTA_V_MULT = *(float *)0x8D2F5C; // -0.2 +float &CTaskSimpleJetPack::LEG_SWING_GRAVITY_MULT = *(float *)0x8D2F60; // 0.01 +float &CTaskSimpleJetPack::LEG_SWING_DAMP_FRAC = *(float *)0x8D2F64; // 0.98 +CVector &JETPACK_POS_OFFSET = *(CVector *)0x8D2F68; // { 0.1, 0.08, 0.0 } +CVector &JETPACK_ROT_AXIS = *(CVector *)0x8D2F74; // { 0.0, 1.0, 0.0 } + + +CTaskSimpleJetPack::CTaskSimpleJetPack(const CVector *pVecTargetPos, float fCruiseHeight, int nHoverTime) + : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x67B4E0, CTaskSimpleJetPack*, const CVector*, float,int>(this, pVecTargetPos, fCruiseHeight, nHoverTime); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleJetpack.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleJetpack.h new file mode 100644 index 00000000..b3c7ad6d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleJetpack.h @@ -0,0 +1,74 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CVector.h" +#include "CAnimBlendAssociation.h" +#include "FxSystem_c.h" + +class PLUGIN_API CTaskSimpleJetPack : public CTaskSimple +{ +protected: + CTaskSimpleJetPack(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + bool m_bIsFinished; + bool m_bAddedIdleAnim; + bool m_bAnimsReferenced; + bool m_bAttackButtonPressed; + bool m_bSwitchedWeapons; + + char m_nThrustStop; + char m_nThrustFwd; + float m_fThrustStrafe; + float m_fThrustAngle; + + float m_fLegSwingFwd; + float m_fLegSwingSide; + float m_fLegTwist; + + float m_fLegSwingFwdSpeed; + float m_fLegSwingSideSpeed; + float m_fLegTwistSpeed; + + CVector m_vecOldSpeed; + float m_fOldHeading; + + RpClump *m_pJetPackClump; + CAnimBlendAssociation* m_pAnim; + + CVector m_vecTargetPos; + float m_fCruiseHeight; + int m_nHoverTime; + unsigned int m_nStartHover; + CEntity *m_pTargetEnt; + + FxSystem_c* m_pFxSysL; + FxSystem_c* m_pFxSysR; + float m_fxKeyTime; + + static float &THRUST_NOMINAL; // 0.8 + static float &THRUST_FULL; // 0.6 + static float &THRUST_STRAFE; // 0.3 + static float &THRUST_STOP; // 0.5 + static float &THRUST_MAX_ANGLE; // 1.309 + static float &THRUST_MOVE_DAMPING; // 0.02 + static float &JETPACK_TURN_RATE; // -0.05 + static float &JETPACK_ANGLE_RATE; // 0.9 + static float &LEG_SWING_MAX_ANGLE; // 0.7854 + static float &LEG_SWING_DELTA_V_MULT; // -0.2 + static float &LEG_SWING_GRAVITY_MULT; // 0.01 + static float &LEG_SWING_DAMP_FRAC; // 0.98 + + CTaskSimpleJetPack(const CVector *pVecTargetPos = NULL, float fCruiseHeight = 10.0f, int nHoverTime = 0); +}; + +extern CVector &JETPACK_POS_OFFSET; // { 0.1, 0.08, 0.0 } +extern CVector &JETPACK_ROT_AXIS; // { 0.0, 1.0, 0.0 } + +VALIDATE_SIZE(CTaskSimpleJetPack, 0x70); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleJump.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleJump.cpp new file mode 100644 index 00000000..e73cff4d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleJump.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleJump.h" + +CTaskSimpleJump::CTaskSimpleJump(bool bIsClimb) : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x679AA0, CTaskSimpleJump*, bool>(this, bIsClimb); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleJump.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleJump.h new file mode 100644 index 00000000..92d99e35 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleJump.h @@ -0,0 +1,40 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CAnimBlendAssociation.h" +#include "CEntity.h" + + +class PLUGIN_API CTaskSimpleJump : public CTaskSimple { +protected: + CTaskSimpleJump(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + CVector m_vecPosn; + float m_fAngle; + uchar m_nSurfaceType; // see eSurfaceType +private: + char _pad[3]; +public: + CEntity *m_pEntity; + bool m_bIsFinished; + bool bHitHisHead; + bool m_bIsBlockedByEntity; + bool m_bStartedLaunchAnim; + bool m_bIsClimb; + bool m_bIsInPlayersGroup; +private: + char _pad2[2]; +public: + CAnimBlendAssociation *m_pAnimBlendAssoc; + + CTaskSimpleJump(bool bIsClimb); +}; + +VALIDATE_SIZE(CTaskSimpleJump, 0x2C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimplePlayerOnFoot.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimplePlayerOnFoot.cpp new file mode 100644 index 00000000..0ce0c356 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimplePlayerOnFoot.cpp @@ -0,0 +1,12 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimplePlayerOnFoot.h" + +CTaskSimplePlayerOnFoot::CTaskSimplePlayerOnFoot() : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x685750, CTaskSimplePlayerOnFoot*>(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimplePlayerOnFoot.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimplePlayerOnFoot.h new file mode 100644 index 00000000..d1785aac --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimplePlayerOnFoot.h @@ -0,0 +1,28 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CAnimBlendAssociation.h" + + +class PLUGIN_API CTaskSimplePlayerOnFoot : public CTaskSimple { +protected: + CTaskSimplePlayerOnFoot(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + int m_nAnimationBlockIndex; + unsigned int m_nFrameCounter; + int m_nTimer; + int dword_14; // always 0 + int dword_18; // always 0 + + CTaskSimplePlayerOnFoot(); + +}; + +VALIDATE_SIZE(CTaskSimplePlayerOnFoot, 0x1C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleRunAnim.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleRunAnim.cpp new file mode 100644 index 00000000..2808ca95 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleRunAnim.cpp @@ -0,0 +1,23 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleRunAnim.h" + +CTaskSimpleRunAnim::CTaskSimpleRunAnim(unsigned int animGroup, unsigned int animID, float fBlendDelta, bool bHoldLastFrame) + : CTaskSimpleAnim(plugin::dummy) +{ + plugin::CallMethod<0x61A8B0, CTaskSimpleRunAnim*, unsigned int, unsigned int, float, bool> + (this, animGroup, animID, fBlendDelta, bHoldLastFrame); +} + +CTaskSimpleRunAnim::CTaskSimpleRunAnim(unsigned int animGroup, unsigned int animID, float fBlendDelta, unsigned int nTaskType, + char* pTaskName _IGNORED_, bool bHoldLastFrame) + : CTaskSimpleAnim(plugin::dummy) +{ + plugin::CallMethod<0x61A900, CTaskSimpleRunAnim*, unsigned int, unsigned int, float, unsigned int, char*, bool> + (this, animGroup, animID, fBlendDelta, nTaskType, pTaskName, bHoldLastFrame); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleRunAnim.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleRunAnim.h new file mode 100644 index 00000000..c10ba2ea --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleRunAnim.h @@ -0,0 +1,32 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimpleAnim.h" +#include "CAnimBlendAssociation.h" + +class PLUGIN_API CTaskSimpleRunAnim : public CTaskSimpleAnim { +protected: + CTaskSimpleRunAnim(plugin::dummy_func_t a) : CTaskSimpleAnim(a) {} +public: + + unsigned int m_nAnimGroup; + unsigned int m_nAnimId; + float m_fBlendDelta; + unsigned short m_nTaskType; +private: + short __pad; +public: + + CTaskSimpleRunAnim(unsigned int animGroup, unsigned int animID, float fBlendDelta, bool bHoldLastFrame); + CTaskSimpleRunAnim(unsigned int animGroup, unsigned int animID, float fBlendDelta, unsigned int nTaskType, + char* pTaskName _IGNORED_, bool bHoldLastFrame); + +}; + +VALIDATE_SIZE(CTaskSimpleRunAnim, 0x20); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleRunNamedAnim.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleRunNamedAnim.cpp new file mode 100644 index 00000000..3fcc2651 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleRunNamedAnim.cpp @@ -0,0 +1,15 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleRunNamedAnim.h" + +CTaskSimpleRunNamedAnim::CTaskSimpleRunNamedAnim(const char* pAnimName, const char* pAnimGroupName, int flags, float fBlendDelta, + int nTime, bool bDontInterrupt, bool bRunInSequence, bool bOffsetPed, bool bHoldLastFrame) + : CTaskSimpleAnim(plugin::dummy) , m_timer(plugin::dummy) +{ + plugin::CallMethod<0x61A990, CTaskSimpleRunNamedAnim*, const char*, const char*, int, float, int, bool, bool, bool, bool> + (this, pAnimName, pAnimGroupName, flags, fBlendDelta, nTime, bDontInterrupt, bRunInSequence, bOffsetPed, bHoldLastFrame); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleRunNamedAnim.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleRunNamedAnim.h new file mode 100644 index 00000000..ac851975 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleRunNamedAnim.h @@ -0,0 +1,35 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimpleAnim.h" +#include "CAnimBlendHierarchy.h" +#include "CTaskTimer.h" +#include "CVector.h" + +class PLUGIN_API CTaskSimpleRunNamedAnim : public CTaskSimpleAnim { +protected: + CTaskSimpleRunNamedAnim(plugin::dummy_func_t a) : CTaskSimpleAnim(a), m_timer(a) {} +public: + char m_animName[24]; + char m_animGroupName[16]; + float m_fBlendDelta; + CAnimBlendHierarchy* m_pAnimHierarchy; + int m_nTime; + CTaskTimer m_timer; + CVector m_vecOffsetAtEnd; + unsigned int m_nFlags; + short m_nAnimId; + + CTaskSimpleRunNamedAnim(const char* pAnimName, const char* pAnimGroupName, int flags, float fBlendDelta, + int nTime, bool bDontInterrupt, bool bRunInSequence, bool bOffsetPed, bool bHoldLastFrame); + + +}; + +VALIDATE_SIZE(CTaskSimpleRunNamedAnim, 0x64); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleStandStill.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleStandStill.cpp new file mode 100644 index 00000000..8bd432be --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleStandStill.cpp @@ -0,0 +1,14 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleStandStill.h" + +CTaskSimpleStandStill::CTaskSimpleStandStill(int nTime, bool Looped, bool bUseAnimIdleStance, float fBlendData) + : CTaskSimple(plugin::dummy) , m_timer(plugin::dummy) +{ + plugin::CallMethod<0x62F310, CTaskSimpleStandStill*, int, bool, bool, float> + (this, nTime, Looped, bUseAnimIdleStance, fBlendData); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleStandStill.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleStandStill.h new file mode 100644 index 00000000..57f7149a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleStandStill.h @@ -0,0 +1,30 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CTaskTimer.h" + +class PLUGIN_API CTaskSimpleStandStill : public CTaskSimple { +protected: + CTaskSimpleStandStill(plugin::dummy_func_t a) : CTaskSimple(a),m_timer(a) {} +public: + int m_nTime; + CTaskTimer m_timer; + bool m_bLooped; + bool m_bUseAnimIdleStance; +private: + char _pad[2]; +public: + float m_fBlendData; + + + CTaskSimpleStandStill(int nTime, bool Looped, bool bUseAnimIdleStance, float fBlendData); +}; + +VALIDATE_SIZE(CTaskSimpleStandStill, 0x20); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleStealthKill.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleStealthKill.cpp new file mode 100644 index 00000000..3bc19dd3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleStealthKill.cpp @@ -0,0 +1,12 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleStealthKill.h" + +CTaskSimpleStealthKill::CTaskSimpleStealthKill(bool bKeepTargetAlive, CPed *pTarget, int nAssocGroupId) : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x6225F0, CTaskSimpleStealthKill*, bool, CPed*, int>(this, bKeepTargetAlive, pTarget, nAssocGroupId); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleStealthKill.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleStealthKill.h new file mode 100644 index 00000000..66ef4c88 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleStealthKill.h @@ -0,0 +1,37 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CPed.h" +#include "CAnimBlendAssociation.h" + +class CTaskSimpleStealthKill : public CTaskSimple +{ +protected: + CTaskSimpleStealthKill(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + bool m_bKeepTargetAlive; +private: + char _pad[3]; +public: + CPed *m_pTarget; + int m_nAssocGroupId; + bool b_bIsAborting; + bool b_bIsFinished; +private: + char _pad2[2]; +public: + CAnimBlendAssociation *m_pAnim; + unsigned int m_nTime; + + CTaskSimpleStealthKill(bool bKeepTargetAlive,CPed *pTarget,int nAssocGroupId); +}; + +VALIDATE_SIZE(CTaskSimpleStealthKill, 0x20); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleSwim.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleSwim.cpp new file mode 100644 index 00000000..9037a167 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleSwim.cpp @@ -0,0 +1,13 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleSwim.h" + + +CTaskSimpleSwim::CTaskSimpleSwim(CVector const* pPosn, CPed* pPed) : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x688930, CTaskSimpleSwim*, CVector const*, CPed*>(this,pPosn, pPed); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleSwim.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleSwim.h new file mode 100644 index 00000000..e94e9137 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleSwim.h @@ -0,0 +1,59 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CVector.h" +#include "FxSystem_c.h" + +enum eSwimState : unsigned short +{ + SWIM_TREAD, + SWIM_SPRINT, + SWIM_SPRINTING, + SWIM_DIVE_UNDERWATER, + SWIM_UNDERWATER_SPRINTING, + SWIM_BACK_TO_SURFACE +}; + +class CPed; + +class PLUGIN_API CTaskSimpleSwim : public CTaskSimple { +protected: + CTaskSimpleSwim(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + bool m_bFinishedBlending; + bool m_bAnimBlockRefAdded; + eSwimState m_nSwimState; + int m_AnimID; + float m_fAnimSpeed; + CVector m_vecPos; + CPed *m_pPed; + float flt_24; // initialized with 0.0f + float flt_28; // and used + float flt_2C; // for + float flt_30; // internal + float flt_34; //calculations + CEntity *m_pEntity; + CVector m_pClimbPos; + float m_fAngle; + unsigned char m_nSurfaceType; +private: + char _pad[3]; +public: + float flt_50; // initialized with 0.0f + float flt_54; // and used for internal calculations + int m_nProcessTimeCounter; + FxSystem_c *m_pFxSystem; + bool m_bTriggerWaterSplash; + char pad2[3]; + + CTaskSimpleSwim(CVector const* pPosn, CPed* pPed); +}; + +VALIDATE_SIZE(CTaskSimpleSwim, 0x64); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleThrowProjectile.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleThrowProjectile.cpp new file mode 100644 index 00000000..aa4c68f2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleThrowProjectile.cpp @@ -0,0 +1,13 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleThrowProjectile.h" + + +CTaskSimpleThrowProjectile::CTaskSimpleThrowProjectile(CEntity* pTarget, CVector Posn) : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x61F660, CTaskSimpleThrowProjectile*, CEntity*, CVector>(this, pTarget, Posn); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleThrowProjectile.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleThrowProjectile.h new file mode 100644 index 00000000..c0c76191 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleThrowProjectile.h @@ -0,0 +1,32 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CAnimBlendAssociation.h" +#include "CEntity.h" + +class PLUGIN_API CTaskSimpleThrowProjectile : public CTaskSimple { +protected: + CTaskSimpleThrowProjectile(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + bool m_bIsAborting; + bool m_bFinished; + bool m_bStarted; +private: + char pad; +public: + CAnimBlendAssociation *m_pAnim; + CEntity *m_pTarget; + CVector m_vecPosition; + unsigned int m_nStartTime; + + CTaskSimpleThrowProjectile(CEntity* pTarget, CVector Posn); +}; + +VALIDATE_SIZE(CTaskSimpleThrowProjectile, 0x24); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleTriggerLookAt.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleTriggerLookAt.cpp new file mode 100644 index 00000000..4129e514 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleTriggerLookAt.cpp @@ -0,0 +1,15 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleTriggerLookAt.h" + +CTaskSimpleTriggerLookAt::CTaskSimpleTriggerLookAt(CEntity* pEntity, int time, int offsetBoneTag, RwV3d offsetPos, + bool bUseTorso, float speed, int blendTime, int priority) : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x6202C0, CTaskSimpleTriggerLookAt*, CEntity*, int, int, RwV3d, bool, float, int, int> + (this, pEntity, time, offsetBoneTag, offsetPos, bUseTorso, speed, blendTime, priority); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleTriggerLookAt.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleTriggerLookAt.h new file mode 100644 index 00000000..fa5c6a66 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleTriggerLookAt.h @@ -0,0 +1,40 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CAnimBlendAssociation.h" +#include "CEntity.h" + + +class PLUGIN_API CTaskSimpleTriggerLookAt : public CTaskSimple { +protected: + CTaskSimpleTriggerLookAt(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + CEntity* m_pEntity; + int m_time; + int m_offsetBoneTag; + RwV3d m_offsetPos; + bool m_bUseTorso; +private: + char _pad[3]; +public: + float m_fSpeed; + int m_BlendTime; + bool m_bEntityExist; + char m_priority; +private: + char _pad2[2]; +public: + + CTaskSimpleTriggerLookAt(CEntity* pEntity, int time, int offsetBoneTag, RwV3d offsetPos, + bool bUseTorso = true, float speed = 0.25f, int blendTime = 1000, int priority = 3); + +}; + +VALIDATE_SIZE(CTaskSimpleTriggerLookAt, 0x30); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleUseGun.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleUseGun.cpp new file mode 100644 index 00000000..7ff2ce4d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleUseGun.cpp @@ -0,0 +1,14 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskSimpleUseGun.h" + +CTaskSimpleUseGun::CTaskSimpleUseGun(CEntity *pTargetEntity, CVector vecTarget, unsigned char nCommand, + unsigned short nBurstLength, bool bAimImmediate) : CTaskSimple(plugin::dummy) +{ + plugin::CallMethod<0x61DE60, CTaskSimpleUseGun*, CEntity*, CVector, unsigned char, unsigned short, bool> + (this, pTargetEntity, vecTarget, nCommand, nBurstLength, bAimImmediate); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleUseGun.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleUseGun.h new file mode 100644 index 00000000..0c5f144d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskSimpleUseGun.h @@ -0,0 +1,63 @@ + /* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CVector.h" +#include "CVector2D.h" +#include "CWeaponInfo.h" +#include "CAnimBlendAssociation.h" +#include "CEntity.h" + +class CTaskSimpleUseGun : public CTaskSimple +{ +protected: + CTaskSimpleUseGun(plugin::dummy_func_t a) : CTaskSimple(a) {} +public: + bool m_bIsFinished; + bool m_bIsInControl; + bool m_bMoveControl; + bool m_bFiredGun; + bool m_bBlockedLOS; + union + { + unsigned char m_nFireGunThisFrame; + struct + { + unsigned char bRightHand : 1; + unsigned char bLefttHand : 1; + }; + }; + bool m_bSkipAim; + + unsigned char m_nNextCommand; // 0x1 reloading - 0x2 firing + unsigned char m_nLastCommand; // active command - 0x1 reloading - 0x2 firing +private: + char _pad[3]; +public: + CVector2D m_vecMoveCommand; + + CEntity *m_pTarget; + CVector m_vecTarget; + + CAnimBlendAssociation *m_pAnim; + + CWeaponInfo *m_pWeaponInfo; + unsigned short m_nBurstLength; + unsigned short m_nBurstShots; + + unsigned char m_nCountDownFrames; + bool m_ArmIKInUse; + bool m_LookIKInUse; + bool m_bAimImmediate; + + CTaskSimpleUseGun(CEntity *pTargetEntity, CVector vecTarget, unsigned char nCommand, unsigned short nBurstLength = 1, bool bAimImmediate = false); +}; + +VALIDATE_SIZE(CTaskSimpleUseGun, 0x3C); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskTimer.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskTimer.cpp new file mode 100644 index 00000000..5a9ad264 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskTimer.cpp @@ -0,0 +1,11 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskTimer.h" + +bool CTaskTimer::IsOutOfTime() { + return ((bool(__thiscall *)(CTaskTimer *))0x420E30)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskTimer.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskTimer.h new file mode 100644 index 00000000..9f143ca4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskTimer.h @@ -0,0 +1,40 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CTaskTimer +{ +public: + int m_nStartTime; + int m_nInterval; + bool m_bStarted; + bool m_bStopped; +private: + char _pad[2]; +public: + + inline CTaskTimer(int start, int interval) { // @420E10 + m_nStartTime = start; + m_nInterval = interval; + m_bStarted = true; + } + + inline CTaskTimer() { + m_nStartTime = 0; + m_nInterval = 0; + m_bStarted = false; + m_bStopped = false; + } + + CTaskTimer(plugin::dummy_func_t) {} + + bool IsOutOfTime(); +}; + +VALIDATE_SIZE(CTaskTimer, 0xC); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskUtilityLineUpPedWithCar.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskUtilityLineUpPedWithCar.cpp new file mode 100644 index 00000000..3b98bbdf --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskUtilityLineUpPedWithCar.cpp @@ -0,0 +1,28 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTaskUtilityLineUpPedWithCar.h" + +CTaskUtilityLineUpPedWithCar::CTaskUtilityLineUpPedWithCar(CVector const &Vector, int nTime, int arg3, int arg4) { + ((void(__thiscall *)(CTaskUtilityLineUpPedWithCar *,CVector const &, int, int, int))0x64FBB0)(this, Vector, nTime, arg3, arg4); +} + +// Converted from thiscall CVector* CTaskUtilityLineUpPedWithCar::GetLocalPositionToOpenCarDoor(int unused , CVehicle *pVehicle, float arg3,CAnimBlendAssociation *pAnimBlendAssoc) 0x64FC10 +CVector* CTaskUtilityLineUpPedWithCar::GetLocalPositionToOpenCarDoor(int unused, CVehicle* pVehicle, float arg3, CAnimBlendAssociation* pAnimBlendAssoc) { + return plugin::CallMethodAndReturn(this, unused, pVehicle, arg3, pAnimBlendAssoc); +} + +// Converted from thiscall void CTaskUtilityLineUpPedWithCar::ProcessPed(CPed *pPed,CVehicle *pVehicle,CAnimBlendAssociation *pAnimBlendAssoc) 0x6513A0 +void CTaskUtilityLineUpPedWithCar::ProcessPed(CPed* pPed, CVehicle* pVehicle, CAnimBlendAssociation* pAnimBlendAssoc) { + plugin::CallMethod<0x6513A0, CTaskUtilityLineUpPedWithCar *, CPed*, CVehicle*, CAnimBlendAssociation*>(this, pPed, pVehicle, pAnimBlendAssoc); +} + +// Converted from thiscall RwV3d* CTaskUtilityLineUpPedWithCar::GetPositionToOpenCarDoor(int unused, CVehicle *pVehicle,float arg2,CAnimBlendAssociation *pAnimBlendAssoc) 0x650A80 +RwV3d* CTaskUtilityLineUpPedWithCar::GetPositionToOpenCarDoor(int unused, CVehicle* pVehicle, float arg2, CAnimBlendAssociation* pAnimBlendAssoc) { + return plugin::CallMethodAndReturn(this, unused, pVehicle, arg2, pAnimBlendAssoc); +} + + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTaskUtilityLineUpPedWithCar.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskUtilityLineUpPedWithCar.h new file mode 100644 index 00000000..d4e23aba --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTaskUtilityLineUpPedWithCar.h @@ -0,0 +1,31 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CTaskSimple.h" +#include "CPed.h" + +class PLUGIN_API CTaskUtilityLineUpPedWithCar +{ +public: + + CVector* pCoords; + float field_4; + int field_8; + int field_c; + int time; + int field_14; + int pCTaskSimpleVtable; + + CTaskUtilityLineUpPedWithCar(CVector const &Vector, int nTime, int arg3, int arg4 ); + CVector* GetLocalPositionToOpenCarDoor(int unused, CVehicle* pVehicle, float arg3, CAnimBlendAssociation* pAnimBlendAssoc); + void ProcessPed(CPed* pPed, CVehicle* pVehicle, CAnimBlendAssociation* pAnimBlendAssoc); + RwV3d* GetPositionToOpenCarDoor(int unused, CVehicle* pVehicle, float arg2, CAnimBlendAssociation* pAnimBlendAssoc); +}; + +VALIDATE_SIZE(CTaskUtilityLineUpPedWithCar, 28); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CText.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CText.cpp new file mode 100644 index 00000000..de0aafaa --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CText.cpp @@ -0,0 +1,138 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CText.h" + +#define VAR_TheText 0xC1B340; + +#define FUNC_CText__Constructor 0x6A00F0 +#define FUNC_CText__Destructor 0x6A0140 +#define FUNC_CText__Get 0x6A0050 +#define FUNC_CText__Load 0x6A01A0 +#define FUNC_CText__LoadMissionTable 0x69FBF0 +#define FUNC_CText__LoadMpack 0x69F9A0 +#define FUNC_CText__Unload 0x69FF20 +#define FUNC_CText__ReadTag 0x69F940 +#define FUNC_CText__getMissionTableName 0x69FBD0 + +#define FUNC_CText__Tabl__Constructor 0x69F480 +#define FUNC_CText__Tabl__Read 0x69F670 + +#define FUNC_CText__TKey__Read 0x69F490 +#define FUNC_CText__TKey__Destructor 0x69F510 +#define FUNC_CText__TKey__PatchOffsets 0x69F540 +#define FUNC_CText__TKey__Bsearch 0x69F570 +#define FUNC_CText__TKey__GetTextByLabel 0x6A0000 + +#define FUNC_CText__TDat__Read 0x69F5D0 + +// Reads TABL block from GXT file +bool CText__TDat::read(size_t TABLblockSize, FILE *file, int *pFileOffset, bool skipRead) +{ + return ((bool (__thiscall*)(CText__TDat*, size_t, FILE *, int *, bool)) FUNC_CText__TDat__Read )(this, TABLblockSize, file, pFileOffset, skipRead); +} + +////// CText__Tabl ////// +// Constructor +CText__Tabl::CText__Tabl() +{ + ((const char *(__thiscall*)(CText__Tabl*)) FUNC_CText__Tabl__Constructor )(this); +} + +// Reads TABL block from GXT file +void CText__Tabl::read(size_t TABLblockSize, FILE *file, int *pFileOffset, int maxReadSize) +{ + ((void (__thiscall*)(CText__Tabl*, size_t, FILE *, int *, int)) FUNC_CText__Tabl__Read )(this, TABLblockSize, file, pFileOffset, maxReadSize); +} + +////// CText__TKey ////// +// Reads TKEY block from GXT file +bool CText__TKey::read(size_t TKEYblockSize, FILE *file, int *pFileOffset, bool skipReading) +{ + return ((bool (__thiscall*)(CText__TKey*, size_t, FILE *, int*, bool)) FUNC_CText__TKey__Read )(this, TKEYblockSize, file, pFileOffset, skipReading); +} + +// Patches offsets - adds specified integer value to every position member of TKEY item +void CText__TKey::patchOffsets(int PosOffsetMovement) +{ + ((void (__thiscall*)(CText__TKey*, int))FUNC_CText__TKey__PatchOffsets)(this, PosOffsetMovement); +} + +// Performs a binary search for a specified key and returns pointer if found, otherwise NULL. +tGXT_VERSION_2_TKEY_item* CText__TKey::bsearch(unsigned int key, tGXT_VERSION_2_TKEY_item *pData, short firstIndex, short lastIndex) +{ + return ((tGXT_VERSION_2_TKEY_item* (__thiscall*)(CText__TKey*, unsigned int, tGXT_VERSION_2_TKEY_item *, short, short))FUNC_CText__TKey__Bsearch)(this, key, pData, firstIndex, lastIndex); +} + +// Returns pointer to string by GXT key name (label) +const char* CText__TKey::GetTextByLabel(const char* keyName, bool* bFound) +{ + return ((const char* (__thiscall*)(CText__TKey*, const char*, bool*))FUNC_CText__TKey__GetTextByLabel)(this, keyName, bFound); +} + +// Destructor +CText__TKey::~CText__TKey() +{ + ((void (__thiscall*)(CText__TKey*))FUNC_CText__TKey__Destructor)(this); +} + +//////// CText //////// + +// Constructor +CText::CText() +{ + ((void (__thiscall*)(CText*)) FUNC_CText__Constructor )(this); +} + +// Destructor +CText::~CText() +{ + ((void (__thiscall*)(CText*)) FUNC_CText__Destructor )(this); +} + +// Returns text pointer by GXT key +char *__thiscall CText::Get(const char *key) +{ + return ( (char *(__thiscall*)(CText*, const char *key)) FUNC_CText__Get )(this, key); +} + +// Reads MPACK tag +void __stdcall CText::readTag(char *buf, FILE *file, int *pFileOffset, bool dontRead) +{ + ( (void (__stdcall*)(char *, FILE *, int *, bool )) FUNC_CText__ReadTag)(buf, file, pFileOffset, dontRead); +} + +// Loads mission table from GXT file +void CText::LoadMissionTable(const char *tableName) +{ + ( (void (__thiscall*)(CText*, const char *)) FUNC_CText__LoadMissionTable ) (this, tableName); +} + +// Loads MPACK +void CText::LoadMpack() +{ + ( (void (__thiscall*)(CText*)) FUNC_CText__LoadMpack ) (this); +} + +// Loads GXT file +void CText::Load() +{ + ( (void (__thiscall*)(CText*)) FUNC_CText__Load ) (this); +} + +// Unloads GXT file +void CText::Unload(bool bUnloadMissionData) +{ + ( (void (__thiscall*)(CText*, bool)) FUNC_CText__Unload ) (this, bUnloadMissionData); +} + +// Writes a mission table name into buffer +void CText::getMissionTableName(char *outStr) +{ + ( (void (__thiscall*)(CText*, char *)) FUNC_CText__getMissionTableName ) (this, outStr); +} + +CText& TheText = *(CText*)VAR_TheText; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CText.h b/third-party/plugin-sdk/plugin_sa/game_sa/CText.h new file mode 100644 index 00000000..3de2b7a3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CText.h @@ -0,0 +1,125 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include + +#include "PluginBase.h" + + +struct PLUGIN_API CText__TDat +{ + char* data; + int size; + + // Reads TABL block from GXT file + bool read(size_t TABLblockSize, FILE *file, int *pFileOffset, bool skipRead); +}; +VALIDATE_SIZE(CText__TDat, 0x8); + + +struct PLUGIN_API CText__TablEntry +{ + char name[8]; + int offset; +}; +VALIDATE_SIZE(CText__TablEntry, 0xC); + + +struct PLUGIN_API CText__Tabl +{ + CText__TablEntry data[200]; + short size; + short __pad; + + // Constructor + CText__Tabl(); + + // Reads TABL block from GXT file + void read(size_t TABLblockSize, FILE *file, int *pFileOffset, int maxReadSize); +}; +VALIDATE_SIZE(CText__Tabl, 0x964); + + +struct PLUGIN_API tGXT_VERSION_2_TKEY_item +{ + unsigned long int Position; // TDAT + 8 offset + unsigned long int KeyHash; +}; +VALIDATE_SIZE(tGXT_VERSION_2_TKEY_item, 0x8); + + + +struct PLUGIN_API CText__TKey +{ + tGXT_VERSION_2_TKEY_item* data; + short size; + + + // Reads TKEY block from GXT file + bool read(size_t TKEYblockSize, FILE *file, int *pFileOffset, bool skipReading); + + // Patches offsets - adds specified integer value to every position member of TKEY item + void patchOffsets(int PosOffsetMovement); + + // Performs a binary search for a specified key and returns pointer if found, otherwise NULL. + tGXT_VERSION_2_TKEY_item* bsearch(unsigned int key, tGXT_VERSION_2_TKEY_item *data, short firstIndex, short lastIndex); + + // Returns pointer to string by GXT key name (label) + const char* GetTextByLabel(const char* keyName, bool* bFound); + + // Destructor + ~CText__TKey(); +}; +VALIDATE_SIZE(CText__TKey, 0x8); + + + +class PLUGIN_API CText +{ +public: + CText__TKey tkeyMain; + CText__TDat tdatMain; + CText__TKey tkeyMission; + CText__TDat tdatMission; + char encoding; + char haveTabl; + char cderrorInitialized; + char missionTableLoaded; + char missionTableName[8]; + char cderrorText[256]; + CText__Tabl tabl; + + // Constructor + CText(); + + // Destructor + ~CText(); + + // Returns text pointer by GXT key + char *__thiscall Get(const char *key); + + // Reads MPACK tag + static void __stdcall readTag(char *buf, FILE *file, int *pFileOffset, bool dontRead); + + // Loads mission table from GXT file + void LoadMissionTable(const char *tableName); + + // Loads MPACK + void LoadMpack(); + + // Loads GXT file + void Load(); + + // Unloads GXT file + void Unload(bool bUnloadMissionData); + + // Writes a mission table name into buffer + void getMissionTableName(char *outStr); +}; +VALIDATE_SIZE(CText, 0xA90); + +extern PLUGIN_API CText& TheText; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTheCarGenerators.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTheCarGenerators.cpp new file mode 100644 index 00000000..17dff88b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTheCarGenerators.cpp @@ -0,0 +1,57 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTheCarGenerators.h" + +PLUGIN_SOURCE_FILE + +unsigned char &CTheCarGenerators::GenerateEvenIfPlayerIsCloseCounter = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC279D0, 0, 0, 0, 0, 0)); +unsigned char &CTheCarGenerators::ProcessCounter = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC279D1, 0, 0, 0, 0, 0)); +unsigned int &CTheCarGenerators::NumOfCarGenerators = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC279D4, 0, 0, 0, 0, 0)); +CSpecialPlateHandler &CTheCarGenerators::m_SpecialPlateHandler = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC279D8, 0, 0, 0, 0, 0)); +CCarGenerator *CTheCarGenerators::CarGeneratorArray = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xC27AD0, 0, 0, 0, 0, 0)); + +int addrof(CTheCarGenerators::CreateCarGenerator) = ADDRESS_BY_VERSION(0x6F31A0, 0, 0, 0, 0, 0); +int gaddrof(CTheCarGenerators::CreateCarGenerator) = GLOBAL_ADDRESS_BY_VERSION(0x6F31A0, 0, 0, 0, 0, 0); + +signed int CTheCarGenerators::CreateCarGenerator(float x, float y, float z, float angle, int modelId, short color1, short color2, unsigned char forceSpawn, unsigned char alarm_chances, unsigned char doorLock_chances, unsigned short minDelay, unsigned short maxDelay, unsigned char iplId, unsigned char bOwnedbyplayer) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheCarGenerators::CreateCarGenerator), x, y, z, angle, modelId, color1, color2, forceSpawn, alarm_chances, doorLock_chances, minDelay, maxDelay, iplId, bOwnedbyplayer); +} + +int addrof(CTheCarGenerators::Init) = ADDRESS_BY_VERSION(0x6F3270, 0, 0, 0, 0, 0); +int gaddrof(CTheCarGenerators::Init) = GLOBAL_ADDRESS_BY_VERSION(0x6F3270, 0, 0, 0, 0, 0); + +void CTheCarGenerators::Init() { + plugin::CallDynGlobal(gaddrof(CTheCarGenerators::Init)); +} + +int addrof(CTheCarGenerators::Load) = ADDRESS_BY_VERSION(0x5D39B0, 0, 0, 0, 0, 0); +int gaddrof(CTheCarGenerators::Load) = GLOBAL_ADDRESS_BY_VERSION(0x5D39B0, 0, 0, 0, 0, 0); + +void CTheCarGenerators::Load() { + plugin::CallDynGlobal(gaddrof(CTheCarGenerators::Load)); +} + +int addrof(CTheCarGenerators::Process) = ADDRESS_BY_VERSION(0x6F3F40, 0, 0, 0, 0, 0); +int gaddrof(CTheCarGenerators::Process) = GLOBAL_ADDRESS_BY_VERSION(0x6F3F40, 0, 0, 0, 0, 0); + +void CTheCarGenerators::Process() { + plugin::CallDynGlobal(gaddrof(CTheCarGenerators::Process)); +} + +int addrof(CTheCarGenerators::RemoveCarGenerators) = ADDRESS_BY_VERSION(0x6F3240, 0, 0, 0, 0, 0); +int gaddrof(CTheCarGenerators::RemoveCarGenerators) = GLOBAL_ADDRESS_BY_VERSION(0x6F3240, 0, 0, 0, 0, 0); + +void CTheCarGenerators::RemoveCarGenerators(unsigned char IplID) { + plugin::CallDynGlobal(gaddrof(CTheCarGenerators::RemoveCarGenerators), IplID); +} + +int addrof(CTheCarGenerators::Save) = ADDRESS_BY_VERSION(0x5D38C0, 0, 0, 0, 0, 0); +int gaddrof(CTheCarGenerators::Save) = GLOBAL_ADDRESS_BY_VERSION(0x5D38C0, 0, 0, 0, 0, 0); + +void CTheCarGenerators::Save() { + plugin::CallDynGlobal(gaddrof(CTheCarGenerators::Save)); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTheCarGenerators.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTheCarGenerators.h new file mode 100644 index 00000000..2b90560e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTheCarGenerators.h @@ -0,0 +1,30 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CSpecialPlateHandler.h" +#include "CCarGenerator.h" + +class PLUGIN_API CTheCarGenerators { +public: + SUPPORTED_10US static unsigned char &GenerateEvenIfPlayerIsCloseCounter; + SUPPORTED_10US static unsigned char &ProcessCounter; + SUPPORTED_10US static unsigned int &NumOfCarGenerators; + SUPPORTED_10US static CSpecialPlateHandler &m_SpecialPlateHandler; + SUPPORTED_10US static CCarGenerator *CarGeneratorArray; // static CCarGenerator CarGeneratorArray[500] + + //! return index of CarGenerator in CTheCarGenerators::CarGeneratorArray + SUPPORTED_10US static signed int CreateCarGenerator(float x, float y, float z, float angle, int modelId, short color1, short color2, unsigned char forceSpawn, unsigned char alarm_chances, unsigned char doorLock_chances, unsigned short minDelay, unsigned short maxDelay, unsigned char iplId, unsigned char bOwnedbyplayer); + SUPPORTED_10US static void Init(); + SUPPORTED_10US static void Load(); + SUPPORTED_10US static void Process(); + SUPPORTED_10US static void RemoveCarGenerators(unsigned char IplID); + SUPPORTED_10US static void Save(); +}; + +#include "meta/meta.CTheCarGenerators.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTheScripts.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTheScripts.cpp new file mode 100644 index 00000000..1bcf7196 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTheScripts.cpp @@ -0,0 +1,613 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) source file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#include "CTheScripts.h" + +PLUGIN_SOURCE_FILE + +PLUGIN_VARIABLE int* ScriptParams = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA43C78, 0, 0, 0, 0, 0)); + +PLUGIN_VARIABLE bool &CTheScripts::DbgFlag = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0x859CF8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE tScriptSwitchCase *CTheScripts::SwitchJumpTable = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA43CF8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::NumberOfEntriesInSwitchTable = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA43F50, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE void *&CTheScripts::SwitchDefaultAddress = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA43F54, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::SwitchDefaultExists = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA43F58, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE int &CTheScripts::ValueToCheckInSwitchStatement = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA43F5C, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::NumberOfEntriesStillToReadForSwitch = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA43F60, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE tScriptSequence *CTheScripts::ScriptSequenceTaskArray = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA43F68, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::NumberOfScriptCheckpoints = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44068, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE tScriptCheckpoint *CTheScripts::ScriptCheckpointArray = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44070, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE tScriptEffectSystem *CTheScripts::ScriptEffectSystemArray = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44110, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE short &CTheScripts::CardStackPosition = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44210, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE short *CTheScripts::CardStack = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44218, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bDrawSubtitlesBeforeFade = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44488, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bDrawOddJobTitleBeforeFade = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44489, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bScriptHasFadedOut = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA4448A, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bAddNextMessageToPreviousBriefs = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA4448B, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE int &CTheScripts::ForceRandomCarModel = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA4448C, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bDrawCrossHair = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44490, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bEnableCraneRelease = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44494, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bEnableCraneLower = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44495, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bEnableCraneRaise = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44496, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE float &CTheScripts::fCameraHeadingStepWhenPlayerIsAttached = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44498, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE float &CTheScripts::fCameraHeadingWhenPlayerIsAttached = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA4449C, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bDisplayHud = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444A0, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::HideAllFrontEndMapBlips = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444A1, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::RadarShowBlipOnAllLevels = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444A2, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned char &CTheScripts::RadarZoomValue = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444A3, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bPlayerIsOffTheMap = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444A4, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE char &CTheScripts::RiotIntensity = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444A5, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bPlayerHasMetDebbieHarry = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444A6, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bDisplayNonMiniGameHelpMessages = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444A7, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bMiniGameInProgress = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444A8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE int &CTheScripts::ScriptPickupCycleIndex = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444AC, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE char &CTheScripts::FailCurrentMission = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444B0, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bAlreadyRunningAMissionScript = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444B1, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned int &CTheScripts::LargestNumberOfMissionScriptLocalVariables = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444B4, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::NumberOfExclusiveMissionScripts = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444B8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::NumberOfMissionScripts = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444BC, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned int &CTheScripts::LargestMissionScriptSize = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444C0, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned int &CTheScripts::MainScriptSize = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444C4, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE char *CTheScripts::MultiScriptArray = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA444C8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bUsingAMultiScriptFile = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA447E8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE int &CTheScripts::StoreVehicleIndex = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA447EC, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::StoreVehicleWasRandom = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA447F0, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::CommandsExecuted = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA447F4, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::ScriptsUpdated = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA447F8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE int *CTheScripts::ScriptConnectLodsObjects = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44800, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE tScriptAttachedAnimGroup *CTheScripts::ScriptAttachedAnimGroups = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44850, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE int *CTheScripts::VehicleModelsBlockedByScript = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA448F0, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE int *CTheScripts::SuppressedVehicleModels = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44940, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CEntity **CTheScripts::InvisibilitySettingArray = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA449E0, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE tBuildingSwap *CTheScripts::BuildingSwapArray = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44A30, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::NumberOfIntroRectanglesThisFrame = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44B5C, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::MessageWidth = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44B60, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::MessageCentre = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44B64, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::bUseMessageFormatting = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44B66, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE bool &CTheScripts::UseTextCommands = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44B67, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::NumberOfIntroTextLinesThisFrame = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44B68, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::NumberOfUsedObjects = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44B6C, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE tUsedObject *CTheScripts::UsedObjectArray = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA44B70, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE int &CTheScripts::LastRandomPedId = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA476A4, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned int &CTheScripts::LastMissionPassedTime = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA476A8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE int &CTheScripts::OnAMissionFlag = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA476AC, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CEntity *&CTheScripts::EntitiesWaitingForScriptBrain = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA476B0, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CStreamedScripts &CTheScripts::StreamedScripts = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA47B60, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CScriptResourceManager &CTheScripts::ScriptResourceManager = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA485A8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CUpsideDownCarCheck &CTheScripts::UpsideDownCars = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA4892C, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE tScriptParam *CTheScripts::LocalVariablesForCurrentMission = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA48960, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE char *CTheScripts::ScriptSpace = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA49960, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE char *CTheScripts::MissionBlock = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA7A6A0, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CRunningScript *&CTheScripts::pIdleScripts = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA8B428, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CRunningScript *&CTheScripts::pActiveScripts = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA8B42C, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CRunningScript *CTheScripts::ScriptsArray = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA8B430, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE unsigned short &CTheScripts::NumberOfScriptSearchLights = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA90830, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CMissionCleanup &CTheScripts::MissionCleanUp = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA90850, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CStuckCarCheck &CTheScripts::StuckCars = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA90AB0, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CScriptsForBrains &CTheScripts::ScriptsForBrains = *reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA90CF0, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE tScriptSphere *CTheScripts::ScriptSphereArray = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA91268, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE tScriptText *CTheScripts::IntroTextLines = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA913E8, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE tScriptRectangle *CTheScripts::IntroRectangles = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA92D68, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE CSprite2d *CTheScripts::ScriptSprites = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA94B68, 0, 0, 0, 0, 0)); +PLUGIN_VARIABLE tScriptSearchlight *CTheScripts::ScriptSearchLightArray = reinterpret_cast(GLOBAL_ADDRESS_BY_VERSION(0xA94D68, 0, 0, 0, 0, 0)); + +int addrof(CTheScripts::AddScriptCheckpoint) = ADDRESS_BY_VERSION(0x4935A0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::AddScriptCheckpoint) = GLOBAL_ADDRESS_BY_VERSION(0x4935A0, 0, 0, 0, 0, 0); + +int CTheScripts::AddScriptCheckpoint(float at_X, float at_Y, float at_Z, float PointTo_X, float PointTo_Y, float PointTo_Z, float radius, int type) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::AddScriptCheckpoint), at_X, at_Y, at_Z, PointTo_X, PointTo_Y, PointTo_Z, radius, type); +} + +int addrof(CTheScripts::AddScriptEffectSystem) = ADDRESS_BY_VERSION(0x492F90, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::AddScriptEffectSystem) = GLOBAL_ADDRESS_BY_VERSION(0x492F90, 0, 0, 0, 0, 0); + +int CTheScripts::AddScriptEffectSystem(FxSystem_c *a1) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::AddScriptEffectSystem), a1); +} + +int addrof(CTheScripts::AddScriptSearchLight) = ADDRESS_BY_VERSION(0x493000, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::AddScriptSearchLight) = GLOBAL_ADDRESS_BY_VERSION(0x493000, 0, 0, 0, 0, 0); + +int CTheScripts::AddScriptSearchLight(float startX, float startY, float startZ, CEntity *entity, float targetX, float targetY, float targetZ, float targetRadius, float baseRadius) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::AddScriptSearchLight), startX, startY, startZ, entity, targetX, targetY, targetZ, targetRadius, baseRadius); +} + +int addrof(CTheScripts::AddScriptSphere) = ADDRESS_BY_VERSION(0x483B30, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::AddScriptSphere) = GLOBAL_ADDRESS_BY_VERSION(0x483B30, 0, 0, 0, 0, 0); + +unsigned int CTheScripts::AddScriptSphere(unsigned int id, CVector posn, float radius) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::AddScriptSphere), id, posn, radius); +} + +int addrof(CTheScripts::AddToBuildingSwapArray) = ADDRESS_BY_VERSION(0x481140, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::AddToBuildingSwapArray) = GLOBAL_ADDRESS_BY_VERSION(0x481140, 0, 0, 0, 0, 0); + +void CTheScripts::AddToBuildingSwapArray(CBuilding *a1, int newModelId, int oldModelId) { + plugin::CallDynGlobal(gaddrof(CTheScripts::AddToBuildingSwapArray), a1, newModelId, oldModelId); +} + +int addrof(CTheScripts::AddToInvisibilitySwapArray) = ADDRESS_BY_VERSION(0x481200, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::AddToInvisibilitySwapArray) = GLOBAL_ADDRESS_BY_VERSION(0x481200, 0, 0, 0, 0, 0); + +void CTheScripts::AddToInvisibilitySwapArray(CEntity *a2, bool bVisible) { + plugin::CallDynGlobal(gaddrof(CTheScripts::AddToInvisibilitySwapArray), a2, bVisible); +} + +int addrof(CTheScripts::AddToListOfConnectedLodObjects) = ADDRESS_BY_VERSION(0x470980, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::AddToListOfConnectedLodObjects) = GLOBAL_ADDRESS_BY_VERSION(0x470980, 0, 0, 0, 0, 0); + +void CTheScripts::AddToListOfConnectedLodObjects(CObject *pObject1, CObject *pObject2) { + plugin::CallDynGlobal(gaddrof(CTheScripts::AddToListOfConnectedLodObjects), pObject1, pObject2); +} + +int addrof(CTheScripts::AddToListOfSpecialAnimGroupsAttachedToCharModels) = ADDRESS_BY_VERSION(0x474750, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::AddToListOfSpecialAnimGroupsAttachedToCharModels) = GLOBAL_ADDRESS_BY_VERSION(0x474750, 0, 0, 0, 0, 0); + +void CTheScripts::AddToListOfSpecialAnimGroupsAttachedToCharModels(int modelid, char *ifpName) { + plugin::CallDynGlobal(gaddrof(CTheScripts::AddToListOfSpecialAnimGroupsAttachedToCharModels), modelid, ifpName); +} + +int addrof(CTheScripts::AddToSwitchJumpTable) = ADDRESS_BY_VERSION(0x470390, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::AddToSwitchJumpTable) = GLOBAL_ADDRESS_BY_VERSION(0x470390, 0, 0, 0, 0, 0); + +double CTheScripts::AddToSwitchJumpTable(int switchValue, int switchLabelLocalAddress) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::AddToSwitchJumpTable), switchValue, switchLabelLocalAddress); +} + +int addrof(CTheScripts::AddToVehicleModelsBlockedByScript) = ADDRESS_BY_VERSION(0x46B200, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::AddToVehicleModelsBlockedByScript) = GLOBAL_ADDRESS_BY_VERSION(0x46B200, 0, 0, 0, 0, 0); + +void CTheScripts::AddToVehicleModelsBlockedByScript(int modelindex) { + plugin::CallDynGlobal(gaddrof(CTheScripts::AddToVehicleModelsBlockedByScript), modelindex); +} + +int addrof(CTheScripts::AddToWaitingForScriptBrainArray) = ADDRESS_BY_VERSION(0x46AB60, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::AddToWaitingForScriptBrainArray) = GLOBAL_ADDRESS_BY_VERSION(0x46AB60, 0, 0, 0, 0, 0); + +void CTheScripts::AddToWaitingForScriptBrainArray(CEntity *pEntity, short arg2) { + plugin::CallDynGlobal(gaddrof(CTheScripts::AddToWaitingForScriptBrainArray), pEntity, arg2); +} + +int addrof(CTheScripts::AttachSearchlightToSearchlightObject) = ADDRESS_BY_VERSION(0x4934F0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::AttachSearchlightToSearchlightObject) = GLOBAL_ADDRESS_BY_VERSION(0x4934F0, 0, 0, 0, 0, 0); + +void CTheScripts::AttachSearchlightToSearchlightObject(int searchlightid, CObject *tower, CObject *housing, CObject *bulb, float offsetX, float offsetY, float offsetZ) { + plugin::CallDynGlobal(gaddrof(CTheScripts::AttachSearchlightToSearchlightObject), searchlightid, tower, housing, bulb, offsetX, offsetY, offsetZ); +} + +int addrof(CTheScripts::CheckStreamedScriptVersion) = ADDRESS_BY_VERSION(0x464FF0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::CheckStreamedScriptVersion) = GLOBAL_ADDRESS_BY_VERSION(0x464FF0, 0, 0, 0, 0, 0); + +char CTheScripts::CheckStreamedScriptVersion(RwStream *arg1, char *arg2) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::CheckStreamedScriptVersion), arg1, arg2); +} + +int addrof(CTheScripts::CleanUpThisObject) = ADDRESS_BY_VERSION(0x4866C0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::CleanUpThisObject) = GLOBAL_ADDRESS_BY_VERSION(0x4866C0, 0, 0, 0, 0, 0); + +void CTheScripts::CleanUpThisObject(CObject *pObject) { + plugin::CallDynGlobal(gaddrof(CTheScripts::CleanUpThisObject), pObject); +} + +int addrof(CTheScripts::CleanUpThisPed) = ADDRESS_BY_VERSION(0x486300, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::CleanUpThisPed) = GLOBAL_ADDRESS_BY_VERSION(0x486300, 0, 0, 0, 0, 0); + +void CTheScripts::CleanUpThisPed(CPed *ped) { + plugin::CallDynGlobal(gaddrof(CTheScripts::CleanUpThisPed), ped); +} + +int addrof(CTheScripts::CleanUpThisVehicle) = ADDRESS_BY_VERSION(0x486670, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::CleanUpThisVehicle) = GLOBAL_ADDRESS_BY_VERSION(0x486670, 0, 0, 0, 0, 0); + +void CTheScripts::CleanUpThisVehicle(CVehicle *pVehicle) { + plugin::CallDynGlobal(gaddrof(CTheScripts::CleanUpThisVehicle), pVehicle); +} + +int addrof(CTheScripts::ClearAllSuppressedCarModels) = ADDRESS_BY_VERSION(0x46A7C0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::ClearAllSuppressedCarModels) = GLOBAL_ADDRESS_BY_VERSION(0x46A7C0, 0, 0, 0, 0, 0); + +void CTheScripts::ClearAllSuppressedCarModels() { + plugin::CallDynGlobal(gaddrof(CTheScripts::ClearAllSuppressedCarModels)); +} + +int addrof(CTheScripts::ClearAllVehicleModelsBlockedByScript) = ADDRESS_BY_VERSION(0x46A840, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::ClearAllVehicleModelsBlockedByScript) = GLOBAL_ADDRESS_BY_VERSION(0x46A840, 0, 0, 0, 0, 0); + +void CTheScripts::ClearAllVehicleModelsBlockedByScript() { + plugin::CallDynGlobal(gaddrof(CTheScripts::ClearAllVehicleModelsBlockedByScript)); +} + +int addrof(CTheScripts::ClearSpaceForMissionEntity) = ADDRESS_BY_VERSION(0x486B00, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::ClearSpaceForMissionEntity) = GLOBAL_ADDRESS_BY_VERSION(0x486B00, 0, 0, 0, 0, 0); + +void CTheScripts::ClearSpaceForMissionEntity(CVector const &pos, CEntity *pEntity) { + plugin::CallDynGlobal(gaddrof(CTheScripts::ClearSpaceForMissionEntity), pos, pEntity); +} + +int addrof(CTheScripts::DoScriptSetupAfterPoolsHaveLoaded) = ADDRESS_BY_VERSION(0x5D3390, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::DoScriptSetupAfterPoolsHaveLoaded) = GLOBAL_ADDRESS_BY_VERSION(0x5D3390, 0, 0, 0, 0, 0); + +void CTheScripts::DoScriptSetupAfterPoolsHaveLoaded() { + plugin::CallDynGlobal(gaddrof(CTheScripts::DoScriptSetupAfterPoolsHaveLoaded)); +} + +int addrof(CTheScripts::DrawDebugAngledSquare) = ADDRESS_BY_VERSION(0x486990, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::DrawDebugAngledSquare) = GLOBAL_ADDRESS_BY_VERSION(0x486990, 0, 0, 0, 0, 0); + +void CTheScripts::DrawDebugAngledSquare(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) { + plugin::CallDynGlobal(gaddrof(CTheScripts::DrawDebugAngledSquare), x1, y1, x2, y2, x3, y3, x4, y4); +} + +int addrof(CTheScripts::DrawDebugCube) = ADDRESS_BY_VERSION(0x486840, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::DrawDebugCube) = GLOBAL_ADDRESS_BY_VERSION(0x486840, 0, 0, 0, 0, 0); + +void CTheScripts::DrawDebugCube(float x1, float y1, float x2, float y2) { + plugin::CallDynGlobal(gaddrof(CTheScripts::DrawDebugCube), x1, y1, x2, y2); +} + +int addrof(CTheScripts::DrawScriptSpheres) = ADDRESS_BY_VERSION(0x4810E0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::DrawScriptSpheres) = GLOBAL_ADDRESS_BY_VERSION(0x4810E0, 0, 0, 0, 0, 0); + +void CTheScripts::DrawScriptSpheres() { + plugin::CallDynGlobal(gaddrof(CTheScripts::DrawScriptSpheres)); +} + +int addrof(CTheScripts::DrawScriptSpritesAndRectangles) = ADDRESS_BY_VERSION(0x464980, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::DrawScriptSpritesAndRectangles) = GLOBAL_ADDRESS_BY_VERSION(0x464980, 0, 0, 0, 0, 0); + +void CTheScripts::DrawScriptSpritesAndRectangles(char bDrawBeforeFade) { + plugin::CallDynGlobal(gaddrof(CTheScripts::DrawScriptSpritesAndRectangles), bDrawBeforeFade); +} + +int addrof(CTheScripts::GetActualScriptThingIndex) = ADDRESS_BY_VERSION(0x4839A0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::GetActualScriptThingIndex) = GLOBAL_ADDRESS_BY_VERSION(0x4839A0, 0, 0, 0, 0, 0); + +signed int CTheScripts::GetActualScriptThingIndex(int index, unsigned char type) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::GetActualScriptThingIndex), index, type); +} + +int addrof(CTheScripts::GetNewUniqueScriptThingIndex) = ADDRESS_BY_VERSION(0x483720, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::GetNewUniqueScriptThingIndex) = GLOBAL_ADDRESS_BY_VERSION(0x483720, 0, 0, 0, 0, 0); + +unsigned int CTheScripts::GetNewUniqueScriptThingIndex(unsigned int index, char type) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::GetNewUniqueScriptThingIndex), index, type); +} + +int addrof(CTheScripts::GetScriptIndexFromPointer) = ADDRESS_BY_VERSION(0x464D20, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::GetScriptIndexFromPointer) = GLOBAL_ADDRESS_BY_VERSION(0x464D20, 0, 0, 0, 0, 0); + +int CTheScripts::GetScriptIndexFromPointer(CRunningScript *thread) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::GetScriptIndexFromPointer), thread); +} + +int addrof(CTheScripts::GetUniqueScriptThingIndex) = ADDRESS_BY_VERSION(0x4810C0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::GetUniqueScriptThingIndex) = GLOBAL_ADDRESS_BY_VERSION(0x4810C0, 0, 0, 0, 0, 0); + +unsigned int CTheScripts::GetUniqueScriptThingIndex(int playergroup, unsigned char type) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::GetUniqueScriptThingIndex), playergroup, type); +} + +int addrof(CTheScripts::HasVehicleModelBeenBlockedByScript) = ADDRESS_BY_VERSION(0x46A890, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::HasVehicleModelBeenBlockedByScript) = GLOBAL_ADDRESS_BY_VERSION(0x46A890, 0, 0, 0, 0, 0); + +bool CTheScripts::HasVehicleModelBeenBlockedByScript(int modelindex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::HasVehicleModelBeenBlockedByScript), modelindex); +} + +int addrof(CTheScripts::HighlightImportantAngledArea) = ADDRESS_BY_VERSION(0x485EF0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::HighlightImportantAngledArea) = GLOBAL_ADDRESS_BY_VERSION(0x485EF0, 0, 0, 0, 0, 0); + +void CTheScripts::HighlightImportantAngledArea(unsigned int markerid, float from_X, float from_Y, float to_X, float to_Y, float angledTo_X, float angledTo_Y, float angledFrom_X, float angledFrom_Y, float height) { + plugin::CallDynGlobal(gaddrof(CTheScripts::HighlightImportantAngledArea), markerid, from_X, from_Y, to_X, to_Y, angledTo_X, angledTo_Y, angledFrom_X, angledFrom_Y, height); +} + +int addrof(CTheScripts::HighlightImportantArea) = ADDRESS_BY_VERSION(0x485E00, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::HighlightImportantArea) = GLOBAL_ADDRESS_BY_VERSION(0x485E00, 0, 0, 0, 0, 0); + +void CTheScripts::HighlightImportantArea(int markerid, float from_X, float from_Y, float to_X, float to_Y, float height) { + plugin::CallDynGlobal(gaddrof(CTheScripts::HighlightImportantArea), markerid, from_X, from_Y, to_X, to_Y, height); +} + +int addrof(CTheScripts::Init) = ADDRESS_BY_VERSION(0x468D50, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::Init) = GLOBAL_ADDRESS_BY_VERSION(0x468D50, 0, 0, 0, 0, 0); + +void CTheScripts::Init() { + plugin::CallDynGlobal(gaddrof(CTheScripts::Init)); +} + +int addrof(CTheScripts::InitialiseAllConnectLodObjects) = ADDRESS_BY_VERSION(0x470960, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::InitialiseAllConnectLodObjects) = GLOBAL_ADDRESS_BY_VERSION(0x470960, 0, 0, 0, 0, 0); + +void CTheScripts::InitialiseAllConnectLodObjects() { + plugin::CallDynGlobal(gaddrof(CTheScripts::InitialiseAllConnectLodObjects)); +} + +int addrof(CTheScripts::InitialiseConnectLodObjects) = ADDRESS_BY_VERSION(0x470940, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::InitialiseConnectLodObjects) = GLOBAL_ADDRESS_BY_VERSION(0x470940, 0, 0, 0, 0, 0); + +void CTheScripts::InitialiseConnectLodObjects(unsigned short a1) { + plugin::CallDynGlobal(gaddrof(CTheScripts::InitialiseConnectLodObjects), a1); +} + +int addrof(CTheScripts::InitialiseSpecialAnimGroup) = ADDRESS_BY_VERSION(0x474710, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::InitialiseSpecialAnimGroup) = GLOBAL_ADDRESS_BY_VERSION(0x474710, 0, 0, 0, 0, 0); + +void CTheScripts::InitialiseSpecialAnimGroup(unsigned short a1) { + plugin::CallDynGlobal(gaddrof(CTheScripts::InitialiseSpecialAnimGroup), a1); +} + +int addrof(CTheScripts::InitialiseSpecialAnimGroupsAttachedToCharModels) = ADDRESS_BY_VERSION(0x474730, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::InitialiseSpecialAnimGroupsAttachedToCharModels) = GLOBAL_ADDRESS_BY_VERSION(0x474730, 0, 0, 0, 0, 0); + +void CTheScripts::InitialiseSpecialAnimGroupsAttachedToCharModels() { + plugin::CallDynGlobal(gaddrof(CTheScripts::InitialiseSpecialAnimGroupsAttachedToCharModels)); +} + +int addrof(CTheScripts::IsEntityWithinAnySearchLight) = ADDRESS_BY_VERSION(0x493960, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::IsEntityWithinAnySearchLight) = GLOBAL_ADDRESS_BY_VERSION(0x493960, 0, 0, 0, 0, 0); + +bool CTheScripts::IsEntityWithinAnySearchLight(CEntity *pEntity, int *pIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::IsEntityWithinAnySearchLight), pEntity, pIndex); +} + +int addrof(CTheScripts::IsEntityWithinSearchLight) = ADDRESS_BY_VERSION(0x493900, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::IsEntityWithinSearchLight) = GLOBAL_ADDRESS_BY_VERSION(0x493900, 0, 0, 0, 0, 0); + +bool CTheScripts::IsEntityWithinSearchLight(unsigned int index, CEntity *pEntity) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::IsEntityWithinSearchLight), index, pEntity); +} + +int addrof(CTheScripts::IsPedStopped) = ADDRESS_BY_VERSION(0x486110, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::IsPedStopped) = GLOBAL_ADDRESS_BY_VERSION(0x486110, 0, 0, 0, 0, 0); + +bool CTheScripts::IsPedStopped(CPed *ped) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::IsPedStopped), ped); +} + +int addrof(CTheScripts::IsPlayerOnAMission) = ADDRESS_BY_VERSION(0x464D50, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::IsPlayerOnAMission) = GLOBAL_ADDRESS_BY_VERSION(0x464D50, 0, 0, 0, 0, 0); + +bool CTheScripts::IsPlayerOnAMission() { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::IsPlayerOnAMission)); +} + +int addrof(CTheScripts::IsPointWithinSearchLight) = ADDRESS_BY_VERSION(0x493280, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::IsPointWithinSearchLight) = GLOBAL_ADDRESS_BY_VERSION(0x493280, 0, 0, 0, 0, 0); + +bool CTheScripts::IsPointWithinSearchLight(CVector *pointPosn, int index) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::IsPointWithinSearchLight), pointPosn, index); +} + +int addrof(CTheScripts::IsVehicleStopped) = ADDRESS_BY_VERSION(0x4861F0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::IsVehicleStopped) = GLOBAL_ADDRESS_BY_VERSION(0x4861F0, 0, 0, 0, 0, 0); + +bool CTheScripts::IsVehicleStopped(CVehicle *pVehicle) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::IsVehicleStopped), pVehicle); +} + +int addrof(CTheScripts::Load) = ADDRESS_BY_VERSION(0x5D4FD0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::Load) = GLOBAL_ADDRESS_BY_VERSION(0x5D4FD0, 0, 0, 0, 0, 0); + +void CTheScripts::Load() { + plugin::CallDynGlobal(gaddrof(CTheScripts::Load)); +} + +int addrof(CTheScripts::MoveSearchLightBetweenTwoPoints) = ADDRESS_BY_VERSION(0x493360, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::MoveSearchLightBetweenTwoPoints) = GLOBAL_ADDRESS_BY_VERSION(0x493360, 0, 0, 0, 0, 0); + +void CTheScripts::MoveSearchLightBetweenTwoPoints(int index, float x1, float y1, float z1, float x2, float y2, float z2, float pathSpeed) { + plugin::CallDynGlobal(gaddrof(CTheScripts::MoveSearchLightBetweenTwoPoints), index, x1, y1, z1, x2, y2, z2, pathSpeed); +} + +int addrof(CTheScripts::MoveSearchLightToEntity) = ADDRESS_BY_VERSION(0x493420, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::MoveSearchLightToEntity) = GLOBAL_ADDRESS_BY_VERSION(0x493420, 0, 0, 0, 0, 0); + +void CTheScripts::MoveSearchLightToEntity(int index, CEntity *pEntity, float pathSpeed) { + plugin::CallDynGlobal(gaddrof(CTheScripts::MoveSearchLightToEntity), index, pEntity, pathSpeed); +} + +int addrof(CTheScripts::MoveSearchLightToPointAndStop) = ADDRESS_BY_VERSION(0x493480, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::MoveSearchLightToPointAndStop) = GLOBAL_ADDRESS_BY_VERSION(0x493480, 0, 0, 0, 0, 0); + +void CTheScripts::MoveSearchLightToPointAndStop(int index, float x, float y, float z, float pathSpeed) { + plugin::CallDynGlobal(gaddrof(CTheScripts::MoveSearchLightToPointAndStop), index, x, y, z, pathSpeed); +} + +int addrof(CTheScripts::PrintListSizes) = ADDRESS_BY_VERSION(0x4646D0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::PrintListSizes) = GLOBAL_ADDRESS_BY_VERSION(0x4646D0, 0, 0, 0, 0, 0); + +void CTheScripts::PrintListSizes() { + plugin::CallDynGlobal(gaddrof(CTheScripts::PrintListSizes)); +} + +int addrof(CTheScripts::Process) = ADDRESS_BY_VERSION(0x46A000, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::Process) = GLOBAL_ADDRESS_BY_VERSION(0x46A000, 0, 0, 0, 0, 0); + +void CTheScripts::Process() { + plugin::CallDynGlobal(gaddrof(CTheScripts::Process)); +} + +int addrof(CTheScripts::ProcessAllSearchLights) = ADDRESS_BY_VERSION(0x4939F0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::ProcessAllSearchLights) = GLOBAL_ADDRESS_BY_VERSION(0x4939F0, 0, 0, 0, 0, 0); + +void CTheScripts::ProcessAllSearchLights() { + plugin::CallDynGlobal(gaddrof(CTheScripts::ProcessAllSearchLights)); +} + +int addrof(CTheScripts::ProcessWaitingForScriptBrainArray) = ADDRESS_BY_VERSION(0x46CF00, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::ProcessWaitingForScriptBrainArray) = GLOBAL_ADDRESS_BY_VERSION(0x46CF00, 0, 0, 0, 0, 0); + +void CTheScripts::ProcessWaitingForScriptBrainArray() { + plugin::CallDynGlobal(gaddrof(CTheScripts::ProcessWaitingForScriptBrainArray)); +} + +int addrof(CTheScripts::ReadMultiScriptFileOffsetsFromScript) = ADDRESS_BY_VERSION(0x4867C0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::ReadMultiScriptFileOffsetsFromScript) = GLOBAL_ADDRESS_BY_VERSION(0x4867C0, 0, 0, 0, 0, 0); + +void CTheScripts::ReadMultiScriptFileOffsetsFromScript() { + plugin::CallDynGlobal(gaddrof(CTheScripts::ReadMultiScriptFileOffsetsFromScript)); +} + +int addrof(CTheScripts::ReadObjectNamesFromScript) = ADDRESS_BY_VERSION(0x486720, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::ReadObjectNamesFromScript) = GLOBAL_ADDRESS_BY_VERSION(0x486720, 0, 0, 0, 0, 0); + +void CTheScripts::ReadObjectNamesFromScript() { + plugin::CallDynGlobal(gaddrof(CTheScripts::ReadObjectNamesFromScript)); +} + +int addrof(CTheScripts::ReinitialiseSwitchStatementData) = ADDRESS_BY_VERSION(0x470370, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::ReinitialiseSwitchStatementData) = GLOBAL_ADDRESS_BY_VERSION(0x470370, 0, 0, 0, 0, 0); + +void CTheScripts::ReinitialiseSwitchStatementData() { + plugin::CallDynGlobal(gaddrof(CTheScripts::ReinitialiseSwitchStatementData)); +} + +int addrof(CTheScripts::RemoveFromVehicleModelsBlockedByScript) = ADDRESS_BY_VERSION(0x46A860, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::RemoveFromVehicleModelsBlockedByScript) = GLOBAL_ADDRESS_BY_VERSION(0x46A860, 0, 0, 0, 0, 0); + +void CTheScripts::RemoveFromVehicleModelsBlockedByScript(int modelindex) { + plugin::CallDynGlobal(gaddrof(CTheScripts::RemoveFromVehicleModelsBlockedByScript), modelindex); +} + +int addrof(CTheScripts::RemoveFromWaitingForScriptBrainArray) = ADDRESS_BY_VERSION(0x46ABC0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::RemoveFromWaitingForScriptBrainArray) = GLOBAL_ADDRESS_BY_VERSION(0x46ABC0, 0, 0, 0, 0, 0); + +int CTheScripts::RemoveFromWaitingForScriptBrainArray(CEntity *a1, short modelIndex) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::RemoveFromWaitingForScriptBrainArray), a1, modelIndex); +} + +int addrof(CTheScripts::RemoveScriptCheckpoint) = ADDRESS_BY_VERSION(0x4936C0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::RemoveScriptCheckpoint) = GLOBAL_ADDRESS_BY_VERSION(0x4936C0, 0, 0, 0, 0, 0); + +void CTheScripts::RemoveScriptCheckpoint(int arg1) { + plugin::CallDynGlobal(gaddrof(CTheScripts::RemoveScriptCheckpoint), arg1); +} + +int addrof(CTheScripts::RemoveScriptEffectSystem) = ADDRESS_BY_VERSION(0x492FD0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::RemoveScriptEffectSystem) = GLOBAL_ADDRESS_BY_VERSION(0x492FD0, 0, 0, 0, 0, 0); + +void CTheScripts::RemoveScriptEffectSystem(int arg1) { + plugin::CallDynGlobal(gaddrof(CTheScripts::RemoveScriptEffectSystem), arg1); +} + +int addrof(CTheScripts::RemoveScriptSearchLight) = ADDRESS_BY_VERSION(0x493160, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::RemoveScriptSearchLight) = GLOBAL_ADDRESS_BY_VERSION(0x493160, 0, 0, 0, 0, 0); + +void CTheScripts::RemoveScriptSearchLight(unsigned int index) { + plugin::CallDynGlobal(gaddrof(CTheScripts::RemoveScriptSearchLight), index); +} + +int addrof(CTheScripts::RemoveScriptSphere) = ADDRESS_BY_VERSION(0x483BA0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::RemoveScriptSphere) = GLOBAL_ADDRESS_BY_VERSION(0x483BA0, 0, 0, 0, 0, 0); + +void CTheScripts::RemoveScriptSphere(int index) { + plugin::CallDynGlobal(gaddrof(CTheScripts::RemoveScriptSphere), index); +} + +int addrof(CTheScripts::RemoveScriptTextureDictionary) = ADDRESS_BY_VERSION(0x465A40, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::RemoveScriptTextureDictionary) = GLOBAL_ADDRESS_BY_VERSION(0x465A40, 0, 0, 0, 0, 0); + +void CTheScripts::RemoveScriptTextureDictionary() { + plugin::CallDynGlobal(gaddrof(CTheScripts::RemoveScriptTextureDictionary)); +} + +int addrof(CTheScripts::RemoveThisPed) = ADDRESS_BY_VERSION(0x486240, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::RemoveThisPed) = GLOBAL_ADDRESS_BY_VERSION(0x486240, 0, 0, 0, 0, 0); + +void CTheScripts::RemoveThisPed(CPed *ped) { + plugin::CallDynGlobal(gaddrof(CTheScripts::RemoveThisPed), ped); +} + +int addrof(CTheScripts::RenderAllSearchLights) = ADDRESS_BY_VERSION(0x493E30, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::RenderAllSearchLights) = GLOBAL_ADDRESS_BY_VERSION(0x493E30, 0, 0, 0, 0, 0); + +void CTheScripts::RenderAllSearchLights() { + plugin::CallDynGlobal(gaddrof(CTheScripts::RenderAllSearchLights)); +} + +int addrof(CTheScripts::Save) = ADDRESS_BY_VERSION(0x5D4C40, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::Save) = GLOBAL_ADDRESS_BY_VERSION(0x5D4C40, 0, 0, 0, 0, 0); + +void CTheScripts::Save() { + plugin::CallDynGlobal(gaddrof(CTheScripts::Save)); +} + +int addrof(CTheScripts::ScriptAttachAnimGroupToCharModel) = ADDRESS_BY_VERSION(0x474800, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::ScriptAttachAnimGroupToCharModel) = GLOBAL_ADDRESS_BY_VERSION(0x474800, 0, 0, 0, 0, 0); + +bool CTheScripts::ScriptAttachAnimGroupToCharModel(int modelId, char *ifpName) { + return plugin::CallAndReturnDynGlobal(gaddrof(CTheScripts::ScriptAttachAnimGroupToCharModel), modelId, ifpName); +} + +int addrof(CTheScripts::ScriptConnectLodsFunction) = ADDRESS_BY_VERSION(0x470A20, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::ScriptConnectLodsFunction) = GLOBAL_ADDRESS_BY_VERSION(0x470A20, 0, 0, 0, 0, 0); + +void CTheScripts::ScriptConnectLodsFunction(int objecthandle1, int objecthandle2) { + plugin::CallDynGlobal(gaddrof(CTheScripts::ScriptConnectLodsFunction), objecthandle1, objecthandle2); +} + +int addrof(CTheScripts::ScriptDebugCircle2D) = ADDRESS_BY_VERSION(0x485C20, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::ScriptDebugCircle2D) = GLOBAL_ADDRESS_BY_VERSION(0x485C20, 0, 0, 0, 0, 0); + +void CTheScripts::ScriptDebugCircle2D(float x, float y, float width, float height, CRGBA color) { + plugin::CallDynGlobal(gaddrof(CTheScripts::ScriptDebugCircle2D), x, y, width, height, color); +} + +int addrof_o(CTheScripts::StartNewScript, CRunningScript *(*)(unsigned char *)) = ADDRESS_BY_VERSION(0x464C20, 0, 0, 0, 0, 0); +int gaddrof_o(CTheScripts::StartNewScript, CRunningScript *(*)(unsigned char *)) = GLOBAL_ADDRESS_BY_VERSION(0x464C20, 0, 0, 0, 0, 0); + +CRunningScript *CTheScripts::StartNewScript(unsigned char *startIP) { + return plugin::CallAndReturnDynGlobal(gaddrof_o(CTheScripts::StartNewScript, CRunningScript *(*)(unsigned char *)), startIP); +} + +int addrof_o(CTheScripts::StartNewScript, int(*)(unsigned char *, unsigned short)) = ADDRESS_BY_VERSION(0x464C90, 0, 0, 0, 0, 0); +int gaddrof_o(CTheScripts::StartNewScript, int(*)(unsigned char *, unsigned short)) = GLOBAL_ADDRESS_BY_VERSION(0x464C90, 0, 0, 0, 0, 0); + +int CTheScripts::StartNewScript(unsigned char *startIP, unsigned short index) { + return plugin::CallAndReturnDynGlobal(gaddrof_o(CTheScripts::StartNewScript, int(*)(unsigned char *, unsigned short)), startIP, index); +} + +int addrof(CTheScripts::StartTestScript) = ADDRESS_BY_VERSION(0x464D40, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::StartTestScript) = GLOBAL_ADDRESS_BY_VERSION(0x464D40, 0, 0, 0, 0, 0); + +void CTheScripts::StartTestScript() { + plugin::CallDynGlobal(gaddrof(CTheScripts::StartTestScript)); +} + +int addrof(CTheScripts::UndoBuildingSwaps) = ADDRESS_BY_VERSION(0x481290, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::UndoBuildingSwaps) = GLOBAL_ADDRESS_BY_VERSION(0x481290, 0, 0, 0, 0, 0); + +void CTheScripts::UndoBuildingSwaps() { + plugin::CallDynGlobal(gaddrof(CTheScripts::UndoBuildingSwaps)); +} + +int addrof(CTheScripts::UndoEntityInvisibilitySettings) = ADDRESS_BY_VERSION(0x4812D0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::UndoEntityInvisibilitySettings) = GLOBAL_ADDRESS_BY_VERSION(0x4812D0, 0, 0, 0, 0, 0); + +void CTheScripts::UndoEntityInvisibilitySettings() { + plugin::CallDynGlobal(gaddrof(CTheScripts::UndoEntityInvisibilitySettings)); +} + +int addrof(CTheScripts::UpdateObjectIndices) = ADDRESS_BY_VERSION(0x486780, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::UpdateObjectIndices) = GLOBAL_ADDRESS_BY_VERSION(0x486780, 0, 0, 0, 0, 0); + +void CTheScripts::UpdateObjectIndices() { + plugin::CallDynGlobal(gaddrof(CTheScripts::UpdateObjectIndices)); +} + +int addrof(CTheScripts::UseSwitchJumpTable) = ADDRESS_BY_VERSION(0x4703C0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::UseSwitchJumpTable) = GLOBAL_ADDRESS_BY_VERSION(0x4703C0, 0, 0, 0, 0, 0); + +void CTheScripts::UseSwitchJumpTable(int *pSwitchLabelAddress) { + plugin::CallDynGlobal(gaddrof(CTheScripts::UseSwitchJumpTable), pSwitchLabelAddress); +} + +int addrof(CTheScripts::WipeLocalVariableMemoryForMissionScript) = ADDRESS_BY_VERSION(0x464BB0, 0, 0, 0, 0, 0); +int gaddrof(CTheScripts::WipeLocalVariableMemoryForMissionScript) = GLOBAL_ADDRESS_BY_VERSION(0x464BB0, 0, 0, 0, 0, 0); + +void CTheScripts::WipeLocalVariableMemoryForMissionScript() { + plugin::CallDynGlobal(gaddrof(CTheScripts::WipeLocalVariableMemoryForMissionScript)); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTheScripts.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTheScripts.h new file mode 100644 index 00000000..fb9ec0df --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTheScripts.h @@ -0,0 +1,321 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CRunningScript.h" +#include "CPed.h" +#include "CVehicle.h" +#include "CObject.h" +#include "CMissionCleanup.h" +#include "CBuilding.h" +#include "CSprite2d.h" +#include "CStreamedScripts.h" +#include "CScriptResourceManager.h" +#include "CStuckCarCheck.h" +#include "CUpsideDownCarCheck.h" +#include "CScriptsForBrains.h" + +struct tBuildingSwap +{ + CBuilding *m_pCBuilding; + int m_nOldModelIndex; + int m_nNewModelIndex; +}; + +struct tScriptSwitchCase +{ + int m_nSwitchValue; + int m_nSwitchLabelAddress; +}; + +struct tScriptCheckpoint +{ + char bUsed; + char field_1; + short wUniqueID; + void *field_4; +}; +struct tScriptEffectSystem +{ + char bUsed; + short wUniqueID; + void *m_pFxSystem; +}; + +struct tScriptSequence +{ + char bUsed; + short wUniqueID; +}; + +struct tScriptText +{ + float letterWidth; + int letterHeight; + RwRGBA color; + char m_bJustify; + char centered; + char withBackground; + char _pad; + int lineHeight; + int lineWidth; + RwRGBA backgroundBoxColor; + char proportional; + RwRGBA backgroundColor; + char shadowType; + char outlineType; + char m_bDrawBeforeFade; + char m_bRightJustify; + char _pad_25; + char _pad_26; + char _pad_27; + int font; + int xPosition; + int yPosition; + char gxtEntry[8]; + int param1; + int param2; +}; + +struct tScriptRectangle +{ + int type; + char m_bDrawBeforeFade; + char field_5; + short textureID; + int cornerA_X; + int cornerA_Y; + int cornerB_X; + int cornerB_Y; + int angle; + int transparentColor; + char gxt[8]; + int field_28; + int field_2C; + int field_30; + int field_34; + char textboxStyle; + char field_39[3]; +}; + +struct tScriptAttachedAnimGroup +{ + int m_nModelID; + char m_IfpName[16]; +}; + +struct tScriptSearchlight +{ + char bUsed; + char field_1; + char bEnableShadow; + char field_3; + short wUniqueID; + short field_6; + RwV3d position; + RwV3d target; + float targetRadius; + float baseRadius; + RwV3d pathCoord1; + RwV3d pathCoord2; + float pathSpeed; + int attachedEntity; + int followingEntity; + int tower; + int housing; + int bulb; + RwV3d targetSpot; + RwV3d field_64; + RwV3d field_70; +}; + +struct tUsedObject +{ + char szModelName[24]; + int dwModelIndex; +}; + +struct tScriptSphere +{ + char bUsed; + char field_1; + short wUniqueID; + int field_4; + RwV3d vCoords; + int fRadius; +}; + + + +class PLUGIN_API CTheScripts +{ +public: + SUPPORTED_10US static bool &DbgFlag; + SUPPORTED_10US static tScriptSwitchCase *SwitchJumpTable; // static tScriptSwitchCase SwitchJumpTable[75] + SUPPORTED_10US static unsigned short &NumberOfEntriesInSwitchTable; + SUPPORTED_10US static void *&SwitchDefaultAddress; + SUPPORTED_10US static bool &SwitchDefaultExists; + SUPPORTED_10US static int &ValueToCheckInSwitchStatement; + SUPPORTED_10US static unsigned short &NumberOfEntriesStillToReadForSwitch; + SUPPORTED_10US static tScriptSequence *ScriptSequenceTaskArray; // static tScriptSequence ScriptSequenceTaskArray[64] + SUPPORTED_10US static unsigned short &NumberOfScriptCheckpoints; + SUPPORTED_10US static tScriptCheckpoint *ScriptCheckpointArray; // static tScriptCheckpoint ScriptCheckpointArray[20] + SUPPORTED_10US static tScriptEffectSystem *ScriptEffectSystemArray; // static tScriptEffectSystem ScriptEffectSystemArray[32] + SUPPORTED_10US static short &CardStackPosition; + SUPPORTED_10US static short *CardStack; // static short CardStack[312] + SUPPORTED_10US static bool &bDrawSubtitlesBeforeFade; + SUPPORTED_10US static bool &bDrawOddJobTitleBeforeFade; + SUPPORTED_10US static bool &bScriptHasFadedOut; + SUPPORTED_10US static bool &bAddNextMessageToPreviousBriefs; + SUPPORTED_10US static int &ForceRandomCarModel; + SUPPORTED_10US static bool &bDrawCrossHair; + SUPPORTED_10US static bool &bEnableCraneRelease; + SUPPORTED_10US static bool &bEnableCraneLower; + SUPPORTED_10US static bool &bEnableCraneRaise; + SUPPORTED_10US static float &fCameraHeadingStepWhenPlayerIsAttached; + SUPPORTED_10US static float &fCameraHeadingWhenPlayerIsAttached; + SUPPORTED_10US static bool &bDisplayHud; + SUPPORTED_10US static bool &HideAllFrontEndMapBlips; + SUPPORTED_10US static bool &RadarShowBlipOnAllLevels; + SUPPORTED_10US static unsigned char &RadarZoomValue; + SUPPORTED_10US static bool &bPlayerIsOffTheMap; + SUPPORTED_10US static char &RiotIntensity; + SUPPORTED_10US static bool &bPlayerHasMetDebbieHarry; + SUPPORTED_10US static bool &bDisplayNonMiniGameHelpMessages; + SUPPORTED_10US static bool &bMiniGameInProgress; + SUPPORTED_10US static int &ScriptPickupCycleIndex; + SUPPORTED_10US static char &FailCurrentMission; + SUPPORTED_10US static bool &bAlreadyRunningAMissionScript; + SUPPORTED_10US static unsigned int &LargestNumberOfMissionScriptLocalVariables; + SUPPORTED_10US static unsigned short &NumberOfExclusiveMissionScripts; + SUPPORTED_10US static unsigned short &NumberOfMissionScripts; + SUPPORTED_10US static unsigned int &LargestMissionScriptSize; + SUPPORTED_10US static unsigned int &MainScriptSize; + SUPPORTED_10US static char *MultiScriptArray; // static char MultiScriptArray[800] + SUPPORTED_10US static bool &bUsingAMultiScriptFile; + SUPPORTED_10US static int &StoreVehicleIndex; + SUPPORTED_10US static bool &StoreVehicleWasRandom; + SUPPORTED_10US static unsigned short &CommandsExecuted; + SUPPORTED_10US static unsigned short &ScriptsUpdated; + SUPPORTED_10US static int *ScriptConnectLodsObjects; // static int ScriptConnectLodsObjects[20] + SUPPORTED_10US static tScriptAttachedAnimGroup *ScriptAttachedAnimGroups; // static tScriptAttachedAnimGroup ScriptAttachedAnimGroups[8] + SUPPORTED_10US static int *VehicleModelsBlockedByScript; // static int VehicleModelsBlockedByScript[20] + SUPPORTED_10US static int *SuppressedVehicleModels; // static int SuppressedVehicleModels[40] + SUPPORTED_10US static CEntity **InvisibilitySettingArray; // static CEntity *InvisibilitySettingArray[20] + SUPPORTED_10US static tBuildingSwap *BuildingSwapArray; // static tBuildingSwap BuildingSwapArray[25] + SUPPORTED_10US static unsigned short &NumberOfIntroRectanglesThisFrame; + SUPPORTED_10US static unsigned short &MessageWidth; + SUPPORTED_10US static unsigned short &MessageCentre; + SUPPORTED_10US static bool &bUseMessageFormatting; + SUPPORTED_10US static bool &UseTextCommands; + SUPPORTED_10US static unsigned short &NumberOfIntroTextLinesThisFrame; + SUPPORTED_10US static unsigned short &NumberOfUsedObjects; + SUPPORTED_10US static tUsedObject *UsedObjectArray; // static tUsedObject UsedObjectArray[395] + SUPPORTED_10US static int &LastRandomPedId; + SUPPORTED_10US static unsigned int &LastMissionPassedTime; + SUPPORTED_10US static int &OnAMissionFlag; + SUPPORTED_10US static CEntity *&EntitiesWaitingForScriptBrain; + SUPPORTED_10US static CStreamedScripts &StreamedScripts; + SUPPORTED_10US static CScriptResourceManager &ScriptResourceManager; + SUPPORTED_10US static CUpsideDownCarCheck &UpsideDownCars; + SUPPORTED_10US static tScriptParam *LocalVariablesForCurrentMission; // static ScriptVar LocalVariablesForCurrentMission[1024] + //! Script space, where main.scm MAIN section is loaded. + SUPPORTED_10US static char *ScriptSpace; // static char ScriptSpace[200000] + SUPPORTED_10US static char *MissionBlock; // static char MissionBlock[69000] + SUPPORTED_10US static CRunningScript *&pIdleScripts; + SUPPORTED_10US static CRunningScript *&pActiveScripts; + SUPPORTED_10US static CRunningScript *ScriptsArray; // static CRunningScript ScriptsArray[96] + SUPPORTED_10US static unsigned short &NumberOfScriptSearchLights; + SUPPORTED_10US static CMissionCleanup &MissionCleanUp; + SUPPORTED_10US static CStuckCarCheck &StuckCars; + SUPPORTED_10US static CScriptsForBrains &ScriptsForBrains; + SUPPORTED_10US static tScriptSphere *ScriptSphereArray; // static CScriptSphere ScriptSphereArray[16] + SUPPORTED_10US static tScriptText *IntroTextLines; // static tScriptText IntroTextLines[96] + SUPPORTED_10US static tScriptRectangle *IntroRectangles; // static tScriptRectangle IntroRectangles[128] + SUPPORTED_10US static CSprite2d *ScriptSprites; // static CSprite2d ScriptSprites[128] + SUPPORTED_10US static tScriptSearchlight *ScriptSearchLightArray; // static tScriptSearchlight ScriptSearchLightArray[8] + + SUPPORTED_10US static int AddScriptCheckpoint(float at_X, float at_Y, float at_Z, float PointTo_X, float PointTo_Y, float PointTo_Z, float radius, int type); + SUPPORTED_10US static int AddScriptEffectSystem(FxSystem_c *a1); + SUPPORTED_10US static int AddScriptSearchLight(float startX, float startY, float startZ, CEntity *entity, float targetX, float targetY, float targetZ, float targetRadius, float baseRadius); + SUPPORTED_10US static unsigned int AddScriptSphere(unsigned int id, CVector posn, float radius); + SUPPORTED_10US static void AddToBuildingSwapArray(CBuilding *a1, int newModelId, int oldModelId); + SUPPORTED_10US static void AddToInvisibilitySwapArray(CEntity *a2, bool bVisible); + SUPPORTED_10US static void AddToListOfConnectedLodObjects(CObject *pObject1, CObject *pObject2); + SUPPORTED_10US static void AddToListOfSpecialAnimGroupsAttachedToCharModels(int modelid, char *ifpName); + SUPPORTED_10US static double AddToSwitchJumpTable(int switchValue, int switchLabelLocalAddress); + SUPPORTED_10US static void AddToVehicleModelsBlockedByScript(int modelindex); + SUPPORTED_10US static void AddToWaitingForScriptBrainArray(CEntity *pEntity, short arg2); + SUPPORTED_10US static void AttachSearchlightToSearchlightObject(int searchlightid, CObject *tower, CObject *housing, CObject *bulb, float offsetX, float offsetY, float offsetZ); + SUPPORTED_10US static char CheckStreamedScriptVersion(RwStream *arg1, char *arg2); + SUPPORTED_10US static void CleanUpThisObject(CObject *pObject); + SUPPORTED_10US static void CleanUpThisPed(CPed *ped); + SUPPORTED_10US static void CleanUpThisVehicle(CVehicle *pVehicle); + SUPPORTED_10US static void ClearAllSuppressedCarModels(); + SUPPORTED_10US static void ClearAllVehicleModelsBlockedByScript(); + SUPPORTED_10US static void ClearSpaceForMissionEntity(CVector const &pos, CEntity *pEntity); + SUPPORTED_10US static void DoScriptSetupAfterPoolsHaveLoaded(); + SUPPORTED_10US static void DrawDebugAngledSquare(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4); + SUPPORTED_10US static void DrawDebugCube(float x1, float y1, float x2, float y2); + SUPPORTED_10US static void DrawScriptSpheres(); + SUPPORTED_10US static void DrawScriptSpritesAndRectangles(char bDrawBeforeFade); + SUPPORTED_10US static signed int GetActualScriptThingIndex(int index, unsigned char type); + SUPPORTED_10US static unsigned int GetNewUniqueScriptThingIndex(unsigned int index, char type); + SUPPORTED_10US static int GetScriptIndexFromPointer(CRunningScript *thread); + //! type is always 8 , which refers to PedGroups + SUPPORTED_10US static unsigned int GetUniqueScriptThingIndex(int playergroup, unsigned char type); + SUPPORTED_10US static bool HasVehicleModelBeenBlockedByScript(int modelindex); + SUPPORTED_10US static void HighlightImportantAngledArea(unsigned int markerid, float from_X, float from_Y, float to_X, float to_Y, float angledTo_X, float angledTo_Y, float angledFrom_X, float angledFrom_Y, float height); + SUPPORTED_10US static void HighlightImportantArea(int markerid, float from_X, float from_Y, float to_X, float to_Y, float height); + SUPPORTED_10US static void Init(); + SUPPORTED_10US static void InitialiseAllConnectLodObjects(); + SUPPORTED_10US static void InitialiseConnectLodObjects(unsigned short a1); + SUPPORTED_10US static void InitialiseSpecialAnimGroup(unsigned short a1); + SUPPORTED_10US static void InitialiseSpecialAnimGroupsAttachedToCharModels(); + SUPPORTED_10US static bool IsEntityWithinAnySearchLight(CEntity *pEntity, int *pIndex); + SUPPORTED_10US static bool IsEntityWithinSearchLight(unsigned int index, CEntity *pEntity); + SUPPORTED_10US static bool IsPedStopped(CPed *ped); + SUPPORTED_10US static bool IsPlayerOnAMission(); + SUPPORTED_10US static bool IsPointWithinSearchLight(CVector *pointPosn, int index); + SUPPORTED_10US static bool IsVehicleStopped(CVehicle *pVehicle); + SUPPORTED_10US static void Load(); + SUPPORTED_10US static void MoveSearchLightBetweenTwoPoints(int index, float x1, float y1, float z1, float x2, float y2, float z2, float pathSpeed); + SUPPORTED_10US static void MoveSearchLightToEntity(int index, CEntity *pEntity, float pathSpeed); + SUPPORTED_10US static void MoveSearchLightToPointAndStop(int index, float x, float y, float z, float pathSpeed); + SUPPORTED_10US static void PrintListSizes(); + SUPPORTED_10US static void Process(); + SUPPORTED_10US static void ProcessAllSearchLights(); + SUPPORTED_10US static void ProcessWaitingForScriptBrainArray(); + SUPPORTED_10US static void ReadMultiScriptFileOffsetsFromScript(); + SUPPORTED_10US static void ReadObjectNamesFromScript(); + SUPPORTED_10US static void ReinitialiseSwitchStatementData(); + SUPPORTED_10US static void RemoveFromVehicleModelsBlockedByScript(int modelindex); + SUPPORTED_10US static int RemoveFromWaitingForScriptBrainArray(CEntity *a1, short modelIndex); + SUPPORTED_10US static void RemoveScriptCheckpoint(int arg1); + SUPPORTED_10US static void RemoveScriptEffectSystem(int arg1); + SUPPORTED_10US static void RemoveScriptSearchLight(unsigned int index); + SUPPORTED_10US static void RemoveScriptSphere(int index); + SUPPORTED_10US static void RemoveScriptTextureDictionary(); + SUPPORTED_10US static void RemoveThisPed(CPed *ped); + SUPPORTED_10US static void RenderAllSearchLights(); + SUPPORTED_10US static void Save(); + SUPPORTED_10US static bool ScriptAttachAnimGroupToCharModel(int modelId, char *ifpName); + SUPPORTED_10US static void ScriptConnectLodsFunction(int objecthandle1, int objecthandle2); + SUPPORTED_10US static void ScriptDebugCircle2D(float x, float y, float width, float height, CRGBA color); + SUPPORTED_10US static CRunningScript *StartNewScript(unsigned char *startIP); + SUPPORTED_10US static int StartNewScript(unsigned char *startIP, unsigned short index); + SUPPORTED_10US static void StartTestScript(); + SUPPORTED_10US static void UndoBuildingSwaps(); + SUPPORTED_10US static void UndoEntityInvisibilitySettings(); + SUPPORTED_10US static void UpdateObjectIndices(); + SUPPORTED_10US static void UseSwitchJumpTable(int *pSwitchLabelAddress); + SUPPORTED_10US static void WipeLocalVariableMemoryForMissionScript(); +}; + +#include "meta/meta.CTheScripts.h" + +SUPPORTED_10US extern int* ScriptParams; // 32 diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTheZones.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTheZones.cpp new file mode 100644 index 00000000..1176ce4a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTheZones.cpp @@ -0,0 +1,176 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTheZones.h" + +#define VAR_CTheZones__m_CurrLevel 0xBA6718 +#define VAR_CTheZones__ExploredTerritoriesArray 0xBA3730 +#define VAR_CTheZones__TotalNumberExploredTerritories 0xBA372C +#define VAR_CTheZones__TotalNumberOfInfoZones 0x572A5A +#define VAR_CTheZones__ZoneInfoArray 0xBA3798 +#define VAR_CTheZones__TotalNumberOfMapZones 0xBA3794 +#define VAR_CTheZones__MapZoneArray 0xBA1908 + +#define FUNC_CTheZones__InitZonesPopulationSettings 0x5720D0 +#define FUNC_CTheZones__ResetZonesRevealed 0x572110 +#define FUNC_CTheZones__GetCurrentZoneLockedOrUnlocked 0x572130 +#define FUNC_CTheZones__AssignZoneInfoForThisZone 0x572180 +#define FUNC_CTheZones__ZoneIsEntirelyContainedWithinOtherZone 0x572220 +#define FUNC_CTheZones__PointLiesWithinZone 0x572270 +#define FUNC_CTheZones__GetLevelFromPosition 0x572300 +#define FUNC_CTheZones__FindSmallestZoneForPosition 0x572360 +#define FUNC_CTheZones__GetZoneInfo 0x572400 +#define FUNC_CTheZones__FillZonesWithGangColours 0x572440 +#define FUNC_CTheZones__GetInfoZone 0x572590 +#define FUNC_CTheZones__GetMapZone 0x5725A0 +#define FUNC_CTheZones__Calc2DDistanceBetween2Zones 0x5725b0 +#define FUNC_CTheZones__Init 0x572670 +#define FUNC_CTheZones__SetCurrentZoneAsUnlocked 0x572800 +#define FUNC_CTheZones__CreateZone 0x5728A0 +#define FUNC_CTheZones__FindZone 0x572B80 +#define FUNC_CTheZones__FindZoneByLabel 0x572C40 +#define FUNC_CTheZones__SetZoneRadarColours 0x572cc0 +#define FUNC_CTheZones__Update 0x572D10 +#define FUNC_CTheZones__Save 0x5D2E60 +#define FUNC_CTheZones__Load 0x5D2F40 + +// Variables +eLevelName& CTheZones::m_CurrLevel = *(eLevelName*)VAR_CTheZones__m_CurrLevel; + +char* CTheZones::ExploredTerritoriesArray = (char*)VAR_CTheZones__ExploredTerritoriesArray; +int& CTheZones::TotalNumberExploredTerritories = *(int*)VAR_CTheZones__TotalNumberExploredTerritories; + +short& CTheZones::TotalNumberOfMapZones = *(short*)VAR_CTheZones__TotalNumberOfInfoZones; +CZone* CTheZones::ZoneInfoArray = (CZone*)VAR_CTheZones__ZoneInfoArray; + +short& CTheZones::TotalNumberOfInfoZones = *(short*)VAR_CTheZones__TotalNumberOfMapZones; +CZone* CTheZones::MapZoneArray = (CZone*)VAR_CTheZones__MapZoneArray; + +// Functions +void CTheZones::InitZonesPopulationSettings() +{ + ((void (__cdecl*)()) FUNC_CTheZones__InitZonesPopulationSettings) (); +} + +void CTheZones::ResetZonesRevealed() +{ + ((void (__cdecl*)()) FUNC_CTheZones__ResetZonesRevealed) (); +} + +bool CTheZones::GetCurrentZoneLockedOrUnlocked(float posx, float posy) +{ + return ((bool (__cdecl*)(float, float)) FUNC_CTheZones__GetCurrentZoneLockedOrUnlocked) (posx, posy); +} + + +void CTheZones::AssignZoneInfoForThisZone(short index) +{ + ((void (__cdecl*)(short)) FUNC_CTheZones__AssignZoneInfoForThisZone) (index); +} + +bool CTheZones::ZoneIsEntirelyContainedWithinOtherZone(CZone* pZone1, CZone* pZone2) +{ + return ((bool (__cdecl*)(CZone*, CZone*)) FUNC_CTheZones__ZoneIsEntirelyContainedWithinOtherZone) (pZone1, pZone2); +} + +// Returns true if point lies within zone +bool CTheZones::PointLiesWithinZone(CVector const* pPoint, CZone * pZone) +{ + return ((bool (__cdecl*)(CVector const*, CZone *)) FUNC_CTheZones__PointLiesWithinZone)(pPoint, pZone); +} + +// Returns eLevelName from position +eLevelName CTheZones::GetLevelFromPosition(CVector const* pPoint) +{ + return ((eLevelName (__cdecl*)(CVector const*)) FUNC_CTheZones__GetLevelFromPosition)(pPoint); +} + +// Returns pointer to zone by a point +CZone* CTheZones::FindSmallestZoneForPosition(const CVector& point, bool FindOnlyZonesType0) +{ + return ((CZone* (__cdecl*)(const CVector&, bool)) FUNC_CTheZones__FindSmallestZoneForPosition)(point, FindOnlyZonesType0); +} + +CZoneInfo* CTheZones::GetZoneInfo(CVector *point, CZone **outzone) +{ + return ((CZoneInfo * (__cdecl*)(CVector*, CZone**)) FUNC_CTheZones__GetZoneInfo) (point, outzone); +} + +void CTheZones::FillZonesWithGangColours(bool DisableRadarGangColors) +{ + ((void (__cdecl*)(bool)) FUNC_CTheZones__FillZonesWithGangColours) (DisableRadarGangColors); +} + +// Returns pointer to zone by index +CZone* CTheZones::GetInfoZone(short index) +{ + return ((CZone* (__cdecl*)(short)) FUNC_CTheZones__GetInfoZone)(index); +} + +// Returns pointer to zone by index +CZone* CTheZones::GetMapZone(short index) +{ + return ((CZone* (__cdecl*)(short)) FUNC_CTheZones__GetMapZone)(index); +} + +long double CTheZones::Calc2DDistanceBetween2Zones(CZone *Zone1, CZone *Zone2) +{ + return ((long double (__cdecl*)(CZone*, CZone*)) FUNC_CTheZones__Calc2DDistanceBetween2Zones) (Zone1, Zone2); +} + +// Initializes CTheZones +void CTheZones::Init() +{ + ((void (__cdecl*)()) FUNC_CTheZones__Init)(); +} + +// Unlock the current zone +void CTheZones::SetCurrentZoneAsUnlocked() +{ + ((void (__cdecl*)()) FUNC_CTheZones__SetCurrentZoneAsUnlocked)(); +} + +// Creates a zone +void CTheZones::CreateZone(const char *name, eZoneType type, float posX1, float posY1, float posZ1, float posX2, float posY2, float posZ2, eLevelName island, const char *GXT_key) +{ + ((void (__cdecl*)(const char *, eZoneType, float, float, float, float, float, float, eLevelName island, const char *)) FUNC_CTheZones__CreateZone) + (name, type, posX1, posY1, posZ1, posX2, posY2, posZ2, island, GXT_key); +} + +// Returns 1 if point lies within the specified zonename otherwise return 0 +bool CTheZones::FindZone(CVector* point, int zonename_part1 ,int zonename_part2, eZoneType type) +{ + return ((bool (__cdecl*)(CVector*, int, int, eZoneType)) FUNC_CTheZones__FindZone)(point, zonename_part1, zonename_part2, type); +} + +// Returns pointer to zone by index +short CTheZones::FindZoneByLabel(const char* name, eZoneType type) +{ + return ((short (__cdecl*)(const char*, eZoneType)) FUNC_CTheZones__FindZoneByLabel)(name, type); +} + +void CTheZones::SetZoneRadarColours(short index, char flag, unsigned char red, unsigned char green, unsigned char blue) +{ + ((void (__cdecl*)(short, char, unsigned char, unsigned char, unsigned char)) FUNC_CTheZones__SetZoneRadarColours) (index, flag, red, green, blue); +} + +// Updates CTheZones info +void CTheZones::Update() +{ + ((void (__cdecl*)()) FUNC_CTheZones__Update)(); +} + +// Save CTheZones info +void CTheZones::Save() +{ + ((void (__cdecl*)()) FUNC_CTheZones__Save) (); +} + +// Load CTheZones info +void CTheZones::Load() +{ + ((void (__cdecl*)()) FUNC_CTheZones__Load) (); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTheZones.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTheZones.h new file mode 100644 index 00000000..426fb86d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTheZones.h @@ -0,0 +1,93 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVector.h" +#include "CZone.h" + + +class PLUGIN_API CTheZones +{ +public: + static eLevelName& m_CurrLevel; + + // Explored territories + // Count: 100 + static char* ExploredTerritoriesArray; + // Number of explored territories + static int& TotalNumberExploredTerritories; + + // Info zones + static short& TotalNumberOfInfoZones; + // Count: 380 + static CZone* ZoneInfoArray; + + // Map zones + static short& TotalNumberOfMapZones; + // Count: 39 + static CZone* MapZoneArray; + + // Functions + + static void InitZonesPopulationSettings(); + + static void ResetZonesRevealed(); + + static void AssignZoneInfoForThisZone(short index); + + static bool ZoneIsEntirelyContainedWithinOtherZone(CZone* pZone1, CZone* pZone2); + + static bool GetCurrentZoneLockedOrUnlocked(float posx, float posy); + + // Returns true if point lies within zone + static bool PointLiesWithinZone(CVector const* pPoint, CZone * pZone); + + // Returns eLevelName from position + static eLevelName GetLevelFromPosition(CVector const* pPoint); + + // Returns pointer to zone by a point + static CZone* FindSmallestZoneForPosition(const CVector& point, bool FindOnlyZonesType0); + + static CZoneInfo* GetZoneInfo(CVector *point, CZone **outzone); + + static void FillZonesWithGangColours(bool DisableRadarGangColors); + + // Returns pointer to zone by index + static CZone* GetInfoZone(short index); + + // Returns pointer to zone by index + static CZone* GetMapZone(short index); + + static long double Calc2DDistanceBetween2Zones(CZone *Zone1, CZone *Zone2); + + // Initializes CTheZones + static void Init(); + + // Unlock the current zone + static void SetCurrentZoneAsUnlocked(); + + // Creates a zone + static void CreateZone(const char *name, eZoneType type, float posX1, float posY1, float posZ1, float posX2, float posY2, float posZ2, eLevelName island, const char *GXT_key); + + // Returns 1 if point within the specified zonename otherwise return 0 + static bool FindZone(CVector* point, int zonename_part1 ,int zonename_part2,eZoneType type); + + // Returns pointer to zone by index + static short FindZoneByLabel(const char* name, eZoneType type); + + static void SetZoneRadarColours(short index, char flag, unsigned char red, unsigned char green, unsigned char blue); + + // Updates CTheZones info + static void Update(); + + // Save CTheZones info + static void Save(); + + // Load CTheZones info + static void Load(); + +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTimeCycle.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTimeCycle.cpp new file mode 100644 index 00000000..89451df5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTimeCycle.cpp @@ -0,0 +1,248 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTimeCycle.h" + + +float& CTimeCycle::m_BrightnessAddedToAmbientBlue{ *(float*)0xB79E30 }; + +float& CTimeCycle::m_BrightnessAddedToAmbientGreen{ *(float*)0xB79E34 }; + +float& CTimeCycle::m_BrightnessAddedToAmbientRed{ *(float*)0xB79E38 }; + +int& CTimeCycle::m_ExtraColourInter{ *(int*)0xB79E3C }; + +int& CTimeCycle::m_ExtraColourWeatherType{ *(int*)0xB79E40 }; + +int& CTimeCycle::m_ExtraColour{ *(int*)0xB79E44 }; + +int& CTimeCycle::m_FogReduction{ *(int*)0xB79E48 }; + +float* CTimeCycle::m_fShadowDisplacementY{ (float*)0xB79E50 }; //m_fShadowDisplacementY[16] + +float* CTimeCycle::m_fShadowDisplacementX{ (float*)0xB79E90 }; //m_fShadowDisplacementX[16] + +float* CTimeCycle::m_fShadowSideY{ (float*)0xB79ED0 }; //m_fShadowSideY[16] + +float* CTimeCycle::m_fShadowSideX{ (float*)0xB79F10 }; //m_fShadowSideX[16] + +float* CTimeCycle::m_fShadowFrontY{ (float*)0xB79F50 }; //m_fShadowFrontY[16] + +float* CTimeCycle::m_fShadowFrontX{ (float*)0xB79F90 }; //m_fShadowFrontX[16] + +int& CTimeCycle::m_CurrentStoredValue{ *(int*)0xB79FD0 }; + +unsigned char* CTimeCycle::m_nDirectionalMult{ (unsigned char*)0xB79FD8 }; //m_nDirectionalMult[184] + +unsigned char* CTimeCycle::m_nWaterFogAlpha{ (unsigned char*)0xB7A090 }; //m_nWaterFogAlpha[184] + +unsigned char* CTimeCycle::m_nHighLightMinIntensity{ (unsigned char*)0xB7A148 }; //m_nHighLightMinIntensity[184] + +unsigned char* CTimeCycle::m_fCloudAlpha{ (unsigned char*)0xB7A200 }; //m_fCloudAlpha[184] + +unsigned char* CTimeCycle::m_fPostFx2Alpha{ (unsigned char*)0xB7A2B8 }; //m_fPostFx2Alpha[184] + +unsigned char* CTimeCycle::m_fPostFx2Blue{ (unsigned char*)0xB7A370 }; //m_fPostFx2Blue[184] + +unsigned char* CTimeCycle::m_fPostFx2Green{ (unsigned char*)0xB7A428 }; //m_fPostFx2Green[184] + +unsigned char* CTimeCycle::m_fPostFx2Red{ (unsigned char*)0xB7A4E0 }; //m_fPostFx2Red[184] + +unsigned char* CTimeCycle::m_fPostFx1Alpha{ (unsigned char*)0xB7A598 }; //m_fPostFx1Alpha[184] + +unsigned char* CTimeCycle::m_fPostFx1Blue{ (unsigned char*)0xB7A650 }; //m_fPostFx1Blue[184] + +unsigned char* CTimeCycle::m_fPostFx1Green{ (unsigned char*)0xB7A708 }; //m_fPostFx1Green[184] + +unsigned char* CTimeCycle::m_fPostFx1Red{ (unsigned char*)0xB7A7C0 }; //m_fPostFx1Red[184] + +unsigned char* CTimeCycle::m_fWaterAlpha{ (unsigned char*)0xB7A878 }; //m_fWaterAlpha[184] + +unsigned char* CTimeCycle::m_fWaterBlue{ (unsigned char*)0xB7A930 }; //m_fWaterBlue[184] + +unsigned char* CTimeCycle::m_fWaterGreen{ (unsigned char*)0xB7A9E8 }; //m_fWaterGreen[184] + +unsigned char* CTimeCycle::m_fWaterRed{ (unsigned char*)0xB7AAA0 }; //m_fWaterRed[184] + +unsigned char* CTimeCycle::m_nFluffyCloudsBottomBlue{ (unsigned char*)0xB7AB58 }; //m_nFluffyCloudsBottomBlue[184] + +unsigned char* CTimeCycle::m_nFluffyCloudsBottomGreen{ (unsigned char*)0xB7AC10 }; //m_nFluffyCloudsBottomGreen[184] + +unsigned char* CTimeCycle::m_nFluffyCloudsBottomRed{ (unsigned char*)0xB7ACC8 }; //m_nFluffyCloudsBottomRed[184] + +unsigned char* CTimeCycle::m_nLowCloudsBlue{ (unsigned char*)0xB7AD80 }; //m_nLowCloudsBlue[184] + +unsigned char* CTimeCycle::m_nLowCloudsGreen{ (unsigned char*)0xB7AE38 }; //m_nLowCloudsGreen[184] + +unsigned char* CTimeCycle::m_nLowCloudsRed{ (unsigned char*)0xB7AEF0 }; //m_nLowCloudsRed[184] + +unsigned char* CTimeCycle::m_fLightsOnGroundBrightness{ (unsigned char*)0xB7AFA8 }; //m_fLightsOnGroundBrightness[184] + +signed short* CTimeCycle::m_fFogStart{ (signed short*)0xB7B060 }; //m_fFogStart[184] + +signed short* CTimeCycle::m_fFarClip{ (signed short*)0xB7B1D0 }; //m_fFarClip[184] + +unsigned char* CTimeCycle::m_nPoleShadowStrength{ (unsigned char*)0xB7B340 }; //m_nPoleShadowStrength[184] + +unsigned char* CTimeCycle::m_nLightShadowStrength{ (unsigned char*)0xB7B3F8 }; //m_nLightShadowStrength[184] + +unsigned char* CTimeCycle::m_nShadowStrength{ (unsigned char*)0xB7B4B0 }; //m_nShadowStrength[184] + +char* CTimeCycle::m_fSpriteBrightness{ (char*)0xB7B568 }; //m_fSpriteBrightness[184] + +char* CTimeCycle::m_fSpriteSize{ (char*)0xB7B620 }; //m_fSpriteSize[184] + +char* CTimeCycle::m_fSunSize{ (char*)0xB7B6D8 }; //m_fSunSize[184] + +unsigned char* CTimeCycle::m_nSunCoronaBlue{ (unsigned char*)0xB7B790 }; //m_nSunCoronaBlue[184] + +unsigned char* CTimeCycle::m_nSunCoronaGreen{ (unsigned char*)0xB7B848 }; //m_nSunCoronaGreen[184] + +unsigned char* CTimeCycle::m_nSunCoronaRed{ (unsigned char*)0xB7B900 }; //m_nSunCoronaRed[184] + +unsigned char* CTimeCycle::m_nSunCoreBlue{ (unsigned char*)0xB7B9B8 }; //m_nSunCoreBlue[184] + +unsigned char* CTimeCycle::m_nSunCoreGreen{ (unsigned char*)0xB7BA70 }; //m_nSunCoreGreen[184] + +unsigned char* CTimeCycle::m_nSunCoreRed{ (unsigned char*)0xB7BB28 }; //m_nSunCoreRed[184] + +unsigned char* CTimeCycle::m_nSkyBottomBlue{ (unsigned char*)0xB7BBE0 }; //m_nSkyBottomBlue[184] + +unsigned char* CTimeCycle::m_nSkyBottomGreen{ (unsigned char*)0xB7BC98 }; //m_nSkyBottomGreen[184] + +unsigned char* CTimeCycle::m_nSkyBottomRed{ (unsigned char*)0xB7BD50 }; //m_nSkyBottomRed[184] + +unsigned char* CTimeCycle::m_nSkyTopBlue{ (unsigned char*)0xB7BE08 }; //m_nSkyTopBlue[45] + +unsigned char* CTimeCycle::m_nSkyTopGreen{ (unsigned char*)0xB7BEC0 }; //m_nSkyTopGreen[45] + +unsigned char* CTimeCycle::m_nSkyTopRed{ (unsigned char*)0xB7BF78 }; //m_nSkyTopRed[45] + +unsigned char* CTimeCycle::m_nAmbientBlue_Obj{ (unsigned char*)0xB7C030 }; //m_nAmbientBlue_Obj[184] + +unsigned char* CTimeCycle::m_nAmbientGreen_Obj{ (unsigned char*)0xB7C0E8 }; //m_nAmbientGreen_Obj[184] + +unsigned char* CTimeCycle::m_nAmbientRed_Obj{ (unsigned char*)0xB7C1A0 }; //m_nAmbientRed_Obj[184] + +unsigned char* CTimeCycle::m_nAmbientBlue{ (unsigned char*)0xB7C258 }; //m_nAmbientBlue[184] + +unsigned char* CTimeCycle::m_nAmbientGreen{ (unsigned char*)0xB7C310 }; //m_nAmbientGreen[184] + +unsigned char* CTimeCycle::m_nAmbientRed{ (unsigned char*)0xB7C3C8 }; //m_nAmbientRed[184] + +unsigned int& CTimeCycle::m_NumBoxes{ *(unsigned int*)0xB7C480 }; + +unsigned int& CTimeCycle::m_bExtraColourOn{ *(unsigned int*)0xB7C484 }; + +CColourSet& CTimeCycle::m_CurrentColours{ *(CColourSet*)0xB7C4A0 }; + +CTimeCycleBox* CTimeCycle::m_aBoxes{ (CTimeCycleBox*)0xB7C550 }; //m_aBoxes[20] + +CVector* CTimeCycle::m_VectorToSun{ (CVector*)0xB7CA50 }; //m_VectorToSun[16] + +RwRGBA& CTimeCycle::m_BelowHorizonGrey{ *(RwRGBA*)0xB7CB10 }; + +RwV3d& CTimeCycle::m_vecDirnLightToSun{ *(RwV3d*)0xB7CB14 }; + +// Converted from cdecl void CTimeCycle::AddOne(CBox &box,short farclip,int extracolor,float strength,float falloff,float lodDistMult) 0x55FF40 +void CTimeCycle::AddOne(CBox& box, short farclip, int extracolor, float strength, float falloff, float lodDistMult) { + plugin::Call<0x55FF40, CBox&, short, int, float, float, float>(box, farclip, extracolor, strength, falloff, lodDistMult); +} + +// Converted from cdecl void CTimeCycle::CalcColoursForPoint(CVector point,CColourSet * pCurrentColourSet) 0x5603D0 +void CTimeCycle::CalcColoursForPoint(CVector point, CColourSet* pCurrentColourSet) { + plugin::Call<0x5603D0, CVector, CColourSet*>(point, pCurrentColourSet); +} + +// Converted from cdecl void CTimeCycle::FindFarClipForCoors(CVector cam_pos) 0x5616E0 +void CTimeCycle::FindFarClipForCoors(CVector cam_pos) { + plugin::Call<0x5616E0, CVector>(cam_pos); +} + +// Converted from cdecl void CTimeCycle::FindTimeCycleBox(CVector pos,CTimeCycleBox **outbox,float *interpolation,bool bCheckLod,bool bCheckFar,CTimeCycleBox *exclude) 0x55FFD0 +void CTimeCycle::FindTimeCycleBox(CVector pos, CTimeCycleBox** outbox, float* interpolation, bool bCheckLod, bool bCheckFar, CTimeCycleBox* exclude) { + plugin::Call<0x55FFD0, CVector, CTimeCycleBox**, float*, bool, bool, CTimeCycleBox*>(pos, outbox, interpolation, bCheckLod, bCheckFar, exclude); +} + +// Converted from cdecl float CTimeCycle::GetAmbientBlue(void) 0x560350 +float CTimeCycle::GetAmbientBlue() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl float CTimeCycle::GetAmbientBlue_BeforeBrightness(void) 0x5603B0 +float CTimeCycle::GetAmbientBlue_BeforeBrightness() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl float CTimeCycle::GetAmbientBlue_Obj(void) 0x560380 +float CTimeCycle::GetAmbientBlue_Obj() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl float CTimeCycle::GetAmbientGreen(void) 0x560340 +float CTimeCycle::GetAmbientGreen() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl float CTimeCycle::GetAmbientGreen_BeforeBrightness(void) 0x5603A0 +float CTimeCycle::GetAmbientGreen_BeforeBrightness() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl float CTimeCycle::GetAmbientGreen_Obj(void) 0x560370 +float CTimeCycle::GetAmbientGreen_Obj() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl float CTimeCycle::GetAmbientRed(void) 0x560330 +float CTimeCycle::GetAmbientRed() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl float CTimeCycle::GetAmbientRed_BeforeBrightness(void) 0x560390 +float CTimeCycle::GetAmbientRed_BeforeBrightness() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl float CTimeCycle::GetAmbientRed_Obj(void) 0x560360 +float CTimeCycle::GetAmbientRed_Obj() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CTimeCycle::InitForRestart(void)0x5601F0 +void CTimeCycle::InitForRestart() { + plugin::Call<0x5601F0>(); +} + +// Converted from cdecl void CTimeCycle::Initialise(void) 0x5BBAC0 +void CTimeCycle::Initialise() { + plugin::Call<0x5BBAC0>(); +} + +// Converted from cdecl void CTimeCycle::SetConstantParametersForPostFX(void)0x560210 +void CTimeCycle::SetConstantParametersForPostFX() { + plugin::Call<0x560210>(); +} + +// empty function +void CTimeCycle::Shutdown() { + plugin::Call<0x5601E0>(); +} + +// Converted from cdecl void CTimeCycle::StartExtraColour(int colour,bool bNoExtraColorInterior) 0x55FEC0 +void CTimeCycle::StartExtraColour(int colour, bool bNoExtraColorInterior) { + plugin::Call<0x55FEC0, int, bool>(colour, bNoExtraColorInterior); +} + +// Converted from cdecl void CTimeCycle::StopExtraColour(bool bNoExtraColorInterior) 0x55FF20 +void CTimeCycle::StopExtraColour(bool bNoExtraColorInterior) { + plugin::Call<0x55FF20, bool>(bNoExtraColorInterior); +} + +// Converted from cdecl void CTimeCycle::Update(void) 0x561760 +void CTimeCycle::Update() { + plugin::Call<0x561760>(); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTimeCycle.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTimeCycle.h new file mode 100644 index 00000000..3efa21f8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTimeCycle.h @@ -0,0 +1,180 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CColourSet.h" +#include "CBox.h" + +class CTimeCycleBox; + + +class PLUGIN_API CTimeCycle { +public: + static float& m_BrightnessAddedToAmbientBlue; + + static float& m_BrightnessAddedToAmbientGreen; + + static float& m_BrightnessAddedToAmbientRed; + + static int& m_ExtraColourInter; + + static int& m_ExtraColourWeatherType; + + static int& m_ExtraColour; + + static int& m_FogReduction; + + static float* m_fShadowDisplacementY; //m_fShadowDisplacementY[16] + + static float* m_fShadowDisplacementX; //m_fShadowDisplacementX[16] + + static float* m_fShadowSideY; //m_fShadowSideY[16] + + static float* m_fShadowSideX; //m_fShadowSideX[16] + + static float* m_fShadowFrontY; //m_fShadowFrontY[16] + + static float* m_fShadowFrontX; //m_fShadowFrontX[16] + + static int& m_CurrentStoredValue; + + static unsigned char* m_nDirectionalMult; //m_nDirectionalMult[184] + + static unsigned char* m_nWaterFogAlpha; //m_nWaterFogAlpha[184] + + static unsigned char* m_nHighLightMinIntensity; //m_nHighLightMinIntensity[184] + + static unsigned char* m_fCloudAlpha; //m_fCloudAlpha[184] + + static unsigned char* m_fPostFx2Alpha; //m_fPostFx2Alpha[184] + + static unsigned char* m_fPostFx2Blue; //m_fPostFx2Blue[184] + + static unsigned char* m_fPostFx2Green; //m_fPostFx2Green[184] + + static unsigned char* m_fPostFx2Red; //m_fPostFx2Red[184] + + static unsigned char* m_fPostFx1Alpha; //m_fPostFx1Alpha[184] + + static unsigned char* m_fPostFx1Blue; //m_fPostFx1Blue[184] + + static unsigned char* m_fPostFx1Green; //m_fPostFx1Green[184] + + static unsigned char* m_fPostFx1Red; //m_fPostFx1Red[184] + + static unsigned char* m_fWaterAlpha; //m_fWaterAlpha[184] + + static unsigned char* m_fWaterBlue; //m_fWaterBlue[184] + + static unsigned char* m_fWaterGreen; //m_fWaterGreen[184] + + static unsigned char* m_fWaterRed; //m_fWaterRed[184] + + static unsigned char* m_nFluffyCloudsBottomBlue; //m_nFluffyCloudsBottomBlue[184] + + static unsigned char* m_nFluffyCloudsBottomGreen; //m_nFluffyCloudsBottomGreen[184] + + static unsigned char* m_nFluffyCloudsBottomRed; //m_nFluffyCloudsBottomRed[184] + + static unsigned char* m_nLowCloudsBlue; //m_nLowCloudsBlue[184] + + static unsigned char* m_nLowCloudsGreen; //m_nLowCloudsGreen[184] + + static unsigned char* m_nLowCloudsRed; //m_nLowCloudsRed[184] + + static unsigned char* m_fLightsOnGroundBrightness; //m_fLightsOnGroundBrightness[184] + + static signed short* m_fFogStart; //m_fFogStart[184] + + static signed short* m_fFarClip; //m_fFarClip[184] + + static unsigned char* m_nPoleShadowStrength; //m_nPoleShadowStrength[184] + + static unsigned char* m_nLightShadowStrength; //m_nLightShadowStrength[184] + + static unsigned char* m_nShadowStrength; //m_nShadowStrength[184] + + static char* m_fSpriteBrightness; //m_fSpriteBrightness[184] + + static char* m_fSpriteSize; //m_fSpriteSize[184] + + static char* m_fSunSize; //m_fSunSize[184] + + static unsigned char* m_nSunCoronaBlue; //m_nSunCoronaBlue[184] + + static unsigned char* m_nSunCoronaGreen; //m_nSunCoronaGreen[184] + + static unsigned char* m_nSunCoronaRed; //m_nSunCoronaRed[184] + + static unsigned char* m_nSunCoreBlue; //m_nSunCoreBlue[184] + + static unsigned char* m_nSunCoreGreen; //m_nSunCoreGreen[184] + + static unsigned char* m_nSunCoreRed; //m_nSunCoreRed[184] + + static unsigned char* m_nSkyBottomBlue; //m_nSkyBottomBlue[184] + + static unsigned char* m_nSkyBottomGreen; //m_nSkyBottomGreen[184] + + static unsigned char* m_nSkyBottomRed; //m_nSkyBottomRed[184] + + static unsigned char* m_nSkyTopBlue; //m_nSkyTopBlue[45] + + static unsigned char* m_nSkyTopGreen; //m_nSkyTopGreen[45] + + static unsigned char* m_nSkyTopRed; //m_nSkyTopRed[45] + + static unsigned char* m_nAmbientBlue_Obj; //m_nAmbientBlue_Obj[184] + + static unsigned char* m_nAmbientGreen_Obj; //m_nAmbientGreen_Obj[184] + + static unsigned char* m_nAmbientRed_Obj; //m_nAmbientRed_Obj[184] + + static unsigned char* m_nAmbientBlue; //m_nAmbientBlue[184] + + static unsigned char* m_nAmbientGreen; //m_nAmbientGreen[184] + + static unsigned char* m_nAmbientRed; //m_nAmbientRed[184] + + static unsigned int& m_NumBoxes; + + static unsigned int& m_bExtraColourOn; + + static CColourSet& m_CurrentColours; + + static CTimeCycleBox* m_aBoxes; //m_aBoxes[20] + + static CVector* m_VectorToSun; //m_VectorToSun[16] + + static RwRGBA& m_BelowHorizonGrey; + + static RwV3d& m_vecDirnLightToSun; + + // funcs + static void AddOne(CBox& box, short farclip, int extracolor, float strength, float falloff, float lodDistMult); + static void CalcColoursForPoint(CVector point, CColourSet* pCurrentColourSet); + static void FindFarClipForCoors(CVector cam_pos); + static void FindTimeCycleBox(CVector pos, CTimeCycleBox** outbox, float* interpolation, bool bCheckLod, bool bCheckFar, CTimeCycleBox* exclude); + static float GetAmbientBlue(); + static float GetAmbientBlue_BeforeBrightness(); + static float GetAmbientBlue_Obj(); + static float GetAmbientGreen(); + static float GetAmbientGreen_BeforeBrightness(); + static float GetAmbientGreen_Obj(); + static float GetAmbientRed(); + static float GetAmbientRed_BeforeBrightness(); + static float GetAmbientRed_Obj(); + static void InitForRestart(); + static void Initialise(); + static void SetConstantParametersForPostFX(); + static void Shutdown(); // empty function + static void StartExtraColour(int colour, bool bNoExtraColorInterior); + static void StopExtraColour(bool bNoExtraColorInterior); + static void Update(); + +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTimeCycleBox.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTimeCycleBox.h new file mode 100644 index 00000000..4513f0c7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTimeCycleBox.h @@ -0,0 +1,24 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CBox.h" + + +class CTimeCycleBox +{ +public: + CBox box; + short farclip; + unsigned char lodDistMult; + int extraColor; + float strength; + float falloff; +}; + +VALIDATE_SIZE(CTimeCycleBox,0x28) \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTimeModelInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTimeModelInfo.cpp new file mode 100644 index 00000000..1fbd1ff7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTimeModelInfo.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTimeModelInfo.h" + +void CTimeModelInfo::FindOtherTimeModel(char *modelName) +{ + ((void (__thiscall *)(CTimeModelInfo *, char *))0x4C47E0)(this, modelName); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTimeModelInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTimeModelInfo.h new file mode 100644 index 00000000..f1def0cf --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTimeModelInfo.h @@ -0,0 +1,18 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CAtomicModelInfo.h" + +class PLUGIN_API CTimeModelInfo : public CAtomicModelInfo { +public: + tTimeInfo m_timeInfo; + + void FindOtherTimeModel(char *modelName); +}; + +VALIDATE_SIZE(CTimeModelInfo, 0x24); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTimer.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTimer.cpp new file mode 100644 index 00000000..1ba970ab --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTimer.cpp @@ -0,0 +1,94 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTimer.h" + +bool& CTimer::bSkipProcessThisFrame = *(bool*)0xB7CB89; +bool& CTimer::bSlowMotionActive = *(bool*)0xB7CB88; +float& CTimer::game_FPS = *(float*)0xB7CB50; + +bool& CTimer::m_CodePause = *(bool*)0xB7CB48; +bool& CTimer::m_UserPause = *(bool*)0xB7CB49; +unsigned int& CTimer::m_FrameCounter = *(unsigned int*)0xB7CB4C; +float& CTimer::ms_fTimeStepNonClipped = *(float*)0xB7CB58; +float& CTimer::ms_fTimeStep = *(float*)0xB7CB5C; +float& CTimer::ms_fTimeScale = *(float*)0xB7CB64; +unsigned int& CTimer::m_snPreviousTimeInMilliseconds = *(unsigned int*)0xB7CB78; +unsigned int& CTimer::m_snTimeInMillisecondsPauseMode = *(unsigned int*)0xB7CB7C; +unsigned int& CTimer::m_snTimeInMillisecondsNonClipped = *(unsigned int*)0xB7CB80; +unsigned int& CTimer::m_snTimeInMilliseconds = *(unsigned int*)0xB7CB84; + +unsigned int& CTimer::m_snPPPPreviousTimeInMilliseconds = *(unsigned int*)0xB7CB6C; +unsigned int& CTimer::m_snPPPreviousTimeInMilliseconds = *(unsigned int*)0xB7CB70; +unsigned int& CTimer::m_snPPreviousTimeInMilliseconds = *(unsigned int*)0xB7CB74; +unsigned int& CTimer::m_snPreviousTimeInMillisecondsNonClipped = *(unsigned int*)0xB7CB68; +float& CTimer::ms_fOldTimeStep = *(float*)0xB7CB54; +float& CTimer::ms_fSlowMotionScale = *(float*)0xB7CB60; + +void CTimer::Initialise() +{ + ((void(__cdecl *)()) 0x5617E0)(); +} + +void CTimer::Shutdown() +{ + ((void(__cdecl *)()) 0x5618C0)(); +} + +void CTimer::UpdateVariables(float timeStep) +{ + ((void(__cdecl *)(float)) 0x5618D0)(timeStep); +} + +void CTimer::Suspend() +{ + ((void(__cdecl *)()) 0x5619D0)(); +} + +void CTimer::Resume() +{ + ((void(__cdecl *)()) 0x561A00)(); +} + +int CTimer::GetCyclesPerMillisecond() +{ + return ((int(__cdecl *)()) 0x561A40)(); +} + +int CTimer::GetCyclesPerFrame() +{ + return ((int(__cdecl *)()) 0x561A50)(); +} + +unsigned int CTimer::GetCurrentTimeInCycles() +{ + return ((unsigned int(__cdecl *)()) 0x561A80)(); +} + +void CTimer::Stop() +{ + ((void(__cdecl *)()) 0x561AA0)(); +} + +bool CTimer::GetIsSlowMotionActive() +{ + return ((bool(__cdecl *)()) 0x561AD0)(); +} + +void CTimer::StartUserPause() +{ + ((void(__cdecl *)()) 0x561AF0)(); +} + +void CTimer::EndUserPause() +{ + ((void(__cdecl *)()) 0x561B00)(); +} + +void CTimer::Update() +{ + ((void(__cdecl *)()) 0x561B10)(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTimer.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTimer.h new file mode 100644 index 00000000..2021365c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTimer.h @@ -0,0 +1,55 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CTimer +{ +public: + // class variables + static bool& bSkipProcessThisFrame; + static bool& bSlowMotionActive; + static float& game_FPS; + + static bool& m_CodePause; + static unsigned int& m_FrameCounter; + static bool& m_UserPause; + static float& ms_fTimeStepNonClipped; + static float& ms_fTimeStep; + + static unsigned int& m_snPPPPreviousTimeInMilliseconds; + static unsigned int& m_snPPPreviousTimeInMilliseconds; + static unsigned int& m_snPPreviousTimeInMilliseconds; + static unsigned int& m_snPreviousTimeInMillisecondsNonClipped; + static float& ms_fOldTimeStep; + static float& ms_fSlowMotionScale; + + // game speed + static float& ms_fTimeScale; + static unsigned int& m_snPreviousTimeInMilliseconds; + static unsigned int& m_snTimeInMillisecondsPauseMode; + static unsigned int& m_snTimeInMillisecondsNonClipped; + static unsigned int& m_snTimeInMilliseconds; + + // class functions + + static void Initialise(); + static void Shutdown(); + static void UpdateVariables(float timeStep); + static void Suspend(); + static void Resume(); + static int GetCyclesPerMillisecond(); + // cycles per ms * 20 + static int GetCyclesPerFrame(); + static unsigned int GetCurrentTimeInCycles(); + static void Stop(); + static bool GetIsSlowMotionActive(); + static void StartUserPause(); + static void EndUserPause(); + static void Update(); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTrailer.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTrailer.cpp new file mode 100644 index 00000000..9d60f442 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTrailer.cpp @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTrailer.h" + +float& CTrailer::m_fTrailerSuspensionForce = *(float *)0x8D3464; +float& CTrailer::m_fTrailerDampingForce = *(float *)0x8D3468; +float& TRAILER_TOWED_MINRATIO = *(float *)0x8D346C; +float& RELINK_TRAILER_DIFF_LIMIT_XY = *(float *)0x8D3470; +float& RELINK_TRAILER_DIFF_LIMIT_Z = *(float *)0x8D3474; + +// Converted from thiscall void CTrailer::CTrailer(int modelIndex,uchar createdBy) 0x6D03A0 +CTrailer::CTrailer(int modelIndex, unsigned char createdBy) : CAutomobile(plugin::dummy) { + ((void(__thiscall *)(CTrailer*, int, unsigned char))0x6D03A0)(this, modelIndex, createdBy); +} + +// Converted from thiscall void CTrailer::ScanForTowLink(void) 0x6CF030 +void CTrailer::ScanForTowLink() { + ((void(__thiscall *)(CTrailer*))0x6CF030)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTrailer.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTrailer.h new file mode 100644 index 00000000..65eb2983 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTrailer.h @@ -0,0 +1,62 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CAutomobile.h" + +enum eTrailerNodes { + TRAILER_NODE_NONE = 0, + TRAILER_CHASSIS = 1, + TRAILER_WHEEL_RF = 2, + TRAILER_WHEEL_RM = 3, + TRAILER_WHEEL_RB = 4, + TRAILER_WHEEL_LF = 5, + TRAILER_WHEEL_LM = 6, + TRAILER_WHEEL_LB = 7, + TRAILER_DOOR_RF = 8, + TRAILER_DOOR_RR = 9, + TRAILER_DOOR_LF = 10, + TRAILER_DOOR_LR = 11, + TRAILER_BUMP_FRONT = 12, + TRAILER_BUMP_REAR = 13, + TRAILER_WING_RF = 14, + TRAILER_WING_LF = 15, + TRAILER_BONNET = 16, + TRAILER_BOOT = 17, + TRAILER_WINDSCREEN = 18, + TRAILER_EXHAUST = 19, + TRAILER_MISC_A = 20, + TRAILER_MISC_B = 21, + TRAILER_MISC_C = 22, + TRAILER_NUM_NODES +}; + +class CTrailer : public CAutomobile { +protected: + CTrailer(plugin::dummy_func_t) : CAutomobile(plugin::dummy) {} +public: + CColPoint field_988[2]; + float field_9E0; + float field_9E4; + char field_9E8[4]; + float field_9EC; + float field_9F0; + + static float& m_fTrailerSuspensionForce; // 1.5 + static float& m_fTrailerDampingForce; // 0.1 + + CTrailer(int modelIndex, unsigned char createdBy); + + void ScanForTowLink(); +}; + +VALIDATE_SIZE(CTrailer, 0x9F4); + +extern float& TRAILER_TOWED_MINRATIO; // 0.9 +extern float& RELINK_TRAILER_DIFF_LIMIT_XY; // 0.4 +extern float& RELINK_TRAILER_DIFF_LIMIT_Z; // 1.0 \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTrain.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTrain.cpp new file mode 100644 index 00000000..01bf1955 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTrain.cpp @@ -0,0 +1,213 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTrain.h" + +unsigned int& CTrain::GenTrain_Track = *(unsigned int *)0xC37FFC; +unsigned int& CTrain::GenTrain_TrainConfig = *(unsigned int *)0xC38000; +unsigned char& CTrain::GenTrain_Direction = *(unsigned char *)0xC38004; +unsigned int& CTrain::GenTrain_GenerationNode = *(unsigned int *)0xC38008; +unsigned int& CTrain::GenTrain_Status = *(unsigned int *)0xC3800C; +bool& CTrain::bDisableRandomTrains = *(bool *)0xC38010; +CVector *CTrain::aStationCoors = (CVector *)0x8D48F8; +unsigned int *NumTrackNodes = (unsigned int *)0xC38014; +CTrainNode **pTrackNodes = (CTrainNode **)0xC38024; +float *StationDist = (float *)0xC38034; + +// Converted from thiscall void CTrain::CTrain(int modelIndex,uchar createdBy) 0x6F6030 +CTrain::CTrain(int modelIndex, unsigned char createdBy) : CVehicle(plugin::dummy) { + ((void(__thiscall *)(CTrain*, int, unsigned char))0x6F6030)(this, modelIndex, createdBy); +} + +// Converted from cdecl void CTrain::ReadAndInterpretTrackFile(char *filename,CTrainNode **nodes,int *lineCount,float *totalDist,int skipStations) 0x6F55D0 +void CTrain::ReadAndInterpretTrackFile(char* filename, CTrainNode** nodes, int* lineCount, float* totalDist, int skipStations) { + ((void(__cdecl *)(char*, CTrainNode**, int*, float*, int))0x6F55D0)(filename, nodes, lineCount, totalDist, skipStations); +} + +// Converted from cdecl void CTrain::Shutdown(void) 0x6F58D0 +void CTrain::Shutdown() { + ((void(__cdecl *)())0x6F58D0)(); +} + +// Converted from cdecl void CTrain::UpdateTrains(void) 0x6F5900 +void CTrain::UpdateTrains() { + ((void(__cdecl *)())0x6F5900)(); +} + +// Converted from cdecl void ProcessTrainAnnouncements(void) 0x6F5910 +void ProcessTrainAnnouncements() { + ((void(__cdecl *)())0x6F5910)(); +} + +// Converted from cdecl void PlayAnnouncement(uchar,uchar) 0x6F5920 +void PlayAnnouncement(unsigned char arg0, unsigned char arg1) { + ((void(__cdecl *)(unsigned char, unsigned char))0x6F5920)(arg0, arg1); +} + +// Converted from cdecl void CTrain::FindCoorsFromPositionOnTrack(float railDistance,int trackId,CVector *outCoors) 0x6F59E0 +void CTrain::FindCoorsFromPositionOnTrack(float railDistance, int trackId, CVector* outCoors) { + ((void(__cdecl *)(float, int, CVector*))0x6F59E0)(railDistance, trackId, outCoors); +} + +// Converted from thiscall bool CTrain::FindMaximumSpeedToStopAtStations(float *speed) 0x6F5BA0 +bool CTrain::FindMaximumSpeedToStopAtStations(float* speed) { + return ((bool(__thiscall *)(CTrain*, float*))0x6F5BA0)(this, speed); +} + +// Converted from thiscall uint CTrain::FindNumCarriagesPulled(void) 0x6F5CD0 +unsigned int CTrain::FindNumCarriagesPulled() { + return ((unsigned int(__thiscall *)(CTrain*))0x6F5CD0)(this); +} + +// Converted from cdecl void TrainHitStuff(CPtrList &ptrList,CEntity *entity) 0x6F5CF0 +void TrainHitStuff(CPtrList& ptrList, CEntity* entity) { + ((void(__cdecl *)(CPtrList&, CEntity*))0x6F5CF0)(ptrList, entity); +} + +// Converted from thiscall void CTrain::OpenTrainDoor(float state) 0x6F5D80 +void CTrain::OpenTrainDoor(float state) { + ((void(__thiscall *)(CTrain*, float))0x6F5D80)(this, state); +} + +// Converted from thiscall void CTrain::AddPassenger(CPed *ped) 0x6F5D90 +void CTrain::AddPassenger(CPed* ped) { + ((void(__thiscall *)(CTrain*, CPed*))0x6F5D90)(this, ped); +} + +// Converted from thiscall void CTrain::RemovePassenger(CPed *ped) 0x6F5DA0 +void CTrain::RemovePassenger(CPed* ped) { + ((void(__thiscall *)(CTrain*, CPed*))0x6F5DA0)(this, ped); +} + +// Converted from cdecl void CTrain::DisableRandomTrains(bool disable) 0x6F5DB0 +void CTrain::DisableRandomTrains(bool disable) { + ((void(__cdecl *)(bool))0x6F5DB0)(disable); +} + +// Converted from cdecl void CTrain::RemoveOneMissionTrain(CTrain* train) 0x6F5DC0 +void CTrain::RemoveOneMissionTrain(CTrain* train) { + ((void(__cdecl *)(CTrain*))0x6F5DC0)(train); +} + +// Converted from cdecl void CTrain::ReleaseOneMissionTrain(CTrain* train) 0x6F5DF0 +void CTrain::ReleaseOneMissionTrain(CTrain* train) { + ((void(__cdecl *)(CTrain*))0x6F5DF0)(train); +} + +// Converted from cdecl void CTrain::SetTrainSpeed(CTrain* train,float speed) 0x6F5E20 +void CTrain::SetTrainSpeed(CTrain* train, float speed) { + ((void(__cdecl *)(CTrain*, float))0x6F5E20)(train, speed); +} + +// Converted from cdecl void CTrain::SetTrainCruiseSpeed(CTrain*,float cruiseSpeed) 0x6F5E50 +void CTrain::SetTrainCruiseSpeed(CTrain* arg0, float cruiseSpeed) { + ((void(__cdecl *)(CTrain*, float))0x6F5E50)(arg0, cruiseSpeed); +} + +// Converted from cdecl CTrain* CTrain::FindCaboose(CTrain* train) 0x6F5E70 +CTrain* CTrain::FindCaboose(CTrain* train) { + return ((CTrain* (__cdecl *)(CTrain*))0x6F5E70)(train); +} + +// Converted from cdecl CTrain* CTrain::FindEngine(CTrain* train) 0x6F5E90 +CTrain* CTrain::FindEngine(CTrain* train) { + return ((CTrain* (__cdecl *)(CTrain*))0x6F5E90)(train); +} + +// Converted from cdecl CTrain* CTrain::FindCarriage(CTrain* train,uchar carriage) 0x6F5EB0 +CTrain* CTrain::FindCarriage(CTrain* train, unsigned char carriage) { + return ((CTrain* (__cdecl *)(CTrain*, unsigned char))0x6F5EB0)(train, carriage); +} + +// Converted from thiscall bool CTrain::FindSideStationIsOn(void) 0x6F5EF0 +bool CTrain::FindSideStationIsOn() { + return ((bool(__thiscall *)(CTrain*))0x6F5EF0)(this); +} + +// Converted from cdecl void CTrain::FindNextStationPositionInDirection(bool clockwiseDirection,float distance,float *distanceToStation,int *numStations) 0x6F5F00 +void CTrain::FindNextStationPositionInDirection(bool clockwiseDirection, float distance, float* distanceToStation, int* numStations) { + ((void(__cdecl *)(bool, float, float*, int*))0x6F5F00)(clockwiseDirection, distance, distanceToStation, numStations); +} + +// Converted from thiscall bool CTrain::IsInTunnel(void) 0x6F6320 +bool CTrain::IsInTunnel() { + return ((bool(__thiscall *)(CTrain*))0x6F6320)(this); +} + +// Converted from cdecl void MarkSurroundingEntitiesForCollisionWithTrain(CVector,float,CEntity *,bool) 0x6F6640 +void MarkSurroundingEntitiesForCollisionWithTrain(CVector arg0, float arg1, CEntity* arg2, bool arg3) { + ((void(__cdecl *)(CVector, float, CEntity*, bool))0x6F6640)(arg0, arg1, arg2, arg3); +} + +// Converted from thiscall void CTrain::RemoveRandomPassenger(void) 0x6F6850 +void CTrain::RemoveRandomPassenger() { + ((void(__thiscall *)(CTrain*))0x6F6850)(this); +} + +// Converted from cdecl void CTrain::RemoveMissionTrains(void) 0x6F6A20 +void CTrain::RemoveMissionTrains() { + ((void(__cdecl *)())0x6F6A20)(); +} + +// Converted from cdecl void CTrain::RemoveAllTrains(void) 0x6F6AA0 +void CTrain::RemoveAllTrains() { + ((void(__cdecl *)())0x6F6AA0)(); +} + +// Converted from cdecl void CTrain::ReleaseMissionTrains(void) 0x6F6B60 +void CTrain::ReleaseMissionTrains() { + ((void(__cdecl *)())0x6F6B60)(); +} + +// Converted from cdecl int CTrain::FindClosestTrackNode(CVector posn,int *outTrackId) 0x6F6BD0 +int CTrain::FindClosestTrackNode(CVector posn, int* outTrackId) { + return ((int(__cdecl *)(CVector, int*))0x6F6BD0)(posn, outTrackId); +} + +// Converted from thiscall void CTrain::FindPositionOnTrackFromCoors(void) 0x6F6CC0 +void CTrain::FindPositionOnTrackFromCoors() { + ((void(__thiscall *)(CTrain*))0x6F6CC0)(this); +} + +// Converted from cdecl CTrain* CTrain::FindNearestTrain(CVector posn,bool mustBeMainTrain) 0x6F7090 +CTrain* CTrain::FindNearestTrain(CVector posn, bool mustBeMainTrain) { + return ((CTrain* (__cdecl *)(CVector, bool))0x6F7090)(posn, mustBeMainTrain); +} + +// Converted from cdecl void CTrain::SetNewTrainPosition(CTrain* train,CVector posn) 0x6F7140 +void CTrain::SetNewTrainPosition(CTrain* train, CVector posn) { + ((void(__cdecl *)(CTrain*, CVector))0x6F7140)(train, posn); +} + +// Converted from cdecl bool CTrain::IsNextStationAllowed(CTrain* train) 0x6F7260 +bool CTrain::IsNextStationAllowed(CTrain* train) { + return ((bool(__cdecl *)(CTrain*))0x6F7260)(train); +} + +// Converted from cdecl void CTrain::SkipToNextAllowedStation(CTrain* train) 0x6F72F0 +void CTrain::SkipToNextAllowedStation(CTrain* train) { + ((void(__cdecl *)(CTrain*))0x6F72F0)(train); +} + +// Converted from cdecl void CTrain::InitTrains(void) 0x6F7440 +void CTrain::InitTrains() { + ((void(__cdecl *)())0x6F7440)(); +} + +// Converted from cdecl void CTrain::CreateMissionTrain(CVector posn,bool clockwiseDirection,uint trainType,CTrain**outFirstCarriage,CTrain**outLastCarriage,int nodeIndex,int trackId,bool isMissionTrain) 0x6F7550 +void CTrain::CreateMissionTrain(CVector posn, bool clockwiseDirection, unsigned int trainType, CTrain**outFirstCarriage, CTrain**outLastCarriage, int nodeIndex, int trackId, bool isMissionTrain) { + ((void(__cdecl *)(CVector, bool, unsigned int, CTrain**, CTrain**, int, int, bool))0x6F7550)(posn, clockwiseDirection, trainType, outFirstCarriage, outLastCarriage, nodeIndex, trackId, isMissionTrain); +} + +// Converted from cdecl void CTrain::DoTrainGenerationAndRemoval(void) 0x6F7900 +void CTrain::DoTrainGenerationAndRemoval() { + ((void(__cdecl *)())0x6F7900)(); +} + +// Converted from thiscall void CTrain::AddNearbyPedAsRandomPassenger(void) 0x6F8170 +void CTrain::AddNearbyPedAsRandomPassenger() { + ((void(__thiscall *)(CTrain*))0x6F8170)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTrain.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTrain.h new file mode 100644 index 00000000..a3fa4caa --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTrain.h @@ -0,0 +1,149 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVehicle.h" +#include "CDoor.h" +#include "CTrainNode.h" + +enum eTrainNodes { + TRAIN_NODE_NONE = 0, + TRAIN_DOOR_LF = 1, + TRAIN_DOOR_RF = 2, + TRAIN_WHEEL_RF1 = 3, + TRAIN_WHEEL_RF2 = 4, + TRAIN_WHEEL_RF3 = 5, + TRAIN_WHEEL_RB1 = 6, + TRAIN_WHEEL_RB2 = 7, + TRAIN_WHEEL_RB3 = 8, + TRAIN_WHEEL_LF1 = 9, + TRAIN_WHEEL_LF2 = 10, + TRAIN_WHEEL_LF3 = 11, + TRAIN_WHEEL_LB1 = 12, + TRAIN_WHEEL_LB2 = 13, + TRAIN_WHEEL_LB3 = 14, + TRAIN_BOGIE_FRONT = 15, + TRAIN_BOGIE_REAR = 16, + TRAIN_NUM_NODES +}; + +enum eTrainPassengersGenerationState { + TRAIN_PASSENGERS_QUERY_NUM_PASSENGERS_TO_LEAVE = 0, + TRAIN_PASSENGERS_TELL_PASSENGERS_TO_LEAVE = 1, + TRAIN_PASSENGERS_QUERY_NUM_PASSENGERS_TO_ENTER = 2, + TRAIN_PASSENGERS_TELL_PASSENGERS_TO_ENTER = 3, + TRAIN_PASSENGERS_GENERATION_FINISHED = 4 +}; + +class CTrain : public CVehicle { +protected: + CTrain(plugin::dummy_func_t) : CVehicle(plugin::dummy) {} +public: + short m_nNodeIndex; +private: + char _pad1[2]; +public: + float m_fTrainSpeed; // 1.0 - train derails + float m_fCurrentRailDistance; + float m_fLength; + float m_fTrainGas; // gas pedal pressed: 255.0, moving forward: 0.0, moving back: -255.0 + float m_fTrainBrake; // 255.0 - braking + struct { + unsigned char b01 : 1; // initialised with 1 + unsigned char bStoppedAtStation : 1; + unsigned char bPassengersCanEnterAndLeave : 1; + unsigned char bIsFrontCarriage : 1; + unsigned char bIsLastCarriage : 1; + unsigned char bMissionTrain : 1; + unsigned char bClockwiseDirection : 1; + unsigned char bStopsAtStations : 1; + unsigned char bNotOnARailRoad : 1; + unsigned char bForceSlowDown : 1; + unsigned char bIsStreakModel : 1; + } m_nTrainFlags; +private: + char _pad5BA[2]; +public: + int m_nTimeWhenStoppedAtStation; + char m_nTrackId; +private: + char _pad5C1[3]; +public: + int m_nTimeWhenCreated; + short field_5C8; // initialized with 0, not referenced + unsigned char m_nPassengersGenerationState; // see eTrainPassengersGenerationState + unsigned char m_nNumPassengersToLeave : 4; // 0 to 4 + unsigned char m_nNumPassengersToEnter : 4; // 0 to 4 + CPed *m_pTemporaryPassenger; // we tell peds to enter train and then delete them + CTrain *m_pPrevCarriage; + CTrain *m_pNextCarriage; + CDoor m_aDoors[6]; + RwFrame *m_aTrainNodes[TRAIN_NUM_NODES]; + + static unsigned int& GenTrain_Track; + static unsigned int& GenTrain_TrainConfig; + static unsigned char& GenTrain_Direction; + static unsigned int& GenTrain_GenerationNode; + static unsigned int& GenTrain_Status; + static bool& bDisableRandomTrains; + + static CVector *aStationCoors; // { 1741.0, -1954.0, 15.0 + // 1297.0, -1898.0, 3.0 + // -1945.0, 128.0, 29.0 + // 1434.0, 2632.0, 13.0 + // 2783.0, 1758.0, 12.0 + // 2865.0, 1281.0, 12.0 } + + CTrain(int modelIndex, unsigned char createdBy); + + bool FindMaximumSpeedToStopAtStations(float* speed); + unsigned int FindNumCarriagesPulled(); + void OpenTrainDoor(float state); // dummy function + void AddPassenger(CPed* ped); // dummy function + void RemovePassenger(CPed* ped); // dummy function + bool FindSideStationIsOn(); + bool IsInTunnel(); + void RemoveRandomPassenger(); + void FindPositionOnTrackFromCoors(); + void AddNearbyPedAsRandomPassenger(); + + static void ReadAndInterpretTrackFile(char* filename, CTrainNode** nodes, int* lineCount, float* totalDist, int skipStations); + static void Shutdown(); + static void UpdateTrains(); // dummy function + static void FindCoorsFromPositionOnTrack(float railDistance, int trackId, CVector* outCoors); // dummy function + static void DisableRandomTrains(bool disable); + static void RemoveOneMissionTrain(CTrain* train); + static void ReleaseOneMissionTrain(CTrain* train); + static void SetTrainSpeed(CTrain* train, float speed); + static void SetTrainCruiseSpeed(CTrain* arg0, float cruiseSpeed); + static CTrain* FindCaboose(CTrain* train); + static CTrain* FindEngine(CTrain* train); + static CTrain* FindCarriage(CTrain* train, unsigned char carriage); + static void FindNextStationPositionInDirection(bool clockwiseDirection, float distance, float* distanceToStation, int* numStations); + static void RemoveMissionTrains(); + static void RemoveAllTrains(); + static void ReleaseMissionTrains(); + static int FindClosestTrackNode(CVector posn, int* outTrackId); + static CTrain* FindNearestTrain(CVector posn, bool mustBeMainTrain); + static void SetNewTrainPosition(CTrain* train, CVector posn); + static bool IsNextStationAllowed(CTrain* train); + static void SkipToNextAllowedStation(CTrain* train); + static void InitTrains(); + static void CreateMissionTrain(CVector posn, bool clockwiseDirection, unsigned int trainType, CTrain**outFirstCarriage, CTrain**outLastCarriage, int nodeIndex, int trackId, bool isMissionTrain); + static void DoTrainGenerationAndRemoval(); +}; + +VALIDATE_SIZE(CTrain, 0x6AC); + +extern unsigned int *NumTrackNodes; // unsigned int NumTrackNodes[4] +extern CTrainNode **pTrackNodes; // CTrainNode *pTrackNodes[4] +extern float *StationDist; // float StationDist[6] + +void ProcessTrainAnnouncements(); // dummy function +void PlayAnnouncement(unsigned char arg0, unsigned char arg1); +void TrainHitStuff(CPtrList& ptrList, CEntity* entity); +void MarkSurroundingEntitiesForCollisionWithTrain(CVector arg0, float arg1, CEntity* arg2, bool arg3); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTrainNode.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTrainNode.cpp new file mode 100644 index 00000000..4c401a30 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTrainNode.cpp @@ -0,0 +1,64 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTrainNode.h" + +// Converted from thiscall void CTrainNode::CTrainNode(void) 0x6F5370 +CTrainNode::CTrainNode() { + ((void(__thiscall *)(CTrainNode*))0x6F5370)(this); +} + +// Converted from thiscall void CTrainNode::SetX(float X) 0x6F5380 +void CTrainNode::SetX(float X) { + ((void(__thiscall *)(CTrainNode*, float))0x6F5380)(this, X); +} + +// Converted from thiscall void CTrainNode::SetY(float Y) 0x6F53A0 +void CTrainNode::SetY(float Y) { + ((void(__thiscall *)(CTrainNode*, float))0x6F53A0)(this, Y); +} + +// Converted from thiscall void CTrainNode::SetZ(float Z) 0x6F53C0 +void CTrainNode::SetZ(float Z) { + ((void(__thiscall *)(CTrainNode*, float))0x6F53C0)(this, Z); +} + +// Converted from thiscall float CTrainNode::GetX(void) 0x6F53E0 +float CTrainNode::GetX() { + return ((float(__thiscall *)(CTrainNode*))0x6F53E0)(this); +} + +// Converted from thiscall float CTrainNode::GetY(void) 0x6F5400 +float CTrainNode::GetY() { + return ((float(__thiscall *)(CTrainNode*))0x6F5400)(this); +} + +// Converted from thiscall float CTrainNode::GetZ(void) 0x6F5420 +float CTrainNode::GetZ() { + return ((float(__thiscall *)(CTrainNode*))0x6F5420)(this); +} + +// Converted from thiscall CVector CTrainNode::GetPosn(void) 0x6F5440 +CVector CTrainNode::GetPosn() { + CVector result; + ((void(__thiscall *)(CTrainNode*, CVector*))0x6F5440)(this, &result); + return result; +} + +// Converted from thiscall void CTrainNode::SetDistanceFromStart(float dist) 0x6F5490 +void CTrainNode::SetDistanceFromStart(float dist) { + ((void(__thiscall *)(CTrainNode*, float))0x6F5490)(this, dist); +} + +// Converted from thiscall float CTrainNode::GetDistanceFromStart(void) 0x6F54B0 +float CTrainNode::GetDistanceFromStart() { + return ((float(__thiscall *)(CTrainNode*))0x6F54B0)(this); +} + +// Converted from thiscall uchar CTrainNode::GetLightingFromCollision(void) 0x6F5F80 +unsigned char CTrainNode::GetLightingFromCollision() { + return ((unsigned char(__thiscall *)(CTrainNode*))0x6F5F80)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTrainNode.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTrainNode.h new file mode 100644 index 00000000..9f9e1b92 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTrainNode.h @@ -0,0 +1,34 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +class CTrainNode { +public: + short x; + short y; + short z; + unsigned short m_nDistanceFromStart; + bool m_nSurfaceLighting; + bool m_bSurfLightingFound; + + CTrainNode(); + void SetX(float X); + void SetY(float Y); + void SetZ(float Z); + float GetX(); + float GetY(); + float GetZ(); + CVector GetPosn(); + void SetDistanceFromStart(float dist); + float GetDistanceFromStart(); + unsigned char GetLightingFromCollision(); +}; + +VALIDATE_SIZE(CTrainNode, 0xA); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTxdStore.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CTxdStore.cpp new file mode 100644 index 00000000..6c376f02 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTxdStore.cpp @@ -0,0 +1,131 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CTxdStore.h" + +CPool *&CTxdStore::ms_pTxdPool = *(CPool **)0xC8800C; + +RwTexDictionary *CTxdStore::ms_pStoredTxd; +// variables list is not finished. Need to make CPools before. + +// class functions + +// store current txd +void CTxdStore::PushCurrentTxd() +{ + ((void (__cdecl *)())0x7316A0)(); +} + +// restore txd +void CTxdStore::PopCurrentTxd() +{ + ((void (__cdecl *)())0x7316B0)(); +} + +// find txd by name. Returning value is txd index +int CTxdStore::FindTxdSlot(char const* name) +{ + return ((int (__cdecl *)(char const*))0x731850)(name); +} + +// find txd by name hash. Returning value is txd index +signed int CTxdStore::FindTxdSlot(unsigned int hash) +{ + return ((signed int (__cdecl *)(unsigned int))0x7318E0)(hash); +} + +bool CTxdStore::StartLoadTxd(int index, RwStream *stream) +{ + return ((bool (__cdecl *)(int, RwStream *))0x731930)(index, stream); +} + +// create rw tex dictionary for txd slot +void CTxdStore::Create(int index) +{ + ((void (__cdecl *)(int))0x731990)(index); +} + +// set the txd to work with +void CTxdStore::SetCurrentTxd(int index) +{ + ((void (__cdecl *)(int))0x7319C0)(index); +} + +// add reference for txd +TxdDef *CTxdStore::AddRef(int index) +{ + return ((TxdDef *(__cdecl *)(int))0x731A00)(index); +} + +// remove reference, if references count is 0, then delete txd +void CTxdStore::RemoveRef(int index) +{ + ((void (__cdecl *)(int))0x731A30)(index); +} + +// remove reference without deleting +TxdDef *CTxdStore::RemoveRefWithoutDelete(int index) +{ + return ((TxdDef *(__cdecl *)(int))0x731A70)(index); +} + +// get references count +unsigned int CTxdStore::GetNumRefs(int index) +{ + return ((unsigned int (__cdecl *)(int))0x731AA0)(index); +} + +// allocate new slot for this txd +int CTxdStore::AddTxdSlot(char const* name) +{ + return ((int (__cdecl *)(char const*))0x731C80)(name); +} + +// remove txd slot +void CTxdStore::RemoveTxdSlot(int index) +{ + ((void (__cdecl *)(int))0x731CD0)(index); +} + +// load txd from stream +bool CTxdStore::LoadTxd(int index, RwStream *stream) +{ + return ((bool (__cdecl *)(int, RwStream *))0x731DD0)(index, stream); +} + +bool CTxdStore::FinishLoadTxd(int index, RwStream *stream) +{ + return ((bool (__cdecl *)(int, RwStream *))0x731E40)(index, stream); +} + +// remove txd +void CTxdStore::RemoveTxd(int index) +{ + ((void (__cdecl *)(int))0x731E90)(index); +} + +// initialise txd store +void CTxdStore::Initialise() +{ + ((void (__cdecl *)())0x731F20)(); +} + +// shutdown txd store +void CTxdStore::Shutdown() +{ + ((void (__cdecl *)())0x732000)(); +} + +void CTxdStore::GameShutdown() +{ + ((void (__cdecl *)())0x732060)(); +} + +// load txd from file +bool CTxdStore::LoadTxd(int index, char const* filename) +{ + return ((bool (__cdecl *)(int, char const*))0x7320B0)(index, filename); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CTxdStore.h b/third-party/plugin-sdk/plugin_sa/game_sa/CTxdStore.h new file mode 100644 index 00000000..fbc2cac1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CTxdStore.h @@ -0,0 +1,63 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "TxdDef.h" +#include "CPool.h" + +class PLUGIN_API CTxdStore +{ +public: + // class variables + + static CPool *&ms_pTxdPool; + + static RwTexDictionary *ms_pStoredTxd; + // variables list is not finished. Need to make CPools before. + + // class functions + + // store current txd + static void PushCurrentTxd(); + // restore txd + static void PopCurrentTxd(); + // find txd by name. Returning value is txd index + static int FindTxdSlot(char const* name); + // find txd by name hash. Returning value is txd index + static int FindTxdSlot(unsigned int hash); + static bool StartLoadTxd(int index, RwStream *stream); + // create rw tex dictionary for txd slot + static void Create(int index); + // set the txd to work with + static void SetCurrentTxd(int index); + // add reference for txd + static TxdDef *AddRef(int index); + // remove reference, if references count is 0, then delete txd + static void RemoveRef(int index); + // remove reference without deleting + static TxdDef *RemoveRefWithoutDelete(int index); + // get references count + static unsigned int GetNumRefs(int index); + // allocate new slot for this txd + static int AddTxdSlot(char const* name); + // remove txd slot + static void RemoveTxdSlot(int index); + // load txd from stream + static bool LoadTxd(int index, RwStream *stream); + static bool FinishLoadTxd(int index, RwStream *stream); + // remove txd + static void RemoveTxd(int index); + // initialise txd store + static void Initialise(); + // shutdown txd store + static void Shutdown(); + static void GameShutdown(); + // load txd from file + static bool LoadTxd(int index, char const* filename); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CUpsideDownCarCheck.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CUpsideDownCarCheck.cpp new file mode 100644 index 00000000..4def59e0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CUpsideDownCarCheck.cpp @@ -0,0 +1,65 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CUpsideDownCarCheck.h" + +PLUGIN_SOURCE_FILE + +int addrof(CUpsideDownCarCheck::AddCarToCheck) = ADDRESS_BY_VERSION(0x4638D0, 0, 0, 0, 0, 0); +int gaddrof(CUpsideDownCarCheck::AddCarToCheck) = GLOBAL_ADDRESS_BY_VERSION(0x4638D0, 0, 0, 0, 0, 0); + +void CUpsideDownCarCheck::AddCarToCheck(int carHandle) { + plugin::CallMethodDynGlobal(gaddrof(CUpsideDownCarCheck::AddCarToCheck), this, carHandle); +} + +int addrof(CUpsideDownCarCheck::AreAnyCarsUpsideDown) = ADDRESS_BY_VERSION(0x4638A0, 0, 0, 0, 0, 0); +int gaddrof(CUpsideDownCarCheck::AreAnyCarsUpsideDown) = GLOBAL_ADDRESS_BY_VERSION(0x4638A0, 0, 0, 0, 0, 0); + +bool CUpsideDownCarCheck::AreAnyCarsUpsideDown() { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CUpsideDownCarCheck::AreAnyCarsUpsideDown), this); +} + +int addrof(CUpsideDownCarCheck::HasCarBeenUpsideDownForAWhile) = ADDRESS_BY_VERSION(0x463940, 0, 0, 0, 0, 0); +int gaddrof(CUpsideDownCarCheck::HasCarBeenUpsideDownForAWhile) = GLOBAL_ADDRESS_BY_VERSION(0x463940, 0, 0, 0, 0, 0); + +char CUpsideDownCarCheck::HasCarBeenUpsideDownForAWhile(int carHandle) { + return plugin::CallMethodAndReturnDynGlobal(gaddrof(CUpsideDownCarCheck::HasCarBeenUpsideDownForAWhile), this, carHandle); +} + +int addrof(CUpsideDownCarCheck::Init) = ADDRESS_BY_VERSION(0x463810, 0, 0, 0, 0, 0); +int gaddrof(CUpsideDownCarCheck::Init) = GLOBAL_ADDRESS_BY_VERSION(0x463810, 0, 0, 0, 0, 0); + +void CUpsideDownCarCheck::Init() { + plugin::CallMethodDynGlobal(gaddrof(CUpsideDownCarCheck::Init), this); +} + +int addrof(CUpsideDownCarCheck::RemoveCarFromCheck) = ADDRESS_BY_VERSION(0x463910, 0, 0, 0, 0, 0); +int gaddrof(CUpsideDownCarCheck::RemoveCarFromCheck) = GLOBAL_ADDRESS_BY_VERSION(0x463910, 0, 0, 0, 0, 0); + +void CUpsideDownCarCheck::RemoveCarFromCheck(int carHandle) { + plugin::CallMethodDynGlobal(gaddrof(CUpsideDownCarCheck::RemoveCarFromCheck), this, carHandle); +} + +int addrof(CUpsideDownCarCheck::UpdateTimers) = ADDRESS_BY_VERSION(0x4655E0, 0, 0, 0, 0, 0); +int gaddrof(CUpsideDownCarCheck::UpdateTimers) = GLOBAL_ADDRESS_BY_VERSION(0x4655E0, 0, 0, 0, 0, 0); + +void CUpsideDownCarCheck::UpdateTimers() { + plugin::CallMethodDynGlobal(gaddrof(CUpsideDownCarCheck::UpdateTimers), this); +} + +int addrof_o(CUpsideDownCarCheck::IsCarUpsideDown, bool (*)(CVehicle *)) = ADDRESS_BY_VERSION(0x463830, 0, 0, 0, 0, 0); +int gaddrof_o(CUpsideDownCarCheck::IsCarUpsideDown, bool (*)(CVehicle *)) = GLOBAL_ADDRESS_BY_VERSION(0x463830, 0, 0, 0, 0, 0); + +bool CUpsideDownCarCheck::IsCarUpsideDown(CVehicle *pVehicle) { + return plugin::CallAndReturnDynGlobal(gaddrof_o(CUpsideDownCarCheck::IsCarUpsideDown, bool (*)(CVehicle *)), pVehicle); +} + +int addrof_o(CUpsideDownCarCheck::IsCarUpsideDown, bool (*)(int)) = ADDRESS_BY_VERSION(0x4655A0, 0, 0, 0, 0, 0); +int gaddrof_o(CUpsideDownCarCheck::IsCarUpsideDown, bool (*)(int)) = GLOBAL_ADDRESS_BY_VERSION(0x4655A0, 0, 0, 0, 0, 0); + +bool CUpsideDownCarCheck::IsCarUpsideDown(int carhandle) { + return plugin::CallAndReturnDynGlobal(gaddrof_o(CUpsideDownCarCheck::IsCarUpsideDown, bool (*)(int)), carhandle); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CUpsideDownCarCheck.h b/third-party/plugin-sdk/plugin_sa/game_sa/CUpsideDownCarCheck.h new file mode 100644 index 00000000..0fab15e3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CUpsideDownCarCheck.h @@ -0,0 +1,33 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVehicle.h" + +class PLUGIN_API CUpsideDownCarCheck { +public: + + struct { + int m_nCarHandle; + int field_4; + } m_aUpsideDownCars[6]; + + SUPPORTED_10US void AddCarToCheck(int carHandle); + //! never used + SUPPORTED_10US bool AreAnyCarsUpsideDown(); + SUPPORTED_10US char HasCarBeenUpsideDownForAWhile(int carHandle); + SUPPORTED_10US void Init(); + SUPPORTED_10US void RemoveCarFromCheck(int carHandle); + SUPPORTED_10US void UpdateTimers(); + + SUPPORTED_10US static bool IsCarUpsideDown(CVehicle *pVehicle); + SUPPORTED_10US static bool IsCarUpsideDown(int carhandle); +}; +VALIDATE_SIZE(CUpsideDownCarCheck, 0x30); + +#include "meta/meta.CUpsideDownCarCheck.h" diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CUserDisplay.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CUserDisplay.cpp new file mode 100644 index 00000000..902193b7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CUserDisplay.cpp @@ -0,0 +1,9 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CUserDisplay.h" + +COnscreenTimer &CUserDisplay::OnscnTimer = *(COnscreenTimer *)0xBA1788; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CUserDisplay.h b/third-party/plugin-sdk/plugin_sa/game_sa/CUserDisplay.h new file mode 100644 index 00000000..3ecbbb5d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CUserDisplay.h @@ -0,0 +1,16 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "COnscreenTimer.h" + +class PLUGIN_API CUserDisplay +{ +public: + static COnscreenTimer &OnscnTimer; +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CVector.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CVector.cpp new file mode 100644 index 00000000..759ef758 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CVector.cpp @@ -0,0 +1,97 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CVector.h" + +CVector::CVector() +{ + +} + +CVector::CVector(float X, float Y, float Z) +{ + ((void(__thiscall *)(CVector *, float, float, float))0x420B10)(this, X, Y, Z); +} + +// Returns length of vector +float CVector::Magnitude() +{ + return ((float (__thiscall*)(CVector*)) 0x4082C0)(this); +} + +float CVector::Magnitude2D() +{ + return ((float (__thiscall *)(CVector *))0x406D50)(this); +} + +// Normalises a vector +void CVector::Normalise() +{ + ((void (__thiscall*)(CVector*)) 0x59C910)(this); +} + +// Normalises a vector and returns length +float CVector::NormaliseAndMag() +{ + return ( (float (__thiscall*)(CVector*)) 0x59C970)(this); +} + +// Performs cross calculation +void CVector::Cross(const CVector& left, const CVector &right) +{ + ((void (__thiscall*)(CVector*, const CVector& left, const CVector &right)) 0x70F890)(this, left, right); +} + +// Adds left + right and stores result +void CVector::Sum(const CVector& left, const CVector &right) +{ + ( (void (__thiscall*)(CVector*, const CVector& left, const CVector &right)) 0x40FDD0)(this, left, right); +} + +// Subtracts left - right and stores result +void CVector::Difference(const CVector& left, const CVector &right) +{ + ((void (__thiscall*)(CVector*, const CVector& left, const CVector &right)) 0x40FE00)(this, left, right); +} + +// Assigns value from other vector +void CVector::operator= (const CVector& right) +{ + ((void (__thiscall*)(CVector*, const CVector &right)) 0x411B50)(this, right); +} + +// Adds value from the second vector. +void CVector::operator+=(const CVector& right) +{ + ((void (__thiscall*)(CVector*, const CVector &right)) 0x411A00)(this, right); +} + +void CVector::operator-=(const CVector& right) +{ + ((void (__thiscall *)(CVector *, const CVector& right))0x406D70)(this, right); +} + +// Multiplies vector by a floating point value +void CVector::operator *= (float multiplier) +{ + ((void (__thiscall*)(CVector*, float multiplier)) 0x40FEF0)(this, multiplier); +} + +// Divides vector by a floating point value +void CVector::operator /= (float divisor) +{ + ((void (__thiscall*)(CVector*, float divisor)) 0x0411A30)(this, divisor); +} + +void CVector::FromMultiply(CMatrix const& matrix, CVector const& vector) +{ + ((void (__thiscall *)(CVector *, CMatrix const&, CVector const&))0x59C670)(this, matrix, vector); +} + +void CVector::FromMultiply3x3(CMatrix const& matrix, CVector const& vector) +{ + ((void (__thiscall *)(CVector *, CMatrix const&, CVector const&))0x59C6D0)(this, matrix, vector); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CVector.h b/third-party/plugin-sdk/plugin_sa/game_sa/CVector.h new file mode 100644 index 00000000..34f2b21f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CVector.h @@ -0,0 +1,98 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "RenderWare.h" + +class CVector { +public: + float x, y, z; + + CVector(); + CVector(float X, float Y, float Z); + + inline CVector(CVector const& src) { + x = src.x; y = src.y; z = src.z; + } + + inline CVector(RwV3d const &right) { + FromRwV3d(right); + } + + // Returns length of vector + float Magnitude(); + + // Returns length of 2d vector + float Magnitude2D(); + + float MagnitudeSqr2D() const { return x * x + y * y; } + + + // Normalises a vector + void Normalise(); + + // Normalises a vector and returns length + float NormaliseAndMag(); + + // Performs cross calculation + void Cross(const CVector& left, const CVector &right); + + // Adds left + right and stores result + void Sum(const CVector& left, const CVector &right); + + // Subtracts left - right and stores result + void Difference(const CVector& left, const CVector &right); + + void operator=(const CVector& right); + void operator+=(const CVector& right); + void operator-=(const CVector& right); + void operator *= (float multiplier); + void operator /= (float divisor); + + // matrix * vector multiplication + void FromMultiply(class CMatrix const& matrix, CVector const& vector); + void FromMultiply3x3(class CMatrix const& matrix, CVector const& vector); + + inline void Set(float X, float Y, float Z) { + x = X; y = Y; z = Z; + } + + inline RwV3d ToRwV3d() const { + return{ x, y, z }; + } + + inline void FromRwV3d(RwV3d const &rwvec) { + x = rwvec.x; y = rwvec.y; z = rwvec.z; + } + + inline float Heading() { + return atan2f(-x, y); + } +}; + +inline CVector operator-(const CVector& vecOne, const CVector& vecTwo) { + return CVector(vecOne.x - vecTwo.x, vecOne.y - vecTwo.y, vecOne.z - vecTwo.z); +} + +inline CVector operator+(const CVector& vecOne, const CVector& vecTwo) { + return CVector(vecOne.x + vecTwo.x, vecOne.y + vecTwo.y, vecOne.z + vecTwo.z); +} + +inline CVector operator*(const CVector& vec, float multiplier) { + return CVector(vec.x * multiplier, vec.y * multiplier, vec.z * multiplier); +} + +inline CVector operator*(float multiplier, const CVector& vec) { + return CVector(vec.x * multiplier, vec.y * multiplier, vec.z * multiplier); +} + +inline float DistanceBetweenPoints(const CVector &pointOne, const CVector &pointTwo) { + CVector diff = pointTwo - pointOne; + return diff.Magnitude(); +} + +VALIDATE_SIZE(CVector, 0xC); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CVector2D.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CVector2D.cpp new file mode 100644 index 00000000..e72dcda6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CVector2D.cpp @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CVector2D.h" +#include "CVector.h" + +CVector2D::CVector2D(const CVector& vec3d) { + x = vec3d.x; + y = vec3d.y; +} + +float CVector2D::Magnitude() +{ + return ((float (__thiscall *)(CVector2D *))0x420860)(this); +} + +void CVector2D::operator=(CVector2D const& right) +{ + ((void (__thiscall *)(CVector2D *, CVector2D const&))0x43E110)(this, right); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CVector2D.h b/third-party/plugin-sdk/plugin_sa/game_sa/CVector2D.h new file mode 100644 index 00000000..66d865ac --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CVector2D.h @@ -0,0 +1,75 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class PLUGIN_API CVector2D +{ +public: + float x, y; + + inline CVector2D() { + + } + + inline CVector2D(float X, float Y) { + x = X; + y = Y; + } + + CVector2D(const class CVector& vec3d); + + // Returns length of vector + float Magnitude(); + float MagnitudeSqr() const { return x * x + y * y; } + + void operator=(const CVector2D& right); + + inline CVector2D(CVector2D const& src) { + x = src.x; y = src.y; + } + + inline void Sum(CVector2D &a, CVector2D &b) { + this->x = a.x + b.x; + this->y = a.y + b.y; + } + + inline void Difference(CVector2D &a, CVector2D &b) { + this->x = a.x - b.x; + this->y = a.y - b.y; + } + + inline void operator+=(const CVector2D& right) { + this->x += right.x; + this->y += right.y; + } + + inline void operator-=(const CVector2D& right) { + this->x -= right.x; + this->y -= right.y; + } + + inline void operator *= (float multiplier) { + this->x *= multiplier; + this->y *= multiplier; + } + + inline void operator /= (float divisor) { + this->x /= divisor; + this->y /= divisor; + } +}; + +inline CVector2D operator-(const CVector2D& vecOne, const CVector2D& vecTwo) { + return CVector2D(vecOne.x - vecTwo.x, vecOne.y - vecTwo.y); +} + +inline float DistanceBetweenPoints(const CVector2D &pointOne, const CVector2D &pointTwo) { + CVector2D diff = pointTwo - pointOne; + return diff.Magnitude(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CVehicle.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CVehicle.cpp new file mode 100644 index 00000000..372ef7d9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CVehicle.cpp @@ -0,0 +1,1219 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CVehicle.h" + +float &CVehicle::WHEELSPIN_TARGET_RATE = *(float *)0x8D3498; +float &CVehicle::WHEELSPIN_INAIR_TARGET_RATE = *(float *)0x8D349C; +float &CVehicle::WHEELSPIN_RISE_RATE = *(float *)0x8D34A0; +float &CVehicle::WHEELSPIN_FALL_RATE = *(float *)0x8D34A4; +float &CVehicle::m_fAirResistanceMult = *(float *)0x8D34A8; +float &CVehicle::ms_fRailTrackResistance = *(float *)0x8D34AC; +float &CVehicle::ms_fRailTrackResistanceDefault = *(float *)0x8D34B0; +bool &CVehicle::bDisableRemoteDetonation = *(bool *)0xC1CC00; +bool &CVehicle::bDisableRemoteDetonationOnContact = *(bool *)0xC1CC01; +bool &CVehicle::m_bEnableMouseSteering = *(bool *)0xC1CC02; +bool &CVehicle::m_bEnableMouseFlying = *(bool *)0xC1CC03; +int &CVehicle::m_nLastControlInput = *(int *)0xC1CC04; +CColModel **CVehicle::m_aSpecialColVehicle = (CColModel **)0xC1CC08; +bool &CVehicle::ms_forceVehicleLightsOff = *(bool *)0xC1CC18; +bool &CVehicle::s_bPlaneGunsEjectShellCasings = *(bool *)0xC1CC19; +CColModel *CVehicle::m_aSpecialColModel = (CColModel *)0xC1CC78; +float &fBurstTyreMod = *(float *)0x8D34B4; +float &fBurstSpeedMax = *(float *)0x8D34B8; +float &CAR_NOS_EXTRA_SKID_LOSS = *(float *)0x8D34BC; +float &WS_TRAC_FRAC_LIMIT = *(float *)0x8D34C0; +float &WS_ALREADY_SPINNING_LOSS = *(float *)0x8D34C4; +float &fBurstBikeTyreMod = *(float *)0x8D34C8; +float &fBurstBikeSpeedMax = *(float *)0x8D34CC; +float &fTweakBikeWheelTurnForce = *(float *)0x8D34D0; +float &AUTOGYRO_ROTORSPIN_MULT = *(float *)0x8D34D4; +float &AUTOGYRO_ROTORSPIN_MULTLIMIT = *(float *)0x8D34D8; +float &AUTOGYRO_ROTORSPIN_DAMP = *(float *)0x8D34DC; +float &AUTOGYRO_ROTORLIFT_MULT = *(float *)0x8D34E0; +float &AUTOGYRO_ROTORLIFT_FALLOFF = *(float *)0x8D34E4; +float &AUTOGYRO_ROTORTILT_ANGLE = *(float *)0x8D34E8; +float &ROTOR_SEMI_THICKNESS = *(float *)0x8D34EC; +float *fSpeedMult = (float *)0x8D34F8; +float &fDamagePosSpeedShift = *(float *)0x8D3510; +unsigned int *aDriveAnimIdsLow = (unsigned int *)0x8D3514; +unsigned int *aDriveAnimIdsBoat = (unsigned int *)0x8D3524; +unsigned int *aDriveAnimIdsBad = (unsigned int *)0x8D3534; +unsigned int *aDriveAnimIdsBadSlow = (unsigned int *)0x8D3544; +unsigned int *aDriveAnimIdsStd = (unsigned int *)0x8D3554; +unsigned int *aDriveAnimIdsStdSlow = (unsigned int *)0x8D3564; +unsigned int *aDriveAnimIdsPro = (unsigned int *)0x8D3574; +unsigned int *aDriveAnimIdsProSlow = (unsigned int *)0x8D3584; +unsigned int *aDriveAnimIdsTruck = (unsigned int *)0x8D3594; +unsigned int *aDriveAnimIdsKart = (unsigned int *)0x8D35A4; +float &DIFF_LIMIT = *(float *)0x8D35B4; +float &DIFF_SPRING_MULT_X = *(float *)0x8D35B8; +float &DIFF_SPRING_MULT_Y = *(float *)0x8D35BC; +float &DIFF_SPRING_MULT_Z = *(float *)0x8D35C0; +float &DIFF_SPRING_COMPRESS_MULT = *(float *)0x8D35C4; +CVector *VehicleGunOffset = (CVector *)0x8D35D4; +char *&HandlingFilename = *(char **)0x8D3970; +char(*VehicleNames)[14] = (char(*)[14])0x8D3978; + +void* CVehicle::operator new(unsigned int size){ + return ((void*(__cdecl *)(unsigned int))0x6E2D50)(size); +} + +void CVehicle::operator delete(void* data) { + ((void (__cdecl *)(void*))0x6E2D90)(data); +} + +// Converted from void CVehicle::ProcessControlCollisionCheck(void) 0x871EDC +void CVehicle::ProcessControlCollisionCheck() +{ + ((void (__thiscall *)(CVehicle*))(*(void ***)this)[23])(this); +} + +// Converted from void CVehicle::ProcessControlInputs(uchar playerNum) 0x871EE0 +void CVehicle::ProcessControlInputs(unsigned char playerNum) +{ + ((void (__thiscall *)(CVehicle*, unsigned char))(*(void ***)this)[24])(this, playerNum); +} + +// Converted from void CVehicle::GetComponentWorldPosition(int componentId,CVector &posnOut) 0x871EE4 +void CVehicle::GetComponentWorldPosition(int componentId, CVector& posnOut) +{ + ((void (__thiscall *)(CVehicle*, int, CVector&))(*(void ***)this)[25])(this, componentId, posnOut); +} + +// Converted from bool CVehicle::IsComponentPresent(int componentId) 0x871EE8 +bool CVehicle::IsComponentPresent(int componentId) +{ + return ((bool (__thiscall *)(CVehicle*, int))(*(void ***)this)[26])(this, componentId); +} + +// Converted from void CVehicle::OpenDoor(CPed *ped,int componentId,eDoors door,float doorOpenRatio,bool playSound) 0x871EEC +void CVehicle::OpenDoor(CPed* ped, int componentId, eDoors door, float doorOpenRatio, bool playSound) +{ + ((void (__thiscall *)(CVehicle*, CPed*, int, eDoors, float, bool))(*(void ***)this)[27])(this, ped, componentId, door, doorOpenRatio, playSound); +} + +// Converted from void CVehicle::ProcessOpenDoor(CPed *ped,uint doorComponentId,uint,uint,float) 0x871EF0 +void CVehicle::ProcessOpenDoor(CPed* ped, unsigned int doorComponentId, unsigned int arg2, unsigned int arg3, float arg4) +{ + ((void (__thiscall *)(CVehicle*, CPed*, unsigned int, unsigned int, unsigned int, float))(*(void ***)this)[28])(this, ped, doorComponentId, arg2, arg3, arg4); +} + +// Converted from float CVehicle::GetDooorAngleOpenRatio(uint door) 0x871EF4 +float CVehicle::GetDooorAngleOpenRatio(unsigned int door) +{ + return ((float (__thiscall *)(CVehicle*, unsigned int))(*(void ***)this)[29])(this, door); +} + +// Converted from float CVehicle::GetDooorAngleOpenRatio(eDoors door) 0x871EF8 +float CVehicle::GetDooorAngleOpenRatio(eDoors door) +{ + return ((float (__thiscall *)(CVehicle*, eDoors))(*(void ***)this)[30])(this, door); +} + +// Converted from bool CVehicle::IsDoorReady(uint door) 0x871EFC +bool CVehicle::IsDoorReady(unsigned int door) +{ + return ((bool (__thiscall *)(CVehicle*, unsigned int))(*(void ***)this)[31])(this, door); +} + +// Converted from bool CVehicle::IsDoorReady(eDoors door) 0x871F00 +bool CVehicle::IsDoorReady(eDoors door) +{ + return ((bool (__thiscall *)(CVehicle*, eDoors))(*(void ***)this)[32])(this, door); +} + +// Converted from bool CVehicle::IsDoorFullyOpen(uint door) 0x871F04 +bool CVehicle::IsDoorFullyOpen(unsigned int door) +{ + return ((bool (__thiscall *)(CVehicle*, unsigned int))(*(void ***)this)[33])(this, door); +} + +// Converted from bool CVehicle::IsDoorFullyOpen(eDoors door) 0x871F08 +bool CVehicle::IsDoorFullyOpen(eDoors door) +{ + return ((bool (__thiscall *)(CVehicle*, eDoors))(*(void ***)this)[34])(this, door); +} + +// Converted from bool CVehicle::IsDoorClosed(uint door) 0x871F0C +bool CVehicle::IsDoorClosed(unsigned int door) +{ + return ((bool (__thiscall *)(CVehicle*, unsigned int))(*(void ***)this)[35])(this, door); +} + +// Converted from bool CVehicle::IsDoorClosed(eDoors door) 0x871F10 +bool CVehicle::IsDoorClosed(eDoors door) +{ + return ((bool (__thiscall *)(CVehicle*, eDoors))(*(void ***)this)[36])(this, door); +} + +// Converted from bool CVehicle::IsDoorMissing(uint door) 0x871F14 +bool CVehicle::IsDoorMissing(unsigned int door) +{ + return ((bool (__thiscall *)(CVehicle*, unsigned int))(*(void ***)this)[37])(this, door); +} + +// Converted from bool CVehicle::IsDoorMissing(eDoors door) 0x871F18 +bool CVehicle::IsDoorMissing(eDoors door) +{ + return ((bool (__thiscall *)(CVehicle*, eDoors))(*(void ***)this)[38])(this, door); +} + +// Converted from bool CVehicle::IsOpenTopCar(void) 0x871F1C +bool CVehicle::IsOpenTopCar() +{ + return ((bool (__thiscall *)(CVehicle*))(*(void ***)this)[39])(this); +} + +// Converted from void CVehicle::RemoveRefsToVehicle(CEntity *entity) 0x871F20 +void CVehicle::RemoveRefsToVehicle(CEntity* entity) +{ + ((void (__thiscall *)(CVehicle*, CEntity*))(*(void ***)this)[40])(this, entity); +} + +// Converted from void CVehicle::BlowUpCar(CEntity *damager,uchar bHideExplosion) 0x871F24 +void CVehicle::BlowUpCar(CEntity* damager, unsigned char bHideExplosion) +{ + ((void (__thiscall *)(CVehicle*, CEntity*, unsigned char))(*(void ***)this)[41])(this, damager, bHideExplosion); +} + +// Converted from void CVehicle::BlowUpCarCutSceneNoExtras(bool bNoCamShake, bool bNoSpawnFlyingComps, bool bDetachWheels, bool bExplosionSound) 0x871F28 +void CVehicle::BlowUpCarCutSceneNoExtras(bool bNoCamShake, bool bNoSpawnFlyingComps, bool bDetachWheels, bool bExplosionSound) +{ + ((void (__thiscall *)(CVehicle*, bool, bool, bool, bool))(*(void ***)this)[42])(this, bNoCamShake, bNoSpawnFlyingComps, bDetachWheels, bExplosionSound); +} + +// Converted from bool CVehicle::SetUpWheelColModel(CColModel *wheelCol) 0x871F2C +bool CVehicle::SetUpWheelColModel(CColModel* wheelCol) +{ + return ((bool (__thiscall *)(CVehicle*, CColModel*))(*(void ***)this)[43])(this, wheelCol); +} + +// Converted from bool CVehicle::BurstTyre(uchar tyreComponentId,bool bPhysicalEffect) 0x871F30 +bool CVehicle::BurstTyre(unsigned char tyreComponentId, bool bPhysicalEffect) +{ + return ((bool (__thiscall *)(CVehicle*, unsigned char, bool))(*(void ***)this)[44])(this, tyreComponentId, bPhysicalEffect); +} + +// Converted from bool CVehicle::IsRoomForPedToLeaveCar(uint,CVector *) 0x871F34 +bool CVehicle::IsRoomForPedToLeaveCar(unsigned int arg0, CVector* arg1) +{ + return ((bool (__thiscall *)(CVehicle*, unsigned int, CVector*))(*(void ***)this)[45])(this, arg0, arg1); +} + +// Converted from void CVehicle::ProcessDrivingAnims(CPed *driver,uchar) 0x871F38 +void CVehicle::ProcessDrivingAnims(CPed* driver, unsigned char arg1) +{ + ((void (__thiscall *)(CVehicle*, CPed*, unsigned char))(*(void ***)this)[46])(this, driver, arg1); +} + +// Converted from CRideAnimData* CVehicle::GetRideAnimData(void) 0x871F3C +CRideAnimData* CVehicle::GetRideAnimData() +{ + return ((CRideAnimData* (__thiscall *)(CVehicle*))(*(void ***)this)[47])(this); +} + +// Converted from void CVehicle::SetupSuspensionLines(void) 0x871F40 +void CVehicle::SetupSuspensionLines() +{ + ((void (__thiscall *)(CVehicle*))(*(void ***)this)[48])(this); +} + +// Converted from CVector CVehicle::AddMovingCollisionSpeed(CVector &) 0x871F44 +CVector CVehicle::AddMovingCollisionSpeed(CVector& arg0) +{ + CVector result; + ((void (__thiscall *)(CVehicle*, CVector*, CVector&))(*(void ***)this)[49])(this, &result, arg0); + return result; +} + +// Converted from void CVehicle::Fix(void) 0x871F48 +void CVehicle::Fix() +{ + ((void (__thiscall *)(CVehicle*))(*(void ***)this)[50])(this); +} + +// Converted from void CVehicle::SetupDamageAfterLoad(void) 0x871F4C +void CVehicle::SetupDamageAfterLoad() +{ + ((void (__thiscall *)(CVehicle*))(*(void ***)this)[51])(this); +} + +// Converted from void CVehicle::DoBurstAndSoftGroundRatios(void) 0x871F50 +void CVehicle::DoBurstAndSoftGroundRatios() +{ + ((void (__thiscall *)(CVehicle*))(*(void ***)this)[52])(this); +} + +// Converted from float CVehicle::GetHeightAboveRoad(void) 0x871F54 +float CVehicle::GetHeightAboveRoad() +{ + return ((float (__thiscall *)(CVehicle*))(*(void ***)this)[53])(this); +} + +// Converted from void CVehicle::PlayCarHorn(void) 0x871F58 +void CVehicle::PlayCarHorn() +{ + ((void (__thiscall *)(CVehicle*))(*(void ***)this)[54])(this); +} + +// Converted from int CVehicle::GetNumContactWheels(void) 0x871F5C +int CVehicle::GetNumContactWheels() +{ + return ((int (__thiscall *)(CVehicle*))(*(void ***)this)[55])(this); +} + +// Converted from void CVehicle::VehicleDamage(float damageIntensity,ushort collisionComponent,CEntity *damager,CVector *vecCollisionCoors,CVector *vecCollisionDirection,eWeaponType weapon) 0x871F60 +void CVehicle::VehicleDamage(float damageIntensity, unsigned short collisionComponent, CEntity* damager, CVector* vecCollisionCoors, CVector* vecCollisionDirection, eWeaponType weapon) +{ + ((void (__thiscall *)(CVehicle*, float, unsigned short, CEntity*, CVector*, CVector*, eWeaponType))(*(void ***)this)[56])(this, damageIntensity, collisionComponent, damager, vecCollisionCoors, vecCollisionDirection, weapon); +} + +// Converted from bool CVehicle::CanPedStepOutCar(bool) 0x871F64 +bool CVehicle::CanPedStepOutCar(bool arg0) +{ + return ((bool (__thiscall *)(CVehicle*, bool))(*(void ***)this)[57])(this, arg0); +} + +// Converted from bool CVehicle::CanPedJumpOutCar(CPed *ped) 0x871F68 +bool CVehicle::CanPedJumpOutCar(CPed* ped) +{ + return ((bool (__thiscall *)(CVehicle*, CPed*))(*(void ***)this)[58])(this, ped); +} + +// Converted from bool CVehicle::GetTowHitchPos(CVector &posnOut,bool,CVehicle*) 0x871F6C +bool CVehicle::GetTowHitchPos(CVector& posnOut, bool arg1, CVehicle* arg2) +{ + return ((bool (__thiscall *)(CVehicle*, CVector&, bool, CVehicle*))(*(void ***)this)[59])(this, posnOut, arg1, arg2); +} + +// Converted from bool CVehicle::GetTowBarPos(CVector &posnOut,bool,CVehicle*) 0x871F70 +bool CVehicle::GetTowBarPos(CVector& posnOut, bool arg1, CVehicle* arg2) +{ + return ((bool (__thiscall *)(CVehicle*, CVector&, bool, CVehicle*))(*(void ***)this)[60])(this, posnOut, arg1, arg2); +} + +// Converted from bool CVehicle::SetTowLink(CVehicle*,bool) 0x871F74 +bool CVehicle::SetTowLink(CVehicle* arg0, bool arg1) +{ + return ((bool (__thiscall *)(CVehicle*, CVehicle*, bool))(*(void ***)this)[61])(this, arg0, arg1); +} + +// Converted from bool CVehicle::BreakTowLink(void) 0x871F78 +bool CVehicle::BreakTowLink() +{ + return ((bool (__thiscall *)(CVehicle*))(*(void ***)this)[62])(this); +} + +// Converted from float CVehicle::FindWheelWidth(bool bRear) 0x871F7C +float CVehicle::FindWheelWidth(bool bRear) +{ + return ((float (__thiscall *)(CVehicle*, bool))(*(void ***)this)[63])(this, bRear); +} + +// Converted from bool CVehicle::Save(void) 0x871F80 +bool CVehicle::Save() +{ + return ((bool (__thiscall *)(CVehicle*))(*(void ***)this)[64])(this); +} + +// Converted from bool CVehicle::Load(void) 0x871F84 +bool CVehicle::Load() +{ + return ((bool (__thiscall *)(CVehicle*))(*(void ***)this)[65])(this); +} + +// Converted from stdcall void CVehicle::Shutdown(void) 0x6D0B40 +void CVehicle::Shutdown() +{ + ((void (__cdecl *)())0x6D0B40)(); +} + +// Converted from thiscall int CVehicle::GetRemapIndex(void) 0x6D0B70 +int CVehicle::GetRemapIndex() +{ + return ((int (__thiscall *)(CVehicle*))0x6D0B70)(this); +} + +// Converted from thiscall void CVehicle::SetRemapTexDictionary(int txdId) 0x6D0BC0 +void CVehicle::SetRemapTexDictionary(int txdId) +{ + ((void (__thiscall *)(CVehicle*, int))0x6D0BC0)(this, txdId); +} + +// Converted from thiscall void CVehicle::SetRemap(int remapIndex) 0x6D0C00 +void CVehicle::SetRemap(int remapIndex) +{ + ((void (__thiscall *)(CVehicle*, int))0x6D0C00)(this, remapIndex); +} + +// Converted from thiscall void CVehicle::SetCollisionLighting(uchar lighting) 0x6D0CA0 +void CVehicle::SetCollisionLighting(unsigned char lighting) +{ + ((void (__thiscall *)(CVehicle*, unsigned char))0x6D0CA0)(this, lighting); +} + +// Converted from thiscall void CVehicle::UpdateLightingFromStoredPolys(void) 0x6D0CC0 +void CVehicle::UpdateLightingFromStoredPolys() +{ + ((void (__thiscall *)(CVehicle*))0x6D0CC0)(this); +} + +// Converted from thiscall void CVehicle::CalculateLightingFromCollision(void) 0x6D0CF0 +void CVehicle::CalculateLightingFromCollision() +{ + ((void (__thiscall *)(CVehicle*))0x6D0CF0)(this); +} + +// Converted from thiscall void CVehicle::ResetAfterRender(void) 0x6D0E20 +void CVehicle::ResetAfterRender() +{ + ((void (__thiscall *)(CVehicle*))0x6D0E20)(this); +} + +// Converted from thiscall int CVehicle::GetVehicleAppearance(void) 0x6D1080 +int CVehicle::GetVehicleAppearance() +{ + return ((int (__thiscall *)(CVehicle*))0x6D1080)(this); +} + +// Converted from thiscall bool CVehicle::CustomCarPlate_TextureCreate(CVehicleModelInfo *model) 0x6D10E0 +bool CVehicle::CustomCarPlate_TextureCreate(CVehicleModelInfo* model) +{ + return ((bool (__thiscall *)(CVehicle*, CVehicleModelInfo*))0x6D10E0)(this, model); +} + +// Converted from thiscall void CVehicle::CustomCarPlate_TextureDestroy(void) 0x6D1150 +void CVehicle::CustomCarPlate_TextureDestroy() +{ + ((void (__thiscall *)(CVehicle*))0x6D1150)(this); +} + +// Converted from thiscall bool CVehicle::CanBeDeleted(void) 0x6D1180 +bool CVehicle::CanBeDeleted() +{ + return ((bool (__thiscall *)(CVehicle*))0x6D1180)(this); +} + +// Converted from thiscall float CVehicle::ProcessWheelRotation(tWheelState wheelState,CVector const&,CVector const&,float) 0x6D1230 +float CVehicle::ProcessWheelRotation(tWheelState wheelState, CVector const& arg1, CVector const& arg2, float arg3) +{ + return ((float (__thiscall *)(CVehicle*, tWheelState, CVector const&, CVector const&, float))0x6D1230)(this, wheelState, arg1, arg2, arg3); +} + +// Converted from thiscall bool CVehicle::CanVehicleBeDamaged(CEntity *damager,eWeaponType weapon,uchar *) 0x6D1280 +bool CVehicle::CanVehicleBeDamaged(CEntity* damager, eWeaponType weapon, unsigned char* arg2) +{ + return ((bool (__thiscall *)(CVehicle*, CEntity*, eWeaponType, unsigned char*))0x6D1280)(this, damager, weapon, arg2); +} + +// Converted from thiscall void CVehicle::ProcessDelayedExplosion(void) 0x6D1340 +void CVehicle::ProcessDelayedExplosion() +{ + ((void (__thiscall *)(CVehicle*))0x6D1340)(this); +} + +// Converted from thiscall bool CVehicle::AddPassenger(CPed *passenger) 0x6D13A0 +bool CVehicle::AddPassenger(CPed* passenger) +{ + return ((bool (__thiscall *)(CVehicle*, CPed*))0x6D13A0)(this, passenger); +} + +// Converted from thiscall bool CVehicle::AddPassenger(CPed *passenger,uchar seatNumber) 0x6D14D0 +bool CVehicle::AddPassenger(CPed* passenger, unsigned char seatNumber) +{ + return ((bool (__thiscall *)(CVehicle*, CPed*, unsigned char))0x6D14D0)(this, passenger, seatNumber); +} + +// Converted from thiscall void CVehicle::RemovePassenger(CPed *passenger) 0x6D1610 +void CVehicle::RemovePassenger(CPed* passenger) +{ + ((void (__thiscall *)(CVehicle*, CPed*))0x6D1610)(this, passenger); +} + +// Converted from thiscall void CVehicle::SetDriver(CPed *driver) 0x6D16A0 +void CVehicle::SetDriver(CPed* driver) +{ + ((void (__thiscall *)(CVehicle*, CPed*))0x6D16A0)(this, driver); +} + +// Converted from thiscall void CVehicle::RemoveDriver(bool) 0x6D1950 +void CVehicle::RemoveDriver(bool arg0) +{ + ((void (__thiscall *)(CVehicle*, bool))0x6D1950)(this, arg0); +} + +// Converted from thiscall CPed* CVehicle::SetUpDriver(int pedType,bool,bool) 0x6D1A50 +CPed* CVehicle::SetUpDriver(int pedType, bool arg1, bool arg2) +{ + return ((CPed* (__thiscall *)(CVehicle*, int, bool, bool))0x6D1A50)(this, pedType, arg1, arg2); +} + +// Converted from thiscall CPed* CVehicle::SetupPassenger(int seatNumber,int pedType,bool,bool) 0x6D1AA0 +CPed* CVehicle::SetupPassenger(int seatNumber, int pedType, bool arg2, bool arg3) +{ + return ((CPed* (__thiscall *)(CVehicle*, int, int, bool, bool))0x6D1AA0)(this, seatNumber, pedType, arg2, arg3); +} + +// Converted from thiscall bool CVehicle::IsPassenger(CPed *ped) 0x6D1BD0 +bool CVehicle::IsPassenger(CPed* ped) +{ + return ((bool (__thiscall *)(CVehicle*, CPed*))0x6D1BD0)(this, ped); +} + +// Converted from thiscall bool CVehicle::IsPassenger(int modelIndex) 0x6D1C00 +bool CVehicle::IsPassenger(int modelIndex) +{ + return ((bool (__thiscall *)(CVehicle*, int))0x6D1C00)(this, modelIndex); +} + +// Converted from thiscall bool CVehicle::IsDriver(CPed *ped) 0x6D1C40 +bool CVehicle::IsDriver(CPed* ped) +{ + return ((bool (__thiscall *)(CVehicle*, CPed*))0x6D1C40)(this, ped); +} + +// Converted from thiscall bool CVehicle::IsDriver(int modelIndex) 0x6D1C60 +bool CVehicle::IsDriver(int modelIndex) +{ + return ((bool (__thiscall *)(CVehicle*, int))0x6D1C60)(this, modelIndex); +} + +// Converted from thiscall void CVehicle::KillPedsInVehicle(void) 0x6D1C80 +void CVehicle::KillPedsInVehicle() +{ + ((void (__thiscall *)(CVehicle*))0x6D1C80)(this); +} + +// Converted from thiscall bool CVehicle::IsUpsideDown(void) 0x6D1D90 +bool CVehicle::IsUpsideDown() +{ + return ((bool (__thiscall *)(CVehicle*))0x6D1D90)(this); +} + +// Converted from thiscall bool CVehicle::IsOnItsSide(void) 0x6D1DD0 +bool CVehicle::IsOnItsSide() +{ + return ((bool (__thiscall *)(CVehicle*))0x6D1DD0)(this); +} + +// Converted from thiscall bool CVehicle::CanPedOpenLocks(CPed *ped) 0x6D1E20 +bool CVehicle::CanPedOpenLocks(CPed* ped) +{ + return ((bool (__thiscall *)(CVehicle*, CPed*))0x6D1E20)(this, ped); +} + +// Converted from thiscall bool CVehicle::CanDoorsBeDamaged(void) 0x6D1E60 +bool CVehicle::CanDoorsBeDamaged() +{ + return ((bool (__thiscall *)(CVehicle*))0x6D1E60)(this); +} + +// Converted from thiscall bool CVehicle::CanPedEnterCar(void) 0x6D1E80 +bool CVehicle::CanPedEnterCar() +{ + return ((bool (__thiscall *)(CVehicle*))0x6D1E80)(this); +} + +// Converted from thiscall void CVehicle::ProcessCarAlarm(void) 0x6D21F0 +void CVehicle::ProcessCarAlarm() +{ + ((void (__thiscall *)(CVehicle*))0x6D21F0)(this); +} + +// Converted from stdcall void DestroyVehicleAndDriverAndPassengers(CVehicle *vehicle) 0x6D2250 +void DestroyVehicleAndDriverAndPassengers(CVehicle* vehicle) +{ + ((void (__cdecl *)(CVehicle*))0x6D2250)(vehicle); +} + +// Converted from thiscall bool CVehicle::IsVehicleNormal(void) 0x6D22F0 +bool CVehicle::IsVehicleNormal() +{ + return ((bool (__thiscall *)(CVehicle*))0x6D22F0)(this); +} + +// Converted from thiscall void CVehicle::ChangeLawEnforcerState(uchar state) 0x6D2330 +void CVehicle::ChangeLawEnforcerState(unsigned char state) +{ + ((void (__thiscall *)(CVehicle*, unsigned char))0x6D2330)(this, state); +} + +// Converted from thiscall bool CVehicle::IsLawEnforcementVehicle(void) 0x6D2370 +bool CVehicle::IsLawEnforcementVehicle() +{ + return ((bool (__thiscall *)(CVehicle*))0x6D2370)(this); +} + +// Converted from thiscall bool CVehicle::ShufflePassengersToMakeSpace(void) 0x6D2450 +bool CVehicle::ShufflePassengersToMakeSpace() +{ + return ((bool (__thiscall *)(CVehicle*))0x6D2450)(this); +} + +// Converted from thiscall void CVehicle::ExtinguishCarFire(void) 0x6D2460 +void CVehicle::ExtinguishCarFire() +{ + ((void (__thiscall *)(CVehicle*))0x6D2460)(this); +} + +// Converted from thiscall void CVehicle::ActivateBomb(void) 0x6D24F0 +void CVehicle::ActivateBomb() +{ + ((void (__thiscall *)(CVehicle*))0x6D24F0)(this); +} + +// Converted from thiscall void CVehicle::ActivateBombWhenEntered(void) 0x6D2570 +void CVehicle::ActivateBombWhenEntered() +{ + ((void (__thiscall *)(CVehicle*))0x6D2570)(this); +} + +// Converted from thiscall bool CVehicle::CarHasRoof(void) 0x6D25D0 +bool CVehicle::CarHasRoof() +{ + return ((bool (__thiscall *)(CVehicle*))0x6D25D0)(this); +} + +// Converted from thiscall float CVehicle::HeightAboveCeiling(float,eFlightModel) 0x6D2600 +float CVehicle::HeightAboveCeiling(float arg0, eFlightModel arg1) +{ + return ((float (__thiscall *)(CVehicle*, float, eFlightModel))0x6D2600)(this, arg0, arg1); +} + +// Converted from stdcall RwObject* SetVehicleAtomicVisibilityCB(RwObject *object,void *data) 0x6D2690 +RwObject* SetVehicleAtomicVisibilityCB(RwObject* object, void* data) +{ + return ((RwObject* (__cdecl *)(RwObject*, void*))0x6D2690)(object, data); +} + +// Converted from stdcall RwFrame* SetVehicleAtomicVisibilityCB(RwFrame *component,void *data) 0x6D26D0 +RwFrame* SetVehicleAtomicVisibilityCB(RwFrame* component, void* data) +{ + return ((RwFrame* (__cdecl *)(RwFrame*, void*))0x6D26D0)(component, data); +} + +// Converted from thiscall void CVehicle::SetComponentVisibility(RwFrame *component,uint visibilityState) 0x6D2700 +void CVehicle::SetComponentVisibility(RwFrame* component, unsigned int visibilityState) +{ + ((void (__thiscall *)(CVehicle*, RwFrame*, unsigned int))0x6D2700)(this, component, visibilityState); +} + +// Converted from thiscall void CVehicle::ApplyBoatWaterResistance(tBoatHandlingData *boatHandling,float) 0x6D2740 +void CVehicle::ApplyBoatWaterResistance(tBoatHandlingData* boatHandling, float arg1) +{ + ((void (__thiscall *)(CVehicle*, tBoatHandlingData*, float))0x6D2740)(this, boatHandling, arg1); +} + +// Converted from stdcall RpMaterial* SetCompAlphaCB(RpMaterial *material,void *data) 0x6D2950 +RpMaterial* SetCompAlphaCB(RpMaterial* material, void* data) +{ + return ((RpMaterial* (__cdecl *)(RpMaterial*, void*))0x6D2950)(material, data); +} + +// Converted from thiscall void CVehicle::SetComponentAtomicAlpha(RpAtomic *atomic,int alpha) 0x6D2960 +void CVehicle::SetComponentAtomicAlpha(RpAtomic* atomic, int alpha) +{ + ((void (__cdecl *)(RpAtomic*, int))0x6D2960)(atomic, alpha); +} + +// Converted from thiscall void CVehicle::UpdateClumpAlpha(void) 0x6D2980 +void CVehicle::UpdateClumpAlpha() +{ + ((void (__thiscall *)(CVehicle*))0x6D2980)(this); +} + +// Converted from thiscall void CVehicle::UpdatePassengerList(void) 0x6D29E0 +void CVehicle::UpdatePassengerList() +{ + ((void (__thiscall *)(CVehicle*))0x6D29E0)(this); +} + +// Converted from thiscall CPed* CVehicle::PickRandomPassenger(void) 0x6D2A10 +CPed* CVehicle::PickRandomPassenger() +{ + return ((CPed* (__thiscall *)(CVehicle*))0x6D2A10)(this); +} + +// Converted from thiscall void CVehicle::AddDamagedVehicleParticles(void) 0x6D2A80 +void CVehicle::AddDamagedVehicleParticles() +{ + ((void (__thiscall *)(CVehicle*))0x6D2A80)(this); +} + +// Converted from thiscall void CVehicle::MakeDirty(CColPoint &colPoint) 0x6D2BF0 +void CVehicle::MakeDirty(CColPoint& colPoint) +{ + ((void (__thiscall *)(CVehicle*, CColPoint&))0x6D2BF0)(this, colPoint); +} + +// Converted from thiscall bool CVehicle::AddWheelDirtAndWater(CColPoint &colPoint,uint,uchar,uchar) 0x6D2D50 +bool CVehicle::AddWheelDirtAndWater(CColPoint& colPoint, unsigned int arg1, unsigned char arg2, unsigned char arg3) +{ + return ((bool (__thiscall *)(CVehicle*, CColPoint&, unsigned int, unsigned char, unsigned char))0x6D2D50)(this, colPoint, arg1, arg2, arg3); +} + +// Converted from thiscall void CVehicle::SetGettingInFlags(uchar doorId) 0x6D3000 +void CVehicle::SetGettingInFlags(unsigned char doorId) +{ + ((void (__thiscall *)(CVehicle*, unsigned char))0x6D3000)(this, doorId); +} + +// Converted from thiscall void CVehicle::SetGettingOutFlags(uchar doorId) 0x6D3020 +void CVehicle::SetGettingOutFlags(unsigned char doorId) +{ + ((void (__thiscall *)(CVehicle*, unsigned char))0x6D3020)(this, doorId); +} + +// Converted from thiscall void CVehicle::ClearGettingInFlags(uchar doorId) 0x6D3040 +void CVehicle::ClearGettingInFlags(unsigned char doorId) +{ + ((void (__thiscall *)(CVehicle*, unsigned char))0x6D3040)(this, doorId); +} + +// Converted from thiscall void CVehicle::ClearGettingOutFlags(uchar doorId) 0x6D3060 +void CVehicle::ClearGettingOutFlags(unsigned char doorId) +{ + ((void (__thiscall *)(CVehicle*, unsigned char))0x6D3060)(this, doorId); +} + +// Converted from thiscall void CVehicle::SetWindowOpenFlag(uchar doorId) 0x6D3080 +void CVehicle::SetWindowOpenFlag(unsigned char doorId) +{ + ((void (__thiscall *)(CVehicle*, unsigned char))0x6D3080)(this, doorId); +} + +// Converted from thiscall void CVehicle::ClearWindowOpenFlag(uchar doorId) 0x6D30B0 +void CVehicle::ClearWindowOpenFlag(unsigned char doorId) +{ + ((void (__thiscall *)(CVehicle*, unsigned char))0x6D30B0)(this, doorId); +} + +// Converted from thiscall bool CVehicle::SetVehicleUpgradeFlags(int upgradeModelIndex,int componentIndex,int &resultModelIndex) 0x6D30E0 +bool CVehicle::SetVehicleUpgradeFlags(int upgradeModelIndex, int componentIndex, int& resultModelIndex) +{ + return ((bool (__thiscall *)(CVehicle*, int, int, int&))0x6D30E0)(this, upgradeModelIndex, componentIndex, resultModelIndex); +} + +// Converted from thiscall bool CVehicle::ClearVehicleUpgradeFlags(int,int componentIndex) 0x6D3210 +bool CVehicle::ClearVehicleUpgradeFlags(int arg0, int componentIndex) +{ + return ((bool (__thiscall *)(CVehicle*, int, int))0x6D3210)(this, arg0, componentIndex); +} + +// Converted from stdcall RpAtomic* RemoveUpgradeCB(RpAtomic *atomic,void *data) 0x6D3300 +RpAtomic* RemoveUpgradeCB(RpAtomic* atomic, void* data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x6D3300)(atomic, data); +} + +// Converted from stdcall RpAtomic* FindUpgradeCB(RpAtomic *atomic,void *data) 0x6D3370 +RpAtomic* FindUpgradeCB(RpAtomic* atomic, void* data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x6D3370)(atomic, data); +} + +// Converted from stdcall RwObject* RemoveObjectsCB(RwObject *object,void *data) 0x6D33B0 +RwObject* RemoveObjectsCB(RwObject* object, void* data) +{ + return ((RwObject* (__cdecl *)(RwObject*, void*))0x6D33B0)(object, data); +} + +// Converted from stdcall RwFrame* RemoveObjectsCB(RwFrame *component,void *data) 0x6D3420 +RwFrame* RemoveObjectsCB(RwFrame* component, void* data) +{ + return ((RwFrame* (__cdecl *)(RwFrame*, void*))0x6D3420)(component, data); +} + +// Converted from stdcall RwObject* CopyObjectsCB(RwObject *object,void *data) 0x6D3450 +RwObject* CopyObjectsCB(RwObject* object, void* data) +{ + return ((RwObject* (__cdecl *)(RwObject*, void*))0x6D3450)(object, data); +} + +// Converted from stdcall RwObject* FindReplacementUpgradeCB(RwObject *object,void *data) 0x6D3490 +RwObject* FindReplacementUpgradeCB(RwObject* object, void* data) +{ + return ((RwObject* (__cdecl *)(RwObject*, void*))0x6D3490)(object, data); +} + +// Converted from stdcall RpAtomic* RemoveAllUpgradesCB(RpAtomic *atomic,void *data) 0x6D34D0 +RpAtomic* RemoveAllUpgradesCB(RpAtomic* atomic, void* data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x6D34D0)(atomic, data); +} + +// Converted from thiscall RpAtomic* CVehicle::CreateUpgradeAtomic(CBaseModelInfo *model,UpgradePosnDesc const*upgradePosn,RwFrame *parentComponent,bool isDamaged) 0x6D3510 +RpAtomic* CVehicle::CreateUpgradeAtomic(CBaseModelInfo* model, UpgradePosnDesc const* upgradePosn, RwFrame* parentComponent, bool isDamaged) +{ + return ((RpAtomic* (__thiscall *)(CVehicle*, CBaseModelInfo*, UpgradePosnDesc const*, RwFrame*, bool))0x6D3510)(this, model, upgradePosn, parentComponent, isDamaged); +} + +// Converted from thiscall void CVehicle::RemoveUpgrade(int upgradeId) 0x6D3630 +void CVehicle::RemoveUpgrade(int upgradeId) +{ + ((void (__thiscall *)(CVehicle*, int))0x6D3630)(this, upgradeId); +} + +// Converted from thiscall int CVehicle::GetUpgrade(int upgradeId) 0x6D3650 +int CVehicle::GetUpgrade(int upgradeId) +{ + return ((int (__thiscall *)(CVehicle*, int))0x6D3650)(this, upgradeId); +} + +// Converted from thiscall RpAtomic* CVehicle::CreateReplacementAtomic(CBaseModelInfo *model,RwFrame *component,int,bool bDamaged,bool bIsWheel) 0x6D3700 +RpAtomic* CVehicle::CreateReplacementAtomic(CBaseModelInfo* model, RwFrame* component, int arg2, bool bDamaged, bool bIsWheel) +{ + return ((RpAtomic* (__thiscall *)(CVehicle*, CBaseModelInfo*, RwFrame*, int, bool, bool))0x6D3700)(this, model, component, arg2, bDamaged, bIsWheel); +} + +// Converted from thiscall void CVehicle::AddReplacementUpgrade(int modelIndex,int nodeId) 0x6D3830 +void CVehicle::AddReplacementUpgrade(int modelIndex, int nodeId) +{ + ((void (__thiscall *)(CVehicle*, int, int))0x6D3830)(this, modelIndex, nodeId); +} + +// Converted from thiscall void CVehicle::RemoveReplacementUpgrade(int nodeId) 0x6D39E0 +void CVehicle::RemoveReplacementUpgrade(int nodeId) +{ + ((void (__thiscall *)(CVehicle*, int))0x6D39E0)(this, nodeId); +} + +// Converted from thiscall void CVehicle::GetReplacementUpgrade(int nodeId) 0x6D3A50 +void CVehicle::GetReplacementUpgrade(int nodeId) +{ + ((void (__thiscall *)(CVehicle*, int))0x6D3A50)(this, nodeId); +} + +// Converted from thiscall void CVehicle::RemoveAllUpgrades(void) 0x6D3AB0 +void CVehicle::RemoveAllUpgrades() +{ + ((void (__thiscall *)(CVehicle*))0x6D3AB0)(this); +} + +// Converted from thiscall int CVehicle::GetSpareHasslePosId(void) 0x6D3AE0 +int CVehicle::GetSpareHasslePosId() +{ + return ((int (__thiscall *)(CVehicle*))0x6D3AE0)(this); +} + +// Converted from thiscall void CVehicle::SetHasslePosId(int hasslePos,bool enable) 0x6D3B30 +void CVehicle::SetHasslePosId(int hasslePos, bool enable) +{ + ((void (__thiscall *)(CVehicle*, int, bool))0x6D3B30)(this, hasslePos, enable); +} + +// Converted from thiscall void CVehicle::InitWinch(int) 0x6D3B60 +void CVehicle::InitWinch(int arg0) +{ + ((void (__thiscall *)(CVehicle*, int))0x6D3B60)(this, arg0); +} + +// Converted from thiscall void CVehicle::UpdateWinch(void) 0x6D3B80 +void CVehicle::UpdateWinch() +{ + ((void (__thiscall *)(CVehicle*))0x6D3B80)(this); +} + +// Converted from thiscall void CVehicle::RemoveWinch(void) 0x6D3C70 +void CVehicle::RemoveWinch() +{ + ((void (__thiscall *)(CVehicle*))0x6D3C70)(this); +} + +// Converted from thiscall void CVehicle::ReleasePickedUpEntityWithWinch(void) 0x6D3CB0 +void CVehicle::ReleasePickedUpEntityWithWinch() +{ + ((void (__thiscall *)(CVehicle*))0x6D3CB0)(this); +} + +// Converted from thiscall void CVehicle::PickUpEntityWithWinch(CEntity *) 0x6D3CD0 +void CVehicle::PickUpEntityWithWinch(CEntity* arg0) +{ + ((void (__thiscall *)(CVehicle*, CEntity*))0x6D3CD0)(this, arg0); +} + +// Converted from thiscall CEntity* CVehicle::QueryPickedUpEntityWithWinch(void) 0x6D3CF0 +CEntity* CVehicle::QueryPickedUpEntityWithWinch() +{ + return ((CEntity* (__thiscall *)(CVehicle*))0x6D3CF0)(this); +} + +// Converted from thiscall float CVehicle::GetRopeHeightForHeli(void) 0x6D3D10 +float CVehicle::GetRopeHeightForHeli() +{ + return ((float (__thiscall *)(CVehicle*))0x6D3D10)(this); +} + +// Converted from thiscall void CVehicle::SetRopeHeightForHeli(float height) 0x6D3D30 +void CVehicle::SetRopeHeightForHeli(float height) +{ + ((void (__thiscall *)(CVehicle*, float))0x6D3D30)(this, height); +} + +// Converted from thiscall void CVehicle::RenderDriverAndPassengers(void) 0x6D3D60 +void CVehicle::RenderDriverAndPassengers() +{ + ((void (__thiscall *)(CVehicle*))0x6D3D60)(this); +} + +// Converted from thiscall void CVehicle::PreRenderDriverAndPassengers(void) 0x6D3DB0 +void CVehicle::PreRenderDriverAndPassengers() +{ + ((void (__thiscall *)(CVehicle*))0x6D3DB0)(this); +} + +// Converted from thiscall float CVehicle::GetPlaneGunsAutoAimAngle(void) 0x6D3E00 +float CVehicle::GetPlaneGunsAutoAimAngle() +{ + return ((float (__thiscall *)(CVehicle*))0x6D3E00)(this); +} + +// Converted from thiscall int CVehicle::GetPlaneNumGuns(void) 0x6D3F30 +int CVehicle::GetPlaneNumGuns() +{ + return ((int (__thiscall *)(CVehicle*))0x6D3F30)(this); +} + +// Converted from thiscall void CVehicle::SetFiringRateMultiplier(float multiplier) 0x6D4010 +void CVehicle::SetFiringRateMultiplier(float multiplier) +{ + ((void (__thiscall *)(CVehicle*, float))0x6D4010)(this, multiplier); +} + +// Converted from thiscall float CVehicle::GetFiringRateMultiplier(void) 0x6D4090 +float CVehicle::GetFiringRateMultiplier() +{ + return ((float (__thiscall *)(CVehicle*))0x6D4090)(this); +} + +// Converted from thiscall unsigned int CVehicle::GetPlaneGunsRateOfFire(void) 0x6D40E0 +unsigned int CVehicle::GetPlaneGunsRateOfFire() +{ + return ((unsigned int (__thiscall *)(CVehicle*))0x6D40E0)(this); +} + +// Converted from thiscall CVector CVehicle::GetPlaneGunsPosition(int gunId) 0x6D4290 +CVector CVehicle::GetPlaneGunsPosition(int gunId) +{ + CVector result; + ((void (__thiscall *)(CVehicle*, CVector*, int))0x6D4290)(this, &result, gunId); + return result; +} + +// Converted from thiscall unsigned int CVehicle::GetPlaneOrdnanceRateOfFire(eOrdnanceType ordnanceType) 0x6D4590 +unsigned int CVehicle::GetPlaneOrdnanceRateOfFire(eOrdnanceType ordnanceType) +{ + return ((unsigned int (__thiscall *)(CVehicle*, eOrdnanceType))0x6D4590)(this, ordnanceType); +} + +// Converted from thiscall CVector CVehicle::GetPlaneOrdnancePosition(eOrdnanceType ordnanceType) 0x6D46E0 +CVector CVehicle::GetPlaneOrdnancePosition(eOrdnanceType ordnanceType) +{ + CVector result; + ((void (__thiscall *)(CVehicle*, CVector*, eOrdnanceType))0x6D46E0)(this, &result, ordnanceType); + return result; +} + +// Converted from thiscall void CVehicle::SelectPlaneWeapon(bool bChange,eOrdnanceType ordnanceType) 0x6D4900 +void CVehicle::SelectPlaneWeapon(bool bChange, eOrdnanceType ordnanceType) +{ + ((void (__thiscall *)(CVehicle*, bool, eOrdnanceType))0x6D4900)(this, bChange, ordnanceType); +} + +// Converted from thiscall void CVehicle::DoPlaneGunFireFX(CWeapon *weapon,CVector &particlePos,CVector &gunshellPos,int particleIndex) 0x6D4AD0 +void CVehicle::DoPlaneGunFireFX(CWeapon* weapon, CVector& particlePos, CVector& gunshellPos, int particleIndex) +{ + ((void (__thiscall *)(CVehicle*, CWeapon*, CVector&, CVector&, int))0x6D4AD0)(this, weapon, particlePos, gunshellPos, particleIndex); +} + +// Converted from thiscall void CVehicle::FirePlaneGuns(void) 0x6D4D30 +void CVehicle::FirePlaneGuns() +{ + ((void (__thiscall *)(CVehicle*))0x6D4D30)(this); +} + +// Converted from thiscall void CVehicle::FireUnguidedMissile(eOrdnanceType ordnanceType,bool bCheckTime) 0x6D5110 +void CVehicle::FireUnguidedMissile(eOrdnanceType ordnanceType, bool bCheckTime) +{ + ((void (__thiscall *)(CVehicle*, eOrdnanceType, bool))0x6D5110)(this, ordnanceType, bCheckTime); +} + +// Converted from thiscall bool CVehicle::CanBeDriven(void) 0x6D5400 +bool CVehicle::CanBeDriven() +{ + return ((bool (__thiscall *)(CVehicle*))0x6D5400)(this); +} + +// Converted from thiscall void CVehicle::ReactToVehicleDamage(CPed *ped) 0x6D5490 +void CVehicle::ReactToVehicleDamage(CPed* ped) +{ + ((void (__thiscall *)(CVehicle*, CPed*))0x6D5490)(this, ped); +} + +// Converted from thiscall bool CVehicle::GetVehicleLightsStatus(void) 0x6D55C0 +bool CVehicle::GetVehicleLightsStatus() +{ + return ((bool (__thiscall *)(CVehicle*))0x6D55C0)(this); +} + +// Converted from thiscall bool CVehicle::CanPedLeanOut(CPed *ped) 0x6D5CF0 +bool CVehicle::CanPedLeanOut(CPed* ped) +{ + return ((bool (__thiscall *)(CVehicle*, CPed*))0x6D5CF0)(this, ped); +} + +// Converted from thiscall void CVehicle::SetVehicleCreatedBy(int createdBy) 0x6D5D70 +void CVehicle::SetVehicleCreatedBy(int createdBy) +{ + ((void (__thiscall *)(CVehicle*, int))0x6D5D70)(this, createdBy); +} + +// Converted from thiscall void CVehicle::SetupRender(void) 0x6D64F0 +void CVehicle::SetupRender() +{ + ((void (__thiscall *)(CVehicle*))0x6D64F0)(this); +} + +// Converted from thiscall void CVehicle::ProcessWheel(CVector &,CVector &,CVector &,CVector &,int,float,float,float,char,float *,tWheelState *,ushort) 0x6D6C00 +void CVehicle::ProcessWheel(CVector& arg0, CVector& arg1, CVector& arg2, CVector& arg3, int arg4, float arg5, float arg6, float arg7, char arg8, float* arg9, tWheelState* arg10, unsigned short arg11) +{ + ((void (__thiscall *)(CVehicle*, CVector&, CVector&, CVector&, CVector&, int, float, float, float, char, float*, tWheelState*, unsigned short))0x6D6C00)(this, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); +} + +// Converted from thiscall void CVehicle::ProcessBikeWheel(CVector &,CVector &,CVector &,CVector &,int,float,float,float,float,char,float *,tWheelState *,eBikeWheelSpecial,ushort) 0x6D73B0 +void CVehicle::ProcessBikeWheel(CVector& arg0, CVector& arg1, CVector& arg2, CVector& arg3, int arg4, float arg5, float arg6, float arg7, float arg8, char arg9, float* arg10, tWheelState* arg11, eBikeWheelSpecial arg12, unsigned short arg13) +{ + ((void (__thiscall *)(CVehicle*, CVector&, CVector&, CVector&, CVector&, int, float, float, float, float, char, float*, tWheelState*, eBikeWheelSpecial, unsigned short))0x6D73B0)(this, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13); +} + +// Converted from thiscall int CVehicle::FindTyreNearestPoint(float x,float y) 0x6D7BC0 +int CVehicle::FindTyreNearestPoint(float x, float y) +{ + return ((int (__thiscall *)(CVehicle*, float, float))0x6D7BC0)(this, x, y); +} + +// Converted from thiscall void CVehicle::InflictDamage(CEntity *damager,eWeaponType weapon,float intensity,CVector coords) 0x6D7C90 +void CVehicle::InflictDamage(CEntity* damager, eWeaponType weapon, float intensity, CVector coords) +{ + ((void (__thiscall *)(CVehicle*, CEntity*, eWeaponType, float, CVector))0x6D7C90)(this, damager, weapon, intensity, coords); +} + +// Converted from thiscall void CVehicle::KillPedsGettingInVehicle(void) 0x6D82F0 +void CVehicle::KillPedsGettingInVehicle() +{ + ((void (__thiscall *)(CVehicle*))0x6D82F0)(this); +} + +// Converted from thiscall bool CVehicle::UsesSiren(void) 0x6D8470 +bool CVehicle::UsesSiren() +{ + return ((bool (__thiscall *)(CVehicle*))0x6D8470)(this); +} + +// Converted from thiscall bool CVehicle::IsSphereTouchingVehicle(float x,float y,float z,float radius) 0x6D84D0 +bool CVehicle::IsSphereTouchingVehicle(float x, float y, float z, float radius) +{ + return ((bool (__thiscall *)(CVehicle*, float, float, float, float))0x6D84D0)(this, x, y, z, radius); +} + +// Converted from thiscall void CVehicle::FlyingControl(eFlightModel flightModel,float,float,float,float) 0x6D85F0 +void CVehicle::FlyingControl(eFlightModel flightModel, float arg1, float arg2, float arg3, float arg4) +{ + ((void (__thiscall *)(CVehicle*, eFlightModel, float, float, float, float))0x6D85F0)(this, flightModel, arg1, arg2, arg3, arg4); +} + +// Converted from thiscall void CVehicle::BladeColSectorList(CPtrList &ptrList,CColModel &colModel,CMatrix &matrix,short,float) 0x6DAF00 +void CVehicle::BladeColSectorList(CPtrList& ptrList, CColModel& colModel, CMatrix& matrix, short arg3, float arg4) +{ + ((void (__thiscall *)(CVehicle*, CPtrList&, CColModel&, CMatrix&, short, float))0x6DAF00)(this, ptrList, colModel, matrix, arg3, arg4); +} + +// Converted from thiscall void CVehicle::SetComponentRotation(RwFrame *component,int axis,float angle,bool bResetPosition) 0x6DBA30 +void CVehicle::SetComponentRotation(RwFrame* component, int axis, float angle, bool bResetPosition) +{ + ((void (__thiscall *)(CVehicle*, RwFrame*, int, float, bool))0x6DBA30)(this, component, axis, angle, bResetPosition); +} + +// Converted from thiscall void CVehicle::SetTransmissionRotation(RwFrame *component,float,float,CVector posn,bool isFront) 0x6DBBB0 +void CVehicle::SetTransmissionRotation(RwFrame* component, float arg1, float arg2, CVector posn, bool isFront) +{ + ((void (__thiscall *)(CVehicle*, RwFrame*, float, float, CVector, bool))0x6DBBB0)(this, component, arg1, arg2, posn, isFront); +} + +// Converted from thiscall void CVehicle::ProcessBoatControl(tBoatHandlingData *boatHandling,float &,bool,bool) 0x6DBCE0 +void CVehicle::ProcessBoatControl(tBoatHandlingData* boatHandling, float& arg1, bool arg2, bool arg3) +{ + ((void (__thiscall *)(CVehicle*, tBoatHandlingData*, float&, bool, bool))0x6DBCE0)(this, boatHandling, arg1, arg2, arg3); +} + +// Converted from thiscall void CVehicle::DoBoatSplashes(float) 0x6DD130 +void CVehicle::DoBoatSplashes(float arg0) +{ + ((void (__thiscall *)(CVehicle*, float))0x6DD130)(this, arg0); +} + +// Converted from thiscall void CVehicle::DoSunGlare(void) 0x6DD6F0 +void CVehicle::DoSunGlare() +{ + ((void (__thiscall *)(CVehicle*))0x6DD6F0)(this); +} + +// Converted from thiscall void CVehicle::AddWaterSplashParticles(void) 0x6DDF60 +void CVehicle::AddWaterSplashParticles() +{ + ((void (__thiscall *)(CVehicle*))0x6DDF60)(this); +} + +// Converted from thiscall void CVehicle::AddExhaustParticles(void) 0x6DE240 +void CVehicle::AddExhaustParticles() +{ + ((void (__thiscall *)(CVehicle*))0x6DE240)(this); +} + +// Converted from thiscall bool CVehicle::AddSingleWheelParticles(tWheelState,uint,float,float,CColPoint *,CVector *,float,int,uint surfaceType,bool *bloodState,uint) 0x6DE880 +bool CVehicle::AddSingleWheelParticles(tWheelState arg0, unsigned int arg1, float arg2, float arg3, CColPoint* arg4, CVector* arg5, float arg6, int arg7, unsigned int surfaceType, bool* bloodState, unsigned int arg10) +{ + return ((bool (__thiscall *)(CVehicle*, tWheelState, unsigned int, float, float, CColPoint*, CVector*, float, int, unsigned int, bool*, unsigned int))0x6DE880)(this, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, surfaceType, bloodState, arg10); +} + +// Converted from thiscall bool CVehicle::GetSpecialColModel(void) 0x6DF3D0 +bool CVehicle::GetSpecialColModel() +{ + return ((bool (__thiscall *)(CVehicle*))0x6DF3D0)(this); +} + +// Converted from thiscall void CVehicle::RemoveVehicleUpgrade(int upgradeModelIndex) 0x6DF930 +void CVehicle::RemoveVehicleUpgrade(int upgradeModelIndex) +{ + ((void (__thiscall *)(CVehicle*, int))0x6DF930)(this, upgradeModelIndex); +} + +// Converted from thiscall void CVehicle::AddUpgrade(int modelIndex,int upgradeIndex) 0x6DFA20 +void CVehicle::AddUpgrade(int modelIndex, int upgradeIndex) +{ + ((void (__thiscall *)(CVehicle*, int, int))0x6DFA20)(this, modelIndex, upgradeIndex); +} + +// Converted from thiscall void CVehicle::UpdateTrailerLink(bool,bool) 0x6DFC50 +void CVehicle::UpdateTrailerLink(bool arg0, bool arg1) +{ + ((void (__thiscall *)(CVehicle*, bool, bool))0x6DFC50)(this, arg0, arg1); +} + +// Converted from thiscall void CVehicle::UpdateTractorLink(bool,bool) 0x6E0050 +void CVehicle::UpdateTractorLink(bool arg0, bool arg1) +{ + ((void (__thiscall *)(CVehicle*, bool, bool))0x6E0050)(this, arg0, arg1); +} + +// Converted from thiscall CEntity* CVehicle::ScanAndMarkTargetForHeatSeekingMissile(CEntity *entity) 0x6E0400 +CEntity* CVehicle::ScanAndMarkTargetForHeatSeekingMissile(CEntity* entity) +{ + return ((CEntity* (__thiscall *)(CVehicle*, CEntity*))0x6E0400)(this, entity); +} + +// Converted from thiscall void CVehicle::FireHeatSeakingMissile(CEntity *targetEntity,eOrdnanceType ordnanceType,bool) 0x6E05C0 +void CVehicle::FireHeatSeakingMissile(CEntity* targetEntity, eOrdnanceType ordnanceType, bool arg2) +{ + ((void (__thiscall *)(CVehicle*, CEntity*, eOrdnanceType, bool))0x6E05C0)(this, targetEntity, ordnanceType, arg2); +} + +// Converted from thiscall void CVehicle::PossiblyDropFreeFallBombForPlayer(eOrdnanceType ordnanceType,bool) 0x6E07E0 +void CVehicle::PossiblyDropFreeFallBombForPlayer(eOrdnanceType ordnanceType, bool arg1) +{ + ((void (__thiscall *)(CVehicle*, eOrdnanceType, bool))0x6E07E0)(this, ordnanceType, arg1); +} + +// Converted from thiscall void CVehicle::ProcessSirenAndHorn(bool) 0x6E0950 +void CVehicle::ProcessSirenAndHorn(bool arg0) +{ + ((void (__thiscall *)(CVehicle*, bool))0x6E0950)(this, arg0); +} + +// Converted from thiscall bool CVehicle::DoHeadLightEffect(int dummyId,CMatrix &vehicleMatrix,uchar lightId,uchar lightState) 0x6E0A50 +bool CVehicle::DoHeadLightEffect(int dummyId, CMatrix& vehicleMatrix, unsigned char lightId, unsigned char lightState) +{ + return ((bool (__thiscall *)(CVehicle*, int, CMatrix&, unsigned char, unsigned char))0x6E0A50)(this, dummyId, vehicleMatrix, lightId, lightState); +} + +// Converted from thiscall void CVehicle::DoHeadLightBeam(int,CMatrix &matrix,uchar) 0x6E0E20 +void CVehicle::DoHeadLightBeam(int arg0, CMatrix& matrix, unsigned char arg2) +{ + ((void (__thiscall *)(CVehicle*, int, CMatrix&, unsigned char))0x6E0E20)(this, arg0, matrix, arg2); +} + +// Converted from thiscall void CVehicle::DoHeadLightReflectionSingle(CMatrix &matrix,uchar lightId) 0x6E1440 +void CVehicle::DoHeadLightReflectionSingle(CMatrix& matrix, unsigned char lightId) +{ + ((void (__thiscall *)(CVehicle*, CMatrix&, unsigned char))0x6E1440)(this, matrix, lightId); +} + +// Converted from thiscall void CVehicle::DoHeadLightReflectionTwin(CMatrix &matrix) 0x6E1600 +void CVehicle::DoHeadLightReflectionTwin(CMatrix& matrix) +{ + ((void (__thiscall *)(CVehicle*, CMatrix&))0x6E1600)(this, matrix); +} + +// Converted from thiscall void CVehicle::DoHeadLightReflection(CMatrix &,uint,uchar,uchar) 0x6E1720 +void CVehicle::DoHeadLightReflection(CMatrix& arg0, unsigned int flags, unsigned char left, unsigned char right) +{ + ((void (__thiscall *)(CVehicle*, CMatrix&, unsigned int, unsigned char, unsigned char))0x6E1720)(this, arg0, flags, left, right); +} + +// Converted from thiscall bool CVehicle::DoTailLightEffect(int lightId,CMatrix &matrix,uchar,uchar,uint,uchar) 0x6E1780 +bool CVehicle::DoTailLightEffect(int lightId, CMatrix& matrix, unsigned char arg2, unsigned char arg3, unsigned int arg4, unsigned char arg5) +{ + return ((bool (__thiscall *)(CVehicle*, int, CMatrix&, unsigned char, unsigned char, unsigned int, unsigned char))0x6E1780)(this, lightId, matrix, arg2, arg3, arg4, arg5); +} + +// Converted from thiscall void CVehicle::DoVehicleLights(CMatrix &matrix,uint flags) 0x6E1A60 +void CVehicle::DoVehicleLights(CMatrix& matrix, unsigned int flags) +{ + ((void (__thiscall *)(CVehicle*, CMatrix&, unsigned int))0x6E1A60)(this, matrix, flags); +} + +// Converted from thiscall void CVehicle::FillVehicleWithPeds(bool bSetClothesToAfro) 0x6E2900 +void CVehicle::FillVehicleWithPeds(bool bSetClothesToAfro) +{ + ((void (__thiscall *)(CVehicle*, bool))0x6E2900)(this, bSetClothesToAfro); +} + +// Converted from thiscall void CVehicle::DoBladeCollision(CVector,CMatrix &matrix,short,float,float) 0x6E2E50 +void CVehicle::DoBladeCollision(CVector arg0, CMatrix& matrix, short arg2, float arg3, float arg4) +{ + ((void (__thiscall *)(CVehicle*, CVector, CMatrix&, short, float, float))0x6E2E50)(this, arg0, matrix, arg2, arg3, arg4); +} + +// Converted from thiscall void CVehicle::AddVehicleUpgrade(int modelId) 0x6E3290 +void CVehicle::AddVehicleUpgrade(int modelId) +{ + ((void (__thiscall *)(CVehicle*, int))0x6E3290)(this, modelId); +} + +// Converted from thiscall void CVehicle::SetupUpgradesAfterLoad(void) 0x6E3400 +void CVehicle::SetupUpgradesAfterLoad() +{ + ((void (__thiscall *)(CVehicle*))0x6E3400)(this); +} + +// Converted from thiscall void CVehicle::GetPlaneWeaponFiringStatus(bool &status,eOrdnanceType &ordnanceType) 0x6E3440 0x6E38A0 +void CVehicle::GetPlaneWeaponFiringStatus(bool& status, eOrdnanceType& ordnanceType) +{ + ((void (__thiscall *)(CVehicle*, bool&, eOrdnanceType&))0x6E3440)(this, status, ordnanceType); +} + +// Converted from stdcall bool IsVehiclePointerValid(CVehicle *vehicle) 0x6E38F0 +bool IsVehiclePointerValid(CVehicle* vehicle) +{ + return ((bool (__cdecl *)(CVehicle*))0x6E38F0)(vehicle); +} + +// Converted from thiscall void CVehicle::ProcessWeapons(void) 0x6E3950 +void CVehicle::ProcessWeapons() +{ + ((void (__thiscall *)(CVehicle*))0x6E3950)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CVehicle.h b/third-party/plugin-sdk/plugin_sa/game_sa/CVehicle.h new file mode 100644 index 00000000..d4ad9a4f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CVehicle.h @@ -0,0 +1,595 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CPhysical.h" +#include "CAEVehicleAudioEntity.h" +#include "tHandlingData.h" +#include "tFlyingHandlingData.h" +#include "CAutoPilot.h" +#include "eVehicleHandlingFlags.h" +#include "CStoredCollPoly.h" +#include "CVehicleModelInfo.h" +#include "tBoatHandlingData.h" +#include "CPtrList.h" +#include "CRideAnimData.h" +#include "CDamageManager.h" +#include "FxSystem_c.h" +#include "CFire.h" + +/* Thanks to MTA team for https://code.google.com/p/mtasa-blue/source/browse/tags/1.3.4/MTA10/game_sa/CVehicleSA.h */ + +enum eCarWeapon { + CAR_WEAPON_NOT_USED, + CAR_WEAPON_HEAVY_GUN, + CAR_WEAPON_FREEFALL_BOMB, + CAR_WEAPON_LOCK_ON_ROCKET, + CAR_WEAPON_DOUBLE_ROCKET +}; + +enum eDoorLock : unsigned int { + DOORLOCK_NOT_USED, + DOORLOCK_UNLOCKED, + DOORLOCK_LOCKED, + DOORLOCK_LOCKOUT_PLAYER_ONLY, + DOORLOCK_LOCKED_PLAYER_INSIDE, + DOORLOCK_COP_CAR, + DOORLOCK_FORCE_SHUT_DOORS, + DOORLOCK_SKIP_SHUT_DOORS +}; + +enum eVehicleType { + VEHICLE_AUTOMOBILE, + VEHICLE_MTRUCK, + VEHICLE_QUAD, + VEHICLE_HELI, + VEHICLE_PLANE, + VEHICLE_BOAT, + VEHICLE_TRAIN, + VEHICLE_FHELI, + VEHICLE_FPLANE, + VEHICLE_BIKE, + VEHICLE_BMX, + VEHICLE_TRAILER +}; + +enum eVehicleApperance { + VEHICLE_APPEARANCE_AUTOMOBILE = 1, + VEHICLE_APPEARANCE_BIKE, + VEHICLE_APPEARANCE_HELI, + VEHICLE_APPEARANCE_BOAT, + VEHICLE_APPEARANCE_PLANE, +}; + +enum eVehicleLightsFlags { + VEHICLE_LIGHTS_TWIN = 1, + VEHICLE_LIGHTS_IGNORE_DAMAGE = 4, + VEHICLE_LIGHTS_DISABLE_FRONT = 16, + VEHICLE_LIGHTS_DISABLE_REAR = 32 +}; + +enum eVehicleCreatedBy { + RANDOM_VEHICLE = 1, + MISSION_VEHICLE = 2, + PARKED_VEHICLE = 3, + PERMANENT_VEHICLE = 4 +}; + +enum eBombState { + BOMB_TIMED_NOT_ACTIVATED = 1, + BOMB_IGNITION = 2, + BOMB_STICKY = 3, + BOMB_TIMED_ACTIVATED = 4, + BOMB_IGNITION_ACTIVATED = 5 +}; + +#if 0 +enum eOrdnanceType; +enum eFlightModel; +enum eDoors; +enum eBikeWheelSpecial; +#else +typedef int eOrdnanceType; +typedef int eFlightModel; +typedef int eBikeWheelSpecial; +#endif + +class CWeapon; +class CPed; +typedef int tWheelState; + + +class PLUGIN_API CVehicle : public CPhysical { +protected: + CVehicle(plugin::dummy_func_t) : CPhysical(plugin::dummy) {} +public: + CAEVehicleAudioEntity m_vehicleAudio; + tHandlingData *m_pHandlingData; + tFlyingHandlingData *m_pFlyingHandlingData; + union{ + eVehicleHandlingFlags m_nHandlingFlagsIntValue; + struct { + unsigned int b1gBoost : 1; + unsigned int b2gBoost : 1; + unsigned int bNpcAntiRoll : 1; + unsigned int bNpcNeutralHandl : 1; + unsigned int bNoHandbrake : 1; + unsigned int bSteerRearwheels : 1; + unsigned int bHbRearwheelSteer : 1; + unsigned int bAltSteerOpt : 1; + unsigned int bWheelFNarrow2 : 1; + unsigned int bWheelFNarrow : 1; + unsigned int bWheelFWide : 1; + unsigned int bWheelFWide2 : 1; + unsigned int bWheelRNarrow2 : 1; + unsigned int bWheelRNarrow : 1; + unsigned int bWheelRWide : 1; + unsigned int bWheelRWide2 : 1; + unsigned int bHydraulicGeom : 1; + unsigned int bHydraulicInst : 1; + unsigned int bHydraulicNone : 1; + unsigned int bNosInst : 1; + unsigned int bOffroadAbility : 1; + unsigned int bOffroadAbility2 : 1; + unsigned int bHalogenLights : 1; + unsigned int bProcRearwheelFirst : 1; + unsigned int bUseMaxspLimit : 1; + unsigned int bLowRider : 1; + unsigned int bStreetRacer : 1; + unsigned int bUnused1 : 1; + unsigned int bSwingingChassis : 1; + } m_nHandlingFlags; + }; + CAutoPilot m_autoPilot; + struct { + unsigned char bIsLawEnforcer : 1; // Is this guy chasing the player at the moment + unsigned char bIsAmbulanceOnDuty : 1; // Ambulance trying to get to an accident + unsigned char bIsFireTruckOnDuty : 1; // Firetruck trying to get to a fire + unsigned char bIsLocked : 1; // Is this guy locked by the script (cannot be removed) + unsigned char bEngineOn : 1; // For sound purposes. Parked cars have their engines switched off (so do destroyed cars) + unsigned char bIsHandbrakeOn : 1; // How's the handbrake doing ? + unsigned char bLightsOn : 1; // Are the lights switched on ? + unsigned char bFreebies : 1; // Any freebies left in this vehicle ? + + unsigned char bIsVan : 1; // Is this vehicle a van (doors at back of vehicle) + unsigned char bIsBus : 1; // Is this vehicle a bus + unsigned char bIsBig : 1; // Is this vehicle a bus + unsigned char bLowVehicle : 1; // Need this for sporty type cars to use low getting-in/out anims + unsigned char bComedyControls : 1; // Will make the car hard to control (hopefully in a funny way) + unsigned char bWarnedPeds : 1; // Has scan and warn peds of danger been processed? + unsigned char bCraneMessageDone : 1; // A crane message has been printed for this car allready + unsigned char bTakeLessDamage : 1; // This vehicle is stronger (takes about 1/4 of damage) + + unsigned char bIsDamaged : 1; // This vehicle has been damaged and is displaying all its components + unsigned char bHasBeenOwnedByPlayer : 1;// To work out whether stealing it is a crime + unsigned char bFadeOut : 1; // Fade vehicle out + unsigned char bIsBeingCarJacked : 1; // Fade vehicle out + unsigned char bCreateRoadBlockPeds : 1;// If this vehicle gets close enough we will create peds (coppers or gang members) round it + unsigned char bCanBeDamaged : 1; // Set to FALSE during cut scenes to avoid explosions + unsigned char bOccupantsHaveBeenGenerated : 1; // Is true if the occupants have already been generated. (Shouldn't happen again) + unsigned char bGunSwitchedOff : 1; // Level designers can use this to switch off guns on boats + + unsigned char bVehicleColProcessed : 1;// Has ProcessEntityCollision been processed for this car? + unsigned char bIsCarParkVehicle : 1; // Car has been created using the special CAR_PARK script command + unsigned char bHasAlreadyBeenRecorded : 1; // Used for replays + unsigned char bPartOfConvoy : 1; + unsigned char bHeliMinimumTilt : 1; // This heli should have almost no tilt really + unsigned char bAudioChangingGear : 1; // sounds like vehicle is changing gear + unsigned char bIsDrowning : 1; // is vehicle occupants taking damage in water (i.e. vehicle is dead in water) + unsigned char bTyresDontBurst : 1; // If this is set the tyres are invincible + + unsigned char bCreatedAsPoliceVehicle : 1;// True if this guy was created as a police vehicle (enforcer, policecar, miamivice car etc) + unsigned char bRestingOnPhysical : 1; // Dont go static cause car is sitting on a physical object that might get removed + unsigned char bParking : 1; + unsigned char bCanPark : 1; + unsigned char bFireGun : 1; // Does the ai of this vehicle want to fire it's gun? + unsigned char bDriverLastFrame : 1; // Was there a driver present last frame ? + unsigned char bNeverUseSmallerRemovalRange : 1;// Some vehicles (like planes) we don't want to remove just behind the camera. + unsigned char bIsRCVehicle : 1; // Is this a remote controlled (small) vehicle. True whether the player or AI controls it. + + unsigned char bAlwaysSkidMarks : 1; // This vehicle leaves skidmarks regardless of the wheels' states. + unsigned char bEngineBroken : 1; // Engine doesn't work. Player can get in but the vehicle won't drive + unsigned char bVehicleCanBeTargetted : 1;// The ped driving this vehicle can be targetted, (for Torenos plane mission) + unsigned char bPartOfAttackWave : 1; // This car is used in an attack during a gang war + unsigned char bWinchCanPickMeUp : 1; // This car cannot be picked up by any ropes. + unsigned char bImpounded : 1; // Has this vehicle been in a police impounding garage + unsigned char bVehicleCanBeTargettedByHS : 1;// Heat seeking missiles will not target this vehicle. + unsigned char bSirenOrAlarm : 1; // Set to TRUE if siren or alarm active, else FALSE + + unsigned char bHasGangLeaningOn : 1; + unsigned char bGangMembersForRoadBlock : 1;// Will generate gang members if NumPedsForRoadBlock > 0 + unsigned char bDoesProvideCover : 1; // If this is false this particular vehicle can not be used to take cover behind. + unsigned char bMadDriver : 1; // This vehicle is driving like a lunatic + unsigned char bUpgradedStereo : 1; // This vehicle has an upgraded stereo + unsigned char bConsideredByPlayer : 1; // This vehicle is considered by the player to enter + unsigned char bPetrolTankIsWeakPoint : 1;// If false shootong the petrol tank will NOT Blow up the car + unsigned char bDisableParticles : 1; // Disable particles from this car. Used in garage. + + unsigned char bHasBeenResprayed : 1; // Has been resprayed in a respray garage. Reset after it has been checked. + unsigned char bUseCarCheats : 1; // If this is true will set the car cheat stuff up in ProcessControl() + unsigned char bDontSetColourWhenRemapping : 1;// If the texture gets remapped we don't want to change the colour with it. + unsigned char bUsedForReplay : 1; // This car is controlled by replay and should be removed when replay is done. + } m_nVehicleFlags; + unsigned int m_nCreationTime; + unsigned char m_nPrimaryColor; + unsigned char m_nSecondaryColor; + unsigned char m_nTertiaryColor; + unsigned char m_nQuaternaryColor; + char m_anExtras[2]; + short m_anUpgrades[15]; + float m_fWheelScale; + unsigned short m_nAlarmState; + short m_nForcedRandomRouteSeed; // if this is non-zero the random wander gets deterministic + CPed *m_pDriver; + CPed *m_apPassengers[8]; + unsigned char m_nNumPassengers; + unsigned char m_nNumGettingIn; + unsigned char m_nGettingInFlags; + unsigned char m_nGettingOutFlags; + unsigned char m_nMaxPassengers; + unsigned char m_nWindowsOpenFlags; // initialised, but not used? + unsigned char m_nNitroBoosts; + unsigned char m_nSpecialColModel; + CEntity *m_pEntityWeAreOn; // we get it from CWorld::ProcessVerticalLine or ProcessEntityCollision, it's entity under us, + //only static entities (buildings or roads) + CFire *m_pFire; + float m_fSteerAngle; + float m_f2ndSteerAngle; // used for steering 2nd set of wheels or elevators etc.. + float m_fGasPedal; + float m_fBreakPedal; + unsigned char m_nCreatedBy; // see eVehicleCreatedBy + short m_nExtendedRemovalRange; // when game wants to delete a vehicle, it gets min(m_wExtendedRemovalRange, 170.0) + unsigned char m_nBombOnBoard : 3; // 0 = None + // 1 = Timed + // 2 = On ignition + // 3 = remotely set ? + // 4 = Timed Bomb has been activated + // 5 = On ignition has been activated + unsigned char m_nOverrideLights : 2; // uses enum NO_CAR_LIGHT_OVERRIDE, FORCE_CAR_LIGHTS_OFF, FORCE_CAR_LIGHTS_ON + unsigned char m_nWinchType : 2; // Does this vehicle use a winch? + unsigned char m_nGunsCycleIndex : 2; // Cycle through alternate gun hardpoints on planes/helis + unsigned char m_nOrdnanceCycleIndex : 2; // Cycle through alternate ordnance hardpoints on planes/helis + unsigned char m_nUsedForCover; // Has n number of cops hiding/attempting to hid behind it + unsigned char m_nAmmoInClip; // Used to make the guns on boat do a reload (20 by default). + unsigned char m_nPacMansCollected; // initialised, but not used? + unsigned char m_nPedsPositionForRoadBlock; // 0, 1 or 2 + unsigned char m_nNumCopsForRoadBlock; + float m_fDirtLevel; // Dirt level of vehicle body texture: 0.0f=fully clean, 15.0f=maximum dirt visible + unsigned char m_nCurrentGear; + float m_fGearChangeCount; // used as parameter for cTransmission::CalculateDriveAcceleration, but doesn't change + float m_fWheelSpinForAudio; + float m_fHealth; // 1000.0f = full health. 0 -> explode + CVehicle *m_pTractor; + CVehicle *m_pTrailer; + CPed *m_pWhoInstalledBombOnMe; + unsigned int m_nTimeTillWeNeedThisCar; // game won't try to delete this car while this time won't reach + unsigned int m_nGunFiringTime; // last time when gun on vehicle was fired (used on boats) + unsigned int m_nTimeWhenBlowedUp; // game will delete vehicle when 60 seconds after this time will expire + short m_nCopsInCarTimer; // timer for police car (which is following player) occupants to stay in car. If this timer reachs + // some value, they will leave a car. The timer increases each frame if player is stopped in car, + // otherway it resets + short m_wBombTimer; // goes down with each frame + CPed *m_pWhoDetonatedMe; // if vehicle was detonated, game copies m_pWhoInstalledBombOnMe here + float m_fVehicleFrontGroundZ; // we get these values from CCollision::IsStoredPolyStillValidVerticalLine + float m_fVehicleRearGroundZ; // or CWorld::ProcessVerticalLine + char field_4EC; // initialised, but not used? + char field_4ED[11]; // possibly non-used data? + eDoorLock m_eDoorLock; + unsigned int m_nProjectileWeaponFiringTime; // manual-aimed projectiles for hunter, lock-on projectile for hydra + unsigned int m_nAdditionalProjectileWeaponFiringTime; // manual-aimed projectiles for hydra + unsigned int m_nTimeForMinigunFiring; // minigun on hunter + unsigned char m_nLastWeaponDamageType; // see eWeaponType, -1 if no damage + CEntity *m_pLastDamageEntity; + char field_510; // not used? + char field_511; // initialised, but not used? + char field_512; // initialised, but not used? + char m_nVehicleWeaponInUse; // see enum eCarWeapon + unsigned int m_nHornCounter; + char field_518; // random id related to siren + char field_519; // car horn related + char field_51A; + char m_nHasslePosId; + CStoredCollPoly m_FrontCollPoly; // poly which is under front part of car + CStoredCollPoly m_RearCollPoly; // poly which is under rear part of car + unsigned char m_anCollisionLighting[4]; // left front, left rear, right front, right rear + FxSystem_c *m_pOverheatParticle; + FxSystem_c *m_pFireParticle; + FxSystem_c *m_pDustParticle; + union{ + unsigned char m_nRenderLightsFlags; + struct{ + unsigned char m_bRightFront : 1; + unsigned char m_bLeftFront : 1; + unsigned char m_bRightRear : 1; + unsigned char m_bLeftRear : 1; + } m_renderLights; + }; + RwTexture *m_pCustomCarPlate; + CVehicle *field_58C; + unsigned int m_nVehicleClass; // see enum eVehicleClass + unsigned int m_nVehicleSubClass; + short m_nPreviousRemapTxd; + short m_nRemapTxd; + RwTexture *m_pRemapTexture; + + static float &WHEELSPIN_TARGET_RATE; // 1.0 + static float &WHEELSPIN_INAIR_TARGET_RATE; // 10.0 + static float &WHEELSPIN_RISE_RATE; // 0.95 + static float &WHEELSPIN_FALL_RATE; // 0.7 + static float &m_fAirResistanceMult; // 2.5 + static float &ms_fRailTrackResistance; // 0.003 + static float &ms_fRailTrackResistanceDefault; // 0.003 + static bool &bDisableRemoteDetonation; + static bool &bDisableRemoteDetonationOnContact; + static bool &m_bEnableMouseSteering; + static bool &m_bEnableMouseFlying; + static int &m_nLastControlInput; + static CColModel **m_aSpecialColVehicle; // CColModel *CVehicle::m_aSpecialColVehicle[4] + static bool &ms_forceVehicleLightsOff; + static bool &s_bPlaneGunsEjectShellCasings; + static CColModel *m_aSpecialColModel; // static CColModel m_aSpecialColModel[4] + + // originally vtable functions + + void ProcessControlCollisionCheck(); + void ProcessControlInputs(unsigned char playerNum); + // component index in m_apModelNodes array + void GetComponentWorldPosition(int componentId, CVector& posnOut); + // component index in m_apModelNodes array + bool IsComponentPresent(int componentId); + void OpenDoor(CPed* ped, int componentId, eDoors door, float doorOpenRatio, bool playSound); + void ProcessOpenDoor(CPed* ped, unsigned int doorComponentId, unsigned int arg2, unsigned int arg3, float arg4); + float GetDooorAngleOpenRatio(unsigned int door); + float GetDooorAngleOpenRatio(eDoors door); + bool IsDoorReady(unsigned int door); + bool IsDoorReady(eDoors door); + bool IsDoorFullyOpen(unsigned int door); + bool IsDoorFullyOpen(eDoors door); + bool IsDoorClosed(unsigned int door); + bool IsDoorClosed(eDoors door); + bool IsDoorMissing(unsigned int door); + bool IsDoorMissing(eDoors door); + // check if car has roof as extra + bool IsOpenTopCar(); + // remove ref to this entity + void RemoveRefsToVehicle(CEntity* entity); + void BlowUpCar(CEntity* damager, unsigned char bHideExplosion); + void BlowUpCarCutSceneNoExtras(bool bNoCamShake, bool bNoSpawnFlyingComps, bool bDetachWheels, bool bExplosionSound); + bool SetUpWheelColModel(CColModel* wheelCol); + // returns false if it's not possible to burst vehicle's tyre or it is already damaged. bPhysicalEffect=true applies random moving force to vehicle + bool BurstTyre(unsigned char tyreComponentId, bool bPhysicalEffect); + bool IsRoomForPedToLeaveCar(unsigned int arg0, CVector* arg1); + void ProcessDrivingAnims(CPed* driver, unsigned char arg1); + // get special ride anim data for bile or quad + CRideAnimData* GetRideAnimData(); + void SetupSuspensionLines(); + CVector AddMovingCollisionSpeed(CVector& arg0); + void Fix(); + void SetupDamageAfterLoad(); + void DoBurstAndSoftGroundRatios(); + float GetHeightAboveRoad(); + void PlayCarHorn(); + int GetNumContactWheels(); + void VehicleDamage(float damageIntensity, unsigned short collisionComponent, CEntity* damager, CVector* vecCollisionCoors, CVector* vecCollisionDirection, eWeaponType weapon); + bool CanPedStepOutCar(bool arg0); + bool CanPedJumpOutCar(CPed* ped); + bool GetTowHitchPos(CVector& posnOut, bool arg1, CVehicle* arg2); + bool GetTowBarPos(CVector& posnOut, bool arg1, CVehicle* arg2); + // always return true + bool SetTowLink(CVehicle* arg0, bool arg1); + bool BreakTowLink(); + float FindWheelWidth(bool bRear); + // always return true + bool Save(); + // always return true + bool Load(); + + //funcs + + static void Shutdown(); + // -1 if no remap index + int GetRemapIndex(); + void SetRemapTexDictionary(int txdId); + // index for m_awRemapTxds[] array + void SetRemap(int remapIndex); + void SetCollisionLighting(unsigned char lighting); + void UpdateLightingFromStoredPolys(); + void CalculateLightingFromCollision(); + void ResetAfterRender(); + // 2 - bike, 3 - heli, 4 - boat, 5 - plane + int GetVehicleAppearance(); + // returns false if vehicle model has no car plate material + bool CustomCarPlate_TextureCreate(CVehicleModelInfo* model); + void CustomCarPlate_TextureDestroy(); + bool CanBeDeleted(); + float ProcessWheelRotation(tWheelState wheelState, CVector const& arg1, CVector const& arg2, float arg3); + bool CanVehicleBeDamaged(CEntity* damager, eWeaponType weapon, unsigned char* arg2); + void ProcessDelayedExplosion(); + bool AddPassenger(CPed* passenger); + bool AddPassenger(CPed* passenger, unsigned char seatNumber); + void RemovePassenger(CPed* passenger); + void SetDriver(CPed* driver); + void RemoveDriver(bool arg0); + CPed* SetUpDriver(int pedType, bool arg1, bool arg2); + CPed* SetupPassenger(int seatNumber, int pedType, bool arg2, bool arg3); + bool IsPassenger(CPed* ped); + bool IsPassenger(int modelIndex); + bool IsDriver(CPed* ped); + bool IsDriver(int modelIndex); + void KillPedsInVehicle(); + // return this->m_pCoords->matrix.at.z <= -0.9; + bool IsUpsideDown(); + // return this->m_pCoords->matrix.right.z >= 0.8 || this->m_pCoords->matrix.right.z <= -0.8; + bool IsOnItsSide(); + bool CanPedOpenLocks(CPed* ped); + bool CanDoorsBeDamaged(); + bool CanPedEnterCar(); + void ProcessCarAlarm(); + bool IsVehicleNormal(); + void ChangeLawEnforcerState(unsigned char state); + bool IsLawEnforcementVehicle(); + bool ShufflePassengersToMakeSpace(); + void ExtinguishCarFire(); + void ActivateBomb(); + void ActivateBombWhenEntered(); + bool CarHasRoof(); + float HeightAboveCeiling(float arg0, eFlightModel arg1); + void SetComponentVisibility(RwFrame* component, unsigned int visibilityState); + void ApplyBoatWaterResistance(tBoatHandlingData* boatHandling, float arg1); + static void SetComponentAtomicAlpha(RpAtomic* atomic, int alpha); + void UpdateClumpAlpha(); + void UpdatePassengerList(); + CPed* PickRandomPassenger(); + void AddDamagedVehicleParticles(); + void MakeDirty(CColPoint& colPoint); + bool AddWheelDirtAndWater(CColPoint& colPoint, unsigned int arg1, unsigned char arg2, unsigned char arg3); + void SetGettingInFlags(unsigned char doorId); + void SetGettingOutFlags(unsigned char doorId); + void ClearGettingInFlags(unsigned char doorId); + void ClearGettingOutFlags(unsigned char doorId); + void SetWindowOpenFlag(unsigned char doorId); + void ClearWindowOpenFlag(unsigned char doorId); + bool SetVehicleUpgradeFlags(int upgradeModelIndex, int componentIndex, int& resultModelIndex); + bool ClearVehicleUpgradeFlags(int arg0, int componentIndex); + RpAtomic* CreateUpgradeAtomic(CBaseModelInfo* model, UpgradePosnDesc const* upgradePosn, RwFrame* parentComponent, bool isDamaged); + void RemoveUpgrade(int upgradeId); + // return upgrade model id or -1 if not present + int GetUpgrade(int upgradeId); + RpAtomic* CreateReplacementAtomic(CBaseModelInfo* model, RwFrame* component, int arg2, bool bDamaged, bool bIsWheel); + void AddReplacementUpgrade(int modelIndex, int nodeId); + void RemoveReplacementUpgrade(int nodeId); + // return upgrade model id or -1 if not present + void GetReplacementUpgrade(int nodeId); + void RemoveAllUpgrades(); + int GetSpareHasslePosId(); + void SetHasslePosId(int hasslePos, bool enable); + void InitWinch(int arg0); + void UpdateWinch(); + void RemoveWinch(); + void ReleasePickedUpEntityWithWinch(); + void PickUpEntityWithWinch(CEntity* arg0); + CEntity* QueryPickedUpEntityWithWinch(); + float GetRopeHeightForHeli(); + void SetRopeHeightForHeli(float height); + void RenderDriverAndPassengers(); + void PreRenderDriverAndPassengers(); + float GetPlaneGunsAutoAimAngle(); + int GetPlaneNumGuns(); + void SetFiringRateMultiplier(float multiplier); + float GetFiringRateMultiplier(); + unsigned int GetPlaneGunsRateOfFire(); + CVector GetPlaneGunsPosition(int gunId); + unsigned int GetPlaneOrdnanceRateOfFire(eOrdnanceType ordnanceType); + CVector GetPlaneOrdnancePosition(eOrdnanceType ordnanceType); + void SelectPlaneWeapon(bool bChange, eOrdnanceType ordnanceType); + void DoPlaneGunFireFX(CWeapon* weapon, CVector& particlePos, CVector& gunshellPos, int particleIndex); + void FirePlaneGuns(); + void FireUnguidedMissile(eOrdnanceType ordnanceType, bool bCheckTime); + bool CanBeDriven(); + void ReactToVehicleDamage(CPed* ped); + bool GetVehicleLightsStatus(); + bool CanPedLeanOut(CPed* ped); + void SetVehicleCreatedBy(int createdBy); + void SetupRender(); + void ProcessWheel(CVector& arg0, CVector& arg1, CVector& arg2, CVector& arg3, int arg4, float arg5, float arg6, float arg7, char arg8, float* arg9, tWheelState* arg10, unsigned short arg11); + void ProcessBikeWheel(CVector& arg0, CVector& arg1, CVector& arg2, CVector& arg3, int arg4, float arg5, float arg6, float arg7, float arg8, char arg9, float* arg10, tWheelState* arg11, eBikeWheelSpecial arg12, unsigned short arg13); + // return nearest wheel? + int FindTyreNearestPoint(float x, float y); + void InflictDamage(CEntity* damager, eWeaponType weapon, float intensity, CVector coords); + void KillPedsGettingInVehicle(); + bool UsesSiren(); + bool IsSphereTouchingVehicle(float x, float y, float z, float radius); + void FlyingControl(eFlightModel flightModel, float arg1, float arg2, float arg3, float arg4); + // always return false? + void BladeColSectorList(CPtrList& ptrList, CColModel& colModel, CMatrix& matrix, short arg3, float arg4); + void SetComponentRotation(RwFrame* component, int axis, float angle, bool bResetPosition); + void SetTransmissionRotation(RwFrame* component, float arg1, float arg2, CVector posn, bool isFront); + void ProcessBoatControl(tBoatHandlingData* boatHandling, float& arg1, bool arg2, bool arg3); + void DoBoatSplashes(float arg0); + void DoSunGlare(); + void AddWaterSplashParticles(); + void AddExhaustParticles(); + // always return false? + bool AddSingleWheelParticles(tWheelState arg0, unsigned int arg1, float arg2, float arg3, CColPoint* arg4, CVector* arg5, float arg6, int arg7, unsigned int surfaceType, bool* bloodState, unsigned int arg10); + bool GetSpecialColModel(); + void RemoveVehicleUpgrade(int upgradeModelIndex); + void AddUpgrade(int modelIndex, int upgradeIndex); + void UpdateTrailerLink(bool arg0, bool arg1); + void UpdateTractorLink(bool arg0, bool arg1); + CEntity* ScanAndMarkTargetForHeatSeekingMissile(CEntity* entity); + void FireHeatSeakingMissile(CEntity* targetEntity, eOrdnanceType ordnanceType, bool arg2); + void PossiblyDropFreeFallBombForPlayer(eOrdnanceType ordnanceType, bool arg1); + void ProcessSirenAndHorn(bool arg0); + bool DoHeadLightEffect(int dummyId, CMatrix& vehicleMatrix, unsigned char lightId, unsigned char lightState); + void DoHeadLightBeam(int arg0, CMatrix& matrix, unsigned char arg2); + void DoHeadLightReflectionSingle(CMatrix& matrix, unsigned char lightId); + void DoHeadLightReflectionTwin(CMatrix& matrix); + void DoHeadLightReflection(CMatrix& matrix, unsigned int flags, unsigned char left, unsigned char right); + bool DoTailLightEffect(int lightId, CMatrix& matrix, unsigned char arg2, unsigned char arg3, unsigned int arg4, unsigned char arg5); + // see eVehicleLightsFlags + void DoVehicleLights(CMatrix& matrix, unsigned int flags); + void FillVehicleWithPeds(bool bSetClothesToAfro); + void DoBladeCollision(CVector arg0, CMatrix& matrix, short arg2, float arg3, float arg4); + void AddVehicleUpgrade(int modelId); + void SetupUpgradesAfterLoad(); + void GetPlaneWeaponFiringStatus(bool& status, eOrdnanceType& ordnanceType); + void ProcessWeapons(); + + static void* operator new(unsigned int size); + static void operator delete(void* data); +}; + +VALIDATE_SIZE(CVehicle, 0x5A0); + +bool IsVehiclePointerValid(CVehicle* vehicle); +RpAtomic* RemoveUpgradeCB(RpAtomic* atomic, void* data); +RpAtomic* FindUpgradeCB(RpAtomic* atomic, void* data); +RwObject* RemoveObjectsCB(RwObject* object, void* data); +RwFrame* RemoveObjectsCB(RwFrame* component, void* data); +RwObject* CopyObjectsCB(RwObject* object, void* data); +RwObject* FindReplacementUpgradeCB(RwObject* object, void* data); +RpAtomic* RemoveAllUpgradesCB(RpAtomic* atomic, void* data); +RpMaterial* SetCompAlphaCB(RpMaterial* material, void* data); +RwObject* SetVehicleAtomicVisibilityCB(RwObject* object, void* data); +RwFrame* SetVehicleAtomicVisibilityCB(RwFrame* component, void* data); +void DestroyVehicleAndDriverAndPassengers(CVehicle* vehicle); + +extern float &fBurstTyreMod; // 0.13 +extern float &fBurstSpeedMax; // 0.3 +extern float &CAR_NOS_EXTRA_SKID_LOSS; // 0.9 +extern float &WS_TRAC_FRAC_LIMIT; // 0.3 +extern float &WS_ALREADY_SPINNING_LOSS; // 0.2 +extern float &fBurstBikeTyreMod; // 0.05 +extern float &fBurstBikeSpeedMax; // 0.12 +extern float &fTweakBikeWheelTurnForce; // 2.0 +extern float &AUTOGYRO_ROTORSPIN_MULT; // 0.006 +extern float &AUTOGYRO_ROTORSPIN_MULTLIMIT; // 0.25 +extern float &AUTOGYRO_ROTORSPIN_DAMP; // 0.997 +extern float &AUTOGYRO_ROTORLIFT_MULT; // 4.5 +extern float &AUTOGYRO_ROTORLIFT_FALLOFF; // 0.75 +extern float &AUTOGYRO_ROTORTILT_ANGLE; // 0.25 +extern float &ROTOR_SEMI_THICKNESS; // 0.05 +extern float *fSpeedMult; // float fSpeedMult[5] = {0.8, 0.75, 0.85, 0.9, 0.85, 0.85} +extern float &fDamagePosSpeedShift; // 0.4 +extern unsigned int *aDriveAnimIdsLow; // unsigned int aDriveAnimIdsLow[4] = {61, 68, 69, 78} +extern unsigned int *aDriveAnimIdsBoat; // unsigned int aDriveAnimIdsBoat[4] = {81, 82, 83, 84} +extern unsigned int *aDriveAnimIdsBad; // unsigned int aDriveAnimIdsBad[4] = {62, 70, 71, 79} +extern unsigned int *aDriveAnimIdsBadSlow; // unsigned int aDriveAnimIdsBadSlow[4] = {62, 87, 88, 79} +extern unsigned int *aDriveAnimIdsStd; // unsigned int aDriveAnimIdsStd[4] = {60, 66, 67, 78} +extern unsigned int *aDriveAnimIdsStdSlow; // unsigned int aDriveAnimIdsStdSlow[4] = {60, 85, 86, 78} +extern unsigned int *aDriveAnimIdsPro; // unsigned int aDriveAnimIdsPro[4] = {63, 72, 73, 80} +extern unsigned int *aDriveAnimIdsProSlow; // unsigned int aDriveAnimIdsProSlow[4] = {63, 89, 90, 80} +extern unsigned int *aDriveAnimIdsTruck; // unsigned int aDriveAnimIdsTruck[4] = {91, 92, 93, 94} +extern unsigned int *aDriveAnimIdsKart; // unsigned int aDriveAnimIdsKart[4] = {95, 96, 97, 98} +extern float &DIFF_LIMIT; // 0.8 +extern float &DIFF_SPRING_MULT_X; // 0.05 +extern float &DIFF_SPRING_MULT_Y; // 0.05 +extern float &DIFF_SPRING_MULT_Z; // 0.1 +extern float &DIFF_SPRING_COMPRESS_MULT; // 2.0 +extern CVector *VehicleGunOffset; // CVector VehicleGunOffset[12]; +extern char *&HandlingFilename; +extern char(*VehicleNames)[14]; // char VehicleNames[100][14]; sorting is based on handling id diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CVehicleModelInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CVehicleModelInfo.cpp new file mode 100644 index 00000000..f5c70c76 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CVehicleModelInfo.cpp @@ -0,0 +1,304 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CVehicleModelInfo.h" + +RwTexture *CVehicleModelInfo::ms_pRemapTexture = (RwTexture *)0xB4E47C; +RwTexture *CVehicleModelInfo::ms_pLightsTexture = (RwTexture *)0xB4E68C; +RwTexture *CVehicleModelInfo::ms_pLightsOnTexture = (RwTexture *)0xB4E690; +unsigned char *CVehicleModelInfo::ms_currentCol = (unsigned char *)0xB4E3F0; +CRGBA *CVehicleModelInfo::ms_vehicleColourTable = (CRGBA *)0xB4E480; +char *CVehicleModelInfo::ms_compsUsed = (char *)0xB4E478; +char *CVehicleModelInfo::ms_compsToUse = (char *)0x8A6458; + +void CVehicleModelInfo::ShutdownLightTexture() +{ + ((void(__cdecl *)())0x4C7470)(); +} + +RwTexture * CVehicleModelInfo::FindTextureCB(char const * name) +{ + return ((RwTexture* (__cdecl *)(char const*))0x4C7510)(name); +} + +void CVehicleModelInfo::UseCommonVehicleTexDicationary() +{ + ((void(__cdecl *)())0x4C75A0)(); +} + +void CVehicleModelInfo::StopUsingCommonVehicleTexDicationary() +{ + ((void(__cdecl *)())0x4C75C0)(); +} + +RpAtomic * CVehicleModelInfo::MoveObjectsCB(RwObject * object, void * data) +{ + return ((RpAtomic* (__cdecl *)(RwObject*, void*))0x4C7700)(object, data); +} + +RpAtomic * CVehicleModelInfo::HideDamagedAtomicCB(RpAtomic * atomic, void * data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x4C7720)(atomic, data); +} + +RpAtomic * CVehicleModelInfo::HideAllComponentsAtomicCB(RpAtomic * atomic, void * data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x4C7790)(atomic, data); +} + +RpMaterial * CVehicleModelInfo::HasAlphaMaterialCB(RpMaterial * material, void * data) +{ + return ((RpMaterial* (__cdecl *)(RpMaterial*, void*))0x4C77C0)(material, data); +} + +RpAtomic * CVehicleModelInfo::SetAtomicRendererCB(RpAtomic * atomic, void * data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x4C77E0)(atomic, data); +} + +RpAtomic * CVehicleModelInfo::SetAtomicRendererCB_RealHeli(RpAtomic * atomic, void * data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x4C7870)(atomic, data); +} + +RpAtomic * CVehicleModelInfo::SetAtomicRendererCB_Plane(RpAtomic * atomic, void * data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x4C7930)(atomic, data); +} + +RpAtomic * CVehicleModelInfo::SetAtomicRendererCB_Boat(RpAtomic * atomic, void * data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x4C79A0)(atomic, data); +} + +RpAtomic * CVehicleModelInfo::SetAtomicRendererCB_Heli(RpAtomic * atomic, void * data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x4C7A30)(atomic, data); +} + +RpAtomic * CVehicleModelInfo::SetAtomicRendererCB_Train(RpAtomic * atomic, void * data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x4C7AA0)(atomic, data); +} + +void CVehicleModelInfo::SetAtomicRenderCallbacks() +{ + ((void(__thiscall *)(CVehicleModelInfo*))0x4C7B10)(this); +} + +RwObject * CVehicleModelInfo::SetAtomicFlagCB(RwObject * object, void * data) +{ + return ((RwObject* (__cdecl *)(RwObject*, void*))0x4C7B90)(object, data); +} + +// Converted from stdcall RwObject* CVehicleModelInfo::ClearAtomicFlagCB(RwObject *object, void *data) 0x4C7BB0 +RwObject* CVehicleModelInfo::ClearAtomicFlagCB(RwObject* object, void* data) +{ + return ((RwObject* (__cdecl *)(RwObject*, void*))0x4C7BB0)(object, data); +} + +// Converted from thiscall void CVehicleModelInfo::SetVehicleComponentFlags(RwFrame *component, unsigned int flags) 0x4C7C10 +void CVehicleModelInfo::SetVehicleComponentFlags(RwFrame* component, unsigned int flags) +{ + ((void(__thiscall *)(CVehicleModelInfo*, RwFrame*, unsigned int))0x4C7C10)(this, component, flags); +} + +// Converted from thiscall void CVehicleModelInfo::GetWheelPosn(int wheel, CVector &outVec, bool local) 0x4C7D20 +void CVehicleModelInfo::GetWheelPosn(int wheel, CVector& outVec, bool local) +{ + ((void(__thiscall *)(CVehicleModelInfo*, int, CVector&, bool))0x4C7D20)(this, wheel, outVec, local); +} + +// Converted from thiscall bool CVehicleModelInfo::GetOriginalCompPosition(CVector &outVec, int component) 0x4C7DD0 +bool CVehicleModelInfo::GetOriginalCompPosition(CVector& outVec, int component) +{ + return ((bool(__thiscall *)(CVehicleModelInfo*, CVector&, int))0x4C7DD0)(this, outVec, component); +} + +// Converted from thiscall int CVehicleModelInfo::ChooseComponent(void) 0x4C8040 +int CVehicleModelInfo::ChooseComponent() +{ + return ((int(__thiscall *)(CVehicleModelInfo*))0x4C8040)(this); +} + +// Converted from thiscall int CVehicleModelInfo::ChooseSecondComponent(void) 0x4C8120 +int CVehicleModelInfo::ChooseSecondComponent() +{ + return ((int(__thiscall *)(CVehicleModelInfo*))0x4C8120)(this); +} + +// Converted from thiscall bool CVehicleModelInfo::IsUpgradeAvailable(VehicleUpgradePosn upgrade) 0x4C8200 +bool CVehicleModelInfo::IsUpgradeAvailable(VehicleUpgradePosn upgrade) +{ + return ((bool(__thiscall *)(CVehicleModelInfo*, VehicleUpgradePosn))0x4C8200)(this, upgrade); +} + +RpMaterial * CVehicleModelInfo::SetEditableMaterialsCB(RpMaterial * material, void * data) +{ + return ((RpMaterial* (__cdecl *)(RpMaterial*, void*))0x4C8220)(material, data); +} + +RpAtomic * CVehicleModelInfo::SetEditableMaterialsCB(RpAtomic * atomic, void * data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x4C83E0)(atomic, data); +} + +// Converted from stdcall void CVehicleModelInfo::SetEditableMaterials(RpClump *clump) 0x4C8430 +void CVehicleModelInfo::SetEditableMaterials(RpClump* clump) +{ + ((void(__cdecl *)(RpClump*))0x4C8430)(clump); +} + +// Converted from stdcall void CVehicleModelInfo::ResetEditableMaterials(RpClump *clump) 0x4C8460 +void CVehicleModelInfo::ResetEditableMaterials(RpClump* clump) +{ + ((void(__cdecl *)(RpClump*))0x4C8460)(clump); +} + +// Converted from thiscall void CVehicleModelInfo::SetVehicleColour(unsigned char prim, unsigned char sec, unsigned char tert, unsigned char quat) 0x4C84B0 +void CVehicleModelInfo::SetVehicleColour(unsigned char prim, unsigned char sec, unsigned char tert, unsigned char quat) +{ + ((void(__thiscall *)(CVehicleModelInfo*, unsigned char, unsigned char, unsigned char, unsigned char))0x4C84B0)(this, prim, sec, tert, quat); +} + +// Converted from thiscall void CVehicleModelInfo::ChooseVehicleColour(unsigned char &prim, unsigned char &sec, unsigned char &tert, unsigned char &quat, int variationShift) 0x4C8500 +void CVehicleModelInfo::ChooseVehicleColour(unsigned char& prim, unsigned char& sec, unsigned char& tert, unsigned char& quat, int variationShift) +{ + ((void(__thiscall *)(CVehicleModelInfo*, unsigned char&, unsigned char&, unsigned char&, unsigned char&, int))0x4C8500)(this, prim, sec, tert, quat, variationShift); +} + +// Converted from thiscall int CVehicleModelInfo::GetNumRemaps(void) 0x4C86B0 +int CVehicleModelInfo::GetNumRemaps() +{ + return ((int(__thiscall *)(CVehicleModelInfo*))0x4C86B0)(this); +} + +// Converted from thiscall void CVehicleModelInfo::AddRemap(int txd) 0x4C86D0 +void CVehicleModelInfo::AddRemap(int txd) +{ + ((void(__thiscall *)(CVehicleModelInfo*, int))0x4C86D0)(this, txd); +} + +// Converted from stdcall void CVehicleModelInfo::AddWheelUpgrade(int wheelSetNumber, int modelId) 0x4C8700 +void CVehicleModelInfo::AddWheelUpgrade(int wheelSetNumber, int modelId) +{ + ((void(__cdecl *)(int, int))0x4C8700)(wheelSetNumber, modelId); +} + +int CVehicleModelInfo::GetNumWheelUpgrades(int wheelSetNumber) +{ + return ((int(__cdecl *)(int))0x4C8740)(wheelSetNumber); +} + +void CVehicleModelInfo::GetWheelUpgrade(int wheelSetNumber, int wheelUpgradeNumber) +{ + ((void(__cdecl *)(int, int))0x4C8750)(wheelSetNumber, wheelUpgradeNumber); +} + +void CVehicleModelInfo::DeleteVehicleColourTextures() +{ + ((void(__cdecl *)())0x4C8770)(); +} + +void CVehicleModelInfo::LoadEnvironmentMaps() +{ + ((void(__cdecl *)())0x4C8780)(); +} + +void CVehicleModelInfo::ShutdownEnvironmentMaps() +{ + ((void(__cdecl *)())0x4C87D0)(); +} + +RpMaterial* CVehicleModelInfo::GetMatFXEffectMaterialCB(RpMaterial* material, void* data) +{ + return ((RpMaterial* (__cdecl *)(RpMaterial*, void*))0x4C8810)(material, data); +} + +RpMaterial* CVehicleModelInfo::SetEnvironmentMapCB(RpMaterial* material, void* data) +{ + return ((RpMaterial* (__cdecl *)(RpMaterial*, void*))0x4C8840)(material, data); +} + +RpMaterial* CVehicleModelInfo::SetEnvMapCoeffCB(RpMaterial* material, void* data) +{ + return ((RpMaterial* (__cdecl *)(RpMaterial*, void*))0x4C88B0)(material, data); +} + +RpAtomic* CVehicleModelInfo::SetRenderPipelinesCB(RpAtomic* atomic, void* data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x4C88F4)(atomic, data); +} + +void CVehicleModelInfo::SetRenderPipelines() +{ + ((void(__thiscall *)(CVehicleModelInfo*))0x4C8900)(this); +} + +char* CVehicleModelInfo::GetCustomCarPlateText() +{ + return ((char*(__thiscall *)(CVehicleModelInfo*))0x4C8970)(this); +} + +void CVehicleModelInfo::SetCustomCarPlateText(char* text) +{ + ((void(__thiscall *)(CVehicleModelInfo*, char*))0x4C8980)(this, text); +} + +int CVehicleModelInfo::GetMaximumNumberOfPassengersFromNumberOfDoors(int modelId) +{ + return ((int(__cdecl *)(int))0x4C89B0)(modelId); +} + +void CVehicleModelInfo::ReduceMaterialsInVehicle() +{ + ((void(__thiscall *)(CVehicleModelInfo*))0x4C8BD0)(this); +} + +void CVehicleModelInfo::SetupLightFlags(CVehicle* vehicle) +{ + ((void(__thiscall *)(CVehicleModelInfo*, CVehicle*))0x4C8C90)(this, vehicle); +} + +RwFrame* CVehicleModelInfo::CollapseFramesCB(RwFrame* frame, void* data) +{ + return ((RwFrame* (__cdecl *)(RwFrame*, void*))0x4C8E30)(frame, data); +} + +void CVehicleModelInfo::PreprocessHierarchy() +{ + ((void(__thiscall *)(CVehicleModelInfo*))0x4C8E60)(this); +} + +RpAtomic* CVehicleModelInfo::SetEnvironmentMapAtomicCB(RpAtomic* atomic, void* data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x4C9410)(atomic, data); +} + +RpAtomic * CVehicleModelInfo::SetEnvMapCoeffAtomicCB(RpAtomic * atomic, void * data) +{ + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x4C9430)(atomic, data); +} + +void CVehicleModelInfo::SetCarCustomPlate() +{ + ((void(__thiscall *)(CVehicleModelInfo*))0x4C9450)(this); +} + +void CVehicleModelInfo::DisableEnvMap() +{ + ((void(__thiscall *)(CVehicleModelInfo*))0x4C97E0)(this); +} + +void CVehicleModelInfo::SetEnvMapCoeff(float coeff) +{ + ((void(__thiscall *)(CVehicleModelInfo*, float))0x4C9800)(this, coeff); +} + +int CVehicleModelInfo::GetNumDoors() +{ + return ((int(__thiscall *)(CVehicleModelInfo*))0x4C73C0)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CVehicleModelInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CVehicleModelInfo.h new file mode 100644 index 00000000..e9d07dec --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CVehicleModelInfo.h @@ -0,0 +1,280 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CClumpModelInfo.h" +#include "RenderWare.h" +#include "CVector.h" +#include "CQuaternion.h" +#include "RwObjectNameIdAssocation.h" +#include "CRGBA.h" +#include "CPool.h" + +enum VehicleUpgradePosn { + UPGRADE_BONNET, + UPGRADE_BONNET_LEFT, + UPGRADE_BONNET_RIGHT, + UPGRADE_BONNET_DAM, + UPGRADE_BONNET_LEFT_DAM, + UPGRADE_BONNET_RIGHT_DAM, + UPGRADE_SPOILER, + UPGRADE_SPOILER_DAM, + UPGRADE_WING_LEFT, + UPGRADE_WING_RIGHT, + UPGRADE_FRONTBULLBAR, + UPGRADE_BACKBULLBAR, + UPGRADE_LIGHTS, + UPGRADE_LIGHTS_DAM, + UPGRADE_ROOF, + UPGRADE_NITRO, +}; + +struct PLUGIN_API UpgradePosnDesc { + CVector m_vPosition; + CQuaternion m_qRotation; + int m_nParentComponentId; +}; + +VALIDATE_SIZE(UpgradePosnDesc, 0x20); + +class PLUGIN_API CVehicleModelInfo : public CClumpModelInfo { +public: + RpMaterial *m_pPlateMaterial; + char m_szPlateText[8]; + char field_30; + unsigned char m_nPlateType; + char m_szGameName[8]; +private: + char _pad3A[2]; +public: + unsigned int m_nVehicleType; + float m_fWheelSizeFront; + float m_fWheelSizeRear; + short m_nWheelModelIndex; + unsigned short m_nHandlingId; + unsigned char m_nNumDoors; + unsigned char m_nVehicleClass; // see eVehicleClass + unsigned char m_nFlags; + unsigned char m_nWheelUpgradeClass; + unsigned char m_nTimesUsed; + char field_51; + unsigned short m_nFrq; + union{ + unsigned int m_nCompRules; + struct{ + unsigned int nExtraA_comp1 : 4; + unsigned int nExtraA_comp2 : 4; + unsigned int nExtraA_comp3 : 4; + unsigned int nExtraA_rule : 4; + unsigned int nExtraB_comp1 : 4; + unsigned int nExtraB_comp2 : 4; + unsigned int nExtraB_comp3 : 4; + unsigned int nExtraB_rule : 4; + } m_nCompRulesBits; + }; + float m_fBikeSteerAngle; + + class CVehicleStructure { + public: + CVector m_avDummyPos[15]; + UpgradePosnDesc m_aUpgrades[18]; + RpAtomic *m_apExtras[6]; + unsigned char m_nNumExtras; + unsigned int m_nMaskComponentsDamagable; + static CPool *&m_pInfoPool; + } *m_pVehicleStruct; + + char field_60[464]; + RpMaterial *m_apDirtMaterials[32]; + unsigned char m_anPrimaryColors[8]; + unsigned char m_anSecondaryColors[8]; + unsigned char m_anTertiaryColors[8]; + unsigned char m_anQuaternaryColors[8]; + unsigned char m_nNumColorVariations; + unsigned char m_nLastColorVariation; + unsigned char m_nCurrentPrimaryColor; + unsigned char m_nCurrentSecondaryColor; + unsigned char m_nCurrentTertiaryColor; + unsigned char m_nCurrentQuaternaryColor; + short m_anUpgrades[18]; + short m_anRemapTxds[4]; +private: + char _pad302[2]; +public: + class CAnimBlock *m_pAnimBlock; + + static class CLinkedUpgradeList{ + public: + short m_anUpgrade1[30]; + short m_anUpgrade2[30]; + unsigned int m_nLinksCount; + // add upgrade with components upgrade1 and upgrade2 + void AddUpgradeLink(short upgrade1, short upgrade2); + // find linked upgrade for this upgrade. In this case upgrade param could be upgrade1 or + // upgrade2 + short FindOtherUpgrade(short upgrade); + } &ms_linkedUpgrades; + + // vehicle components description tables + // static RwObjectNameIdAssocation ms_vehicleDescs[12]; + static RwObjectNameIdAssocation *ms_vehicleDescs; + + // remap texture + static RwTexture *ms_pRemapTexture; + // vehiclelights128 texture + static RwTexture *ms_pLightsTexture; + // vehiclelightson128 texture + static RwTexture *ms_pLightsOnTexture; + + // color of currently rendered car + // static unsigned char ms_currentCol[4]; + static unsigned char *ms_currentCol; + + // number of wheel upgrades available + // tatic short ms_numWheelUpgrades[4]; + static short *ms_numWheelUpgrades; + + // wheels upgrades data + // static short ms_upgradeWheels[15][4]; + static short *ms_upgradeWheels; + + // lights states for currently rendered car + // static char *ms_lightsOn[4]; + static char *ms_lightsOn; + + // extras ids for next-spawned car + // static char ms_compsUsed[2]; + static char *ms_compsUsed; + static char *ms_compsToUse; + + // vehicle colours from carcols.dat + // static CRGBA ms_vehicleColourTable[128]; + static CRGBA *ms_vehicleColourTable; + + // destroying vehiclelights textures + static void ShutdownLightTexture(); + // find remap texture with name + static RwTexture *FindTextureCB(char const* name); + // start using special finding callback + static void UseCommonVehicleTexDicationary(); + // stop using special finding callback + static void StopUsingCommonVehicleTexDicationary(); + // set new parent frame for object. Data is actually RwFrame * + static RpAtomic *MoveObjectsCB(RwObject *object, void *data); + // this is used to disable _dam atomic and "enable" _ok atomic at vehicle model setup. Data is + // unused + static RpAtomic *HideDamagedAtomicCB(RpAtomic *atomic, void *data); + // hide all atomics with state data (data is actually unsigned char) + static RpAtomic *HideAllComponentsAtomicCB(RpAtomic *atomic, void *data); + // check if material has alpha. Boolean result is stored to data (data is actually bool *) + static RpMaterial *HasAlphaMaterialCB(RpMaterial *material, void *data); + // setup atomic renderer. Data is unused + static RpAtomic *SetAtomicRendererCB(RpAtomic *atomic, void *data); + // setup heli renderer. Data is unused + static RpAtomic *SetAtomicRendererCB_RealHeli(RpAtomic *atomic, void *data); + // setup plane renderer. Data is unused + static RpAtomic *SetAtomicRendererCB_Plane(RpAtomic *atomic, void *data); + // setup boat renderer. Data is unused + static RpAtomic *SetAtomicRendererCB_Boat(RpAtomic *atomic, void *data); + // setup heli renderer. Data is unused + static RpAtomic *SetAtomicRendererCB_Heli(RpAtomic *atomic, void *data); + // setup train renderer. Data is unused + static RpAtomic *SetAtomicRendererCB_Train(RpAtomic *atomic, void *data); + // setup model render callbacks + void SetAtomicRenderCallbacks(); + // setup objects flag. Data is actually flag (unsigned short) + static RwObject *SetAtomicFlagCB(RwObject *object, void *data); + // clear all atomic flag. Data is actually flag (unsigned short) + static RwObject *ClearAtomicFlagCB(RwObject *object, void *data); + // set component flags + void SetVehicleComponentFlags(RwFrame *component, unsigned int flags); + // get wheel position. Wheel is wheel id [0-3]. Local - get local offset (if false it will get + // world position) + void GetWheelPosn(int wheel, CVector &outVec, bool local); + // get component local offset. Component is a frame hierarchy id. Returns true if component present + bool GetOriginalCompPosition(CVector &outVec, int component); + // get vehicle extra with rules. Returns extra id. + int ChooseComponent(); + // get vehicle second extra with rules. Returns extra id. + int ChooseSecondComponent(); + // check if upgrade is available + bool IsUpgradeAvailable(VehicleUpgradePosn upgrade); + // change colors and settings of material according to vehicle color and lights states. Data + // contains pointer to restore entries + RpMaterial *SetEditableMaterialsCB(RpMaterial *material, void *data); + // execute SetEditableMaterialsCB(RpMaterial *, void *) for atomic materials and also remove + // vehicle window if needed. Data contains pointer to restore entries + RpAtomic *SetEditableMaterialsCB(RpAtomic *atomic, void *data); + // execute SetEditableMaterialsCB(RpAtomic *, void *) for atomics in clump. This one is called + // before vehicle rendering + void SetEditableMaterials(RpClump *clump); + // reset materials settings. This one is called after vehicle rendering + void ResetEditableMaterials(RpClump *clump); + // set current vehicle colour for model + void SetVehicleColour(unsigned char prim, unsigned char sec, unsigned char tert, + unsigned char quat); + // get color for car. variationShift determines how many color variations to skip. + // For example, 1 will simply give you next color variation. + void ChooseVehicleColour(unsigned char &prim, unsigned char &sec, unsigned char &tert, + unsigned char &quat, int variationShift); + // get num remaps in this model + int GetNumRemaps(); + // add remap to model. Txd is id of tex dictionary. + void AddRemap(int txd); + // adds wheel upgrade. This one is called from LoadVehicleUpgrades() + static void AddWheelUpgrade(int wheelSetNumber, int modelId); + // gets num upgrades for this set + static int GetNumWheelUpgrades(int wheelSetNumber); + // gets whell upgrade + static void GetWheelUpgrade(int wheelSetNumber, int wheelUpgradeNumber); + // do nothing + static void DeleteVehicleColourTextures(); + // loads 'white' texture + static void LoadEnvironmentMaps(); + // unloads 'white' texture + static void ShutdownEnvironmentMaps(); + // gets mat effect of this material. Data is actually int * + static RpMaterial *GetMatFXEffectMaterialCB(RpMaterial *material, void *data); + // sets mat effect for this meterial. Data is actually int + static RpMaterial *SetEnvironmentMapCB(RpMaterial *material, void *data); + // sets environment map intensity. Data is acually unsigned int + static RpMaterial *SetEnvMapCoeffCB(RpMaterial *material, void *data); + // do nothing + static RpAtomic *SetRenderPipelinesCB(RpAtomic *atomic, void *data); + // setups rendering pipelines for atomics in model (CCustomCarEnvMapPipeline::CustomPipeAtomicSetup) + void SetRenderPipelines(); + // gets car plate text + // return m_plateText[0] != '\0' ? m_plateText : NULL; + char *GetCustomCarPlateText(); + // sets plate text + void SetCustomCarPlateText(char *text); + // gets max number of passengers for model + static int GetMaximumNumberOfPassengersFromNumberOfDoors(int modelId); + // remove some unused materials in model? + void ReduceMaterialsInVehicle(); + // setup lights states for currenly rendered vehicle + void SetupLightFlags(class CVehicle *vehicle); + // move all objects from data (it is actually RwFrame *) to frame + static RwFrame *CollapseFramesCB(RwFrame *frame, void *data); + // setup vehicle model components + void PreprocessHierarchy(); + // setup environment map for atomic's materials. Data is actually int and it represents effect id + static RpAtomic *SetEnvironmentMapAtomicCB(RpAtomic *atomic, void *data); + // setup environment map intensity for atomic with data (unsigned int) + static RpAtomic *SetEnvMapCoeffAtomicCB(RpAtomic *atomic, void *data); + // setup custom plate + void SetCarCustomPlate(); + // disable environment map effect on model + void DisableEnvMap(); + // setup environment map intensity for model + void SetEnvMapCoeff(float coeff); + // get num doors in this model + int GetNumDoors(); +}; + +VALIDATE_SIZE(CVehicleModelInfo::CVehicleStructure, 0x314); +VALIDATE_SIZE(CVehicleModelInfo, 0x308); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CVisibilityPlugins.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CVisibilityPlugins.cpp new file mode 100644 index 00000000..b0e882b6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CVisibilityPlugins.cpp @@ -0,0 +1,393 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CVisibilityPlugins.h" + +int& CVisibilityPlugins::ms_atomicPluginOffset = *(int *)0x8D608C; + +void CVisibilityPlugins::AtomicConstructor(void* object) { + plugin::Call<0x732150, void*>(object); +} + +// Converted from cdecl void CVisibilityPlugins::AtomicCopyConstructor(void *object,void const*originalObject) 0x732170 +void CVisibilityPlugins::AtomicCopyConstructor(void* object, void const* originalObject) { + plugin::Call<0x732170, void*, void const*>(object, originalObject); +} + +// Converted from cdecl void* CVisibilityPlugins::AtomicDestructor(void *object) 0x7321A0 +void* CVisibilityPlugins::AtomicDestructor(void* object) { + return plugin::CallAndReturn(object); +} + +// Converted from cdecl int CVisibilityPlugins::CalculateFadingAtomicAlpha(CBaseModelInfo *pBaseModelInfo,CEntity *pEntity,float arg3) 0x732500 +int CVisibilityPlugins::CalculateFadingAtomicAlpha(CBaseModelInfo* pBaseModelInfo, CEntity* pEntity, float arg3) { + return plugin::CallAndReturn(pBaseModelInfo, pEntity, arg3); +} + +// Converted from cdecl void CVisibilityPlugins::ClearAtomicFlag(RpAtomic *pRpAtomic,int flag) 0x732310 +void CVisibilityPlugins::ClearAtomicFlag(RpAtomic* pRpAtomic, int flag) { + plugin::Call<0x732310, RpAtomic*, int>(pRpAtomic, flag); +} + +// Converted from cdecl void CVisibilityPlugins::ClearAtomicFlag(RpAtomic *pRpAtomic,ushort flag) 0x732330 +void CVisibilityPlugins::ClearAtomicFlag(RpAtomic* pRpAtomic, unsigned short flag) { + plugin::Call<0x732330, RpAtomic*, unsigned short>(pRpAtomic, flag); +} + +// Converted from cdecl void CVisibilityPlugins::ClearClumpForAllAtomicsFlag(RpClump *pRpClump,int flag) 0x732350 +void CVisibilityPlugins::ClearClumpForAllAtomicsFlag(RpClump* pRpClump, int flag) { + plugin::Call<0x732350, RpClump*, int>(pRpClump, flag); +} + +// Converted from cdecl void CVisibilityPlugins::ClumpConstructor(void *object) 0x732E10 +void CVisibilityPlugins::ClumpConstructor(void* object) { + plugin::Call<0x732E10, void*>(object); +} + +// Converted from cdecl void CVisibilityPlugins::ClumpCopyConstructor(void *object,void const*originalObject) 0x732200 +void CVisibilityPlugins::ClumpCopyConstructor(void* object, void const* originalObject) { + plugin::Call<0x732200, void*, void const*>(object, originalObject); +} + +// Converted from cdecl void* CVisibilityPlugins::ClumpDestructor(void *object) 0x732220 +void* CVisibilityPlugins::ClumpDestructor(void* object) { + return plugin::CallAndReturn(object); +} + +// Converted from cdecl int CVisibilityPlugins::DefaultVisibilityCB() 0x732A30 +int CVisibilityPlugins::DefaultVisibilityCB() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CVisibilityPlugins::FrameConstructor(void *object) 0x7321B0 +void CVisibilityPlugins::FrameConstructor(void* object) { + plugin::Call<0x7321B0, void*>(object); +} + +// Converted from cdecl void CVisibilityPlugins::FrameCopyConstructor(void *object,void const*originalObject) 0x7321D0 +void CVisibilityPlugins::FrameCopyConstructor(void* object, void const* originalObject) { + plugin::Call<0x7321D0, void*, void const*>(object, originalObject); +} + +// Converted from cdecl void* CVisibilityPlugins::FrameDestructor(void *,int,int) 0x7321F0 +void* CVisibilityPlugins::FrameDestructor(void* arg0, int arg1, int arg2) { + return plugin::CallAndReturn(arg0, arg1, arg2); +} + +// Converted from cdecl bool CVisibilityPlugins::FrustumSphereCB(RpClump *pRpClump) 0x732A40 +bool CVisibilityPlugins::FrustumSphereCB(RpClump* pRpClump) { + return plugin::CallAndReturn(pRpClump); +} + +// Converted from cdecl short CVisibilityPlugins::GetAtomicId(RpAtomic *pRpAtomic) 0x732370 +short CVisibilityPlugins::GetAtomicId(RpAtomic* pRpAtomic) { + return plugin::CallAndReturn(pRpAtomic); +} + +// Converted from cdecl CAtomicModelInfo* CVisibilityPlugins::GetAtomicModelInfo(RpAtomic *pRpAtomic) 0x732260 +CAtomicModelInfo* CVisibilityPlugins::GetAtomicModelInfo(RpAtomic* pRpAtomic) { + return plugin::CallAndReturn(pRpAtomic); +} + +// Converted from cdecl int CVisibilityPlugins::GetClumpAlpha(RpClump *pRpClump) 0x732B20 +int CVisibilityPlugins::GetClumpAlpha(RpClump* pRpClump) { + return plugin::CallAndReturn(pRpClump); +} + +// Converted from cdecl CClumpModelInfo* CVisibilityPlugins::GetClumpModelInfo(RpClump *pRpClump) 0x732AC0 +CClumpModelInfo* CVisibilityPlugins::GetClumpModelInfo(RpClump* pRpClump) { + return plugin::CallAndReturn(pRpClump); +} + +// Converted from cdecl float CVisibilityPlugins::GetDistanceSquaredFromCamera(RwFrame *pRwFrame) 0x732C80 +float CVisibilityPlugins::GetDistanceSquaredFromCamera(RwFrame* pRwFrame) { + return plugin::CallAndReturn(pRwFrame); +} + +// Converted from cdecl float CVisibilityPlugins::GetDistanceSquaredFromCamera(RwV3d *pRwV3d) 0x732CC0 +float CVisibilityPlugins::GetDistanceSquaredFromCamera(RwV3d* pRwV3d) { + return plugin::CallAndReturn(pRwV3d); +} + +// Converted from cdecl float CVisibilityPlugins::GetDotProductWithCameraVector(RwMatrixTag *atomicMat, RwMatrixTag *rootMat, unsigned int flags) 0x7326D0 +float CVisibilityPlugins::GetDotProductWithCameraVector(RwMatrixTag* atomicMat, RwMatrixTag* rootMat, unsigned int flags) { + return plugin::CallAndReturn(atomicMat, rootMat, flags); +} + +// Converted from cdecl int CVisibilityPlugins::GetFrameHierarchyId(RwFrame *pRwFrame) 0x732A20 +int CVisibilityPlugins::GetFrameHierarchyId(RwFrame* pRwFrame) { + return plugin::CallAndReturn(pRwFrame); +} + +// Converted from cdecl short CVisibilityPlugins::GetModelInfoIndex(RpAtomic *pRpAtomic) 0x732250 +short CVisibilityPlugins::GetModelInfoIndex(RpAtomic* pRpAtomic) { + return plugin::CallAndReturn(pRpAtomic); +} + +// Converted from cdecl short CVisibilityPlugins::GetUserValue(RpAtomic *pRpAtomic) 0x7323A0 +short CVisibilityPlugins::GetUserValue(RpAtomic* pRpAtomic) { + return plugin::CallAndReturn(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::InitAlphaAtomicList(void) 0x734530 +void CVisibilityPlugins::InitAlphaAtomicList() { + plugin::Call<0x734530>(); +} + +// Converted from cdecl void CVisibilityPlugins::InitAlphaEntityList(void) 0x734540 +void CVisibilityPlugins::InitAlphaEntityList() { + plugin::Call<0x734540>(); +} + +// Converted from cdecl void CVisibilityPlugins::Initialise(void) 0x733A20 +void CVisibilityPlugins::Initialise() { + plugin::Call<0x733A20>(); +} + +// Converted from cdecl bool CVisibilityPlugins::InsertAtomicIntoReallyDrawLastList(RpAtomic *pRpAtomic,float arg2) 0x733E10 +bool CVisibilityPlugins::InsertAtomicIntoReallyDrawLastList(RpAtomic* pRpAtomic, float arg2) { + return plugin::CallAndReturn(pRpAtomic, arg2); +} + +// Converted from cdecl bool CVisibilityPlugins::InsertEntityIntoReallyDrawLastList(CEntity *pEntity,float arg2) 0x733E50 +bool CVisibilityPlugins::InsertEntityIntoReallyDrawLastList(CEntity* pEntity, float arg2) { + return plugin::CallAndReturn(pEntity, arg2); +} + +// Converted from cdecl bool CVisibilityPlugins::InsertEntityIntoSortedList(CEntity * pEntity,float distance) 0x734570 +bool CVisibilityPlugins::InsertEntityIntoSortedList(CEntity* pEntity, float distance) { + return plugin::CallAndReturn(pEntity, distance); +} + +// Converted from cdecl bool CVisibilityPlugins::IsAtomicVisible(RpAtomic *pRpAtomic) 0x732990 +bool CVisibilityPlugins::IsAtomicVisible(RpAtomic* pRpAtomic) { + return plugin::CallAndReturn(pRpAtomic); +} + +// Converted from cdecl bool CVisibilityPlugins::IsClumpVisible(RpClump *pRpClump) 0x732AE0 +bool CVisibilityPlugins::IsClumpVisible(RpClump* pRpClump) { + return plugin::CallAndReturn(pRpClump); +} + +// Converted from cdecl bool CVisibilityPlugins::PluginAttach(void) 0x732E30 +bool CVisibilityPlugins::PluginAttach() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CVisibilityPlugins::RenderAlphaAtomic(RpAtomic *pRpAtomic, int dwAlpha) 0x732480 +void CVisibilityPlugins::RenderAlphaAtomic(RpAtomic* pRpAtomic, int dwAlpha) { + plugin::Call<0x732480, RpAtomic*, int>(pRpAtomic, dwAlpha); +} + +// Converted from cdecl void CVisibilityPlugins::RenderAlphaAtomics(void) 0x733E90 +void CVisibilityPlugins::RenderAlphaAtomics() { + plugin::Call<0x733E90>(); +} + +// Converted from cdecl void CVisibilityPlugins::RenderAtomicWithAlphaCB(RpAtomic *pRpAtomic,void *pData) 0x732660 +void CVisibilityPlugins::RenderAtomicWithAlphaCB(RpAtomic* pRpAtomic, void* pData) { + plugin::Call<0x732660, RpAtomic*, void*>(pRpAtomic, pData); +} + +// Converted from cdecl void CVisibilityPlugins::RenderBoatAlphaAtomics(void) 0x733EC0 +void CVisibilityPlugins::RenderBoatAlphaAtomics() { + plugin::Call<0x733EC0>(); +} + +// Converted from cdecl void CVisibilityPlugins::RenderEntity(void *entity,bool unused,float arg3) 0x732B40 +void CVisibilityPlugins::RenderEntity(void* entity, bool unused, float arg3) { + plugin::Call<0x732B40, void*, bool, float>(entity, unused, arg3); +} + +// Converted from cdecl void CVisibilityPlugins::RenderFadingAtomic(CBaseModelInfo *pBaseModelInfo,RpAtomic *pRpAtomic,int dwAlpha) 0x732610 +void CVisibilityPlugins::RenderFadingAtomic(CBaseModelInfo* pBaseModelInfo, RpAtomic* pRpAtomic, int dwAlpha) { + plugin::Call<0x732610, CBaseModelInfo*, RpAtomic*, int>(pBaseModelInfo, pRpAtomic, dwAlpha); +} + +// Converted from cdecl void CVisibilityPlugins::RenderFadingClump(CBaseModelInfo *pBaseModelInfo,RpClump *pRpClump,int dwAlpha) 0x732680 +void CVisibilityPlugins::RenderFadingClump(CBaseModelInfo* pBaseModelInfo, RpClump* pRpClump, int dwAlpha) { + plugin::Call<0x732680, CBaseModelInfo*, RpClump*, int>(pBaseModelInfo, pRpClump, dwAlpha); +} + +// Converted from cdecl void CVisibilityPlugins::RenderFadingClumpCB(RpAtomic *pRpAtomic) 0x733630 +void CVisibilityPlugins::RenderFadingClumpCB(RpAtomic* pRpAtomic) { + plugin::Call<0x733630, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderFadingEntities(void) 0x733F10 +void CVisibilityPlugins::RenderFadingEntities() { + plugin::Call<0x733F10>(); +} + +// Converted from cdecl void CVisibilityPlugins::RenderFadingUnderwaterEntities(void) 0x7337D0 +void CVisibilityPlugins::RenderFadingUnderwaterEntities() { + plugin::Call<0x7337D0>(); +} + +// Converted from cdecl void CVisibilityPlugins::RenderHeliRotorAlphaCB(RpAtomic *pRpAtomic) 0x7340B0 +void CVisibilityPlugins::RenderHeliRotorAlphaCB(RpAtomic* pRpAtomic) { + plugin::Call<0x7340B0, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderHeliTailRotorAlphaCB(RpAtomic *pRpAtomic) 0x734170 +void CVisibilityPlugins::RenderHeliTailRotorAlphaCB(RpAtomic* pRpAtomic) { + plugin::Call<0x734170, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderObjNormalAtomic(RpAtomic *pRpAtomic) 0x7323E0 +void CVisibilityPlugins::RenderObjNormalAtomic(RpAtomic* pRpAtomic) { + plugin::Call<0x7323E0, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderOrderedList(CLinkList &AlphaObjectInfoList) 0x7337A0 +void CVisibilityPlugins::RenderOrderedList(CLinkList& AlphaObjectInfoList) { + plugin::Call <0x7337A0, CLinkList&>(AlphaObjectInfoList); +} + +// Converted from cdecl void CVisibilityPlugins::RenderPedCB(RpAtomic *pRpAtomic) 0x7335B0 +void CVisibilityPlugins::RenderPedCB(RpAtomic* pRpAtomic) { + plugin::Call<0x7335B0, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderPlayerCB(RpAtomic *pRpAtomic) 0x732870 +void CVisibilityPlugins::RenderPlayerCB(RpAtomic* pRpAtomic) { + plugin::Call<0x732870, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderReallyDrawLastObjects(void) 0x733800 +void CVisibilityPlugins::RenderReallyDrawLastObjects() { + plugin::Call<0x733800>(); +} + +// Converted from cdecl void CVisibilityPlugins::RenderTrainHiDetailAlphaCB(RpAtomic *pRpAtomic) 0x734240 +void CVisibilityPlugins::RenderTrainHiDetailAlphaCB(RpAtomic* pRpAtomic) { + plugin::Call<0x734240, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderTrainHiDetailCB(RpAtomic *pRpAtomic) 0x733330 +void CVisibilityPlugins::RenderTrainHiDetailCB(RpAtomic* pRpAtomic) { + plugin::Call<0x733330, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderVehicleHiDetailAlphaCB(RpAtomic *pRpAtomic) 0x733F80 +void CVisibilityPlugins::RenderVehicleHiDetailAlphaCB(RpAtomic* pRpAtomic) { + plugin::Call<0x733F80, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderVehicleHiDetailAlphaCB_BigVehicle(RpAtomic *pRpAtomic) 0x734370 +void CVisibilityPlugins::RenderVehicleHiDetailAlphaCB_BigVehicle(RpAtomic* pRpAtomic) { + plugin::Call<0x734370, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderVehicleHiDetailAlphaCB_Boat(RpAtomic *pRpAtomic) 0x7344A0 +void CVisibilityPlugins::RenderVehicleHiDetailAlphaCB_Boat(RpAtomic* pRpAtomic) { + plugin::Call<0x7344A0, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderVehicleHiDetailCB(RpAtomic *pRpAtomic) 0x733240 +void CVisibilityPlugins::RenderVehicleHiDetailCB(RpAtomic* pRpAtomic) { + plugin::Call<0x733240, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderVehicleHiDetailCB_BigVehicle(RpAtomic *pRpAtomic) 0x733420 +void CVisibilityPlugins::RenderVehicleHiDetailCB_BigVehicle(RpAtomic* pRpAtomic) { + plugin::Call<0x733420, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderVehicleHiDetailCB_Boat(RpAtomic *pRpAtomic) 0x733550 +void CVisibilityPlugins::RenderVehicleHiDetailCB_Boat(RpAtomic* pRpAtomic) { + plugin::Call<0x733550, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderVehicleLoDetailCB_Boat(RpAtomic *pRpAtomic) 0x7334F0 +void CVisibilityPlugins::RenderVehicleLoDetailCB_Boat(RpAtomic* pRpAtomic) { + plugin::Call<0x7334F0, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderVehicleReallyLowDetailCB(RpAtomic *pRpAtomic) 0x7331E0 +void CVisibilityPlugins::RenderVehicleReallyLowDetailCB(RpAtomic* pRpAtomic) { + plugin::Call<0x7331E0, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderVehicleReallyLowDetailCB_BigVehicle(RpAtomic *pRpAtomic) 0x732820 +void CVisibilityPlugins::RenderVehicleReallyLowDetailCB_BigVehicle(RpAtomic* pRpAtomic) { + plugin::Call<0x732820, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderWeaponCB(RpAtomic *pRpAtomic) 0x733670 +void CVisibilityPlugins::RenderWeaponCB(RpAtomic* pRpAtomic) { + plugin::Call<0x733670, RpAtomic*>(pRpAtomic); +} + +// Converted from cdecl void CVisibilityPlugins::RenderWeaponPedsForPC(void) 0x732F30 +void CVisibilityPlugins::RenderWeaponPedsForPC() { + plugin::Call<0x732F30>(); +} + +// Converted from cdecl void CVisibilityPlugins::SetAtomicFlag(RpAtomic *pRpAtomic,int flag) 0x7322D0 +void CVisibilityPlugins::SetAtomicFlag(RpAtomic* pRpAtomic, int flag) { + plugin::Call<0x7322D0, RpAtomic*, int>(pRpAtomic, flag); +} + +// Converted from cdecl void CVisibilityPlugins::SetAtomicFlag(RpAtomic *pRpAtomic,ushort flag) 0x7322B0 +void CVisibilityPlugins::SetAtomicFlag(RpAtomic* pRpAtomic, unsigned short flag) { + plugin::Call<0x7322B0, RpAtomic*, unsigned short>(pRpAtomic, flag); +} + +// Converted from cdecl void CVisibilityPlugins::SetAtomicId(RpAtomic *pRpAtomic,int id) 0x732230 +void CVisibilityPlugins::SetAtomicId(RpAtomic* pRpAtomic, int id) { + plugin::Call<0x732230, RpAtomic*, int>(pRpAtomic, id); +} + +// Converted from cdecl void CVisibilityPlugins::SetAtomicRenderCallback(RpAtomic *pRpAtomic, RpAtomic * (*renderCB)(RpAtomic *)) 0x7328A0 +void CVisibilityPlugins::SetAtomicRenderCallback(RpAtomic *pRpAtomic, RpAtomic * (*renderCB)(RpAtomic *)) { + plugin::Call<0x7328A0,RpAtomic*, RpAtomic * (*)(RpAtomic *)>(pRpAtomic,renderCB); +} + +// Converted from cdecl void CVisibilityPlugins::SetClumpAlpha(RpClump *pRpClump,int dwAlpha) 0x732B00 +void CVisibilityPlugins::SetClumpAlpha(RpClump* pRpClump, int dwAlpha) { + plugin::Call<0x732B00, RpClump*, int>(pRpClump, dwAlpha); +} + +// Converted from cdecl void CVisibilityPlugins::SetClumpModelInfo(RpClump *pRpClump,CClumpModelInfo *pClumpModelInfo) 0x733750 +void CVisibilityPlugins::SetClumpModelInfo(RpClump* pRpClump, CClumpModelInfo* pClumpModelInfo) { + plugin::Call<0x733750, RpClump*, CClumpModelInfo*>(pRpClump, pClumpModelInfo); +} + +// Converted from cdecl void CVisibilityPlugins::SetFrameHierarchyId(RwFrame *pRwFrame,int id) 0x732A00 +void CVisibilityPlugins::SetFrameHierarchyId(RwFrame* pRwFrame, int id) { + plugin::Call<0x732A00, RwFrame*, int>(pRwFrame, id); +} + +// Converted from cdecl void CVisibilityPlugins::SetRenderWareCamera(RwCamera *pRwCamera) 0x7328C0 +void CVisibilityPlugins::SetRenderWareCamera(RwCamera* pRwCamera) { + plugin::Call<0x7328C0, RwCamera*>(pRwCamera); +} + +// Converted from cdecl void CVisibilityPlugins::SetUserValue(RpAtomic *pRpAtomic,ushort value) 0x732380 +void CVisibilityPlugins::SetUserValue(RpAtomic* pRpAtomic, unsigned short value) { + plugin::Call<0x732380, RpAtomic*, unsigned short>(pRpAtomic, value); +} + +// Converted from cdecl void CVisibilityPlugins::SetupVehicleVariables(RpClump *pRpClump) 0x733160 +void CVisibilityPlugins::SetupVehicleVariables(RpClump* pRpClump) { + plugin::Call<0x733160, RpClump*>(pRpClump); +} + +// Converted from cdecl void CVisibilityPlugins::Shutdown(void) 0x732EB0 +void CVisibilityPlugins::Shutdown() { + plugin::Call<0x732EB0>(); +} + +// Converted from cdecl bool CVisibilityPlugins::VehicleVisibilityCB(RpClump *pRpClump) 0x7336F0 +bool CVisibilityPlugins::VehicleVisibilityCB(RpClump* pRpClump) { + return plugin::CallAndReturn(pRpClump); +} + +// Converted from cdecl bool CVisibilityPlugins::VehicleVisibilityCB_BigVehicle(RpClump *pRpClump) 0x732AB0 +bool CVisibilityPlugins::VehicleVisibilityCB_BigVehicle(RpClump* pRpClump) { + return plugin::CallAndReturn(pRpClump); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CVisibilityPlugins.h b/third-party/plugin-sdk/plugin_sa/game_sa/CVisibilityPlugins.h new file mode 100644 index 00000000..f0fb1bd9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CVisibilityPlugins.h @@ -0,0 +1,115 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CEntity.h" +#include "CClumpModelInfo.h" +#include "CAtomicModelInfo.h" +#include "CLinkList.h" + + +struct tAtomicVisibilityPlugin +{ +public: + short m_wModelId; + unsigned short m_wFlags; +}; + +class PLUGIN_API CVisibilityPlugins +{ +public: + static int& ms_atomicPluginOffset; + + struct AlphaObjectInfo + { + void *m_pAtomic; + void *m_pCallback; + float m_fAlpha; + }; + + static void AtomicConstructor(void* object); + static void AtomicCopyConstructor(void* object, void const* originalObject); + static void* AtomicDestructor(void* object); + static int CalculateFadingAtomicAlpha(CBaseModelInfo* pBaseModelInfo, CEntity* pEntity, float arg3); + static void ClearAtomicFlag(RpAtomic* pRpAtomic, int flag); + static void ClearAtomicFlag(RpAtomic* pRpAtomic, unsigned short flag); + static void ClearClumpForAllAtomicsFlag(RpClump* pRpClump, int flag); + static void ClumpConstructor(void* object); + static void ClumpCopyConstructor(void* object, void const* originalObject); + static void* ClumpDestructor(void* object); + static int DefaultVisibilityCB(); // return 1; + static void FrameConstructor(void* object); + static void FrameCopyConstructor(void* object, void const* originalObject); + static void* FrameDestructor(void* arg0, int arg1, int arg2); + static bool FrustumSphereCB(RpClump* pRpClump); + static short GetAtomicId(RpAtomic* pRpAtomic); + static CAtomicModelInfo* GetAtomicModelInfo(RpAtomic* pRpAtomic); + static int GetClumpAlpha(RpClump* pRpClump); + static CClumpModelInfo* GetClumpModelInfo(RpClump* pRpClump); + static float GetDistanceSquaredFromCamera(RwFrame* pRwFrame); + static float GetDistanceSquaredFromCamera(RwV3d* pRwV3d); + static float GetDotProductWithCameraVector(RwMatrixTag* atomicMat, RwMatrixTag* rootMat, unsigned int flags); + static int GetFrameHierarchyId(RwFrame* pRwFrame); + static short GetModelInfoIndex(RpAtomic* pRpAtomic); + static short GetUserValue(RpAtomic* pRpAtomic); + static void InitAlphaAtomicList(); + static void InitAlphaEntityList(); + static void Initialise(); + static bool InsertAtomicIntoReallyDrawLastList(RpAtomic* pRpAtomic, float arg2); + static bool InsertEntityIntoReallyDrawLastList(CEntity* pEntity, float arg2); + static bool InsertEntityIntoSortedList(CEntity* pEntity, float distance); + static bool IsAtomicVisible(RpAtomic* pRpAtomic); + static bool IsClumpVisible(RpClump* pRpClump); + static bool PluginAttach(); + static void RenderAlphaAtomic(RpAtomic* pRpAtomic, int dwAlpha); + static void RenderAlphaAtomics(); + static void RenderAtomicWithAlphaCB(RpAtomic* pRpAtomic, void* pData); + static void RenderBoatAlphaAtomics(); + static void RenderEntity(void* entity, bool unused, float arg3); + static void RenderFadingAtomic(CBaseModelInfo* pBaseModelInfo, RpAtomic* pRpAtomic, int dwAlpha); + static void RenderFadingClump(CBaseModelInfo* pBaseModelInfo, RpClump* pRpClump, int dwAlpha); + static void RenderFadingClumpCB(RpAtomic* pRpAtomic); + static void RenderFadingEntities(); + static void RenderFadingUnderwaterEntities(); + static void RenderHeliRotorAlphaCB(RpAtomic* pRpAtomic); + static void RenderHeliTailRotorAlphaCB(RpAtomic* pRpAtomic); + static void RenderObjNormalAtomic(RpAtomic* pRpAtomic); + static void RenderOrderedList(CLinkList& AlphaObjectInfoList); + static void RenderPedCB(RpAtomic* pRpAtomic); + static void RenderPlayerCB(RpAtomic* pRpAtomic); + static void RenderReallyDrawLastObjects(); + static void RenderTrainHiDetailAlphaCB(RpAtomic* pRpAtomic); + static void RenderTrainHiDetailCB(RpAtomic* pRpAtomic); + static void RenderVehicleHiDetailAlphaCB(RpAtomic* pRpAtomic); + static void RenderVehicleHiDetailAlphaCB_BigVehicle(RpAtomic* pRpAtomic); + static void RenderVehicleHiDetailAlphaCB_Boat(RpAtomic* pRpAtomic); + static void RenderVehicleHiDetailCB(RpAtomic* pRpAtomic); + static void RenderVehicleHiDetailCB_BigVehicle(RpAtomic* pRpAtomic); + static void RenderVehicleHiDetailCB_Boat(RpAtomic* pRpAtomic); + static void RenderVehicleLoDetailCB_Boat(RpAtomic* pRpAtomic); + static void RenderVehicleReallyLowDetailCB(RpAtomic* pRpAtomic); + static void RenderVehicleReallyLowDetailCB_BigVehicle(RpAtomic* pRpAtomic); + static void RenderWeaponCB(RpAtomic* pRpAtomic); + static void RenderWeaponPedsForPC(); + static void SetAtomicFlag(RpAtomic* pRpAtomic, int flag); + static void SetAtomicFlag(RpAtomic* pRpAtomic, unsigned short flag); + static void SetAtomicId(RpAtomic* pRpAtomic, int id); + static void SetAtomicRenderCallback(RpAtomic *pRpAtomic, RpAtomic * (*renderCB)(RpAtomic *)); + static void SetClumpAlpha(RpClump* pRpClump, int dwAlpha); + static void SetClumpModelInfo(RpClump* pRpClump, CClumpModelInfo* pClumpModelInfo); + static void SetFrameHierarchyId(RwFrame* pRwFrame, int id); + static void SetRenderWareCamera(RwCamera* pRwCamera); + static void SetUserValue(RpAtomic* pRpAtomic, unsigned short value); + static void SetupVehicleVariables(RpClump* pRpClump); + static void Shutdown(); + static bool VehicleVisibilityCB(RpClump* pRpClump); + static bool VehicleVisibilityCB_BigVehicle(RpClump* pRpClump); +}; + +#define RpAtomicGetVisibilityPlugin(atomic) ((tAtomicVisibilityPlugin *)((unsigned int)atomic + CVisibilityPlugins::ms_atomicPluginOffset)) \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWanted.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CWanted.cpp new file mode 100644 index 00000000..3696c2df --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWanted.cpp @@ -0,0 +1,176 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CWanted.h" + +unsigned int &CWanted::MaximumWantedLevel = *(unsigned int *)0x8CDEE4; +unsigned int &CWanted::nMaximumWantedLevel = *(unsigned int *)0x8CDEE8; +bool &CWanted::bUseNewsHeliInAdditionToPolice = *(bool *)0xB7CB8C; + +// Converted from cdecl void CWanted::InitialiseStaticVariables(void) 0x561C70 +void CWanted::InitialiseStaticVariables() { + plugin::Call<0x561C70>(); +} + +// Converted from thiscall void CWanted::UpdateWantedLevel(void) 0x561C90 +void CWanted::UpdateWantedLevel() { + plugin::CallMethod<0x561C90, CWanted *>(this); +} + +// Converted from cdecl void CWanted::SetMaximumWantedLevel(int level) 0x561E70 +void CWanted::SetMaximumWantedLevel(int level) { + plugin::Call<0x561E70, int>(level); +} + +// Converted from thiscall bool CWanted::AreMiamiViceRequired(void) 0x561F30 +bool CWanted::AreMiamiViceRequired() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CWanted::AreSwatRequired(void) 0x561F40 +bool CWanted::AreSwatRequired() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CWanted::AreFbiRequired(void) 0x561F60 +bool CWanted::AreFbiRequired() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CWanted::AreArmyRequired(void) 0x561F80 +bool CWanted::AreArmyRequired() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall int CWanted::NumOfHelisRequired(void) 0x561FA0 +int CWanted::NumOfHelisRequired() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from cdecl void CWanted::ResetPolicePursuit(void) 0x561FD0 +void CWanted::ResetPolicePursuit() { + plugin::Call<0x561FD0>(); +} + +// Converted from thiscall void CWanted::ClearQdCrimes(void) 0x561FE0 +void CWanted::ClearQdCrimes() { + plugin::CallMethod<0x561FE0, CWanted *>(this); +} + +// Converted from thiscall bool CWanted::AddCrimeToQ(eCrimeType crimeType,int crimeId,CVector const&posn,bool bAlreadyReported,bool bPoliceDontReallyCare) 0x562000 +bool CWanted::AddCrimeToQ(eCrimeType crimeType, int crimeId, CVector const& posn, bool bAlreadyReported, bool bPoliceDontReallyCare) { + return plugin::CallMethodAndReturn(this, crimeType, crimeId, posn, bAlreadyReported, bPoliceDontReallyCare); +} + +// Converted from thiscall void CWanted::ReportCrimeNow(eCrimeType crimeType,CVector const&posn,bool bPoliceDontReallyCare) 0x562120 +void CWanted::ReportCrimeNow(eCrimeType crimeType, CVector const& posn, bool bPoliceDontReallyCare) { + plugin::CallMethod<0x562120, CWanted *, eCrimeType, CVector const&, bool>(this, crimeType, posn, bPoliceDontReallyCare); +} + +// Converted from cdecl void CWanted::RemovePursuitCop(CCopPed *cop,CCopPed **copsArray,uchar &copsCounter) 0x562300 +void CWanted::RemovePursuitCop(CCopPed* cop, CCopPed** copsArray, unsigned char& copsCounter) { + plugin::Call<0x562300, CCopPed*, CCopPed**, unsigned char&>(cop, copsArray, copsCounter); +} + +// Converted from thiscall bool CWanted::IsInPursuit(CCopPed *cop) 0x562330 +bool CWanted::IsInPursuit(CCopPed* cop) { + return plugin::CallMethodAndReturn(this, cop); +} + +// Converted from cdecl void CWanted::UpdateEachFrame(void) 0x562360 +void CWanted::UpdateEachFrame() { + plugin::Call<0x562360>(); +} + +// Converted from thiscall void CWanted::Initialise(void) 0x562390 +void CWanted::Initialise() { + plugin::CallMethod<0x562390, CWanted *>(this); +} + +// Converted from thiscall void CWanted::Reset(void) 0x562400 +void CWanted::Reset() { + plugin::CallMethod<0x562400, CWanted *>(this); +} + +// Converted from thiscall void CWanted::RegisterCrime(eCrimeType crimeType,CVector const&posn,uint crimeId,bool bPoliceDontReallyCare) 0x562410 +void CWanted::RegisterCrime(eCrimeType crimeType, CVector const& posn, unsigned int crimeId, bool bPoliceDontReallyCare) { + plugin::CallMethod<0x562410, CWanted *, eCrimeType, CVector const&, unsigned int, bool>(this, crimeType, posn, crimeId, bPoliceDontReallyCare); +} + +// Converted from thiscall void CWanted::RegisterCrime_Immediately(eCrimeType crimeType,CVector const&posn,uint crimeId,bool bPoliceDontReallyCare) 0x562430 +void CWanted::RegisterCrime_Immediately(eCrimeType crimeType, CVector const& posn, unsigned int crimeId, bool bPoliceDontReallyCare) { + plugin::CallMethod<0x562430, CWanted *, eCrimeType, CVector const&, unsigned int, bool>(this, crimeType, posn, crimeId, bPoliceDontReallyCare); +} + +// Converted from thiscall void CWanted::SetWantedLevel(int level) 0x562470 +void CWanted::SetWantedLevel(int level) { + plugin::CallMethod<0x562470, CWanted *, int>(this, level); +} + +// Converted from thiscall void CWanted::CheatWantedLevel(int level) 0x562540 +void CWanted::CheatWantedLevel(int level) { + plugin::CallMethod<0x562540, CWanted *, int>(this, level); +} + +// Converted from thiscall void CWanted::SetWantedLevelNoDrop(int level) 0x562570 +void CWanted::SetWantedLevelNoDrop(int level) { + plugin::CallMethod<0x562570, CWanted *, int>(this, level); +} + +// Converted from thiscall void CWanted::ClearWantedLevelAndGoOnParole(void) 0x5625A0 +void CWanted::ClearWantedLevelAndGoOnParole() { + plugin::CallMethod<0x5625A0, CWanted *>(this); +} + +// Converted from cdecl int CWanted::WorkOutPolicePresence(CVector posn,float radius) 0x5625F0 +int CWanted::WorkOutPolicePresence(CVector posn, float radius) { + return plugin::CallAndReturn(posn, radius); +} + +// Converted from thiscall void CWanted::UpdateCrimesQ(void) 0x562760 +void CWanted::UpdateCrimesQ() { + plugin::CallMethod<0x562760, CWanted *>(this); +} + +// Converted from thiscall bool CWanted::IsClosestCop(CPed *ped,int numCopsToCheck) 0x5627D0 +bool CWanted::IsClosestCop(CPed* ped, int numCopsToCheck) { + return plugin::CallMethodAndReturn(this, ped, numCopsToCheck); +} + +// Converted from cdecl CCopPed* CWanted::ComputePursuitCopToDisplace(CCopPed *cop,CCopPed **copsArray) 0x562B00 +CCopPed* CWanted::ComputePursuitCopToDisplace(CCopPed* cop, CCopPed** copsArray) { + return plugin::CallAndReturn(cop, copsArray); +} + +// Converted from thiscall void CWanted::RemovePursuitCop(CCopPed *cop) 0x562C10 +void CWanted::RemovePursuitCop(CCopPed* cop) { + plugin::CallMethod<0x562C10, CWanted *, CCopPed*>(this, cop); +} + +// Converted from thiscall void CWanted::RemoveExcessPursuitCops(void) 0x562C40 +void CWanted::RemoveExcessPursuitCops() { + plugin::CallMethod<0x562C40, CWanted *>(this); +} + +// Converted from thiscall void CWanted::Update(void) 0x562C90 +void CWanted::Update() { + plugin::CallMethod<0x562C90, CWanted *>(this); +} + +// Converted from cdecl bool CWanted::CanCopJoinPursuit(CCopPed *cop,uchar maxCopsCount,CCopPed **copsArray,uchar &copsCounter) 0x562F60 +bool CWanted::CanCopJoinPursuit(CCopPed* cop, unsigned char maxCopsCount, CCopPed** copsArray, unsigned char& copsCounter) { + return plugin::CallAndReturn(cop, maxCopsCount, copsArray, copsCounter); +} + +// Converted from thiscall bool CWanted::CanCopJoinPursuit(CCopPed *cop) 0x562FB0 +bool CWanted::CanCopJoinPursuit(CCopPed* cop) { + return plugin::CallMethodAndReturn(this, cop); +} + +// Converted from thiscall bool CWanted::SetPursuitCop(CCopPed *cop) 0x563060 +bool CWanted::SetPursuitCop(CCopPed* cop) { + return plugin::CallMethodAndReturn(this, cop); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWanted.h b/third-party/plugin-sdk/plugin_sa/game_sa/CWanted.h new file mode 100644 index 00000000..fa1d421a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWanted.h @@ -0,0 +1,92 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CCrimeBeingQd.h" +#include "CAEPoliceScannerAudioEntity.h" +#include "eCrimeType.h" + +class CPed; +class CCopPed; + +class PLUGIN_API CWanted { +public: + unsigned int m_nChaosLevel; + unsigned int m_nChaosLevelBeforeParole; + unsigned int m_nLastTimeWantedDecreased; + unsigned int m_nLastTimeWantedLevelChanged; + unsigned int m_nTimeOfParole; + float m_fMultiplier; // New crimes have their wanted level contribution multiplied by this + unsigned char m_nCopsInPursuit; + unsigned char m_nMaxCopsInPursuit; + unsigned char m_nMaxCopCarsInPursuit; + unsigned char m_nCopsBeatingSuspect; + unsigned short m_nChanceOnRoadBlock; + unsigned char m_bPoliceBackOff : 1; // If this is set the police will leave player alone (for cut-scenes) + unsigned char m_bPoliceBackOffGarage : 1; // If this is set the police will leave player alone (for garages) + unsigned char m_bEverybodyBackOff : 1; // If this is set then everybody (including police) will leave the player alone (for cut-scenes) + unsigned char m_bSwatRequired : 1; // These three booleans are needed so that the + unsigned char m_bFbiRequired : 1; // streaming required vehicle stuff can be overrided + unsigned char m_bArmyRequired : 1; +private: + char _pad1F; +public: + unsigned int m_nCurrentChaseTime; + unsigned int m_nCurrentChaseTimeCounter; + unsigned int m_nTimeCounting; + unsigned int m_nWantedLevel; + unsigned int m_nWantedLevelBeforeParole; + CCrimeBeingQd m_CrimesBeingQd[16]; + CCopPed *m_pCopsInPursuit[10]; + CAEPoliceScannerAudioEntity m_PoliceScannerAudio; + bool m_bLeavePlayerAlone; +private: + char _pad299[3]; +public: + + static unsigned int &MaximumWantedLevel; // default 6 + static unsigned int &nMaximumWantedLevel; // default 9200 + static bool &bUseNewsHeliInAdditionToPolice; + + static void InitialiseStaticVariables(); + void UpdateWantedLevel(); + static void SetMaximumWantedLevel(int level); + bool AreMiamiViceRequired(); + bool AreSwatRequired(); + bool AreFbiRequired(); + bool AreArmyRequired(); + int NumOfHelisRequired(); + // dummy function + static void ResetPolicePursuit(); + void ClearQdCrimes(); + bool AddCrimeToQ(eCrimeType crimeType, int crimeId, CVector const& posn, bool bAlreadyReported, bool bPoliceDontReallyCare); + void ReportCrimeNow(eCrimeType crimeType, CVector const& posn, bool bPoliceDontReallyCare); + static void RemovePursuitCop(CCopPed* cop, CCopPed** copsArray, unsigned char& copsCounter); + bool IsInPursuit(CCopPed* cop); + static void UpdateEachFrame(); + void Initialise(); + void Reset(); + void RegisterCrime(eCrimeType crimeType, CVector const& posn, unsigned int crimeId, bool bPoliceDontReallyCare); + void RegisterCrime_Immediately(eCrimeType crimeType, CVector const& posn, unsigned int crimeId, bool bPoliceDontReallyCare); + void SetWantedLevel(int level); + void CheatWantedLevel(int level); + void SetWantedLevelNoDrop(int level); + void ClearWantedLevelAndGoOnParole(); + static int WorkOutPolicePresence(CVector posn, float radius); + void UpdateCrimesQ(); + bool IsClosestCop(CPed* ped, int numCopsToCheck); + static CCopPed* ComputePursuitCopToDisplace(CCopPed* cop, CCopPed** copsArray); + void RemovePursuitCop(CCopPed* cop); + void RemoveExcessPursuitCops(); + void Update(); + static bool CanCopJoinPursuit(CCopPed* cop, unsigned char maxCopsCount, CCopPed** copsArray, unsigned char& copsCounter); + bool CanCopJoinPursuit(CCopPed* cop); + bool SetPursuitCop(CCopPed* cop); +}; + +VALIDATE_SIZE(CWanted, 0x29C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWaterLevel.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CWaterLevel.cpp new file mode 100644 index 00000000..05e8cdaf --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWaterLevel.cpp @@ -0,0 +1,16 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CWaterLevel.h" + +int& CWaterLevel::m_nNumOfWaterTriangles = *(int*)0xC22884; +int& CWaterLevel::m_nNumOfWaterQuads = *(int*)0xC22888; +int& CWaterLevel::m_nNumOfWaterVertices = *(int*)0xC2288C; +int& CWaterLevel::m_nWaterConfiguration = *(int*)0xC228A0; +int& CWaterLevel::m_nNumWaterZonePolys = *(int*)0xC215F0; +std::array& CWaterLevel::m_aVertices = *(std::array*)0xC22910; +int& DETAILEDWATERDIST = *(int*)0x8D37D0; // Default: 48 + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWaterLevel.h b/third-party/plugin-sdk/plugin_sa/game_sa/CWaterLevel.h new file mode 100644 index 00000000..e833aba6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWaterLevel.h @@ -0,0 +1,41 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "RenderWare.h" + +struct CRenPar { + float z; + float bigWaves; + float smallWaves; + char flowX; + char flowY; +}; + +struct CWaterVertex { + short x; + short y; + CRenPar rp; +}; + +class CWaterLevel { +public: + static int& m_nNumOfWaterTriangles; + static int& m_nNumOfWaterQuads; + static int& m_nNumOfWaterVertices; + static int& m_nWaterConfiguration; + static int& m_nNumWaterZonePolys; + static std::array& m_aVertices; + static int& DETAILEDWATERDIST; + +public: + +}; + +extern RwTexture* TexWaterClear256; +extern RwTexture* TexSeabd32; +extern RwTexture* TexWaterWake; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWeapon.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CWeapon.cpp new file mode 100644 index 00000000..9ddbbf7a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWeapon.cpp @@ -0,0 +1,225 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CWeapon.h" + +float &CWeapon::ms_fExtinguisherAimAngle = *(float*)0x8D610C; +bool &CWeapon::bPhotographHasBeenTaken = *(bool*)0xC8A7C0; +bool &CWeapon::ms_bTakePhoto = *(bool*)0xC8A7C1; +CColModel &CWeapon::ms_PelletTestCol = *(CColModel*)0xC8A7DC; +float &fPlayerAimScale = *(float *)0x8D6110; +float &fPlayerAimScaleDist = *(float *)0x8D6114; +float &fPlayerAimRotRate = *(float *)0x8D6118; +float &SHOTGUN_SPREAD_RATE = *(float *)0x8D611C; +unsigned int &SHOTGUN_NUM_PELLETS = *(unsigned int *)0x8D6120; +unsigned int &SPAS_NUM_PELLETS = *(unsigned int *)0x8D6124; +float &PELLET_COL_SCALE_RATIO_MULT = *(float *)0x8D6128; +float *fReloadAnimSampleFraction = (float *)0x8D612C; + +// Converted from cdecl void CWeapon::InitialiseWeapons(void) 0x73A300 +void CWeapon::InitialiseWeapons() { + plugin::Call<0x73A300>(); +} + +// Converted from cdecl void CWeapon::ShutdownWeapons(void) 0x73A330 +void CWeapon::ShutdownWeapons() { + plugin::Call<0x73A330>(); +} + +// Converted from cdecl void CWeapon::UpdateWeapons(void) 0x73A360 +void CWeapon::UpdateWeapons() { + plugin::Call<0x73A360>(); +} + +// Converted from thiscall void CWeapon::Shutdown(void) 0x73A380 +void CWeapon::Shutdown() { + plugin::CallMethod<0x73A380, CWeapon *>(this); +} + +// Converted from thiscall void CWeapon::AddGunshell(CEntity *creator,CVector const&position,CVector2D const&direction,float size) 0x73A3E0 +void CWeapon::AddGunshell(CEntity* creator, CVector const& position, CVector2D const& direction, float size) { + plugin::CallMethod<0x73A3E0, CWeapon *, CEntity*, CVector const&, CVector2D const&, float>(this, creator, position, direction, size); +} + +// Converted from cdecl void CWeapon::GenerateDamageEvent(CPed *victim,CEntity *creator,eWeaponType weaponType,int damageFactor,ePedPieceTypes pedPiece,int direction) 0x73A530 +void CWeapon::GenerateDamageEvent(CPed* victim, CEntity* creator, eWeaponType weaponType, int damageFactor, ePedPieceTypes pedPiece, int direction) { + plugin::Call<0x73A530, CPed*, CEntity*, eWeaponType, int, ePedPieceTypes, int>(victim, creator, weaponType, damageFactor, pedPiece, direction); +} + +// Converted from thiscall bool CWeapon::LaserScopeDot(CVector *outCoord,float *outSize) 0x73A8D0 +bool CWeapon::LaserScopeDot(CVector* outCoord, float* outSize) { + return plugin::CallMethodAndReturn(this, outCoord, outSize); +} + +// Converted from thiscall bool CWeapon::FireSniper(CPed *creator, CEntity *victim, CVector *target) 0x73AAC0 +bool CWeapon::FireSniper(CPed* creator, CEntity* victim, CVector* target) { + return plugin::CallMethodAndReturn(this, creator, victim, target); +} + +// Converted from thiscall void CWeapon::Reload(CPed *owner) 0x73AEB0 +void CWeapon::Reload(CPed* owner) { + plugin::CallMethod<0x73AEB0, CWeapon *, CPed*>(this, owner); +} + +// Converted from cdecl void FireOneInstantHitRound(CVector *startPoint,CVector *endPoint,int intensity) 0x73AF00 +void FireOneInstantHitRound(CVector* startPoint, CVector* endPoint, int intensity) { + plugin::Call<0x73AF00, CVector*, CVector*, int>(startPoint, endPoint, intensity); +} + +// Converted from thiscall bool CWeapon::IsTypeMelee(void) 0x73B1C0 +bool CWeapon::IsTypeMelee() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CWeapon::IsType2Handed(void) 0x73B1E0 +bool CWeapon::IsType2Handed() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall bool CWeapon::IsTypeProjectile(void) 0x73B210 +bool CWeapon::IsTypeProjectile() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from cdecl bool CWeapon::CanBeUsedFor2Player(eWeaponType weaponType) 0x73B240 +bool CWeapon::CanBeUsedFor2Player(eWeaponType weaponType) { + return plugin::CallAndReturn(weaponType); +} + +// Converted from thiscall bool CWeapon::HasWeaponAmmoToBeUsed(void) 0x73B2A0 +bool CWeapon::HasWeaponAmmoToBeUsed() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from cdecl bool CWeapon::ProcessLineOfSight(CVector const&startPoint,CVector const&endPoint,CColPoint &outColPoint,CEntity *&outEntity,eWeaponType weaponType,CEntity *,bool buildings,bool vehicles,bool peds,bool objects,bool dummies,bool,bool doIgnoreCameraCheck) 0x73B300 +bool CWeapon::ProcessLineOfSight(CVector const& startPoint, CVector const& endPoint, CColPoint& outColPoint, CEntity*& outEntity, eWeaponType weaponType, CEntity* arg5, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool arg11, bool doIgnoreCameraCheck) { + return plugin::CallAndReturn(startPoint, endPoint, outColPoint, outEntity, weaponType, arg5, buildings, vehicles, peds, objects, dummies, arg11, doIgnoreCameraCheck); +} + +// Converted from thiscall void CWeapon::StopWeaponEffect(void) 0x73B360 +void CWeapon::StopWeaponEffect() { + plugin::CallMethod<0x73B360, CWeapon *>(this); +} + +// Converted from cdecl float CWeapon::TargetWeaponRangeMultiplier(CEntity *victim,CEntity *weaponOwner) 0x73B380 +float CWeapon::TargetWeaponRangeMultiplier(CEntity* victim, CEntity* weaponOwner) { + return plugin::CallAndReturn(victim, weaponOwner); +} + +// Converted from thiscall void CWeapon::CWeapon(eWeaponType weaponType,int ammo) 0x73B430 +CWeapon::CWeapon(eWeaponType weaponType, int ammo) { + plugin::CallMethod<0x73B430, CWeapon *, eWeaponType, int>(this, weaponType, ammo); +} + +// Converted from thiscall void CWeapon::Initialise(eWeaponType weaponType,int ammo,CPed *owner) 0x73B4A0 +void CWeapon::Initialise(eWeaponType weaponType, int ammo, CPed* owner) { + plugin::CallMethod<0x73B4A0, CWeapon *, eWeaponType, int, CPed*>(this, weaponType, ammo, owner); +} + +// Converted from thiscall void CWeapon::DoBulletImpact(CEntity *owner,CEntity *victim,CVector *startPoint,CVector *endPoint,CColPoint *colPoint,int) 0x73B550 +void CWeapon::DoBulletImpact(CEntity* owner, CEntity* victim, CVector* startPoint, CVector* endPoint, CColPoint* colPoint, int arg5) { + plugin::CallMethod<0x73B550, CWeapon *, CEntity*, CEntity*, CVector*, CVector*, CColPoint*, int>(this, owner, victim, startPoint, endPoint, colPoint, arg5); +} + +// Converted from thiscall bool CWeapon::TakePhotograph(CEntity *owner, CVector *point) 0x73C1F0 +bool CWeapon::TakePhotograph(CEntity* owner, CVector* point) { + return plugin::CallMethodAndReturn(this, owner, point); +} + +// Converted from thiscall void CWeapon::SetUpPelletCol(int numPellets,CEntity *owner,CEntity *victim,CVector &point,CColPoint &colPoint,CMatrix &outMatrix) 0x73C710 +void CWeapon::SetUpPelletCol(int numPellets, CEntity* owner, CEntity* victim, CVector& point, CColPoint& colPoint, CMatrix& outMatrix) { + plugin::CallMethod<0x73C710, CWeapon *, int, CEntity*, CEntity*, CVector&, CColPoint&, CMatrix&>(this, numPellets, owner, victim, point, colPoint, outMatrix); +} + +// Converted from thiscall void CWeapon::FireInstantHitFromCar2(CVector startPoint,CVector endPoint,CVehicle *vehicle,CEntity *owner) 0x73CBA0 +void CWeapon::FireInstantHitFromCar2(CVector startPoint, CVector endPoint, CVehicle* vehicle, CEntity* owner) { + plugin::CallMethod<0x73CBA0, CWeapon *, CVector, CVector, CVehicle*, CEntity*>(this, startPoint, endPoint, vehicle, owner); +} + +// Converted from cdecl void CWeapon::DoDoomAiming(CEntity *owner,CVector *start,CVector *end) 0x73CDC0 +void CWeapon::DoDoomAiming(CEntity* owner, CVector* start, CVector* end) { + plugin::Call<0x73CDC0, CEntity*, CVector*, CVector*>(owner, start, end); +} + +// Converted from cdecl void CWeapon::DoTankDoomAiming(CEntity *vehicle,CEntity *owner,CVector *startPoint,CVector *endPoint) 0x73D1E0 +void CWeapon::DoTankDoomAiming(CEntity* vehicle, CEntity* owner, CVector* startPoint, CVector* endPoint) { + plugin::Call<0x73D1E0, CEntity*, CEntity*, CVector*, CVector*>(vehicle, owner, startPoint, endPoint); +} + +// Converted from cdecl void CWeapon::DoDriveByAutoAiming(CEntity *owner,CVehicle *vehicle,CVector *startPoint,CVector *endPoint,bool canAimVehicles) 0x73D720 +void CWeapon::DoDriveByAutoAiming(CEntity* owner, CVehicle* vehicle, CVector* startPoint, CVector* endPoint, bool canAimVehicles) { + plugin::Call<0x73D720, CEntity*, CVehicle*, CVector*, CVector*, bool>(owner, vehicle, startPoint, endPoint, canAimVehicles); +} + +// Converted from thiscall void CWeapon::Update(CPed *owner) 0x73DB40 +void CWeapon::Update(CPed* owner) { + plugin::CallMethod<0x73DB40, CWeapon *, CPed*>(this, owner); +} + +// Converted from thiscall bool CWeapon::CanBeUsedFor2Player(void) 0x73DEF0 +bool CWeapon::CanBeUsedFor2Player() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from cdecl void CWeapon::FindNearestTargetEntityWithScreenCoors(float screenX,float screenY,float range,CVector point,float *outX,float *outY) 0x73E240 +void CWeapon::FindNearestTargetEntityWithScreenCoors(float screenX, float screenY, float range, CVector point, float* outX, float* outY) { + plugin::Call<0x73E240, float, float, float, CVector, float*, float*>(screenX, screenY, range, point, outX, outY); +} + +// Converted from cdecl float CWeapon::EvaluateTargetForHeatSeekingMissile(CEntity *entity,CVector &posn,CVector &direction,float distanceMultiplier,bool fromVehicle,CEntity *lastEntity) 0x73E560 +float CWeapon::EvaluateTargetForHeatSeekingMissile(CEntity* entity, CVector& posn, CVector& direction, float distanceMultiplier, bool fromVehicle, CEntity* lastEntity) { + return plugin::CallAndReturn(entity, posn, direction, distanceMultiplier, fromVehicle, lastEntity); +} + +// Converted from thiscall void CWeapon::DoWeaponEffect(CVector origin,CVector target) 0x73E690 +void CWeapon::DoWeaponEffect(CVector origin, CVector target) { + plugin::CallMethod<0x73E690, CWeapon *, CVector, CVector>(this, origin, target); +} + +// Converted from thiscall bool CWeapon::FireAreaEffect(CEntity *firingEntity,CVector *origin, CEntity *targetEntity, CVector *target) 0x73E800 +bool CWeapon::FireAreaEffect(CEntity* firingEntity, CVector* origin, CEntity* targetEntity, CVector* target) { + return plugin::CallMethodAndReturn(this, firingEntity, origin, targetEntity, target); +} + +// Converted from thiscall bool CWeapon::FireInstantHitFromCar(CVehicle *vehicle,bool leftSide,bool rightSide) 0x73EC40 +bool CWeapon::FireInstantHitFromCar(CVehicle* vehicle, bool leftSide, bool rightSide) { + return plugin::CallMethodAndReturn(this, vehicle, leftSide, rightSide); +} + +// Converted from cdecl bool CWeapon::CheckForShootingVehicleOccupant(CEntity **pCarEntity,CColPoint *colPoint,eWeaponType weaponType,CVector const&origin,CVector const&target) 0x73F480 +bool CWeapon::CheckForShootingVehicleOccupant(CEntity** pCarEntity, CColPoint* colPoint, eWeaponType weaponType, CVector const& origin, CVector const& target) { + return plugin::CallAndReturn(pCarEntity, colPoint, weaponType, origin, target); +} + +// Converted from cdecl CEntity* CWeapon::PickTargetForHeatSeekingMissile(CVector origin,CVector direction,float distanceMultiplier,CEntity *ignoreEntity,bool fromVehicle,CEntity *lastEntity) 0x73F910 +CEntity* CWeapon::PickTargetForHeatSeekingMissile(CVector origin, CVector direction, float distanceMultiplier, CEntity* ignoreEntity, bool fromVehicle, CEntity* lastEntity) { + return plugin::CallAndReturn(origin, direction, distanceMultiplier, ignoreEntity, fromVehicle, lastEntity); +} + +// Converted from thiscall void CWeapon::FireFromCar(CVehicle *vehicle,bool leftSide,bool rightSide) 0x73FA20 +void CWeapon::FireFromCar(CVehicle* vehicle, bool leftSide, bool rightSide) { + plugin::CallMethod<0x73FA20, CWeapon *, CVehicle*, bool, bool>(this, vehicle, leftSide, rightSide); +} + +// Converted from thiscall bool CWeapon::FireInstantHit(CEntity *firingEntity,CVector *origin, CVector *muzzlePosn, CEntity *targetEntity, CVector *target, CVector *originForDriveBy, bool, bool muzzle) 0x73FB10 +bool CWeapon::FireInstantHit(CEntity* firingEntity, CVector* origin, CVector* muzzlePosn, CEntity* targetEntity, CVector* target, CVector* originForDriveBy, bool arg6, bool muzzle) { + return plugin::CallMethodAndReturn(this, firingEntity, origin, muzzlePosn, targetEntity, target, originForDriveBy, arg6, muzzle); +} + +// Converted from thiscall bool CWeapon::FireProjectile(CEntity *firingEntity,CVector *origin, CEntity *targetEntity, CVector *target,float force) 0x741360 +bool CWeapon::FireProjectile(CEntity* firingEntity, CVector* origin, CEntity* targetEntity, CVector* target, float force) { + return plugin::CallMethodAndReturn(this, firingEntity, origin, targetEntity, target, force); +} + +// Converted from thiscall bool CWeapon::FireM16_1stPerson(CEntity *owner) 0x741C00 +bool CWeapon::FireM16_1stPerson(CEntity* owner) { + return plugin::CallMethodAndReturn(this, owner); +} + +// Converted from thiscall bool CWeapon::Fire(CEntity *firingEntity,CVector *origin, CVector *muzzlePosn, CEntity *targetEntity, CVector *target, CVector *originForDriveBy) 0x742300 +bool CWeapon::Fire(CEntity* firingEntity, CVector* origin, CVector* muzzlePosn, CEntity* targetEntity, CVector* target, CVector* originForDriveBy) { + return plugin::CallMethodAndReturn(this, firingEntity, origin, muzzlePosn, targetEntity, target, originForDriveBy); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWeapon.h b/third-party/plugin-sdk/plugin_sa/game_sa/CWeapon.h new file mode 100644 index 00000000..5652c246 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWeapon.h @@ -0,0 +1,104 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "eWeaponType.h" +#include "FxSystem_c.h" +#include "CVector2D.h" +#include "CColPoint.h" +#include "ePedPieceTypes.h" + +enum eWeaponState : unsigned int +{ + WEAPONSTATE_READY, + WEAPONSTATE_FIRING, + WEAPONSTATE_RELOADING, + WEAPONSTATE_OUT_OF_AMMO, + WEAPONSTATE_MELEE_MADECONTACT +}; + +class CPed; +class CVehicle; +class CColModel; + +class PLUGIN_API CWeapon { +public: + eWeaponType m_eWeaponType; + eWeaponState m_nState; + unsigned int m_nAmmoInClip; + unsigned int m_nTotalAmmo; + unsigned int m_nTimeForNextShot; + char field_14; + char field_15; + char field_16; + char field_17; + FxSystem_c *m_pFxSystem; // flamethrower, spraycan, extinguisher particle + + static float &ms_fExtinguisherAimAngle; // default -0.34907 + static bool &bPhotographHasBeenTaken; + static bool &ms_bTakePhoto; + static CColModel &ms_PelletTestCol; + + CWeapon(eWeaponType weaponType, int ammo); + void Shutdown(); + void AddGunshell(CEntity* creator, CVector const& position, CVector2D const& direction, float size); + bool LaserScopeDot(CVector* outCoord, float* outSize); + bool FireSniper(CPed* creator, CEntity* victim, CVector* target); + void Reload(CPed* owner); + bool IsTypeMelee(); + bool IsType2Handed(); + bool IsTypeProjectile(); + bool HasWeaponAmmoToBeUsed(); + void StopWeaponEffect(); + void Initialise(eWeaponType weaponType, int ammo, CPed* owner); + void DoBulletImpact(CEntity* owner, CEntity* victim, CVector* startPoint, CVector* endPoint, CColPoint* colPoint, int arg5); + bool TakePhotograph(CEntity* owner, CVector* point); + void SetUpPelletCol(int numPellets, CEntity* owner, CEntity* victim, CVector& point, CColPoint& colPoint, CMatrix& outMatrix); + void FireInstantHitFromCar2(CVector startPoint, CVector endPoint, CVehicle* vehicle, CEntity* owner); + void Update(CPed* owner); + bool CanBeUsedFor2Player(); + // outX and outY will be placed in [-1;1] ranges + void DoWeaponEffect(CVector origin, CVector target); + bool FireAreaEffect(CEntity* firingEntity, CVector* origin, CEntity* targetEntity, CVector* target); + bool FireInstantHitFromCar(CVehicle* vehicle, bool leftSide, bool rightSide); + void FireFromCar(CVehicle* vehicle, bool leftSide, bool rightSide); + bool FireInstantHit(CEntity* firingEntity, CVector* origin, CVector* muzzlePosn, CEntity* targetEntity, CVector* target, CVector* originForDriveBy, bool arg6, bool muzzle); + bool FireProjectile(CEntity* firingEntity, CVector* origin, CEntity* targetEntity, CVector* target, float force); + bool FireM16_1stPerson(CEntity* owner); + bool Fire(CEntity* firingEntity, CVector* origin, CVector* muzzlePosn, CEntity* targetEntity, CVector* target, CVector* originForDriveBy); + + static void InitialiseWeapons(); + static void ShutdownWeapons(); + static void UpdateWeapons(); + static void GenerateDamageEvent(CPed* victim, CEntity* creator, eWeaponType weaponType, int damageFactor, ePedPieceTypes pedPiece, int direction); + static bool CanBeUsedFor2Player(eWeaponType weaponType); + static float TargetWeaponRangeMultiplier(CEntity* victim, CEntity* weaponOwner); + static void DoDoomAiming(CEntity* owner, CVector* start, CVector* end); + static void DoTankDoomAiming(CEntity* vehicle, CEntity* owner, CVector* startPoint, CVector* endPoint); + static void DoDriveByAutoAiming(CEntity* owner, CVehicle* vehicle, CVector* startPoint, CVector* endPoint, bool canAimVehicles); + static void FindNearestTargetEntityWithScreenCoors(float screenX, float screenY, float range, CVector point, float* outX, float* outY); + static float EvaluateTargetForHeatSeekingMissile(CEntity* entity, CVector& posn, CVector& direction, float distanceMultiplier, bool fromVehicle, CEntity* lastEntity); + static bool CheckForShootingVehicleOccupant(CEntity** pCarEntity, CColPoint* colPoint, eWeaponType weaponType, CVector const& origin, CVector const& target); + static CEntity* PickTargetForHeatSeekingMissile(CVector origin, CVector direction, float distanceMultiplier, CEntity* ignoreEntity, bool fromVehicle, CEntity* lastEntity); + static bool ProcessLineOfSight(CVector const& startPoint, CVector const& endPoint, CColPoint& outColPoint, CEntity*& outEntity, eWeaponType weaponType, CEntity* arg5, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool arg11, bool doIgnoreCameraCheck); + + CWeapon(plugin::dummy_func_t) {} +}; + +VALIDATE_SIZE(CWeapon, 0x1C); + +extern float &fPlayerAimScale; // default 0.75 +extern float &fPlayerAimScaleDist; // default 5.0 +extern float &fPlayerAimRotRate; // default 0.0062832 +extern float &SHOTGUN_SPREAD_RATE; // default 0.05 +extern unsigned int &SHOTGUN_NUM_PELLETS; // default 15 +extern unsigned int &SPAS_NUM_PELLETS; // default 4 +extern float &PELLET_COL_SCALE_RATIO_MULT; // default 1.3 +extern float *fReloadAnimSampleFraction; // default { 0.5, 0.7, 0.75, 0.75, 0.7 } + +void FireOneInstantHitRound(CVector* startPoint, CVector* endPoint, int intensity); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponEffects.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponEffects.cpp new file mode 100644 index 00000000..b9f8b6ff --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponEffects.cpp @@ -0,0 +1,67 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CWeaponEffects.h" + +unsigned int MAX_NUM_WEAPON_CROSSHAIRS = 2; +CWeaponEffects *gCrossHair = (CWeaponEffects *)0xC8A838; +RwTexture *&gpCrossHairTex = *(RwTexture **)0xC8A818; +RwTexture **gpCrossHairTexFlight = (RwTexture **)0xC8A810; + +// Converted from thiscall void CWeaponEffects::CWeaponEffects(void) 0x742A90 +CWeaponEffects::CWeaponEffects() { + plugin::CallMethod<0x742A90, CWeaponEffects *>(this); +} + +// Converted from thiscall void CWeaponEffects::~CWeaponEffects() 0x742AA0 +CWeaponEffects::~CWeaponEffects() { + plugin::CallMethod<0x742AA0, CWeaponEffects *>(this); +} + +// Converted from cdecl void CWeaponEffects::Init(void) 0x742AB0 +void CWeaponEffects::Init() { + plugin::Call<0x742AB0>(); +} + +// Converted from cdecl void CWeaponEffects::Shutdown(void) 0x742B80 +void CWeaponEffects::Shutdown() { + plugin::Call<0x742B80>(); +} + +// Converted from cdecl bool CWeaponEffects::IsLockedOn(int crosshairId) 0x742BD0 +bool CWeaponEffects::IsLockedOn(int crosshairId) { + return plugin::CallAndReturn(crosshairId); +} + +// Converted from cdecl void CWeaponEffects::MarkTarget(int crosshairId,CVector posn,uchar red,uchar green,uchar blue,uchar alpha,float size,uchar) 0x742BF0 +void CWeaponEffects::MarkTarget(int crosshairId, CVector posn, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, float size, unsigned char arg7) { + plugin::Call<0x742BF0, int, CVector, unsigned char, unsigned char, unsigned char, unsigned char, float, unsigned char>(crosshairId, posn, red, green, blue, alpha, size, arg7); +} + +// Converted from cdecl void CWeaponEffects::ClearCrossHair(int crosshairId) 0x742C60 +void CWeaponEffects::ClearCrossHair(int crosshairId) { + plugin::Call<0x742C60, int>(crosshairId); +} + +// Converted from cdecl void CWeaponEffects::ClearCrossHairs(void) 0x742C80 +void CWeaponEffects::ClearCrossHairs() { + plugin::Call<0x742C80>(); +} + +// Converted from cdecl void CWeaponEffects::ClearCrossHairImmediately(int crosshairId) 0x742CA0 +void CWeaponEffects::ClearCrossHairImmediately(int crosshairId) { + plugin::Call<0x742CA0, int>(crosshairId); +} + +// Converted from cdecl void CWeaponEffects::ClearCrossHairsImmediately(void) 0x742CC0 +void CWeaponEffects::ClearCrossHairsImmediately() { + plugin::Call<0x742CC0>(); +} + +// Converted from cdecl void CWeaponEffects::Render(void) 0x742CF0 +void CWeaponEffects::Render() { + plugin::Call<0x742CF0>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponEffects.h b/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponEffects.h new file mode 100644 index 00000000..54f06130 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponEffects.h @@ -0,0 +1,54 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" +#include "CRGBA.h" + +enum eWeaponEffectsLockTexture { + WEAPONEFFECTS_LOCK_ON = 0, + WEAPONEFFECTS_LOCK_ON_FIRE = 1 +}; + +class PLUGIN_API CWeaponEffects { +public: + bool m_bActive; +private: + char _pad01[3]; +public: + int m_nTimeWhenToDeactivate; // -1 default + CVector m_vecPosn; + CRGBA m_color; + float m_fSize; + int field_1C; + int field_20; + float m_fRotation; + char field_28; +private: + char _pad29[3]; +public: + + CWeaponEffects(); + ~CWeaponEffects(); + static void Init(); + static void Shutdown(); + static bool IsLockedOn(int crosshairId); + static void MarkTarget(int crosshairId, CVector posn, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, float size, unsigned char arg7); + static void ClearCrossHair(int crosshairId); + static void ClearCrossHairs(); + static void ClearCrossHairImmediately(int crosshairId); + static void ClearCrossHairsImmediately(); + static void Render(); +}; + +VALIDATE_SIZE(CWeaponEffects, 0x2C); + +extern unsigned int MAX_NUM_WEAPON_CROSSHAIRS; // default 2 +extern CWeaponEffects *gCrossHair; // CWeaponEffects gCrossHair[MAX_NUM_WEAPON_CROSSHAIRS] +extern RwTexture *&gpCrossHairTex; +extern RwTexture **gpCrossHairTexFlight; // RwTexture *gpCrossHairTexFlight[2]; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponInfo.cpp new file mode 100644 index 00000000..568154c8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponInfo.cpp @@ -0,0 +1,51 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CWeaponInfo.h" + +CWeaponInfo::CWeaponInfo() +{ + ((void (__thiscall *)(CWeaponInfo *))0x743C30)(this); +} + +CWeaponInfo::~CWeaponInfo() +{ + ((void (__thiscall *)(CWeaponInfo *))0x743C40)(this); +} + +char **CWeaponInfo::ms_aWeaponNames = (char **)0x8D6150; + +void CWeaponInfo::LoadWeaponData() +{ + ((void (__cdecl *)())0x5BE670)(); +} + +CWeaponInfo *CWeaponInfo::GetWeaponInfo(eWeaponType weaponType, unsigned char skill) +{ + return ((CWeaponInfo *(__cdecl *)(eWeaponType, unsigned char))0x743C60)(weaponType, skill); +} + +eWeaponType CWeaponInfo::FindWeaponType(char *name) +{ + return ((eWeaponType (__cdecl *)(char *))0x743D10)(name); +} + +eWeaponFire CWeaponInfo::FindWeaponFireType(char *name) +{ + return ((eWeaponFire (__cdecl *)(char *))0x5BCF30)(name); +} + +void CWeaponInfo::Initialise() +{ + ((void (__cdecl *)())0x5BF750)(); +} + +void CWeaponInfo::Shutdown() +{ + ((void (__cdecl *)())0x743C50)(); +} + +CWeaponInfo *aWeaponInfo = (CWeaponInfo *)0xC8AAB8; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponInfo.h new file mode 100644 index 00000000..92b494d6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponInfo.h @@ -0,0 +1,111 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "eWeaponFlags.h" +#include "eWeaponType.h" +#include "eWeaponFire.h" +#include "CVector.h" +#include "eAnimations.h" + +#define MAX_WEAPON_INFOS 80 +#define MAX_WEAPON_NAMES 50 + +#define WEAPONINFO_NUM_WEAPONS_WITH_SKILLS 11 +#define WEAPONINFO_NUM_WEAPONS 46 + +enum eWeaponSkill +{ + WEAPSKILL_POOR, + WEAPSKILL_STD, + WEAPSKILL_PRO, + WEAPSKILL_COP +}; + +class CWeaponInfo { +public: + /* some info here https://code.google.com/p/mtasa-blue/source/browse/tags/1.3.4/MTA10/game_sa/CWeaponInfoSA.h */ + unsigned int m_nWeaponFire; // see eWeaponFire + float m_fTargetRange; // max targeting range + float m_fWeaponRange; // absolute gun range / default melee attack range + int m_nModelId1; // modelinfo id + int m_nModelId2; // second modelinfo id + unsigned int m_nSlot; + struct { + unsigned int bCanAim : 1; + unsigned int bAimWithArm : 1; + unsigned int b1stPerson : 1; + unsigned int bOnlyFreeAim : 1; + unsigned int bMoveAim : 1; // can move when aiming + unsigned int bMoveFire : 1; // can move when firing + unsigned int b06 : 1; // this bitfield is not used + unsigned int b07 : 1; // this bitfield is not used + unsigned int bThrow : 1; + unsigned int bHeavy : 1; // can't run fast with this weapon + unsigned int bContinuosFire : 1; + unsigned int bTwinPistol : 1; + unsigned int bReload : 1; // this weapon can be reloaded + unsigned int bCrouchFire : 1; // can reload when crouching + unsigned int bReload2Start : 1; // reload directly after firing + unsigned int bLongReload : 1; + unsigned int bSlowdown : 1; + unsigned int bRandSpeed : 1; + unsigned int bExpands : 1; + } m_nFlags; + unsigned int m_nAnimToPlay; // instead of storing pointers directly to anims, use anim association groups + unsigned short m_nAmmoClip; // ammo in one clip + unsigned short m_nDamage; // damage inflicted per hit + CVector m_vecFireOffset; // offset from weapon origin to projectile starting point + unsigned int m_nSkillLevel; // what's the skill level of this weapontype + unsigned int m_nReqStatLevel; // what stat level is required for this skill level + float m_fAccuracy; // modify accuracy of weapon + float m_fMoveSpeed; // how fast can move with weapon + float m_fAnimLoopStart; // start of animation loop + float m_fAnimLoopEnd; // end of animation loop + unsigned int m_nAnimLoopFire; // time in animation when weapon should be fired + unsigned int m_nAnimLoop2Start; // start of animation2 loop + unsigned int m_nAnimLoop2End; // end of animation2 loop + unsigned int m_nAnimLoop2Fire; // time in animation2 when weapon should be fired + float m_fBreakoutTime; // time after which player can break out of attack and run off + float m_fSpeed; // speed of projectile + float m_fRadius; // radius affected + float m_fLifespan; // time taken for shot to dissipate + float m_fSpread; // angle inside which shots are created + unsigned short m_nAimOffsetIndex; // index into array of aiming offsets + unsigned char m_nBaseCombo; // base combo for this melee weapon + unsigned char m_nNumCombos; // how many further combos are available + + // functions + CWeaponInfo(); + ~CWeaponInfo(); + + // static variables + + // weapon names array. Count: MAX_WEAPON_NAMES(50) + static char **ms_aWeaponNames; + + // static functions + + // load weapon data file + static void LoadWeaponData(); + // get weapon info for this type and with this skill + static CWeaponInfo *GetWeaponInfo(eWeaponType weaponType, unsigned char skill); + // get weapon type by name + static eWeaponType FindWeaponType(char *name); + // get weapon fire type by name + static eWeaponFire FindWeaponFireType(char *name); + // initialisation + static void Initialise(); + // closing + static void Shutdown(); +}; + +VALIDATE_SIZE(CWeaponInfo, 0x70); + +// list of weapon infos. Count: MAX_WEAPON_INFOS (80) +extern CWeaponInfo *aWeaponInfo; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponModelInfo.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponModelInfo.cpp new file mode 100644 index 00000000..f9d52901 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponModelInfo.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CWeaponModelInfo.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponModelInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponModelInfo.h new file mode 100644 index 00000000..02512410 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWeaponModelInfo.h @@ -0,0 +1,18 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CClumpModelInfo.h" +#include "eWeaponType.h" + +class PLUGIN_API CWeaponModelInfo : public CClumpModelInfo { +public: + eWeaponType m_weaponInfo; +}; + + +VALIDATE_SIZE(CWeaponModelInfo, 0x28); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWeather.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CWeather.cpp new file mode 100644 index 00000000..fef0561f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWeather.cpp @@ -0,0 +1,112 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CWeather.h" + +float &CWeather::TrafficLightsBrightness = *(float *)0xC812A8; +bool &CWeather::bScriptsForceRain = *(bool *)0xC812AC; +float &CWeather::Earthquake = *(float *)0xC81340; +unsigned int &CWeather::CurrentRainParticleStrength = *(unsigned int *)0xC812B0; +unsigned int &CWeather::LightningStartY = *(unsigned int *)0xC812B4; +unsigned int &CWeather::LightningStartX = *(unsigned int *)0xC812B8; +int &CWeather::LightningFlashLastChange = *(int *)0xC812BC; +int &CWeather::WhenToPlayLightningSound = *(int *)0xC812C0; +unsigned int &CWeather::LightningDuration = *(unsigned int *)0xC812C4; +unsigned int &CWeather::LightningStart = *(unsigned int *)0xC812C8; +bool &CWeather::LightningFlash = *(bool *)0xC812CC; +bool &CWeather::LightningBurst = *(bool *)0xC812CD; +float &CWeather::HeadLightsSpectrum = *(float *)0xC812D0; +float &CWeather::WaterFogFXControl = *(float *)0xC81338; +float &CWeather::HeatHazeFXControl = *(float *)0xC812D8; +float &CWeather::HeatHaze = *(float *)0xC812DC; +float &CWeather::SunGlare = *(float *)0xC812E0; +float &CWeather::Rainbow = *(float *)0xC812E4; +float &CWeather::Wavyness = *(float *)0xC812E8; +float &CWeather::WindClipped = *(float *)0xC812EC; +CVector &CWeather::WindDir = *(CVector *)0xC813E0; +float &CWeather::Wind = *(float *)0xC812F0; +float &CWeather::Sandstorm = *(float *)0xC812F4; +float &CWeather::Rain = *(float *)0xC81324; +float &CWeather::InTunnelness = *(float *)0xC81334; +float &CWeather::WaterDepth = *(float *)0xC81330; +float &CWeather::UnderWaterness = *(float *)0xC8132C; +float &CWeather::ExtraSunnyness = *(float *)0xC812F8; +float &CWeather::Foggyness_SF = *(float *)0xC812FC; +float &CWeather::Foggyness = *(float *)0xC81300; +float &CWeather::CloudCoverage = *(float *)0xC81304; +float &CWeather::WetRoads = *(float *)0xC81308; +float &CWeather::InterpolationValue = *(float *)0xC8130C; +unsigned int &CWeather::WeatherTypeInList = *(unsigned int *)0xC81310; +short &CWeather::WeatherRegion = *(short *)0xC81314; +short &CWeather::ForcedWeatherType = *(short *)0xC81318; +short &CWeather::NewWeatherType = *(short *)0xC8131C; +short &CWeather::OldWeatherType = *(short *)0xC81320; +CAEWeatherAudioEntity &CWeather::m_WeatherAudioEntity = *(CAEWeatherAudioEntity *)0xC81360; + +// Converted from cdecl void CWeather::AddRain(void) 0x72A9A0 +void CWeather::AddRain() { + plugin::Call<0x72A9A0>(); +} + +// Converted from cdecl void CWeather::AddSandStormParticles(void) 0x72A820 +void CWeather::AddSandStormParticles() { + plugin::Call<0x72A820>(); +} + +// Converted from cdecl uchar* CWeather::FindWeatherTypesList(void) 0x72A520 +unsigned char* CWeather::FindWeatherTypesList() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void CWeather::ForceWeather(short weatherType) 0x72A4E0 +void CWeather::ForceWeather(short weatherType) { + plugin::Call<0x72A4E0, short>(weatherType); +} + +// Converted from cdecl void CWeather::ForceWeatherNow(short weatherType) 0x72A4F0 +void CWeather::ForceWeatherNow(short weatherType) { + plugin::Call<0x72A4F0, short>(weatherType); +} + +// Converted from cdecl bool CWeather::ForecastWeather(int weatherType,int numSteps) 0x72A590 +bool CWeather::ForecastWeather(int weatherType, int numSteps) { + return plugin::CallAndReturn(weatherType, numSteps); +} + +// Converted from cdecl void CWeather::Init(void) 0x72A480 +void CWeather::Init() { + plugin::Call<0x72A480>(); +} + +// Converted from cdecl void CWeather::ReleaseWeather(void) 0x72A510 +void CWeather::ReleaseWeather() { + plugin::Call<0x72A510>(); +} + +// Converted from cdecl void CWeather::RenderRainStreaks(void) 0x72AF70 +void CWeather::RenderRainStreaks() { + plugin::Call<0x72AF70>(); +} + +// Converted from cdecl void CWeather::SetWeatherToAppropriateTypeNow(void) 0x72A790 +void CWeather::SetWeatherToAppropriateTypeNow() { + plugin::Call<0x72A790>(); +} + +// Converted from cdecl void CWeather::Update(void) 0x72B850 +void CWeather::Update() { + plugin::Call<0x72B850>(); +} + +// Converted from cdecl void CWeather::UpdateInTunnelness(void) 0x72B630 +void CWeather::UpdateInTunnelness() { + plugin::Call<0x72B630>(); +} + +// Converted from cdecl void CWeather::UpdateWeatherRegion(CVector *posn) 0x72A640 +void CWeather::UpdateWeatherRegion(CVector* posn) { + plugin::Call<0x72A640, CVector*>(posn); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWeather.h b/third-party/plugin-sdk/plugin_sa/game_sa/CWeather.h new file mode 100644 index 00000000..86688bd1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWeather.h @@ -0,0 +1,104 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVector.h" +#include "CAEWeatherAudioEntity.h" + +enum eWeatherType { + WEATHER_EXTRASUNNY_LA = 0, + WEATHER_SUNNY_LA = 1, + WEATHER_EXTRASUNNY_SMOG_LA = 2, + WEATHER_SUNNY_SMOG_LA = 3, + WEATHER_CLOUDY_LA = 4, + WEATHER_SUNNY_SF = 5, + WEATHER_EXTRASUNNY_SF = 6, + WEATHER_CLOUDY_SF = 7, + WEATHER_RAINY_SF = 8, + WEATHER_FOGGY_SF = 9, + WEATHER_SUNNY_VEGAS = 10, + WEATHER_EXTRASUNNY_VEGAS = 11, + WEATHER_CLOUDY_VEGAS = 12, + WEATHER_EXTRASUNNY_COUNTRYSIDE = 13, + WEATHER_SUNNY_COUNTRYSIDE = 14, + WEATHER_CLOUDY_COUNTRYSIDE = 15, + WEATHER_RAINY_COUNTRYSIDE = 16, + WEATHER_EXTRASUNNY_DESERT = 17, + WEATHER_SUNNY_DESERT = 18, + WEATHER_SANDSTORM_DESERT = 19, + WEATHER_UNDERWATER = 20, + WEATHER_EXTRACOLOURS_1 = 21, + WEATHER_EXTRACOLOURS_2 = 22 +}; + +enum eWeatherRegion { + WEATHER_REGION_DEFAULT = 0, + WEATHER_REGION_LA = 1, + WEATHER_REGION_SF = 2, + WEATHER_REGION_LV = 3, + WEATHER_REGION_DESERT = 4 +}; + +class CWeather { +public: + static float &TrafficLightsBrightness; + static bool &bScriptsForceRain; + static float &Earthquake; + static unsigned int &CurrentRainParticleStrength; + static unsigned int &LightningStartY; // only initialized (0), not used + static unsigned int &LightningStartX; // only initialized (0), not used + static int &LightningFlashLastChange; + static int &WhenToPlayLightningSound; + static unsigned int &LightningDuration; + static unsigned int &LightningStart; // frame number + static bool &LightningFlash; + static bool &LightningBurst; + static float &HeadLightsSpectrum; + static float &WaterFogFXControl; + static float &HeatHazeFXControl; + static float &HeatHaze; + static float &SunGlare; + static float &Rainbow; + static float &Wavyness; + static float &WindClipped; + static CVector &WindDir; + static float &Wind; + static float &Sandstorm; + static float &Rain; + static float &InTunnelness; + static float &WaterDepth; + static float &UnderWaterness; + static float &ExtraSunnyness; + static float &Foggyness_SF; + static float &Foggyness; + static float &CloudCoverage; + static float &WetRoads; + static float &InterpolationValue; + static unsigned int &WeatherTypeInList; + static short &WeatherRegion; // see eWeatherRegion + static short &ForcedWeatherType; // see eWeatherType + static short &NewWeatherType; // see eWeatherType + static short &OldWeatherType; // see eWeatherType + static CAEWeatherAudioEntity &m_WeatherAudioEntity; + + static void AddRain(); + static void AddSandStormParticles(); + static unsigned char* FindWeatherTypesList(); + // for 'weatherType', see eWeatherType + static void ForceWeather(short weatherType); + // for 'weatherType', see eWeatherType + static void ForceWeatherNow(short weatherType); + // for 'weatherType', see eWeatherType + static bool ForecastWeather(int weatherType, int numSteps); + static void Init(); + static void ReleaseWeather(); + static void RenderRainStreaks(); + static void SetWeatherToAppropriateTypeNow(); + static void Update(); + static void UpdateInTunnelness(); + static void UpdateWeatherRegion(CVector* posn); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWorld.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CWorld.cpp new file mode 100644 index 00000000..2b65f6a2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWorld.cpp @@ -0,0 +1,473 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CWorld.h" + +unsigned int MAX_PLAYERS = 2; +unsigned int MAX_SECTORS = 14400; +unsigned int MAX_SECTORS_X = 120; +unsigned int MAX_SECTORS_Y = 120; +unsigned int MAX_REPEAT_SECTORS = 256; +unsigned int MAX_REPEAT_SECTORS_X = 16; +unsigned int MAX_REPEAT_SECTORS_Y = 16; +unsigned int MAX_LOD_PTR_LISTS = 900; +unsigned int MAX_LOD_PTR_LISTS_X = 30; +unsigned int MAX_LOD_PTR_LISTS_Y = 30; +int &CWorld::ms_iProcessLineNumCrossings = *(int *)0xB7CD60; +float &CWorld::fWeaponSpreadRate = *(float *)0xB7CD64; +CEntity *&CWorld::pIgnoreEntity = *(CEntity **)0xB7CD68; +bool &CWorld::bSecondShift = *(bool *)0xB7CD6C; +bool &CWorld::bProcessCutsceneOnly = *(bool *)0xB7CD6D; +bool &CWorld::bForceProcessControl = *(bool *)0xB7CD6E; +bool &CWorld::bIncludeBikers = *(bool *)0xB7CD6F; +bool &CWorld::bIncludeCarTyres = *(bool *)0xB7CD70; +bool &CWorld::bIncludeDeadPeds = *(bool *)0xB7CD71; +bool &CWorld::bNoMoreCollisionTorque = *(bool *)0xB7CD72; +bool &CWorld::bDoingCarCollisions = *(bool *)0xB7CD73; +char &CWorld::PlayerInFocus = *(char *)0xB7CD74; +int &CWorld::ms_nCurrentScanCode = *(int *)0xB7CD78; +CPlayerInfo *CWorld::Players = (CPlayerInfo *)0xB7CD98; +CSector *CWorld::ms_aSectors = (CSector *)0xB7D0B8; +CRepeatSector *CWorld::ms_aRepeatSectors = (CRepeatSector *)0xB992B8; +CPtrListSingleLink *CWorld::ms_aLodPtrLists = (CPtrListSingleLink *)0xB99EB8; +CPtrListDoubleLink &CWorld::ms_listMovingEntityPtrs = *(CPtrListDoubleLink *)0xB9ACC8; +CPtrListDoubleLink &CWorld::ms_listObjectsWithControlCode = *(CPtrListDoubleLink *)0xB9ACCC; +CColPoint *CWorld::m_aTempColPts = (CColPoint *)0xB9ACD0; +CVector &CWorld::SnookerTableMax = *(CVector *)0x8CDEF4; +CVector &CWorld::SnookerTableMin = *(CVector *)0x8CDF00; +unsigned int &FilledColPointIndex = *(unsigned int*)0xB7CD7C; +CColPoint *gaTempSphereColPoints = (CColPoint *)0xB9B250; +short &TAG_SPRAYING_INCREMENT_VAL = *(short *)0x8CDEF0; + +// Converted from cdecl void CWorld::ResetLineTestOptions(void) 0x5631C0 +void CWorld::ResetLineTestOptions() { + plugin::Call<0x5631C0>(); +} + +// Converted from cdecl void CWorld::Initialise(void) 0x5631E0 +void CWorld::Initialise() { + plugin::Call<0x5631E0>(); +} + +// Converted from cdecl void CWorld::Add(CEntity *entity) 0x563220 +void CWorld::Add(CEntity* entity) { + plugin::Call<0x563220, CEntity*>(entity); +} + +// Converted from cdecl void CWorld::Remove(CEntity *entity) 0x563280 +void CWorld::Remove(CEntity* entity) { + plugin::Call<0x563280, CEntity*>(entity); +} + +// Converted from cdecl bool CWorld::ProcessVerticalLineSectorList(CPtrList &ptrList,CColLine const&colLine,CColPoint &colPoint,float &maxTouchDistance,CEntity *&outEntity,bool doSeeThroughCheck,CStoredCollPoly *collPoly) 0x5632B0 +bool CWorld::ProcessVerticalLineSectorList(CPtrList& ptrList, CColLine const& colLine, CColPoint& colPoint, float& maxTouchDistance, CEntity*& outEntity, bool doSeeThroughCheck, CStoredCollPoly* collPoly) { + return plugin::CallAndReturn(ptrList, colLine, colPoint, maxTouchDistance, outEntity, doSeeThroughCheck, collPoly); +} + +// Converted from cdecl void CWorld::CastShadowSectorList(CPtrList &ptrList,float,float,float,float) 0x563390 +void CWorld::CastShadowSectorList(CPtrList& ptrList, float arg1, float arg2, float arg3, float arg4) { + plugin::Call<0x563390, CPtrList&, float, float, float, float>(ptrList, arg1, arg2, arg3, arg4); +} + +// Converted from cdecl void CWorld::ProcessForAnimViewer(void) 0x5633D0 +void CWorld::ProcessForAnimViewer() { + plugin::Call<0x5633D0>(); +} + +// Converted from cdecl void CWorld::ProcessPedsAfterPreRender(void) 0x563430 +void CWorld::ProcessPedsAfterPreRender() { + plugin::Call<0x563430>(); +} + +// Converted from cdecl void CWorld::ClearScanCodes(void) 0x563470 +void CWorld::ClearScanCodes() { + plugin::Call<0x563470>(); +} + +// Converted from cdecl void CWorld::FindObjectsInRangeSectorList(CPtrList &,CVector const&point,float radius,bool b2D,short *outCount,short maxCount,CEntity **outEntities) 0x563500 +void CWorld::FindObjectsInRangeSectorList(CPtrList& arg0, CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities) { + plugin::Call<0x563500, CPtrList&, CVector const&, float, bool, short*, short, CEntity**>(arg0, point, radius, b2D, outCount, maxCount, outEntities); +} + +// Converted from cdecl void CWorld::FindObjectsOfTypeInRangeSectorList(uint modelId,CPtrList &ptrList,CVector const&point,float radius,bool b2D,short *outCount,short maxCount,CEntity **outEntities) 0x5635C0 +void CWorld::FindObjectsOfTypeInRangeSectorList(unsigned int modelId, CPtrList& ptrList, CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities) { + plugin::Call<0x5635C0, unsigned int, CPtrList&, CVector const&, float, bool, short*, short, CEntity**>(modelId, ptrList, point, radius, b2D, outCount, maxCount, outEntities); +} + +// Converted from cdecl bool CWorld::ProcessVerticalLineSectorList_FillGlobeColPoints(CPtrList &ptrList,CColLine const&colLine,CEntity *&outEntity,bool doSeeThroughCheck,CStoredCollPoly *outCollPoly) 0x5636A0 +bool CWorld::ProcessVerticalLineSectorList_FillGlobeColPoints(CPtrList& ptrList, CColLine const& colLine, CEntity*& outEntity, bool doSeeThroughCheck, CStoredCollPoly* outCollPoly) { + return plugin::CallAndReturn(ptrList, colLine, outEntity, doSeeThroughCheck, outCollPoly); +} + +// Converted from cdecl void CWorld::RemoveStaticObjects(void) 0x563840 +void CWorld::RemoveStaticObjects() { + plugin::Call<0x563840>(); +} + +// Converted from cdecl void CWorld::TestForBuildingsOnTopOfEachOther(CPtrList &ptrList) 0x563950 +void CWorld::TestForBuildingsOnTopOfEachOther(CPtrList& ptrList) { + plugin::Call<0x563950, CPtrList&>(ptrList); +} + +// Converted from cdecl void CWorld::TestForUnusedModels(CPtrList &ptrList,int *models) 0x5639D0 +void CWorld::TestForUnusedModels(CPtrList& ptrList, int* models) { + plugin::Call<0x5639D0, CPtrList&, int*>(ptrList, models); +} + +// Converted from cdecl void CWorld::RemoveEntityInsteadOfProcessingIt(CEntity *entity) 0x563A10 +void CWorld::RemoveEntityInsteadOfProcessingIt(CEntity* entity) { + plugin::Call<0x563A10, CEntity*>(entity); +} + +// Converted from cdecl void CWorld::CallOffChaseForAreaSectorListVehicles(CPtrList &ptrList,float x1,float y1,float x2,float y2,float,float,float,float) 0x563A80 +void CWorld::CallOffChaseForAreaSectorListVehicles(CPtrList& ptrList, float x1, float y1, float x2, float y2, float arg5, float arg6, float arg7, float arg8) { + plugin::Call<0x563A80, CPtrList&, float, float, float, float, float, float, float, float>(ptrList, x1, y1, x2, y2, arg5, arg6, arg7, arg8); +} + +// Converted from cdecl void CWorld::CallOffChaseForAreaSectorListPeds(CPtrList &ptrList,float x1,float y1,float x2,float y2,float,float,float,float) 0x563D00 +void CWorld::CallOffChaseForAreaSectorListPeds(CPtrList& ptrList, float x1, float y1, float x2, float y2, float arg5, float arg6, float arg7, float arg8) { + plugin::Call<0x563D00, CPtrList&, float, float, float, float, float, float, float, float>(ptrList, x1, y1, x2, y2, arg5, arg6, arg7, arg8); +} + +// Converted from cdecl bool CWorld::CameraToIgnoreThisObject(CEntity *entity) 0x563F40 +bool CWorld::CameraToIgnoreThisObject(CEntity* entity) { + return plugin::CallAndReturn(entity); +} + +// Converted from cdecl int CWorld::FindPlayerSlotWithPedPointer(void *ptr) 0x563FA0 +int CWorld::FindPlayerSlotWithPedPointer(void* ptr) { + return plugin::CallAndReturn(ptr); +} + +// Converted from cdecl int CWorld::FindPlayerSlotWithRemoteVehiclePointer(void *ptr) 0x563FD0 +int CWorld::FindPlayerSlotWithRemoteVehiclePointer(void* ptr) { + return plugin::CallAndReturn(ptr); +} + +// Converted from cdecl void CWorld::FindPlayerSlotWithVehiclePointer(CEntity *vehiclePtr) 0x564000 +void CWorld::FindPlayerSlotWithVehiclePointer(CEntity* vehiclePtr) { + plugin::Call<0x564000, CEntity*>(vehiclePtr); +} + +// Converted from cdecl void CWorld::ShutDown(void) 0x564050 +void CWorld::ShutDown() { + plugin::Call<0x564050>(); +} + +// Converted from cdecl void CWorld::ClearForRestart(void) 0x564360 +void CWorld::ClearForRestart() { + plugin::Call<0x564360>(); +} + +// Converted from cdecl bool CWorld::ProcessVerticalLineSector_FillGlobeColPoints(CSector §or,CRepeatSector &repeatSector,CColLine const&colLine,CEntity *&outEntity,bool buildings,bool vehicles,bool peds,bool objects,bool dummies,bool doSeeThroughCheck,CStoredCollPoly *outCollPoly) 0x564420 +bool CWorld::ProcessVerticalLineSector_FillGlobeColPoints(CSector& sector, CRepeatSector& repeatSector, CColLine const& colLine, CEntity*& outEntity, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, CStoredCollPoly* outCollPoly) { + return plugin::CallAndReturn(sector, repeatSector, colLine, outEntity, buildings, vehicles, peds, objects, dummies, doSeeThroughCheck, outCollPoly); +} + +// Converted from cdecl bool CWorld::ProcessVerticalLineSector(CSector §or,CRepeatSector &repeatSector,CColLine const&colLine,CColPoint &outColPoint,CEntity *&outEntity,bool buildings,bool vehicles,bool peds,bool objects,bool dummies,bool doSeeThroughCheck,CStoredCollPoly *outCollPoly) 0x564500 +bool CWorld::ProcessVerticalLineSector(CSector& sector, CRepeatSector& repeatSector, CColLine const& colLine, CColPoint& outColPoint, CEntity*& outEntity, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, CStoredCollPoly* outCollPoly) { + return plugin::CallAndReturn(sector, repeatSector, colLine, outColPoint, outEntity, buildings, vehicles, peds, objects, dummies, doSeeThroughCheck, outCollPoly); +} + +// Converted from cdecl void CWorld::CastShadow(float x1,float y1,float x2,float y2) 0x564600 +void CWorld::CastShadow(float x1, float y1, float x2, float y2) { + plugin::Call<0x564600, float, float, float, float>(x1, y1, x2, y2); +} + +// Converted from cdecl void CWorld::ProcessAttachedEntities(void) 0x5647F0 +void CWorld::ProcessAttachedEntities() { + plugin::Call<0x5647F0>(); +} + +// Converted from cdecl bool CWorld::GetIsLineOfSightSectorListClear(CPtrList &ptrList,CColLine const&colLine,bool doSeeThroughCheck,bool doCameraIgnoreCheck) 0x564970 +bool CWorld::GetIsLineOfSightSectorListClear(CPtrList& ptrList, CColLine const& colLine, bool doSeeThroughCheck, bool doCameraIgnoreCheck) { + return plugin::CallAndReturn(ptrList, colLine, doSeeThroughCheck, doCameraIgnoreCheck); +} + +// Converted from cdecl void CWorld::FindObjectsInRange(CVector const&point,float radius,bool b2D,short *outCount,short maxCount,CEntity **outEntities, bool buildings, bool vehicles, bool peds, bool objects, bool dummies) 0x564A20 +void CWorld::FindObjectsInRange(CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities, bool buildings, bool vehicles, bool peds, bool objects, bool dummies) { + plugin::Call<0x564A20, CVector const&, float, bool, short*, short, CEntity**, bool, bool, bool, bool, bool>(point, radius, b2D, outCount, maxCount, outEntities, buildings, vehicles, peds, objects, dummies); +} + +// Converted from cdecl void CWorld::FindObjectsOfTypeInRange(uint modelId,CVector const&point,float radius,bool b2D,short *outCount,short maxCount,CEntity **outEntities, bool buildings, bool vehicles, bool peds, bool objects, bool dummies) 0x564C70 +void CWorld::FindObjectsOfTypeInRange(unsigned int modelId, CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities, bool buildings, bool vehicles, bool peds, bool objects, bool dummies) { + plugin::Call<0x564C70, unsigned int, CVector const&, float, bool, short*, short, CEntity**, bool, bool, bool, bool, bool>(modelId, point, radius, b2D, outCount, maxCount, outEntities, buildings, vehicles, peds, objects, dummies); +} + +// Converted from cdecl void CWorld::FindLodOfTypeInRange(uint modelId,CVector const&point,float radius,bool b2D,short *outCount,short maxCount,CEntity **outEntities) 0x564ED0 +void CWorld::FindLodOfTypeInRange(unsigned int modelId, CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities) { + plugin::Call<0x564ED0, unsigned int, CVector const&, float, bool, short*, short, CEntity**>(modelId, point, radius, b2D, outCount, maxCount, outEntities); +} + +// Converted from cdecl void CWorld::FindObjectsKindaCollidingSectorList(CPtrList &ptrList,CVector const&point,float radius,bool b2D,short *outCount,short maxCount,CEntity **outEntities) 0x565000 +void CWorld::FindObjectsKindaCollidingSectorList(CPtrList& ptrList, CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities) { + plugin::Call<0x565000, CPtrList&, CVector const&, float, bool, short*, short, CEntity**>(ptrList, point, radius, b2D, outCount, maxCount, outEntities); +} + +// Converted from cdecl void CWorld::FindObjectsIntersectingCubeSectorList(CPtrList &ptrList,CVector const&cornerA,CVector const&cornerB,short *outCount,short maxCount,CEntity **outEntities) 0x5650E0 +void CWorld::FindObjectsIntersectingCubeSectorList(CPtrList& ptrList, CVector const& cornerA, CVector const& cornerB, short* outCount, short maxCount, CEntity** outEntities) { + plugin::Call<0x5650E0, CPtrList&, CVector const&, CVector const&, short*, short, CEntity**>(ptrList, cornerA, cornerB, outCount, maxCount, outEntities); +} + +// Converted from cdecl void CWorld::FindObjectsIntersectingAngledCollisionBoxSectorList(CPtrList &ptrList,CBox const&box,CMatrix const&transform,CVector const&point,short *outCount,short maxCount,CEntity **outEntities) 0x565200 +void CWorld::FindObjectsIntersectingAngledCollisionBoxSectorList(CPtrList& ptrList, CBox const& box, CMatrix const& transform, CVector const& point, short* outCount, short maxCount, CEntity** outEntities) { + plugin::Call<0x565200, CPtrList&, CBox const&, CMatrix const&, CVector const&, short*, short, CEntity**>(ptrList, box, transform, point, outCount, maxCount, outEntities); +} + +// Converted from cdecl void CWorld::FindMissionEntitiesIntersectingCubeSectorList(CPtrList &ptrList,CVector const&cornerA,CVector const&cornerB,short *outCount,short maxCount,CEntity **outEntities,bool vehiclesList,bool pedsList,bool objectsList) 0x565300 +void CWorld::FindMissionEntitiesIntersectingCubeSectorList(CPtrList& ptrList, CVector const& cornerA, CVector const& cornerB, short* outCount, short maxCount, CEntity** outEntities, bool vehiclesList, bool pedsList, bool objectsList) { + plugin::Call<0x565300, CPtrList&, CVector const&, CVector const&, short*, short, CEntity**, bool, bool, bool>(ptrList, cornerA, cornerB, outCount, maxCount, outEntities, vehiclesList, pedsList, objectsList); +} + +// Converted from cdecl void CWorld::FindNearestObjectOfTypeSectorList(int modelId,CPtrList &ptrList,CVector const&point,float radius,bool b2D,CEntity **outEntities,float *outDistance) 0x565450 +void CWorld::FindNearestObjectOfTypeSectorList(int modelId, CPtrList& ptrList, CVector const& point, float radius, bool b2D, CEntity** outEntities, float* outDistance) { + plugin::Call<0x565450, int, CPtrList&, CVector const&, float, bool, CEntity**, float*>(modelId, ptrList, point, radius, b2D, outEntities, outDistance); +} + +// Converted from cdecl void CWorld::RemoveReferencesToDeletedObject(CEntity *entity) 0x565510 +void CWorld::RemoveReferencesToDeletedObject(CEntity* entity) { + plugin::Call<0x565510, CEntity*>(entity); +} + +// Converted from cdecl void CWorld::SetPedsOnFire(float x1,float y1,float x2,float y2,CEntity *fireCreator) 0x565610 +void CWorld::SetPedsOnFire(float x1, float y1, float x2, float y2, CEntity* fireCreator) { + plugin::Call<0x565610, float, float, float, float, CEntity*>(x1, y1, x2, y2, fireCreator); +} + +// Converted from cdecl void CWorld::SetPedsChoking(float x1,float y1,float x2,float y2,CEntity *gasCreator) 0x565800 +void CWorld::SetPedsChoking(float x1, float y1, float x2, float y2, CEntity* gasCreator) { + plugin::Call<0x565800, float, float, float, float, CEntity*>(x1, y1, x2, y2, gasCreator); +} + +// Converted from cdecl void CWorld::SetCarsOnFire(float x1,float y1,float x2,float y2,CEntity *fireCreator) 0x5659F0 +void CWorld::SetCarsOnFire(float x1, float y1, float x2, float y2, CEntity* fireCreator) { + plugin::Call<0x5659F0, float, float, float, float, CEntity*>(x1, y1, x2, y2, fireCreator); +} + +// Converted from cdecl bool CWorld::SprayPaintWorld(CVector &posn,CVector &outDir,float radius,bool processTagAlphaState) 0x565B70 +bool CWorld::SprayPaintWorld(CVector& posn, CVector& outDir, float radius, bool processTagAlphaState) { + return plugin::CallAndReturn(posn, outDir, radius, processTagAlphaState); +} + +// Converted from cdecl void CWorld::RemoveFallenPeds(void) 0x565CB0 +void CWorld::RemoveFallenPeds() { + plugin::Call<0x565CB0>(); +} + +// Converted from cdecl void CWorld::RemoveFallenCars(void) 0x565E80 +void CWorld::RemoveFallenCars() { + plugin::Call<0x565E80>(); +} + +// Converted from cdecl void CWorld::UseDetonator(CEntity *creator) 0x5660B0 +void CWorld::UseDetonator(CEntity* creator) { + plugin::Call<0x5660B0, CEntity*>(creator); +} + +// Converted from cdecl CEntity* CWorld::TestSphereAgainstSectorList(CPtrList &ptrList,CVector sphereCenter,float sphereRadius,CEntity *ignoreEntity,bool doCameraIgnoreCheck) 0x566140 +CEntity* CWorld::TestSphereAgainstSectorList(CPtrList& ptrList, CVector sphereCenter, float sphereRadius, CEntity* ignoreEntity, bool doCameraIgnoreCheck) { + return plugin::CallAndReturn(ptrList, sphereCenter, sphereRadius, ignoreEntity, doCameraIgnoreCheck); +} + +// Converted from cdecl void CWorld::PrintCarChanges(void) 0x566420 +void CWorld::PrintCarChanges() { + plugin::Call<0x566420>(); +} + +// Converted from cdecl void CWorld::TestForBuildingsOnTopOfEachOther(void) 0x5664A0 +void CWorld::TestForBuildingsOnTopOfEachOther() { + plugin::Call<0x5664A0>(); +} + +// Converted from cdecl void CWorld::TestForUnusedModels(void) 0x566510 +void CWorld::TestForUnusedModels() { + plugin::Call<0x566510>(); +} + +// Converted from cdecl void CWorld::ClearCarsFromArea(float x1,float y1,float z1,float x2,float y2,float z2) 0x566610 +void CWorld::ClearCarsFromArea(float x1, float y1, float z1, float x2, float y2, float z2) { + plugin::Call<0x566610, float, float, float, float, float, float>(x1, y1, z1, x2, y2, z2); +} + +// Converted from cdecl void CWorld::ClearPedsFromArea(float x1,float y1,float z1,float x2,float y2,float z2) 0x5667F0 +void CWorld::ClearPedsFromArea(float x1, float y1, float z1, float x2, float y2, float z2) { + plugin::Call<0x5667F0, float, float, float, float, float, float>(x1, y1, z1, x2, y2, z2); +} + +// Converted from cdecl void CWorld::SetAllCarsCanBeDamaged(bool enable) 0x5668F0 +void CWorld::SetAllCarsCanBeDamaged(bool enable) { + plugin::Call<0x5668F0, bool>(enable); +} + +// Converted from cdecl void CWorld::ExtinguishAllCarFiresInArea(CVector point,float radius) 0x566950 +void CWorld::ExtinguishAllCarFiresInArea(CVector point, float radius) { + plugin::Call<0x566950, CVector, float>(point, radius); +} + +// Converted from cdecl void CWorld::CallOffChaseForArea(float x1,float y1,float x2,float y2) 0x566A60 +void CWorld::CallOffChaseForArea(float x1, float y1, float x2, float y2) { + plugin::Call<0x566A60, float, float, float, float>(x1, y1, x2, y2); +} + +// Converted from cdecl void CWorld::StopAllLawEnforcersInTheirTracks(void) 0x566C10 +void CWorld::StopAllLawEnforcersInTheirTracks() { + plugin::Call<0x566C10>(); +} + +// Converted from cdecl CVehicle* CWorld::FindUnsuspectingTargetCar(CVector point,CVector playerPosn) 0x566C90 +CVehicle* CWorld::FindUnsuspectingTargetCar(CVector point, CVector playerPosn) { + return plugin::CallAndReturn(point, playerPosn); +} + +// Converted from cdecl CPed* CWorld::FindUnsuspectingTargetPed(CVector point,CVector playerPosn) 0x566DA0 +CPed* CWorld::FindUnsuspectingTargetPed(CVector point, CVector playerPosn) { + return plugin::CallAndReturn(point, playerPosn); +} + +// Converted from cdecl bool CWorld::ProcessLineOfSightSectorList(CPtrList &ptrList,CColLine const&colLine,CColPoint &outColPoint,float &maxTouchDistance,CEntity *&outEntity,bool doSeeThroughCheck,bool doIgnoreCameraCheck,bool doShootThroughCheck) 0x566EE0 +bool CWorld::ProcessLineOfSightSectorList(CPtrList& ptrList, CColLine const& colLine, CColPoint& outColPoint, float& maxTouchDistance, CEntity*& outEntity, bool doSeeThroughCheck, bool doIgnoreCameraCheck, bool doShootThroughCheck) { + return plugin::CallAndReturn(ptrList, colLine, outColPoint, maxTouchDistance, outEntity, doSeeThroughCheck, doIgnoreCameraCheck, doShootThroughCheck); +} + +// Converted from cdecl bool CWorld::ProcessVerticalLine(CVector const&origin,float distance,CColPoint &outColPoint,CEntity *&outEntity,bool buildings, bool vehicles, bool peds, bool objects, bool dummies,bool doSeeThroughCheck,CStoredCollPoly *outCollPoly) 0x5674E0 +bool CWorld::ProcessVerticalLine(CVector const& origin, float distance, CColPoint& outColPoint, CEntity*& outEntity, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, CStoredCollPoly* outCollPoly) { + return plugin::CallAndReturn(origin, distance, outColPoint, outEntity, buildings, vehicles, peds, objects, dummies, doSeeThroughCheck, outCollPoly); +} + +// Converted from cdecl bool CWorld::ProcessVerticalLine_FillGlobeColPoints(CVector const&origin,float distance,CEntity *&outEntity,bool buildings, bool vehicles, bool peds, bool objects, bool dummies,bool doSeeThroughCheck,CStoredCollPoly *outCollPoly) 0x567620 +bool CWorld::ProcessVerticalLine_FillGlobeColPoints(CVector const& origin, float distance, CEntity*& outEntity, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, CStoredCollPoly* outCollPoly) { + return plugin::CallAndReturn(origin, distance, outEntity, buildings, vehicles, peds, objects, dummies, doSeeThroughCheck, outCollPoly); +} + +// Converted from cdecl void CWorld::TriggerExplosionSectorList(CPtrList &ptrList,CVector const&point,float radius,float visibleDistance,CEntity *victim,CEntity *creator,bool processVehicleBombTimer,float damage) 0x567750 +void CWorld::TriggerExplosionSectorList(CPtrList& ptrList, CVector const& point, float radius, float visibleDistance, CEntity* victim, CEntity* creator, bool processVehicleBombTimer, float damage) { + plugin::Call<0x567750, CPtrList&, CVector const&, float, float, CEntity*, CEntity*, bool, float>(ptrList, point, radius, visibleDistance, victim, creator, processVehicleBombTimer, damage); +} + +// Converted from cdecl void CWorld::Process(void) 0x5684A0 +void CWorld::Process() { + plugin::Call<0x5684A0>(); +} + +// Converted from cdecl bool CWorld::GetIsLineOfSightSectorClear(CSector §or,CRepeatSector &repeatSector,CColLine const&colLine,bool buildings, bool vehicles, bool peds, bool objects, bool dummies,bool doSeeThroughCheck,bool doIgnoreCameraCheck) 0x568AD0 +bool CWorld::GetIsLineOfSightSectorClear(CSector& sector, CRepeatSector& repeatSector, CColLine const& colLine, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, bool doIgnoreCameraCheck) { + return plugin::CallAndReturn(sector, repeatSector, colLine, buildings, vehicles, peds, objects, dummies, doSeeThroughCheck, doIgnoreCameraCheck); +} + +// Converted from cdecl void CWorld::FindObjectsKindaColliding(CVector const&point,float radius,bool b2D,short *outCount,short maxCount,CEntity **outEntities,bool buildings, bool vehicles, bool peds, bool objects, bool dummies) 0x568B80 +void CWorld::FindObjectsKindaColliding(CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities, bool buildings, bool vehicles, bool peds, bool objects, bool dummies) { + plugin::Call<0x568B80, CVector const&, float, bool, short*, short, CEntity**, bool, bool, bool, bool, bool>(point, radius, b2D, outCount, maxCount, outEntities, buildings, vehicles, peds, objects, dummies); +} + +// Converted from cdecl void CWorld::FindObjectsIntersectingCube(CVector const&cornerA,CVector const&cornerB,short *outCount,short maxCount,CEntity **outEntities,bool buildings, bool vehicles, bool peds, bool objects, bool dummies) 0x568DD0 +void CWorld::FindObjectsIntersectingCube(CVector const& cornerA, CVector const& cornerB, short* outCount, short maxCount, CEntity** outEntities, bool buildings, bool vehicles, bool peds, bool objects, bool dummies) { + plugin::Call<0x568DD0, CVector const&, CVector const&, short*, short, CEntity**, bool, bool, bool, bool, bool>(cornerA, cornerB, outCount, maxCount, outEntities, buildings, vehicles, peds, objects, dummies); +} + +// Converted from cdecl void CWorld::FindObjectsIntersectingAngledCollisionBox(CBox const&box,CMatrix const&transform,CVector const&point,float x1,float y1,float x2,float y2,short *outCount,short maxCount,CEntity **outEntities,bool buildings, bool vehicles, bool peds, bool objects, bool dummies) 0x568FF0 +void CWorld::FindObjectsIntersectingAngledCollisionBox(CBox const& box, CMatrix const& transform, CVector const& point, float x1, float y1, float x2, float y2, short* outCount, short maxCount, CEntity** outEntities, bool buildings, bool vehicles, bool peds, bool objects, bool dummies) { + plugin::Call<0x568FF0, CBox const&, CMatrix const&, CVector const&, float, float, float, float, short*, short, CEntity**, bool, bool, bool, bool, bool>(box, transform, point, x1, y1, x2, y2, outCount, maxCount, outEntities, buildings, vehicles, peds, objects, dummies); +} + +// Converted from cdecl void CWorld::FindMissionEntitiesIntersectingCube(CVector const&cornerA,CVector const&cornerB,short *outCount,short maxCount,CEntity **outEntities,bool vehicles,bool peds,bool objects) 0x569240 +void CWorld::FindMissionEntitiesIntersectingCube(CVector const& cornerA, CVector const& cornerB, short* outCount, short maxCount, CEntity** outEntities, bool vehicles, bool peds, bool objects) { + plugin::Call<0x569240, CVector const&, CVector const&, short*, short, CEntity**, bool, bool, bool>(cornerA, cornerB, outCount, maxCount, outEntities, vehicles, peds, objects); +} + +// Converted from cdecl void CWorld::FindNearestObjectOfType(int modelId,CVector const&point,float radius,bool b2D,bool buildings, bool vehicles, bool peds, bool objects, bool dummies) 0x5693F0 +void CWorld::FindNearestObjectOfType(int modelId, CVector const& point, float radius, bool b2D, bool buildings, bool vehicles, bool peds, bool objects, bool dummies) { + plugin::Call<0x5693F0, int, CVector const&, float, bool, bool, bool, bool, bool, bool>(modelId, point, radius, b2D, buildings, vehicles, peds, objects, dummies); +} + +// Converted from cdecl float CWorld::FindGroundZForCoord(float x,float y) 0x569660 +float CWorld::FindGroundZForCoord(float x, float y) { + return plugin::CallAndReturn(x, y); +} + +// Converted from cdecl float CWorld::FindGroundZFor3DCoord(float x,float y,float z,bool *outResult,CEntity **outEntity) 0x5696C0 +float CWorld::FindGroundZFor3DCoord(float x, float y, float z, bool* outResult, CEntity** outEntity) { + return plugin::CallAndReturn(x, y, z, outResult, outEntity); +} + +// Converted from cdecl float CWorld::FindRoofZFor3DCoord(float x,float y,float z,bool *outResult) 0x569750 +float CWorld::FindRoofZFor3DCoord(float x, float y, float z, bool* outResult) { + return plugin::CallAndReturn(x, y, z, outResult); +} + +// Converted from cdecl float CWorld::FindLowestZForCoord(float x,float y) 0x5697F0 +float CWorld::FindLowestZForCoord(float x, float y) { + return plugin::CallAndReturn(x, y); +} + +// Converted from cdecl void CWorld::RepositionOneObject(CEntity *object) 0x569850 +void CWorld::RepositionOneObject(CEntity* object) { + plugin::Call<0x569850, CEntity*>(object); +} + +// Converted from cdecl CEntity* CWorld::TestSphereAgainstWorld(CVector sphereCenter,float sphereRadius,CEntity *,bool buildings, bool vehicles, bool peds, bool objects, bool dummies,bool doCameraIgnoreCheck) 0x569E20 +CEntity* CWorld::TestSphereAgainstWorld(CVector sphereCenter, float sphereRadius, CEntity* arg2, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doCameraIgnoreCheck) { + return plugin::CallAndReturn(sphereCenter, sphereRadius, arg2, buildings, vehicles, peds, objects, dummies, doCameraIgnoreCheck); +} + +// Converted from cdecl void CWorld::ClearExcitingStuffFromArea(CVector const&point,float radius,uchar bRemoveProjectilesAndShadows) 0x56A0D0 +void CWorld::ClearExcitingStuffFromArea(CVector const& point, float radius, unsigned char bRemoveProjectilesAndShadows) { + plugin::Call<0x56A0D0, CVector const&, float, unsigned char>(point, radius, bRemoveProjectilesAndShadows); +} + +// Converted from cdecl bool CWorld::GetIsLineOfSightClear(CVector const&origin,CVector const&target,bool buildings, bool vehicles, bool peds, bool objects, bool dummies,bool doSeeThroughCheck,bool doCameraIgnoreCheck) 0x56A490 +bool CWorld::GetIsLineOfSightClear(CVector const& origin, CVector const& target, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, bool doCameraIgnoreCheck) { + return plugin::CallAndReturn(origin, target, buildings, vehicles, peds, objects, dummies, doSeeThroughCheck, doCameraIgnoreCheck); +} + +// Converted from cdecl bool CWorld::ProcessLineOfSightSector(CSector §or,CRepeatSector &repeatSector,CColLine const&colLine,CColPoint &outColPoint,float &maxTouchDistance,CEntity *&outEntity,bool buildings, bool vehicles, bool peds, bool objects, bool dummies,bool doSeeThroughCheck,bool doCameraIgnoreCheck,bool doShootThroughCheck) 0x56B5E0 +bool CWorld::ProcessLineOfSightSector(CSector& sector, CRepeatSector& repeatSector, CColLine const& colLine, CColPoint& outColPoint, float& maxTouchDistance, CEntity*& outEntity, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, bool doCameraIgnoreCheck, bool doShootThroughCheck) { + return plugin::CallAndReturn(sector, repeatSector, colLine, outColPoint, maxTouchDistance, outEntity, buildings, vehicles, peds, objects, dummies, doSeeThroughCheck, doCameraIgnoreCheck, doShootThroughCheck); +} + +// Converted from cdecl void CWorld::TriggerExplosion(CVector const&point,float radius,float visibleDistance,CEntity *victim,CEntity *creator,bool processVehicleBombTimer,float damage) 0x56B790 +void CWorld::TriggerExplosion(CVector const& point, float radius, float visibleDistance, CEntity* victim, CEntity* creator, bool processVehicleBombTimer, float damage) { + plugin::Call<0x56B790, CVector const&, float, float, CEntity*, CEntity*, bool, float>(point, radius, visibleDistance, victim, creator, processVehicleBombTimer, damage); +} + +// Converted from cdecl void CWorld::SetWorldOnFire(float x,float y,float z,float radius,CEntity *fireCreator) 0x56B910 +void CWorld::SetWorldOnFire(float x, float y, float z, float radius, CEntity* fireCreator) { + plugin::Call<0x56B910, float, float, float, float, CEntity*>(x, y, z, radius, fireCreator); +} + +// Converted from cdecl void CWorld::RepositionCertainDynamicObjects(void) 0x56B9C0 +void CWorld::RepositionCertainDynamicObjects() { + plugin::Call<0x56B9C0>(); +} + +// Converted from cdecl bool CWorld::ProcessLineOfSight(CVector const&origin,CVector const&target,CColPoint &outColPoint,CEntity *&outEntity,bool buildings, bool vehicles, bool peds, bool objects, bool dummies,bool doSeeThroughCheck,bool doCameraIgnoreCheck,bool doShootThroughCheck) 0x56BA00 +bool CWorld::ProcessLineOfSight(CVector const& origin, CVector const& target, CColPoint& outColPoint, CEntity*& outEntity, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, bool doCameraIgnoreCheck, bool doShootThroughCheck) { + return plugin::CallAndReturn(origin, target, outColPoint, outEntity, buildings, vehicles, peds, objects, dummies, doSeeThroughCheck, doCameraIgnoreCheck, doShootThroughCheck); +} + +// Converted from cdecl short GetCurrentScanCode() 0x407250 +short GetCurrentScanCode() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl CSector* GetSector(int x, int y) 0x407260 +CSector* GetSector(int x, int y) { + return plugin::CallAndReturn(x, y); +} + +// Converted from cdecl CRepeatSector* GetRepeatSector(int x, int y) 0x4072A0 +CRepeatSector* GetRepeatSector(int x, int y) { + return plugin::CallAndReturn(x, y); +} + +// Converted from cdecl CPtrListSingleLink* GetLodPtrList(int x, int y) 0x4072C0 +CPtrListSingleLink* GetLodPtrList(int x, int y) { + return plugin::CallAndReturn(x, y); +} + +// Converted from cdecl void SetNextScanCode() 0x4072E0 +void SetNextScanCode() { + plugin::Call<0x4072E0>(); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CWorld.h b/third-party/plugin-sdk/plugin_sa/game_sa/CWorld.h new file mode 100644 index 00000000..9696092a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CWorld.h @@ -0,0 +1,157 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CPlayerInfo.h" +#include "CColPoint.h" +#include "CStoredCollPoly.h" +#include "CSector.h" +#include "CRepeatSector.h" +#include "CPtrListSingleLink.h" +#include "CPed.h" +#include "CVehicle.h" + +extern unsigned int MAX_PLAYERS; // default 2 +extern unsigned int MAX_SECTORS; // default 14400 +extern unsigned int MAX_SECTORS_X; // default 120 +extern unsigned int MAX_SECTORS_Y; // default 120 +extern unsigned int MAX_REPEAT_SECTORS; // default 256 +extern unsigned int MAX_REPEAT_SECTORS_X; // default 16 +extern unsigned int MAX_REPEAT_SECTORS_Y; // default 16 +extern unsigned int MAX_LOD_PTR_LISTS; // default 900 +extern unsigned int MAX_LOD_PTR_LISTS_X; // default 30 +extern unsigned int MAX_LOD_PTR_LISTS_Y; // default 30 + +class PLUGIN_API CWorld { +public: + static int &ms_iProcessLineNumCrossings; + static float &fWeaponSpreadRate; + // entity to ignore + static CEntity *&pIgnoreEntity; + static bool &bSecondShift; + static bool &bProcessCutsceneOnly; + static bool &bForceProcessControl; + static bool &bIncludeBikers; + static bool &bIncludeCarTyres; + static bool &bIncludeDeadPeds; + static bool &bNoMoreCollisionTorque; + static bool &bDoingCarCollisions; + // Current player + static char &PlayerInFocus; + static int &ms_nCurrentScanCode; + // Player data array for 2 players + static CPlayerInfo *Players; // static CPlayerInfo Players[MAX_PLAYERS] + // Use GetSector() to access this array + static CSector *ms_aSectors; // static CSector ms_aSectors[MAX_SECTORS] default 120x120 + // Use GetRepeatSector() to access this array + static CRepeatSector *ms_aRepeatSectors; // static CRepeatSector ms_aRepeatSectors[MAX_REPEAT_SECTORS] default 16x16 + // Use GetLodPtrList() to access this array + static CPtrListSingleLink *ms_aLodPtrLists; // static CPtrListSingleLink ms_aLodPtrLists[MAX_LOD_PTR_LISTS] default 30x30 + static CPtrListDoubleLink &ms_listMovingEntityPtrs; + static CPtrListDoubleLink &ms_listObjectsWithControlCode; + static CColPoint *m_aTempColPts; // static CColPoint m_aTempColPts[32] + static CVector &SnookerTableMax; // default { 497.7925, -1670.3999, 13.19 } + static CVector &SnookerTableMin; // default { 2495.8525, -1671.4099, 12.9 } + + static void ResetLineTestOptions(); + static void Initialise(); + static void Add(CEntity* entity); + static void Remove(CEntity* entity); + static bool ProcessVerticalLineSectorList(CPtrList& ptrList, CColLine const& colLine, CColPoint& colPoint, float& maxTouchDistance, CEntity*& outEntity, bool doSeeThroughCheck, CStoredCollPoly* collPoly); + static void CastShadowSectorList(CPtrList& ptrList, float arg1, float arg2, float arg3, float arg4); + static void ProcessForAnimViewer(); + static void ProcessPedsAfterPreRender(); + static void ClearScanCodes(); + static void FindObjectsInRangeSectorList(CPtrList& arg0, CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities); + static void FindObjectsOfTypeInRangeSectorList(unsigned int modelId, CPtrList& ptrList, CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities); + static bool ProcessVerticalLineSectorList_FillGlobeColPoints(CPtrList& ptrList, CColLine const& colLine, CEntity*& outEntity, bool doSeeThroughCheck, CStoredCollPoly* outCollPoly); + static void RemoveStaticObjects(); + static void TestForBuildingsOnTopOfEachOther(CPtrList& ptrList); + static void TestForUnusedModels(CPtrList& ptrList, int* models); + static void RemoveEntityInsteadOfProcessingIt(CEntity* entity); + static void CallOffChaseForAreaSectorListVehicles(CPtrList& ptrList, float x1, float y1, float x2, float y2, float arg5, float arg6, float arg7, float arg8); + static void CallOffChaseForAreaSectorListPeds(CPtrList& ptrList, float x1, float y1, float x2, float y2, float arg5, float arg6, float arg7, float arg8); + static bool CameraToIgnoreThisObject(CEntity* entity); + // returns player ID (0 or 1), -1 - not found + static int FindPlayerSlotWithPedPointer(void* ptr); + // returns player ID (0 or 1), -1 - not found + static int FindPlayerSlotWithRemoteVehiclePointer(void* ptr); + // returns player ID (0 or 1) + static void FindPlayerSlotWithVehiclePointer(CEntity* vehiclePtr); + static void ShutDown(); + static void ClearForRestart(); + static bool ProcessVerticalLineSector_FillGlobeColPoints(CSector& sector, CRepeatSector& repeatSector, CColLine const& colLine, CEntity*& outEntity, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, CStoredCollPoly* outCollPoly); + static bool ProcessVerticalLineSector(CSector& sector, CRepeatSector& repeatSector, CColLine const& colLine, CColPoint& outColPoint, CEntity*& outEntity, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, CStoredCollPoly* outCollPoly); + static void CastShadow(float x1, float y1, float x2, float y2); + static void ProcessAttachedEntities(); + static bool GetIsLineOfSightSectorListClear(CPtrList& ptrList, CColLine const& colLine, bool doSeeThroughCheck, bool doCameraIgnoreCheck); + static void FindObjectsInRange(CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities, bool buildings, bool vehicles, bool peds, bool objects, bool dummies); + static void FindObjectsOfTypeInRange(unsigned int modelId, CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities, bool buildings, bool vehicles, bool peds, bool objects, bool dummies); + static void FindLodOfTypeInRange(unsigned int modelId, CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities); + static void FindObjectsKindaCollidingSectorList(CPtrList& ptrList, CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities); + static void FindObjectsIntersectingCubeSectorList(CPtrList& ptrList, CVector const& cornerA, CVector const& cornerB, short* outCount, short maxCount, CEntity** outEntities); + static void FindObjectsIntersectingAngledCollisionBoxSectorList(CPtrList& ptrList, CBox const& box, CMatrix const& transform, CVector const& point, short* outCount, short maxCount, CEntity** outEntities); + static void FindMissionEntitiesIntersectingCubeSectorList(CPtrList& ptrList, CVector const& cornerA, CVector const& cornerB, short* outCount, short maxCount, CEntity** outEntities, bool vehiclesList, bool pedsList, bool objectsList); + static void FindNearestObjectOfTypeSectorList(int modelId, CPtrList& ptrList, CVector const& point, float radius, bool b2D, CEntity** outEntities, float* outDistance); + static void RemoveReferencesToDeletedObject(CEntity* entity); + static void SetPedsOnFire(float x1, float y1, float x2, float y2, CEntity* fireCreator); + static void SetPedsChoking(float x1, float y1, float x2, float y2, CEntity* gasCreator); + static void SetCarsOnFire(float x1, float y1, float x2, float y2, CEntity* fireCreator); + static bool SprayPaintWorld(CVector& posn, CVector& outDir, float radius, bool processTagAlphaState); + static void RemoveFallenPeds(); + static void RemoveFallenCars(); + static void UseDetonator(CEntity* creator); + // returns entity + static CEntity* TestSphereAgainstSectorList(CPtrList& ptrList, CVector sphereCenter, float sphereRadius, CEntity* ignoreEntity, bool doCameraIgnoreCheck); + static void PrintCarChanges(); + static void TestForBuildingsOnTopOfEachOther(); + static void TestForUnusedModels(); + static void ClearCarsFromArea(float x1, float y1, float z1, float x2, float y2, float z2); + static void ClearPedsFromArea(float x1, float y1, float z1, float x2, float y2, float z2); + static void SetAllCarsCanBeDamaged(bool enable); + static void ExtinguishAllCarFiresInArea(CVector point, float radius); + static void CallOffChaseForArea(float x1, float y1, float x2, float y2); + static void StopAllLawEnforcersInTheirTracks(); + static CVehicle* FindUnsuspectingTargetCar(CVector point, CVector playerPosn); + static CPed* FindUnsuspectingTargetPed(CVector point, CVector playerPosn); + static bool ProcessLineOfSightSectorList(CPtrList& ptrList, CColLine const& colLine, CColPoint& outColPoint, float& maxTouchDistance, CEntity*& outEntity, bool doSeeThroughCheck, bool doIgnoreCameraCheck, bool doShootThroughCheck); + static bool ProcessVerticalLine(CVector const& origin, float distance, CColPoint& outColPoint, CEntity*& outEntity, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, CStoredCollPoly* outCollPoly); + static bool ProcessVerticalLine_FillGlobeColPoints(CVector const& origin, float distance, CEntity*& outEntity, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, CStoredCollPoly* outCollPoly); + static void TriggerExplosionSectorList(CPtrList& ptrList, CVector const& point, float radius, float visibleDistance, CEntity* victim, CEntity* creator, bool processVehicleBombTimer, float damage); + static void Process(); + static bool GetIsLineOfSightSectorClear(CSector& sector, CRepeatSector& repeatSector, CColLine const& colLine, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, bool doIgnoreCameraCheck); + static void FindObjectsKindaColliding(CVector const& point, float radius, bool b2D, short* outCount, short maxCount, CEntity** outEntities, bool buildings, bool vehicles, bool peds, bool objects, bool dummies); + static void FindObjectsIntersectingCube(CVector const& cornerA, CVector const& cornerB, short* outCount, short maxCount, CEntity** outEntities, bool buildings, bool vehicles, bool peds, bool objects, bool dummies); + static void FindObjectsIntersectingAngledCollisionBox(CBox const& box, CMatrix const& transform, CVector const& point, float x1, float y1, float x2, float y2, short* outCount, short maxCount, CEntity** outEntities, bool buildings, bool vehicles, bool peds, bool objects, bool dummies); + static void FindMissionEntitiesIntersectingCube(CVector const& cornerA, CVector const& cornerB, short* outCount, short maxCount, CEntity** outEntities, bool vehicles, bool peds, bool objects); + static void FindNearestObjectOfType(int modelId, CVector const& point, float radius, bool b2D, bool buildings, bool vehicles, bool peds, bool objects, bool dummies); + static float FindGroundZForCoord(float x, float y); + static float FindGroundZFor3DCoord(float x, float y, float z, bool* outResult, CEntity** outEntity); + static float FindRoofZFor3DCoord(float x, float y, float z, bool* outResult); + static float FindLowestZForCoord(float x, float y); + static void RepositionOneObject(CEntity* object); + // returns entity + static CEntity* TestSphereAgainstWorld(CVector sphereCenter, float sphereRadius, CEntity* arg2, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doCameraIgnoreCheck); + static void ClearExcitingStuffFromArea(CVector const& point, float radius, unsigned char bRemoveProjectilesAndShadows); + static bool GetIsLineOfSightClear(CVector const& origin, CVector const& target, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, bool doCameraIgnoreCheck); + static bool ProcessLineOfSightSector(CSector& sector, CRepeatSector& repeatSector, CColLine const& colLine, CColPoint& outColPoint, float& maxTouchDistance, CEntity*& outEntity, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, bool doCameraIgnoreCheck, bool doShootThroughCheck); + static void TriggerExplosion(CVector const& point, float radius, float visibleDistance, CEntity* victim, CEntity* creator, bool processVehicleBombTimer, float damage); + static void SetWorldOnFire(float x, float y, float z, float radius, CEntity* fireCreator); + static void RepositionCertainDynamicObjects(); + static bool ProcessLineOfSight(CVector const& origin, CVector const& target, CColPoint& outColPoint, CEntity*& outEntity, bool buildings, bool vehicles, bool peds, bool objects, bool dummies, bool doSeeThroughCheck, bool doCameraIgnoreCheck, bool doShootThroughCheck); +}; + +extern unsigned int &FilledColPointIndex; +extern CColPoint *gaTempSphereColPoints; // CColPoint gaTempSphereColPoints[32] +extern short &TAG_SPRAYING_INCREMENT_VAL; // default 8 + +short GetCurrentScanCode(); +CSector* GetSector(int x, int y); +CRepeatSector* GetRepeatSector(int x, int y); +CPtrListSingleLink* GetLodPtrList(int x, int y); +void SetNextScanCode(); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CZone.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/CZone.cpp new file mode 100644 index 00000000..fd11394d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CZone.cpp @@ -0,0 +1,15 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CZone.h" + +#define FUNC_CZone__GetTranslatedName 0x5720C0 + +// Returns pointer to GXT name string. +const char* CZone::GetTranslatedName() +{ + return ( ( const char *(__thiscall* )(CZone *) )FUNC_CZone__GetTranslatedName)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CZone.h b/third-party/plugin-sdk/plugin_sa/game_sa/CZone.h new file mode 100644 index 00000000..8bd00c9e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CZone.h @@ -0,0 +1,42 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "rw/rwplcore.h" // for RwRGBA stuct +#include "CZoneInfo.h" + +enum eZoneType { + ZONE_TYPE_NAVI = 0, // controls text s + ZONE_TYPE_MAP = 3 +}; + +enum eLevelName { + LEVEL_NAME_COUNTRY_SIDE, + LEVEL_NAME_LOS_SANTOS, + LEVEL_NAME_SAN_FIERRO, + LEVEL_NAME_LAS_VENTURAS +}; + +class CZone { +public: + char m_szLabel[8]; + char m_szTextKey[8]; + short m_fX1; + short m_fY1; + short m_fZ1; + short m_fX2; + short m_fY2; + short m_fZ2; + CZoneInfo m_nZoneExtraIndexInfo; + unsigned char m_nType; // see eZoneType + unsigned char m_nLevel; // see eLevelName + + // Returns pointer to GXT name string. + const char* GetTranslatedName(); +}; + +VALIDATE_SIZE(CZone, 0x30); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/CZoneInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/CZoneInfo.h new file mode 100644 index 00000000..eb728c3e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/CZoneInfo.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CRGBA.h" + +class PLUGIN_API CZoneInfo +{ +public: + char m_nGangDensity[10]; + char m_nDealerCounter; + CRGBA m_ZoneColor; + char m_nFlags; + char m_nPopulationRace; +}; + +VALIDATE_SIZE(CZoneInfo, 0x11); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/C_PcSave.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/C_PcSave.cpp new file mode 100644 index 00000000..4199cd83 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/C_PcSave.cpp @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "C_PcSave.h" + +C_PcSave& PcSaveHelper = *(C_PcSave*)0xC17034; + +void C_PcSave::PopulateSlotInfo() { + plugin::CallMethod<0x619140, C_PcSave*>(this); +} + +bool C_PcSave::DeleteSlot(int slot) { + return plugin::CallMethodAndReturn(this, slot); +} + +bool C_PcSave::SaveSlot(int slot) { + return plugin::CallMethodAndReturn(this, slot); +} + +void C_PcSave::SetSaveDirectory(const char* path) { + plugin::Call<0x619040, const char*>(path); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/C_PcSave.h b/third-party/plugin-sdk/plugin_sa/game_sa/C_PcSave.h new file mode 100644 index 00000000..6a382e69 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/C_PcSave.h @@ -0,0 +1,43 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +enum PLUGIN_API eSaveSlot : unsigned char { + SLOT_OK = 0, + SLOT_EMPTY = 1, + SLOT_CORRUPTED = 2 +}; + +enum PLUGIN_API eSaveStatus : unsigned int { + SAVESTATUS_SUCCESSFUL = 0, + SAVESTATUS_ERR_SAVE_CREATE = 1, + SAVESTATUS_ERR_SAVE_WRITE = 2, + SAVESTATUS_ERR_SAVE_CLOSE = 3, + SAVESTATUS_ERR_LOAD_OPEN = 4, + SAVESTATUS_ERR_LOAD_READ = 5, + SAVESTATUS_ERR_LOAD_CLOSE = 6, + SAVESTATUS_ERR_DATA_INVALID = 7, + SAVESTATUS_DELETEFAILED8 = 8, + SAVESTATUS_DELETEFAILED9 = 9, + SAVESTATUS_DELETEFAILED10 = 10 +}; + +class PLUGIN_API C_PcSave { +public: + eSaveStatus nErrorCode; + +public: + void PopulateSlotInfo(); + bool DeleteSlot(int slot); + bool SaveSlot(int slot); + static void SetSaveDirectory(const char* path); +}; + +VALIDATE_SIZE(C_PcSave, 0x4); + +extern C_PcSave& PcSaveHelper; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/D3DIndexDataBuffer.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/D3DIndexDataBuffer.cpp new file mode 100644 index 00000000..61c487d7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/D3DIndexDataBuffer.cpp @@ -0,0 +1,74 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "D3DIndexDataBuffer.h" + +// Converted from thiscall void D3DIndexDataBuffer::Clear() 0x7301D0 +void D3DIndexDataBuffer::Clear() { + plugin::CallMethod<0x7301D0, D3DIndexDataBuffer *>(this); +} + +// Converted from thiscall void D3DIndexDataBuffer::Destroy() 0x730200 +void D3DIndexDataBuffer::Destroy() { + plugin::CallMethod<0x730200, D3DIndexDataBuffer *>(this); +} + +// Converted from thiscall uint D3DIndexDataBuffer::GetTotalDataSize() 0x7303B0 +unsigned int D3DIndexDataBuffer::GetTotalDataSize() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void D3DIndexDataBuffer::Resize(uint newCapacity) 0x730330 +void D3DIndexDataBuffer::Resize(unsigned int newCapacity) { + plugin::CallMethod<0x730330, D3DIndexDataBuffer *, unsigned int>(this, newCapacity); +} + +// Converted from thiscall void D3DIndexDataBuffer::Setup(uint format, int _f4, uint capacity) 0x730190 +void D3DIndexDataBuffer::Setup(unsigned int format, int _f4, unsigned int capacity) { + plugin::CallMethod<0x730190, D3DIndexDataBuffer *, unsigned int, int, unsigned int>(this, format, _f4, capacity); +} + +#ifdef _D3D9_H_ +// Converted from thiscall IDirect3DIndexBuffer9* D3DIndexDataBuffer::Pop() 0x730250 +IDirect3DIndexBuffer9* D3DIndexDataBuffer::Pop() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall IDirect3DIndexBuffer9* D3DIndexDataBuffer::Pop(uint indexCount) 0x730270 +IDirect3DIndexBuffer9* D3DIndexDataBuffer::Pop(unsigned int indexCount) { + return plugin::CallMethodAndReturn(this, indexCount); +} + +// Converted from thiscall bool D3DIndexDataBuffer::Push(IDirect3DIndexBuffer9* indexBuffer) 0x730300 +bool D3DIndexDataBuffer::Push(IDirect3DIndexBuffer9* indexBuffer) { + return plugin::CallMethodAndReturn(this, indexBuffer); +} + +// Converted from thiscall bool D3DIndexDataBuffer::PushWithoutIncreasingCounter(IDirect3DIndexBuffer9* indexBuffer) 0x730B00 +bool D3DIndexDataBuffer::PushWithoutIncreasingCounter(IDirect3DIndexBuffer9* indexBuffer) { + return plugin::CallMethodAndReturn(this, indexBuffer); +} +#else +// Converted from thiscall IDirect3DIndexBuffer9* D3DIndexDataBuffer::Pop() 0x730250 +void* D3DIndexDataBuffer::Pop() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall IDirect3DIndexBuffer9* D3DIndexDataBuffer::Pop(uint indexCount) 0x730270 +void* D3DIndexDataBuffer::Pop(unsigned int indexCount) { + return plugin::CallMethodAndReturn(this, indexCount); +} + +// Converted from thiscall bool D3DIndexDataBuffer::Push(IDirect3DIndexBuffer9* indexBuffer) 0x730300 +bool D3DIndexDataBuffer::Push(void* indexBuffer) { + return plugin::CallMethodAndReturn(this, indexBuffer); +} + +// Converted from thiscall bool D3DIndexDataBuffer::PushWithoutIncreasingCounter(IDirect3DIndexBuffer9* indexBuffer) 0x730B00 +bool D3DIndexDataBuffer::PushWithoutIncreasingCounter(void* indexBuffer) { + return plugin::CallMethodAndReturn(this, indexBuffer); +} +#endif \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/D3DIndexDataBuffer.h b/third-party/plugin-sdk/plugin_sa/game_sa/D3DIndexDataBuffer.h new file mode 100644 index 00000000..6b1f5f3e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/D3DIndexDataBuffer.h @@ -0,0 +1,44 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#ifdef _DX9_SDK_INSTALLED +#include "d3d9.h" +#endif + +class D3DIndexDataBuffer { +public: + unsigned int m_nFormat; + int field_4; + unsigned int m_nCapcacity; + unsigned int m_nNumDatasInBuffer; + unsigned int m_nSize; +#ifdef _D3D9_H_ + IDirect3DIndexBuffer9 **m_apIndexData; +#else + void **m_apIndexData; +#endif + + void Clear(); + void Destroy(); + unsigned int GetTotalDataSize(); + void Resize(unsigned int newCapacity); + void Setup(unsigned int format, int _f4, unsigned int capacity); +#ifdef _D3D9_H_ + IDirect3DIndexBuffer9* Pop(); + IDirect3DIndexBuffer9* Pop(unsigned int indexCount); + bool Push(IDirect3DIndexBuffer9* indexBuffer); + bool PushWithoutIncreasingCounter(IDirect3DIndexBuffer9* indexBuffer); +#else + void* Pop(); + void* Pop(unsigned int indexCount); + bool Push(void* indexBuffer); + bool PushWithoutIncreasingCounter(void* indexBuffer); +#endif +}; + +VALIDATE_SIZE(D3DIndexDataBuffer, 0x18); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/D3DResourceSystem.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/D3DResourceSystem.cpp new file mode 100644 index 00000000..14cd05f2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/D3DResourceSystem.cpp @@ -0,0 +1,94 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "D3DResourceSystem.h" + +bool &D3DResourceSystem::UseD3DResourceBuffering = *(bool *)0x8D6084; +unsigned int &D3DResourceSystem::FreeTextureBufferIndex = *(unsigned int *)0xC87C60; +D3DTextureBuffer &D3DResourceSystem::TextureBuffer = *(D3DTextureBuffer *)0xC87C68; +D3DIndexDataBuffer &D3DResourceSystem::IndexDataBuffer = *(D3DIndexDataBuffer *)0xC87E48; + +// Converted from cdecl void D3DResourceSystem::CancelBuffering() 0x730900 +void D3DResourceSystem::CancelBuffering() { + plugin::Call<0x730900>(); +} + +// Converted from cdecl uint D3DResourceSystem::GetTotalIndexDataSize() 0x7307F0 +unsigned int D3DResourceSystem::GetTotalIndexDataSize() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl uint D3DResourceSystem::GetTotalPixelsSize() 0x730660 +unsigned int D3DResourceSystem::GetTotalPixelsSize() { + return plugin::CallAndReturn(); +} + +// Converted from cdecl void D3DResourceSystem::Init() 0x730830 +void D3DResourceSystem::Init() { + plugin::Call<0x730830>(); +} + +// Converted from cdecl void D3DResourceSystem::SetUseD3DResourceBuffering(bool bUse) 0x730AC0 +void D3DResourceSystem::SetUseD3DResourceBuffering(bool bUse) { + plugin::Call<0x730AC0, bool>(bUse); +} + +// Converted from cdecl void D3DResourceSystem::Shutdown() 0x730A00 +void D3DResourceSystem::Shutdown() { + plugin::Call<0x730A00>(); +} + +// Converted from cdecl void D3DResourceSystem::TidyUpD3DIndexBuffers(uint count) 0x730740 +void D3DResourceSystem::TidyUpD3DIndexBuffers(unsigned int count) { + plugin::Call<0x730740, unsigned int>(count); +} + +// Converted from cdecl void D3DResourceSystem::TidyUpD3DTextures(uint count) 0x7305E0 +void D3DResourceSystem::TidyUpD3DTextures(unsigned int count) { + plugin::Call<0x7305E0, unsigned int>(count); +} + +#ifdef _D3D9_H_ +// Converted from cdecl int D3DResourceSystem::CreateIndexBuffer(uint numIndices, uint format, IDirect3DIndexBuffer9 **ppIndexBuffer) 0x7306A0 +HRESULT D3DResourceSystem::CreateIndexBuffer(unsigned int numIndices, unsigned int format, IDirect3DIndexBuffer9** ppIndexBuffer) { + return plugin::CallAndReturn(numIndices, format, ppIndexBuffer); +} + +// Converted from cdecl int D3DResourceSystem::CreateTexture(int width, int height, uint format, IDirect3DTexture9 **ppTexture) 0x730510 +HRESULT D3DResourceSystem::CreateTexture(int width, int height, unsigned int format, IDirect3DTexture9** ppTexture) { + return plugin::CallAndReturn(width, height, format, ppTexture); +} + +// Converted from cdecl void D3DResourceSystem::DestroyIndexBuffer(IDirect3DIndexBuffer9 *pIndexBuffer) 0x730D30 +void D3DResourceSystem::DestroyIndexBuffer(IDirect3DIndexBuffer9* pIndexBuffer) { + plugin::Call<0x730D30, IDirect3DIndexBuffer9*>(pIndexBuffer); +} + +// Converted from cdecl void D3DResourceSystem::DestroyTexture(IDirect3DTexture9 *pTexture) 0x730B70 +void D3DResourceSystem::DestroyTexture(IDirect3DTexture9* pTexture) { + plugin::Call<0x730B70, IDirect3DTexture9*>(pTexture); +} +#else +// Converted from cdecl int D3DResourceSystem::CreateIndexBuffer(uint numIndices, uint format, IDirect3DIndexBuffer9 **ppIndexBuffer) 0x7306A0 +int D3DResourceSystem::CreateIndexBuffer(unsigned int numIndices, unsigned int format, void** ppIndexBuffer) { + return plugin::CallAndReturn(numIndices, format, ppIndexBuffer); +} + +// Converted from cdecl int D3DResourceSystem::CreateTexture(int width, int height, uint format, IDirect3DTexture9 **ppTexture) 0x730510 +int D3DResourceSystem::CreateTexture(int width, int height, unsigned int format, void** ppTexture) { + return plugin::CallAndReturn(width, height, format, ppTexture); +} + +// Converted from cdecl void D3DResourceSystem::DestroyIndexBuffer(IDirect3DIndexBuffer9 *pIndexBuffer) 0x730D30 +void D3DResourceSystem::DestroyIndexBuffer(void* pIndexBuffer) { + plugin::Call<0x730D30, void*>(pIndexBuffer); +} + +// Converted from cdecl void D3DResourceSystem::DestroyTexture(IDirect3DTexture9 *pTexture) 0x730B70 +void D3DResourceSystem::DestroyTexture(void* pTexture) { + plugin::Call<0x730B70, void*>(pTexture); +} +#endif \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/D3DResourceSystem.h b/third-party/plugin-sdk/plugin_sa/game_sa/D3DResourceSystem.h new file mode 100644 index 00000000..4628f712 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/D3DResourceSystem.h @@ -0,0 +1,42 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "D3DTextureBuffer.h" +#include "D3DIndexDataBuffer.h" +#ifdef _DX9_SDK_INSTALLED +#include "d3d9.h" +#endif + +class D3DResourceSystem { +public: + static bool &UseD3DResourceBuffering; + static unsigned int &FreeTextureBufferIndex; + static D3DTextureBuffer &TextureBuffer; + static D3DIndexDataBuffer &IndexDataBuffer; + + static void CancelBuffering(); + static unsigned int GetTotalIndexDataSize(); + static unsigned int GetTotalPixelsSize(); + static void Init(); + static void SetUseD3DResourceBuffering(bool bUse); + static void Shutdown(); + static void TidyUpD3DIndexBuffers(unsigned int count); + static void TidyUpD3DTextures(unsigned int count); + +#ifdef _D3D9_H_ + static HRESULT CreateIndexBuffer(unsigned int numIndices, unsigned int format, IDirect3DIndexBuffer9** ppIndexBuffer); + static HRESULT CreateTexture(int width, int height, unsigned int format, IDirect3DTexture9** ppTexture); + static void DestroyIndexBuffer(IDirect3DIndexBuffer9* pIndexBuffer); + static void DestroyTexture(IDirect3DTexture9* pTexture); +#else + static int CreateIndexBuffer(unsigned int numIndices, unsigned int format, void** ppIndexBuffer); + static int CreateTexture(int width, int height, unsigned int format, void** ppTexture); + static void DestroyIndexBuffer(void* pIndexBuffer); + static void DestroyTexture(void* pTexture); +#endif +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/D3DTextureBuffer.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/D3DTextureBuffer.cpp new file mode 100644 index 00000000..bd0c33d9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/D3DTextureBuffer.cpp @@ -0,0 +1,74 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "D3DTextureBuffer.h" + +// Converted from thiscall void D3DTextureBuffer::Clear() 0x72FEC0 +void D3DTextureBuffer::Clear() { + plugin::CallMethod<0x72FEC0, D3DTextureBuffer *>(this); +} + +// Converted from thiscall void D3DTextureBuffer::Destroy() 0x72FEF0 +void D3DTextureBuffer::Destroy() { + plugin::CallMethod<0x72FEF0, D3DTextureBuffer *>(this); +} + +// Converted from thiscall uint D3DTextureBuffer::GetTotalDataSize() 0x7300A0 +unsigned int D3DTextureBuffer::GetTotalDataSize() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall void D3DTextureBuffer::Resize(uint newCapacity) 0x730020 +void D3DTextureBuffer::Resize(unsigned int newCapacity) { + plugin::CallMethod<0x730020, D3DTextureBuffer *, unsigned int>(this, newCapacity); +} + +// Converted from thiscall void D3DTextureBuffer::Setup(uint format, int width, int bOneLevel, uint capacity) 0x72FE80 +void D3DTextureBuffer::Setup(unsigned int format, int width, int bOneLevel, unsigned int capacity) { + plugin::CallMethod<0x72FE80, D3DTextureBuffer *, unsigned int, int, int, unsigned int>(this, format, width, bOneLevel, capacity); +} + +#ifdef _D3D9_H_ +// Converted from thiscall IDirect3DTexture9* D3DTextureBuffer::Pop() 0x72FF40 +IDirect3DTexture9* D3DTextureBuffer::Pop() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall IDirect3DTexture9* D3DTextureBuffer::Pop(uint format, int width, int height, int bOneLevel) 0x72FF60 +IDirect3DTexture9* D3DTextureBuffer::Pop(unsigned int format, int width, int height, int bOneLevel) { + return plugin::CallMethodAndReturn(this, format, width, height, bOneLevel); +} + +// Converted from thiscall bool D3DTextureBuffer::Push(IDirect3DTexture9* texture) 0x72FFF0 +bool D3DTextureBuffer::Push(IDirect3DTexture9* texture) { + return plugin::CallMethodAndReturn(this, texture); +} + +// Converted from thiscall bool D3DTextureBuffer::PushWithoutIncreasingCounter(IDirect3DTexture9* texture) 0x730AD0 +bool D3DTextureBuffer::PushWithoutIncreasingCounter(IDirect3DTexture9* texture) { + return plugin::CallMethodAndReturn(this, texture); +} +#else +// Converted from thiscall IDirect3DTexture9* D3DTextureBuffer::Pop() 0x72FF40 +void* D3DTextureBuffer::Pop() { + return plugin::CallMethodAndReturn(this); +} + +// Converted from thiscall IDirect3DTexture9* D3DTextureBuffer::Pop(uint format, int width, int height, int bOneLevel) 0x72FF60 +void* D3DTextureBuffer::Pop(unsigned int format, int width, int height, int bOneLevel) { + return plugin::CallMethodAndReturn(this, format, width, height, bOneLevel); +} + +// Converted from thiscall bool D3DTextureBuffer::Push(IDirect3DTexture9* texture) 0x72FFF0 +bool D3DTextureBuffer::Push(void* texture) { + return plugin::CallMethodAndReturn(this, texture); +} + +// Converted from thiscall bool D3DTextureBuffer::PushWithoutIncreasingCounter(IDirect3DTexture9* texture) 0x730AD0 +bool D3DTextureBuffer::PushWithoutIncreasingCounter(void* texture) { + return plugin::CallMethodAndReturn(this, texture); +} +#endif \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/D3DTextureBuffer.h b/third-party/plugin-sdk/plugin_sa/game_sa/D3DTextureBuffer.h new file mode 100644 index 00000000..9e402d7d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/D3DTextureBuffer.h @@ -0,0 +1,45 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#ifdef _DX9_SDK_INSTALLED +#include "d3d9.h" +#endif + +class D3DTextureBuffer { +public: + unsigned int m_nFormat; + unsigned int m_nWidth; + int m_nLevels; // -1 - not defined, 0 - full-chain, 1 - one level + unsigned int m_nCapcacity; + unsigned int m_nNumTexturesInBuffer; + unsigned int m_nSize; +#ifdef _D3D9_H_ + IDirect3DTexture9 **m_apTextures; +#else + void **m_apTextures; +#endif + + void Clear(); + void Destroy(); + unsigned int GetTotalDataSize(); + void Resize(unsigned int newCapacity); + void Setup(unsigned int format, int width, int bOneLevel, unsigned int capacity); +#ifdef _D3D9_H_ + IDirect3DTexture9* Pop(); + IDirect3DTexture9* Pop(unsigned int format, int width, int height, int bOneLevel); + bool Push(IDirect3DTexture9* texture); + bool PushWithoutIncreasingCounter(IDirect3DTexture9* texture); +#else + void* Pop(); + void* Pop(unsigned int format, int width, int height, int bOneLevel); + bool Push(void* texture); + bool PushWithoutIncreasingCounter(void* texture); +#endif +}; + +VALIDATE_SIZE(D3DTextureBuffer, 0x1C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxBox_c.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/FxBox_c.cpp new file mode 100644 index 00000000..1e3f6cdb --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxBox_c.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "FxBox_c.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxBox_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/FxBox_c.h new file mode 100644 index 00000000..4e567a83 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxBox_c.h @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" + +class FxBox_c { +public: + float m_fCornerA_x; + float m_fCornerB_x; + float m_fCornerA_y; + float m_fCornerB_y; + float m_fCornerA_z; + float m_fCornerB_z; + + inline FxBox_c() { + m_fCornerA_x = m_fCornerA_y = m_fCornerA_z = 999999.0f; + m_fCornerB_x = m_fCornerB_y = m_fCornerB_z = -999999.0f; + } +}; + +VALIDATE_SIZE(FxBox_c, 0x18); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxEmitterBP_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/FxEmitterBP_c.h new file mode 100644 index 00000000..a35551ff --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxEmitterBP_c.h @@ -0,0 +1,16 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "FxPrimBP_c.h" + +class FxEmitterBP_c : public FxPrimBP_c { +public: +}; + +VALIDATE_SIZE(FxEmitterBP_c, 0x40); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxFrustumInfo_c.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/FxFrustumInfo_c.cpp new file mode 100644 index 00000000..d9d32b10 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxFrustumInfo_c.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "FxFrustumInfo_c.h" + +// Converted from thiscall bool FxFrustumInfo_c::IsCollision(FxSphere_c *sphere) 0x4AA030 +bool FxFrustumInfo_c::IsCollision(FxSphere_c* sphere) { + return ((bool(__thiscall *)(FxFrustumInfo_c*, FxSphere_c*))0x4AA030)(this, sphere); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxFrustumInfo_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/FxFrustumInfo_c.h new file mode 100644 index 00000000..b8215944 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxFrustumInfo_c.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "FxSphere_c.h" +#include "FxPlane_c.h" + +class FxFrustumInfo_c { +public: + FxSphere_c m_sphere; + FxPlane_c m_planes[4]; + + bool IsCollision(FxSphere_c* sphere); +}; + +VALIDATE_SIZE(FxFrustumInfo_c, 0x54); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxInfoManager_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/FxInfoManager_c.h new file mode 100644 index 00000000..8f13a1b2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxInfoManager_c.h @@ -0,0 +1,28 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class FxInfoManager_c { +public: + unsigned int m_nNumInfos; + void *m_pInfos; + unsigned char m_nFirstMovementInfo; + unsigned char m_nFirstRenderInfo; +private: + char _padA[2]; +public: + short m_nLodStart; + short m_nLodEnd; + bool m_bHasFlatParticleEmitter; + bool m_bHasHeatHazeParticleEmitter; + char field_12; + char field_13; +}; + +VALIDATE_SIZE(FxInfoManager_c, 0x14); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxManager_c.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/FxManager_c.cpp new file mode 100644 index 00000000..676aa58a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxManager_c.cpp @@ -0,0 +1,134 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "FxManager_c.h" + +FxManager_c &g_fxMan = *(FxManager_c *)0xA9AE80; + +// Converted from thiscall void FxManager_c::~FxManager_c() 0x4A90A0 +FxManager_c::~FxManager_c() { + ((void(__thiscall *)(FxManager_c*))0x4A90A0)(this); +} + +// Converted from thiscall FxFrustumInfo_c* FxManager_c::GetFrustumInfo(void) 0x4A9130 +FxFrustumInfo_c* FxManager_c::GetFrustumInfo() { + return ((FxFrustumInfo_c* (__thiscall *)(FxManager_c*))0x4A9130)(this); +} + +// Converted from thiscall void FxManager_c::CalcFrustumInfo(RwCamera *camera) 0x4A9140 +void FxManager_c::CalcFrustumInfo(RwCamera* camera) { + ((void(__thiscall *)(FxManager_c*, RwCamera*))0x4A9140)(this, camera); +} + +// Converted from thiscall void FxManager_c::Render(RwCamera *camera,uchar) 0x4A92A0 +void FxManager_c::Render(RwCamera* camera, unsigned char arg1) { + ((void(__thiscall *)(FxManager_c*, RwCamera*, unsigned char))0x4A92A0)(this, camera, arg1); +} + +// Converted from thiscall FxSystemBP_c* FxManager_c::FindFxSystemBP(char *name) 0x4A9360 +FxSystemBP_c* FxManager_c::FindFxSystemBP(char* name) { + return ((FxSystemBP_c* (__thiscall *)(FxManager_c*, char*))0x4A9360)(this, name); +} + +// Converted from thiscall void FxManager_c::ReturnParticle(FxEmitterPrt_c *emitter) 0x4A93B0 +void FxManager_c::ReturnParticle(FxEmitterPrt_c* emitter) { + ((void(__thiscall *)(FxManager_c*, FxEmitterPrt_c*))0x4A93B0)(this, emitter); +} + +// Converted from thiscall FxEmitterPrt_c* FxManager_c::GetParticle(signed char) 0x4A93C0 +FxEmitterPrt_c* FxManager_c::GetParticle(signed char arg0) { + return ((FxEmitterPrt_c* (__thiscall *)(FxManager_c*, signed char))0x4A93C0)(this, arg0); +} + +// Converted from thiscall void FxManager_c::SetWindData(RwV3d *dir,float *speed) 0x4A93E0 +void FxManager_c::SetWindData(RwV3d* dir, float* speed) { + ((void(__thiscall *)(FxManager_c*, RwV3d*, float*))0x4A93E0)(this, dir, speed); +} + +// Converted from thiscall void FxManager_c::FreeUpParticle(void) 0x4A9400 +void FxManager_c::FreeUpParticle() { + ((void(__thiscall *)(FxManager_c*))0x4A9400)(this); +} + +// Converted from thiscall RwMatrix* FxManager_c::FxRwMatrixCreate(void) 0x4A9440 +RwMatrix* FxManager_c::FxRwMatrixCreate() { + return ((RwMatrix* (__thiscall *)(FxManager_c*))0x4A9440)(this); +} + +// Converted from thiscall void FxManager_c::FxRwMatrixDestroy(RwMatrix *matrix) 0x4A9460 +void FxManager_c::FxRwMatrixDestroy(RwMatrix* matrix) { + ((void(__thiscall *)(FxManager_c*, RwMatrix*))0x4A9460)(this, matrix); +} + +// Converted from thiscall void FxManager_c::FxManager_c(void) 0x4A9470 +FxManager_c::FxManager_c() { + ((void(__thiscall *)(FxManager_c*))0x4A9470)(this); +} + +// Converted from thiscall bool FxManager_c::ShouldCreate(FxSystemBP_c *bpSystem,RwMatrixTag *transform,RwMatrixTag *objectMatrix,uchar ignoreBoundingChecks) 0x4A9500 +bool FxManager_c::ShouldCreate(FxSystemBP_c* bpSystem, RwMatrix* transform, RwMatrix* objectMatrix, unsigned char ignoreBoundingChecks) { + return ((bool(__thiscall *)(FxManager_c*, FxSystemBP_c*, RwMatrix*, RwMatrix*, unsigned char))0x4A9500)(this, bpSystem, transform, objectMatrix, ignoreBoundingChecks); +} + +// Converted from thiscall FxSystem_c* FxManager_c::CreateFxSystem(FxSystemBP_c *bpSystem,RwMatrixTag *transform,RwMatrixTag *objectMatrix,uchar ignoreBoundingChecks) 0x4A95C0 +FxSystem_c* FxManager_c::CreateFxSystem(FxSystemBP_c* bpSystem, RwMatrix* transform, RwMatrix* objectMatrix, unsigned char ignoreBoundingChecks) { + return ((FxSystem_c* (__thiscall *)(FxManager_c*, FxSystemBP_c*, RwMatrix*, RwMatrix*, unsigned char))0x4A95C0)(this, bpSystem, transform, objectMatrix, ignoreBoundingChecks); +} + +// Converted from thiscall FxSystem_c* FxManager_c::CreateFxSystem(FxSystemBP_c *bpSystem,RwV3d *position,RwMatrixTag *objectMatrix,uchar ignoreBoundingChecks) 0x4A96B0 +FxSystem_c* FxManager_c::CreateFxSystem(FxSystemBP_c* bpSystem, RwV3d* position, RwMatrix* objectMatrix, unsigned char ignoreBoundingChecks) { + return ((FxSystem_c* (__thiscall *)(FxManager_c*, FxSystemBP_c*, RwV3d*, RwMatrix*, unsigned char))0x4A96B0)(this, bpSystem, position, objectMatrix, ignoreBoundingChecks); +} + +// Converted from thiscall void FxManager_c::DestroyFxSystem(FxSystem_c *system) 0x4A9810 +void FxManager_c::DestroyFxSystem(FxSystem_c* system) { + ((void(__thiscall *)(FxManager_c*, FxSystem_c*))0x4A9810)(this, system); +} + +// Converted from thiscall void FxManager_c::DestroyAllFxSystems(void) 0x4A98B0 +void FxManager_c::DestroyAllFxSystems() { + ((void(__thiscall *)(FxManager_c*))0x4A98B0)(this); +} + +// Converted from thiscall bool FxManager_c::Init(void) 0x4A98E0 +bool FxManager_c::Init() { + return ((bool(__thiscall *)(FxManager_c*))0x4A98E0)(this); +} + +// Converted from thiscall void FxManager_c::Exit(void) 0x4A9A10 +void FxManager_c::Exit() { + ((void(__thiscall *)(FxManager_c*))0x4A9A10)(this); +} + +// Converted from thiscall void FxManager_c::Update(RwCamera *,float timeDelta) 0x4A9A80 +void FxManager_c::Update(RwCamera* arg0, float timeDelta) { + ((void(__thiscall *)(FxManager_c*, RwCamera*, float))0x4A9A80)(this, arg0, timeDelta); +} + +// Converted from thiscall void FxManager_c::UnloadFxProject(void) 0x4A9AE0 +void FxManager_c::UnloadFxProject() { + ((void(__thiscall *)(FxManager_c*))0x4A9AE0)(this); +} + +// Converted from thiscall FxSystem_c* FxManager_c::CreateFxSystem(char *name,RwMatrixTag *transform,RwMatrixTag *objectMatrix,uchar ignoreBoundingChecks) 0x4A9BB0 +FxSystem_c* FxManager_c::CreateFxSystem(char* name, RwMatrix* transform, RwMatrix* objectMatrix, unsigned char ignoreBoundingChecks) { + return ((FxSystem_c* (__thiscall *)(FxManager_c*, char*, RwMatrix*, RwMatrix*, unsigned char))0x4A9BB0)(this, name, transform, objectMatrix, ignoreBoundingChecks); +} + +// Converted from thiscall FxSystem_c* FxManager_c::CreateFxSystem(char *name,RwV3d *position,RwMatrixTag *objectMatrix,uchar ignoreBoundingChecks) 0x4A9BE0 +FxSystem_c* FxManager_c::CreateFxSystem(char* name, RwV3d* position, RwMatrix* objectMatrix, unsigned char ignoreBoundingChecks) { + return ((FxSystem_c* (__thiscall *)(FxManager_c*, char*, RwV3d*, RwMatrix*, unsigned char))0x4A9BE0)(this, name, position, objectMatrix, ignoreBoundingChecks); +} + +// Converted from thiscall FxSystemBP_c* FxManager_c::LoadFxSystemBP(char *filename,int file) 0x5C1F50 +FxSystemBP_c* FxManager_c::LoadFxSystemBP(char* filename, int file) { + return ((FxSystemBP_c* (__thiscall *)(FxManager_c*, char*, int))0x5C1F50)(this, filename, file); +} + +// Converted from thiscall bool FxManager_c::LoadFxProject(char *filename) 0x5C2420 +bool FxManager_c::LoadFxProject(char* filename) { + return ((bool(__thiscall *)(FxManager_c*, char*))0x5C2420)(this, filename); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxManager_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/FxManager_c.h new file mode 100644 index 00000000..05731d20 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxManager_c.h @@ -0,0 +1,63 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "List_c.h" +#include "FxFrustumInfo_c.h" +#include "FxMemoryPool_c.h" +#include "FxSystemBP_c.h" +#include "FxSystem_c.h" + +class FxEmitterPrt_c; + +class FxManager_c { +public: + TList_c m_fxSystemBPList; + TList_c m_fxSystemList; + FxEmitterPrt_c * m_pFxEmitters; + TList_c m_fxEmitterPrtList; + int m_nFxTxdIndex; + RwV3d * m_pWindDir; + float * m_pfWindSpeed; + FxFrustumInfo_c m_frustum; + unsigned int m_nCurrentMatrix; + RwMatrix * m_apMatrices[8]; + FxMemoryPool_c m_pool; + +public: + FxManager_c(); + ~FxManager_c(); + FxFrustumInfo_c* GetFrustumInfo(); + void CalcFrustumInfo(RwCamera* camera); + void Render(RwCamera* camera, unsigned char arg1); + FxSystemBP_c* FindFxSystemBP(char* name); + void ReturnParticle(FxEmitterPrt_c* emitter); + FxEmitterPrt_c* GetParticle(signed char arg0); + void SetWindData(RwV3d* dir, float* speed); + void FreeUpParticle(); + RwMatrix* FxRwMatrixCreate(); + void FxRwMatrixDestroy(RwMatrix* matrix); + bool ShouldCreate(FxSystemBP_c* bpSystem, RwMatrix* transform, RwMatrix* objectMatrix, unsigned char ignoreBoundingChecks); + FxSystem_c* CreateFxSystem(FxSystemBP_c* bpSystem, RwMatrix* transform, RwMatrix* objectMatrix, unsigned char ignoreBoundingChecks); + FxSystem_c* CreateFxSystem(FxSystemBP_c* bpSystem, RwV3d* position, RwMatrix* objectMatrix, unsigned char ignoreBoundingChecks); + void DestroyFxSystem(FxSystem_c* system); + void DestroyAllFxSystems(); + bool Init(); + void Exit(); + void Update(RwCamera* arg0, float timeDelta); + void UnloadFxProject(); + FxSystem_c* CreateFxSystem(char* name, RwMatrix* transform, RwMatrix* objectMatrix, unsigned char ignoreBoundingChecks); + FxSystem_c* CreateFxSystem(char* name, RwV3d* position, RwMatrix* objectMatrix, unsigned char ignoreBoundingChecks); + FxSystemBP_c* LoadFxSystemBP(char* filename, int file); + bool LoadFxProject(char* filename); +}; + +VALIDATE_SIZE(FxManager_c, 0xB8); + +extern PLUGIN_API FxManager_c &g_fxMan; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxMemoryPool_c.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/FxMemoryPool_c.cpp new file mode 100644 index 00000000..3bbdeeee --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxMemoryPool_c.cpp @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "FxMemoryPool_c.h" + +void FxMemoryPool_c::Optimise() +{ + ((void (__thiscall *)(FxMemoryPool_c *))0x4A9CD0)(this); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxMemoryPool_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/FxMemoryPool_c.h new file mode 100644 index 00000000..94f0e9d4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxMemoryPool_c.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "CVector.h" + +class PLUGIN_API FxMemoryPool_c +{ +public: + char *data; + unsigned int size; + unsigned int position; + + void Optimise(); +}; + +VALIDATE_SIZE(FxMemoryPool_c, 0xC); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxPlane_c.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/FxPlane_c.cpp new file mode 100644 index 00000000..b4463d0d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxPlane_c.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "FxPlane_c.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxPlane_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/FxPlane_c.h new file mode 100644 index 00000000..c48f0b2d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxPlane_c.h @@ -0,0 +1,18 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" + +class FxPlane_c { +public: + RwV3d m_vecNormal; + float m_fDistance; +}; + +VALIDATE_SIZE(FxPlane_c, 0x10); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxPrimBP_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/FxPrimBP_c.h new file mode 100644 index 00000000..c0ba9387 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxPrimBP_c.h @@ -0,0 +1,29 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "List_c.h" +#include "FxInfoManager_c.h" + +class FxPrimBP_c { +public: + char field_4; + unsigned char m_nSrcBlendId; + unsigned char m_nDstBlendId; + unsigned char m_nAlphaOn; + void* m_pMatrixBuffered; + RwTexture* m_apTextures[4]; + int field_1C; + List_c m_emitterPrts; + FxInfoManager_c m_fxInfoManager; + + virtual ~FxPrimBP_c() {} +}; + +VALIDATE_SIZE(FxPrimBP_c, 0x40); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxPrtMult_c.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/FxPrtMult_c.cpp new file mode 100644 index 00000000..afac86fa --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxPrtMult_c.cpp @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "FxPrtMult_c.h" + +// Converted from thiscall void FxPrtMult_c::FxPrtMult_c(void) 0x4AB270 +FxPrtMult_c::FxPrtMult_c() { + ((void(__thiscall *)(FxPrtMult_c*))0x4AB270)(this); +} + +// Converted from thiscall void FxPrtMult_c::FxPrtMult_c(float red,float green,float blue,float alpha,float size,float,float lastFactor) 0x4AB290 +FxPrtMult_c::FxPrtMult_c(float red, float green, float blue, float alpha, float size, float arg5, float lastFactor) { + ((void(__thiscall *)(FxPrtMult_c*, float, float, float, float, float, float, float))0x4AB290)(this, red, green, blue, alpha, size, arg5, lastFactor); +} + +// Converted from thiscall void FxPrtMult_c::SetUp(float red,float green,float blue,float alpha,float size,float,float lastFactor) 0x4AB2D0 +void FxPrtMult_c::SetUp(float red, float green, float blue, float alpha, float size, float arg5, float lastFactor) { + ((void(__thiscall *)(FxPrtMult_c*, float, float, float, float, float, float, float))0x4AB2D0)(this, red, green, blue, alpha, size, arg5, lastFactor); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxPrtMult_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/FxPrtMult_c.h new file mode 100644 index 00000000..c1898078 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxPrtMult_c.h @@ -0,0 +1,23 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "RenderWare.h" + +class FxPrtMult_c { +public: + RwRGBAReal m_color; + float m_fSize; + float field_14; + float m_fLife; + + FxPrtMult_c(); + FxPrtMult_c(float red, float green, float blue, float alpha, float size, float arg5, float lastFactor); + void SetUp(float red, float green, float blue, float alpha, float size, float arg5, float lastFactor); +}; + +VALIDATE_SIZE(FxPrtMult_c, 0x1C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxSphere_c.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/FxSphere_c.cpp new file mode 100644 index 00000000..0b6de738 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxSphere_c.cpp @@ -0,0 +1,32 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "FxSphere_c.h" + +// Converted from thiscall void FxSphere_c::FxSphere_c(void) 0x4A9F70 +FxSphere_c::FxSphere_c() { + ((void(__thiscall *)(FxSphere_c*))0x4A9F70)(this); +} + +// Converted from cdecl void* FxSphere_c::operator new(uint size,int notAligned) 0x4A9F80 +void* FxSphere_c::operator new(unsigned int size, int notAligned){ + return ((void* (__cdecl *)(unsigned int, int))0x4A9F80)(size, notAligned); +} + +// Converted from cdecl void FxSphere_c::operator delete(void *data) 0x4A9FB0 +void FxSphere_c::operator delete(void* data) { + ((void(__cdecl *)(void*))0x4A9FB0)(data); +} + +// Converted from thiscall bool FxSphere_c::IsCollision(FxSphere_c* sphere) 0x4A9FC0 +bool FxSphere_c::IsCollision(FxSphere_c* sphere) { + return ((bool(__thiscall *)(FxSphere_c*, FxSphere_c*sphere))0x4A9FC0)(this, sphere); +} + +// Converted from thiscall float FxSphere_c::GetDistToPlane(FxPlane_c *plane) 0x4AA010 +float FxSphere_c::GetDistToPlane(FxPlane_c* plane) { + return ((float(__thiscall *)(FxSphere_c*, FxPlane_c*))0x4AA010)(this, plane); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxSphere_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/FxSphere_c.h new file mode 100644 index 00000000..5e0eebea --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxSphere_c.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "FxPlane_c.h" + +class FxSphere_c { +public: + RwV3d m_vecCenter; + float m_fRadius; + unsigned int m_nNumPlanesPassed; + + FxSphere_c(); + static void* operator new(unsigned int size, int notAligned); + static void operator delete(void* data); + bool IsCollision(FxSphere_c* sphere); + float GetDistToPlane(FxPlane_c* plane); +}; + +VALIDATE_SIZE(FxSphere_c, 0x14); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxSystemBP_c.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/FxSystemBP_c.cpp new file mode 100644 index 00000000..0c62420f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxSystemBP_c.cpp @@ -0,0 +1,57 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "FxSystemBP_c.h" + +// Converted from thiscall void FxSystemBP_c::FxSystemBP_c(void) 0x4AA0D0 +FxSystemBP_c::FxSystemBP_c() { + ((void(__thiscall *)(FxSystemBP_c*))0x4AA0D0)(this); +} + +// Converted from thiscall void FxSystemBP_c::~FxSystemBP_c() 0x4AA0F0 +FxSystemBP_c::~FxSystemBP_c() { + ((void(__thiscall *)(FxSystemBP_c*))0x4AA0F0)(this); +} + +// Converted from cdecl void* FxSystemBP_c::operator new(uint size) 0x4AA100 +void* FxSystemBP_c::operator new(unsigned int size){ + return ((void* (__cdecl *)(unsigned int))0x4AA100)(size); +} + +// Converted from thiscall void FxSystemBP_c::Unload(void) 0x4AA120 +void FxSystemBP_c::Unload() { + ((void(__thiscall *)(FxSystemBP_c*))0x4AA120)(this); +} + +// Converted from thiscall uint FxSystemBP_c::Update(float) 0x4AA130 +unsigned int FxSystemBP_c::Update(float arg0) { + return ((unsigned int(__thiscall *)(FxSystemBP_c*, float))0x4AA130)(this, arg0); +} + +// Converted from thiscall void FxSystemBP_c::Render(RwCamera *camera,float,uchar) 0x4AA160 +void FxSystemBP_c::Render(RwCamera* camera, float arg1, unsigned char arg2) { + ((void(__thiscall *)(FxSystemBP_c*, RwCamera*, float, unsigned char))0x4AA160)(this, camera, arg1, arg2); +} + +// Converted from thiscall bool FxSystemBP_c::FreePrtFromSystem(FxSystem_c *system) 0x4AA1B0 +bool FxSystemBP_c::FreePrtFromSystem(FxSystem_c* system) { + return ((bool(__thiscall *)(FxSystemBP_c*, FxSystem_c*))0x4AA1B0)(this, system); +} + +// Converted from thiscall FxSphere_c* FxSystemBP_c::GetBoundingSphere(void) 0x4AA1F0 +FxSphere_c* FxSystemBP_c::GetBoundingSphere() { + return ((FxSphere_c* (__thiscall *)(FxSystemBP_c*))0x4AA1F0)(this); +} + +// Converted from thiscall void FxSystemBP_c::SetBoundingSphere(RwV3d *center,float radius) 0x4AA200 +void FxSystemBP_c::SetBoundingSphere(RwV3d* center, float radius) { + ((void(__thiscall *)(FxSystemBP_c*, RwV3d*, float))0x4AA200)(this, center, radius); +} + +// Converted from thiscall void FxSystemBP_c::Load(char *filename,int file,int version) 0x5C05F0 +void FxSystemBP_c::Load(char* filename, int file, int version) { + ((void(__thiscall *)(FxSystemBP_c*, char*, int, int))0x5C05F0)(this, filename, file, version); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxSystemBP_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/FxSystemBP_c.h new file mode 100644 index 00000000..3d83d2cb --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxSystemBP_c.h @@ -0,0 +1,40 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "ListItem_c.h" +#include "FxSphere_c.h" + +class FxSystem_c; + +/* FX System BluePrint */ + +class FxSystemBP_c : public ListItem_c { +public: + unsigned int m_nNameKey; + float m_fLength; + float m_fLoopIntervalMin; + float m_fLoopLength; + short m_nCullDist; + unsigned char m_nPlayMode; + unsigned char m_nNumEmitters; + void **m_emittersList; + FxSphere_c *m_pBoundingSphere; + + FxSystemBP_c(); + ~FxSystemBP_c(); + static void* operator new(unsigned int size); + void Unload(); + unsigned int Update(float arg0); + void Render(RwCamera* camera, float arg1, unsigned char arg2); + bool FreePrtFromSystem(FxSystem_c* system); + FxSphere_c* GetBoundingSphere(); + void SetBoundingSphere(RwV3d* center, float radius); + void Load(char* filename, int file, int version); +}; + +VALIDATE_SIZE(FxSystemBP_c, 0x24); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxSystem_c.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/FxSystem_c.cpp new file mode 100644 index 00000000..cd2ef680 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxSystem_c.cpp @@ -0,0 +1,187 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "FxSystem_c.h" + +// Converted from thiscall void FxSystem_c::~FxSystem_c() 0x4AA260 +FxSystem_c::~FxSystem_c() { + ((void(__thiscall *)(FxSystem_c*))0x4AA260)(this); +} + +// Converted from thiscall void FxSystem_c::Play(void) 0x4AA2F0 +void FxSystem_c::Play() { + ((void(__thiscall *)(FxSystem_c*))0x4AA2F0)(this); +} + +// Converted from thiscall void FxSystem_c::Pause(void) 0x4AA370 +void FxSystem_c::Pause() { + ((void(__thiscall *)(FxSystem_c*))0x4AA370)(this); +} + +// Converted from thiscall void FxSystem_c::Stop(void) 0x4AA390 +void FxSystem_c::Stop() { + ((void(__thiscall *)(FxSystem_c*))0x4AA390)(this); +} + +// Converted from thiscall void FxSystem_c::PlayAndKill(void) 0x4AA3D0 +void FxSystem_c::PlayAndKill() { + ((void(__thiscall *)(FxSystem_c*))0x4AA3D0)(this); +} + +// Converted from thiscall void FxSystem_c::Kill(void) 0x4AA3F0 +void FxSystem_c::Kill() { + ((void(__thiscall *)(FxSystem_c*))0x4AA3F0)(this); +} + +// Converted from thiscall void FxSystem_c::AttachToBone(CEntity *entity,int boneId) 0x4AA400 +void FxSystem_c::AttachToBone(CEntity* entity, int boneId) { + ((void(__thiscall *)(FxSystem_c*, CEntity*, int))0x4AA400)(this, entity, boneId); +} + +// Converted from thiscall void FxSystem_c::AddParticle(RwV3d *position,RwV3d *velocity,float,FxPrtMult_c *prtMult,float,float brightness,float,uchar) 0x4AA440 +void FxSystem_c::AddParticle(RwV3d* position, RwV3d* velocity, float arg2, FxPrtMult_c* prtMult, float arg4, float brightness, float arg6, unsigned char arg7) { + ((void(__thiscall *)(FxSystem_c*, RwV3d*, RwV3d*, float, FxPrtMult_c*, float, float, float, unsigned char))0x4AA440)(this, position, velocity, arg2, prtMult, arg4, brightness, arg6, arg7); +} + +// Converted from thiscall void FxSystem_c::AddParticle(RwMatrixTag *transform,RwV3d *position,float,FxPrtMult_c *prtMult,float,float,float,uchar) 0x4AA540 +void FxSystem_c::AddParticle(RwMatrixTag* transform, RwV3d* position, float arg2, FxPrtMult_c* prtMult, float arg4, float arg5, float arg6, unsigned char arg7) { + ((void(__thiscall *)(FxSystem_c*, RwMatrixTag*, RwV3d*, float, FxPrtMult_c*, float, float, float, unsigned char))0x4AA540)(this, transform, position, arg2, prtMult, arg4, arg5, arg6, arg7); +} + +// Converted from thiscall void FxSystem_c::EnablePrim(int primIndex,uchar enable) 0x4AA610 +void FxSystem_c::EnablePrim(int primIndex, unsigned char enable) { + ((void(__thiscall *)(FxSystem_c*, int, unsigned char))0x4AA610)(this, primIndex, enable); +} + +// Converted from thiscall void FxSystem_c::SetMatrix(RwMatrixTag *matrix) 0x4AA630 +void FxSystem_c::SetMatrix(RwMatrixTag* matrix) { + ((void(__thiscall *)(FxSystem_c*, RwMatrixTag*))0x4AA630)(this, matrix); +} + +// Converted from thiscall void FxSystem_c::SetOffsetPos(RwV3d *pos) 0x4AA660 +void FxSystem_c::SetOffsetPos(RwV3d* pos) { + ((void(__thiscall *)(FxSystem_c*, RwV3d*))0x4AA660)(this, pos); +} + +// Converted from thiscall void FxSystem_c::AddOffsetPos(RwV3d *pos) 0x4AA690 +void FxSystem_c::AddOffsetPos(RwV3d* pos) { + ((void(__thiscall *)(FxSystem_c*, RwV3d*))0x4AA690)(this, pos); +} + +// Converted from thiscall void FxSystem_c::SetConstTime(uchar,float amount) 0x4AA6C0 +void FxSystem_c::SetConstTime(unsigned char arg0, float amount) { + ((void(__thiscall *)(FxSystem_c*, unsigned char, float))0x4AA6C0)(this, arg0, amount); +} + +// Converted from thiscall void FxSystem_c::SetRateMult(float mult) 0x4AA6F0 +void FxSystem_c::SetRateMult(float mult) { + ((void(__thiscall *)(FxSystem_c*, float))0x4AA6F0)(this, mult); +} + +// Converted from thiscall void FxSystem_c::SetTimeMult(float mult) 0x4AA710 +void FxSystem_c::SetTimeMult(float mult) { + ((void(__thiscall *)(FxSystem_c*, float))0x4AA710)(this, mult); +} + +// Converted from thiscall void FxSystem_c::SetVelAdd(RwV3d *velAdd) 0x4AA730 +void FxSystem_c::SetVelAdd(RwV3d* velAdd) { + ((void(__thiscall *)(FxSystem_c*, RwV3d*))0x4AA730)(this, velAdd); +} + +// Converted from thiscall bool FxSystem_c::Init(FxSystemBP_c *,RwMatrixTag *local,RwMatrixTag *parent) 0x4AA750 +bool FxSystem_c::Init(FxSystemBP_c* arg0, RwMatrixTag* local, RwMatrixTag* parent) { + return ((bool(__thiscall *)(FxSystem_c*, FxSystemBP_c*, RwMatrixTag*, RwMatrixTag*))0x4AA750)(this, arg0, local, parent); +} + +// Converted from thiscall void FxSystem_c::Exit(void) 0x4AA840 +void FxSystem_c::Exit() { + ((void(__thiscall *)(FxSystem_c*))0x4AA840)(this); +} + +// Converted from thiscall void FxSystem_c::CopyParentMatrix(void) 0x4AA890 +void FxSystem_c::CopyParentMatrix() { + ((void(__thiscall *)(FxSystem_c*))0x4AA890)(this); +} + +// Converted from thiscall void FxSystem_c::GetCompositeMatrix(RwMatrixTag *out) 0x4AA8C0 +void FxSystem_c::GetCompositeMatrix(RwMatrixTag* out) { + ((void(__thiscall *)(FxSystem_c*, RwMatrixTag*))0x4AA8C0)(this, out); +} + +// Converted from thiscall void FxSystem_c::GetPlayStatus(void) 0x4AA900 +void FxSystem_c::GetPlayStatus() { + ((void(__thiscall *)(FxSystem_c*))0x4AA900)(this); +} + +// Converted from thiscall void FxSystem_c::SetLocalParticles(uchar enable) 0x4AA910 +void FxSystem_c::SetLocalParticles(unsigned char enable) { + ((void(__thiscall *)(FxSystem_c*, unsigned char))0x4AA910)(this, enable); +} + +// Converted from thiscall unsigned int FxSystem_c::ForAllParticles(void *callback,void *data) 0x4AA930 +unsigned int FxSystem_c::ForAllParticles(void(*callback)(Particle_c *, int, void **), void* data) { + return ((unsigned int (__thiscall *)(FxSystem_c*, void(*)(Particle_c *, int, void **), void*))0x4AA930)(this, callback, data); +} + +// Converted from cdecl void FxSystem_c::UpdateBoundingBoxCB(Particle_c *particle,int,void **data) 0x4AA9A0 +void FxSystem_c::UpdateBoundingBoxCB(Particle_c* particle, int arg1, void** data) { + ((void(__cdecl *)(Particle_c*, int, void**))0x4AA9A0)(particle, arg1, data); +} + +// Converted from thiscall void FxSystem_c::GetBoundingBox(FxBox_c *out) 0x4AAA40 +void FxSystem_c::GetBoundingBox(FxBox_c* out) { + ((void(__thiscall *)(FxSystem_c*, FxBox_c*))0x4AAA40)(this, out); +} + +// Converted from thiscall bool FxSystem_c::GetBoundingSphereWld(FxSphere_c *out) 0x4AAAD0 +bool FxSystem_c::GetBoundingSphereWld(FxSphere_c* out) { + return ((bool(__thiscall *)(FxSystem_c*, FxSphere_c*))0x4AAAD0)(this, out); +} + +// Converted from thiscall bool FxSystem_c::GetBoundingSphereLcl(FxSphere_c *out) 0x4AAB50 +bool FxSystem_c::GetBoundingSphereLcl(FxSphere_c* out) { + return ((bool(__thiscall *)(FxSystem_c*, FxSphere_c*))0x4AAB50)(this, out); +} + +// Converted from thiscall void FxSystem_c::SetBoundingSphere(FxSphere_c *bound) 0x4AAB80 +void FxSystem_c::SetBoundingSphere(FxSphere_c* bound) { + ((void(__thiscall *)(FxSystem_c*, FxSphere_c*))0x4AAB80)(this, bound); +} + +// Converted from thiscall void FxSystem_c::ResetBoundingSphere(void) 0x4AABF0 +void FxSystem_c::ResetBoundingSphere() { + ((void(__thiscall *)(FxSystem_c*))0x4AABF0)(this); +} + +// Converted from thiscall void FxSystem_c::SetZTestEnable(uchar enable) 0x4AAC50 +void FxSystem_c::SetZTestEnable(unsigned char enable) { + ((void(__thiscall *)(FxSystem_c*, unsigned char))0x4AAC50)(this, enable); +} + +// Converted from thiscall void FxSystem_c::SetMustCreatePrts(uchar enable) 0x4AAC70 +void FxSystem_c::SetMustCreatePrts(unsigned char enable) { + ((void(__thiscall *)(FxSystem_c*, unsigned char))0x4AAC70)(this, enable); +} + +// Converted from thiscall void FxSystem_c::DoFxAudio(CVector posn) 0x4AAC90 +void FxSystem_c::DoFxAudio(CVector posn) { + ((void(__thiscall *)(FxSystem_c*, CVector))0x4AAC90)(this, posn); +} + +// Converted from thiscall void FxSystem_c::FxSystem_c(void) 0x4AAF00 +FxSystem_c::FxSystem_c() { + ((void(__thiscall *)(FxSystem_c*))0x4AAF00)(this); +} + +// Converted from thiscall bool FxSystem_c::IsVisible(void) 0x4AAF30 +bool FxSystem_c::IsVisible() { + return ((bool(__thiscall *)(FxSystem_c*))0x4AAF30)(this); +} + +// Converted from thiscall bool FxSystem_c::Update(RwCamera *camera,float timeDelta) 0x4AAF70 +bool FxSystem_c::Update(RwCamera* camera, float timeDelta) { + return ((bool(__thiscall *)(FxSystem_c*, RwCamera*, float))0x4AAF70)(this, camera, timeDelta); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/FxSystem_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/FxSystem_c.h new file mode 100644 index 00000000..4bfce9bc --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/FxSystem_c.h @@ -0,0 +1,99 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "List_c.h" +#include "RenderWare.h" +#include "CVector.h" +#include "CAEFireAudioEntity.h" +#include "FxPrtMult_c.h" +#include "FxSphere_c.h" +#include "FxBox_c.h" + +enum eFxSystemKillStatus { + FX_NOT_KILLED = 0, + FX_PLAY_AND_KILL = 1, + FX_KILLED = 2 +}; + +enum eFxSystemPlayStatus { + FX_PLAYING = 0, + FX_STOPPED = 1 +}; + +class FxSystemBP_c; +class Particle_c; + +class FxSystem_c : public ListItem_c { +public: + // ListItem_c m_link; + void *m_pBlueprint; + RwMatrix *m_pParentMatrix; + RwMatrix m_localMatrix; + unsigned char m_nPlayStatus; // see eFxSystemPlayStatus + unsigned char m_nKillStatus; // see eFxSystemKillStatus + unsigned char m_bConstTimeSet; + char field_53; + int field_54; + float m_fCameraDistance; + unsigned short m_nConstTime; + unsigned short m_nRateMult; + unsigned short m_nTimeMult; + struct { + unsigned char bOwnedParentMatrix: 1; + unsigned char bLocalParticles : 1; + unsigned char bZTestEnabled : 1; + unsigned char bUnknown4 : 1; + unsigned char bUnknown5 : 1; + unsigned char bMustCreatePtrs : 1; + } m_nFlags; + char field_63; + float fUnkRandom; + CVector m_vecVelAdd; + void *m_pBounding; + void **m_pPrimsPtrList; + char m_fireAudio[0x88]; // CAEFireAudioEntity + + CAEFireAudioEntity *GetFireAudio() { return reinterpret_cast(m_fireAudio); } + + FxSystem_c(); + ~FxSystem_c(); + void Play(); + void Pause(); + void Stop(); + void PlayAndKill(); + void Kill(); + void AttachToBone(CEntity* entity, int boneId); + void AddParticle(RwV3d* position, RwV3d* velocity, float arg2, FxPrtMult_c* prtMult, float arg4, float brightness, float arg6, unsigned char arg7); + void AddParticle(RwMatrixTag* transform, RwV3d* position, float arg2, FxPrtMult_c* prtMult, float arg4, float arg5, float arg6, unsigned char arg7); + void EnablePrim(int primIndex, unsigned char enable); + void SetMatrix(RwMatrixTag* matrix); + void SetOffsetPos(RwV3d* pos); + void AddOffsetPos(RwV3d* pos); + void SetConstTime(unsigned char arg0, float amount); + void SetRateMult(float mult); + void SetTimeMult(float mult); + void SetVelAdd(RwV3d* velAdd); + bool Init(FxSystemBP_c* arg0, RwMatrixTag* local, RwMatrixTag* parent); + void Exit(); + void CopyParentMatrix(); + void GetCompositeMatrix(RwMatrixTag* out); + void GetPlayStatus(); + void SetLocalParticles(unsigned char enable); + unsigned int ForAllParticles(void(*callback)(Particle_c *, int, void **), void* data); + static void UpdateBoundingBoxCB(Particle_c* particle, int arg1, void** data); + void GetBoundingBox(FxBox_c* out); + bool GetBoundingSphereWld(FxSphere_c* out); + bool GetBoundingSphereLcl(FxSphere_c* out); + void SetBoundingSphere(FxSphere_c* bound); + void ResetBoundingSphere(); + void SetZTestEnable(unsigned char enable); + void SetMustCreatePrts(unsigned char enable); + void DoFxAudio(CVector posn); + bool IsVisible(); + bool Update(RwCamera* camera, float timeDelta); +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/Fx_c.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/Fx_c.cpp new file mode 100644 index 00000000..b446e417 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/Fx_c.cpp @@ -0,0 +1,214 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "Fx_c.h" + +Fx_c &g_fx = *(Fx_c *)0xA9AE00; + +// Converted from thiscall void Fx_c::Fx_c(void) 0x49E620 +Fx_c::Fx_c() { + ((void(__thiscall *)(Fx_c*))0x49E620)(this); +} + +// Converted from thiscall void Fx_c::~Fx_c() 0x49E630 +Fx_c::~Fx_c() { + ((void(__thiscall *)(Fx_c*))0x49E630)(this); +} + +// Converted from thiscall void Fx_c::Update(RwCamera *camera, float timeDelta) 0x49E640 +void Fx_c::Update(RwCamera* camera, float timeDelta) { + ((void(__thiscall *)(Fx_c*, RwCamera*, float))0x49E640)(this, camera, timeDelta); +} + +// Converted from thiscall void Fx_c::Render(RwCamera *camera, uchar) 0x49E650 +void Fx_c::Render(RwCamera* camera, unsigned char arg1) { + ((void(__thiscall *)(Fx_c*, RwCamera*, unsigned char))0x49E650)(this, camera, arg1); +} + +// Converted from thiscall void Fx_c::InitStaticSystems(void) 0x49E660 +void Fx_c::InitStaticSystems() { + ((void(__thiscall *)(Fx_c*))0x49E660)(this); +} + +// Converted from thiscall void Fx_c::ExitStaticSystems(void) 0x49E850 +void Fx_c::ExitStaticSystems() { + ((void(__thiscall *)(Fx_c*))0x49E850)(this); +} + +// Converted from thiscall void Fx_c::CreateMatFromVec(RwMatrix *out, CVector *origin, CVector *target) 0x49E950 +void Fx_c::CreateMatFromVec(RwMatrix* out, CVector* origin, CVector* direction) { + ((void(__thiscall *)(Fx_c*, RwMatrix*, CVector*, CVector*))0x49E950)(this, out, origin, direction); +} + +// Converted from thiscall void Fx_c::SetFxQuality(FxQuality_e quality) 0x49EA40 +void Fx_c::SetFxQuality(FxQuality_e quality) { + ((void(__thiscall *)(Fx_c*, FxQuality_e))0x49EA40)(this, quality); +} + +// Converted from thiscall int Fx_c::GetFxQuality(void) 0x49EA50 +FxQuality_e Fx_c::GetFxQuality() { + return ((FxQuality_e (__thiscall *)(Fx_c*))0x49EA50)(this); +} + +// Converted from thiscall void Fx_c::InitEntitySystems(void) 0x49EA60 +void Fx_c::InitEntitySystems() { + ((void(__thiscall *)(Fx_c*))0x49EA60)(this); +} + +// Converted from thiscall bool Fx_c::Init(void) 0x49EA90 +bool Fx_c::Init() { + return ((bool(__thiscall *)(Fx_c*))0x49EA90)(this); +} + +// Converted from thiscall void Fx_c::Reset(void) 0x49EAE0 +void Fx_c::Reset() { + ((void(__thiscall *)(Fx_c*))0x49EAE0)(this); +} + +// Converted from thiscall void Fx_c::AddBlood(CVector &origin, CVector &direction, int amount, float) 0x49EB00 +void Fx_c::AddBlood(CVector& origin, CVector& direction, int amount, float arg3) { + ((void(__thiscall *)(Fx_c*, CVector&, CVector&, int, float))0x49EB00)(this, origin, direction, amount, arg3); +} + +// Converted from thiscall void Fx_c::AddWood(CVector &origin, CVector &direction, int amount, float) 0x49EE10 +void Fx_c::AddWood(CVector& origin, CVector& direction, int amount, float arg3) { + ((void(__thiscall *)(Fx_c*, CVector&, CVector&, int, float))0x49EE10)(this, origin, direction, amount, arg3); +} + +// Converted from thiscall void Fx_c::AddSparks(CVector &origin, CVector &direction, float force, int amount, CVector across, uchar sparksType, float spread, float life) 0x49F040 +void Fx_c::AddSparks(CVector& origin, CVector& direction, float force, int amount, CVector across, unsigned char sparksType, float spread, float life) { + ((void(__thiscall *)(Fx_c*, CVector&, CVector&, float, int, CVector, unsigned char, float, float))0x49F040)(this, origin, direction, force, amount, across, sparksType, spread, life); +} + +// Converted from thiscall void Fx_c::AddTyreBurst(CVector &position,CVector &velocity) 0x49F300 +void Fx_c::AddTyreBurst(CVector& position, CVector& velocity) { + ((void(__thiscall *)(Fx_c*, CVector&, CVector&))0x49F300)(this, position, velocity); +} + +// Converted from thiscall void Fx_c::AddBulletImpact(CVector &position,CVector &direction,int bulletFxType,int amount,float) 0x49F3D0 +void Fx_c::AddBulletImpact(CVector& position, CVector& direction, int bulletFxType, int amount, float arg4) { + ((void(__thiscall *)(Fx_c*, CVector&, CVector&, int, int, float))0x49F3D0)(this, position, direction, bulletFxType, amount, arg4); +} + +// Converted from thiscall void Fx_c::AddPunchImpact(CVector &position,CVector &velocity,int) 0x49F670 +void Fx_c::AddPunchImpact(CVector& position, CVector& velocity, int arg2) { + ((void(__thiscall *)(Fx_c*, CVector&, CVector&, int))0x49F670)(this, position, velocity, arg2); +} + +// Converted from thiscall void Fx_c::AddDebris(CVector &position,RwRGBA &color,float scale,int amount) 0x49F750 +void Fx_c::AddDebris(CVector& position, RwRGBA& color, float scale, int amount) { + ((void(__thiscall *)(Fx_c*, CVector&, RwRGBA&, float, int))0x49F750)(this, position, color, scale, amount); +} + +// Converted from thiscall void Fx_c::AddGlass(CVector &position,RwRGBA &color,float scale,int amount) 0x49F970 +void Fx_c::AddGlass(CVector& position, RwRGBA& color, float scale, int amount) { + ((void(__thiscall *)(Fx_c*, CVector&, RwRGBA&, float, int))0x49F970)(this, position, color, scale, amount); +} + +// Converted from thiscall void Fx_c::AddWheelSpray(CVehicle *vehicle,CVector position,uchar,uchar,float) 0x49FB30 +void Fx_c::AddWheelSpray(CVehicle* vehicle, CVector position, unsigned char arg2, unsigned char arg3, float arg4) { + ((void(__thiscall *)(Fx_c*, CVehicle*, CVector, unsigned char, unsigned char, float))0x49FB30)(this, vehicle, position, arg2, arg3, arg4); +} + +// Converted from thiscall void Fx_c::AddWheelGrass(CVehicle *vehicle,CVector position,uchar,float) 0x49FF20 +void Fx_c::AddWheelGrass(CVehicle* vehicle, CVector position, unsigned char arg2, float arg3) { + ((void(__thiscall *)(Fx_c*, CVehicle*, CVector, unsigned char, float))0x49FF20)(this, vehicle, position, arg2, arg3); +} + +// Converted from thiscall void Fx_c::AddWheelGravel(CVehicle *vehicle,CVector position,uchar,float) 0x4A0170 +void Fx_c::AddWheelGravel(CVehicle* vehicle, CVector position, unsigned char arg2, float arg3) { + ((void(__thiscall *)(Fx_c*, CVehicle*, CVector, unsigned char, float))0x4A0170)(this, vehicle, position, arg2, arg3); +} + +// Converted from thiscall void Fx_c::AddWheelMud(CVehicle *vehicle,CVector position,uchar,float) 0x4A03C0 +void Fx_c::AddWheelMud(CVehicle* vehicle, CVector position, unsigned char arg2, float arg3) { + ((void(__thiscall *)(Fx_c*, CVehicle*, CVector, unsigned char, float))0x4A03C0)(this, vehicle, position, arg2, arg3); +} + +// Converted from thiscall void Fx_c::AddWheelSand(CVehicle *vehicle,CVector position,uchar,float) 0x4A0610 +void Fx_c::AddWheelSand(CVehicle* vehicle, CVector position, unsigned char arg2, float arg3) { + ((void(__thiscall *)(Fx_c*, CVehicle*, CVector, unsigned char, float))0x4A0610)(this, vehicle, position, arg2, arg3); +} + +// Converted from thiscall void Fx_c::AddWheelDust(CVehicle *vehicle,CVector position,uchar,float) 0x4A09C0 +void Fx_c::AddWheelDust(CVehicle* vehicle, CVector position, unsigned char arg2, float arg3) { + ((void(__thiscall *)(Fx_c*, CVehicle*, CVector, unsigned char, float))0x4A09C0)(this, vehicle, position, arg2, arg3); +} + +// Converted from thiscall void Fx_c::TriggerWaterHydrant(CVector &position) 0x4A0D70 +void Fx_c::TriggerWaterHydrant(CVector& position) { + ((void(__thiscall *)(Fx_c*, CVector&))0x4A0D70)(this, position); +} + +// Converted from thiscall void Fx_c::TriggerGunshot(CEntity *entity,CVector &origin,CVector &target,bool doGunflash) 0x4A0DE0 +void Fx_c::TriggerGunshot(CEntity* entity, CVector& origin, CVector& target, bool doGunflash) { + ((void(__thiscall *)(Fx_c*, CEntity*, CVector&, CVector&, bool))0x4A0DE0)(this, entity, origin, target, doGunflash); +} + +// Converted from thiscall void Fx_c::TriggerTankFire(CVector &origin,CVector &target) 0x4A0FA0 +void Fx_c::TriggerTankFire(CVector& origin, CVector& target) { + ((void(__thiscall *)(Fx_c*, CVector&, CVector&))0x4A0FA0)(this, origin, target); +} + +// Converted from thiscall void Fx_c::TriggerWaterSplash(CVector &position) 0x4A1070 +void Fx_c::TriggerWaterSplash(CVector& position) { + ((void(__thiscall *)(Fx_c*, CVector&))0x4A1070)(this, position); +} + +// Converted from thiscall void Fx_c::TriggerBulletSplash(CVector &position) 0x4A10E0 +void Fx_c::TriggerBulletSplash(CVector& position) { + ((void(__thiscall *)(Fx_c*, CVector&))0x4A10E0)(this, position); +} + +// Converted from thiscall void Fx_c::TriggerFootSplash(CVector &position) 0x4A1150 +void Fx_c::TriggerFootSplash(CVector& position) { + ((void(__thiscall *)(Fx_c*, CVector&))0x4A1150)(this, position); +} + +// Converted from thiscall void Fx_c::CreateEntityFx(CEntity *entity,char *fxName,RwV3d *position,RwMatrix *transform) 0x4A11E0 +void Fx_c::CreateEntityFx(CEntity* entity, char* fxName, RwV3d* position, RwMatrix* transform) { + ((void(__thiscall *)(Fx_c*, CEntity*, char*, RwV3d*, RwMatrix*))0x4A11E0)(this, entity, fxName, position, transform); +} + +// Converted from thiscall void Fx_c::DestroyEntityFx(CEntity *entity) 0x4A1280 +void Fx_c::DestroyEntityFx(CEntity* entity) { + ((void(__thiscall *)(Fx_c*, CEntity*))0x4A1280)(this, entity); +} + +// Converted from thiscall void Fx_c::ExitEntitySystems(void) 0x4A12D0 +void Fx_c::ExitEntitySystems() { + ((void(__thiscall *)(Fx_c*))0x4A12D0)(this); +} + +// Converted from thiscall void Fx_c::Exit(void) 0x4A1320 +void Fx_c::Exit() { + ((void(__thiscall *)(Fx_c*))0x4A1320)(this); +} + +// Converted from cdecl void RenderBegin(RwRaster *raster,RwMatrix *transform,uint transformRenderFlags) 0x4A13B0 +void RenderBegin(RwRaster* raster, RwMatrix* transform, unsigned int transformRenderFlags) { + ((void(__cdecl *)(RwRaster*, RwMatrix*, unsigned int))0x4A13B0)(raster, transform, transformRenderFlags); +} + +// Converted from cdecl void RenderAddTri(float x1,float y1,float z1,float x2,float y2,float z2,float x3,float y3,float z3,float u1,float v1,float u2,float v2,float u3,float v3,int r1,int g1,int b1,int a1,int r2,int g2,int b2,int a2,int r3,int g3,int b3,int a3) 0x4A1410 +void RenderAddTri(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float u1, float v1, float u2, float v2, float u3, float v3, int r1, int g1, int b1, int a1, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3) { + ((void(__cdecl *)(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, int, int, int, int, int, int, int, int, int, int, int, int))0x4A1410)(x1, y1, z1, x2, y2, z2, x3, y3, z3, u1, v1, u2, v2, u3, v3, r1, g1, b1, a1, r2, g2, b2, a2, r3, g3, b3, a3); +} + +// Converted from cdecl void RenderEnd(void) 0x4A1600 +void RenderEnd() { + ((void(__cdecl *)())0x4A1600)(); +} + +// Converted from cdecl void RotateVecIntoVec(RwV3d *vectorsOut,RwV3d *vectorsIn,RwV3d *dir) 0x4A1660 +void RotateVecIntoVec(RwV3d* vectorsOut, RwV3d* vectorsIn, RwV3d* dir) { + ((void(__cdecl *)(RwV3d*, RwV3d*, RwV3d*))0x4A1660)(vectorsOut, vectorsIn, dir); +} + +// Converted from cdecl void RotateVecAboutVec(RwV3d *out,RwV3d *,RwV3d *,float angle) 0x4A1780 +void RotateVecAboutVec(RwV3d* out, RwV3d* arg1, RwV3d* arg2, float angle) { + ((void(__cdecl *)(RwV3d*, RwV3d*, RwV3d*, float))0x4A1780)(out, arg1, arg2, angle); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/Fx_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/Fx_c.h new file mode 100644 index 00000000..6280e998 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/Fx_c.h @@ -0,0 +1,99 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" +#include "FxManager_c.h" + +enum FxQuality_e : unsigned int +{ + FXQUALITY_LOW, + FXQUALITY_MEDIUM, + FXQUALITY_HIGH, + FXQUALITY_VERY_HIGH +}; + +class CVehicle; + +class Fx_c { +public: + FxSystem_c *m_pPrtBlood; + FxSystem_c *m_pPrtBoatsplash; + FxSystem_c *m_pPrtBubble; + FxSystem_c *m_pPrtCardebris; + FxSystem_c *m_pPrtCollisionsmoke; + FxSystem_c *m_pPrtGunshell; + FxSystem_c *m_pPrtSand; + FxSystem_c *m_pPrtSand2; + FxSystem_c *m_pPrtSmoke_huge; + FxSystem_c *m_pPrtSmokeII3expand; + FxSystem_c *m_pPrtSpark; + FxSystem_c *m_pPrtSpark2; + FxSystem_c *m_pPrtSplash; + FxSystem_c *m_pPrtWake; + FxSystem_c *m_pPrtWatersplash; + FxSystem_c *m_pPrtWheeldirt; + FxSystem_c *m_pPrtGlass; + TList_c m_entityFxList; + unsigned int m_nBloodPoolsCount; + FxQuality_e m_fxQuality; + unsigned int m_nVerticesCount2; + unsigned int m_nVerticesCount; + unsigned int m_nTransformRenderFlags; + RwRaster *m_pRasterToRender; + RwMatrix *m_pTransformLTM; + void *m_pVerts; + + Fx_c(); + ~Fx_c(); + void Update(RwCamera* camera, float timeDelta); + void Render(RwCamera* camera, unsigned char arg1); + void InitStaticSystems(); + void ExitStaticSystems(); + void CreateMatFromVec(RwMatrix* out, CVector* origin, CVector* direction); + void SetFxQuality(FxQuality_e quality); + FxQuality_e GetFxQuality(); + // dummy function + void InitEntitySystems(); + bool Init(); + void Reset(); + void AddBlood(CVector& origin, CVector& direction, int amount, float arg3); + void AddWood(CVector& origin, CVector& direction, int amount, float arg3); + void AddSparks(CVector& origin, CVector& direction, float force, int amount, CVector across, unsigned char sparksType, float spread, float life); + void AddTyreBurst(CVector& position, CVector& velocity); + void AddBulletImpact(CVector& position, CVector& direction, int bulletFxType, int amount, float arg4); + void AddPunchImpact(CVector& position, CVector& velocity, int arg2); + void AddDebris(CVector& position, RwRGBA& color, float scale, int amount); + void AddGlass(CVector& position, RwRGBA& color, float scale, int amount); + void AddWheelSpray(CVehicle* vehicle, CVector position, unsigned char arg2, unsigned char arg3, float arg4); + void AddWheelGrass(CVehicle* vehicle, CVector position, unsigned char arg2, float arg3); + void AddWheelGravel(CVehicle* vehicle, CVector position, unsigned char arg2, float arg3); + void AddWheelMud(CVehicle* vehicle, CVector position, unsigned char arg2, float arg3); + void AddWheelSand(CVehicle* vehicle, CVector position, unsigned char arg2, float arg3); + void AddWheelDust(CVehicle* vehicle, CVector position, unsigned char arg2, float arg3); + void TriggerWaterHydrant(CVector& position); + void TriggerGunshot(CEntity* entity, CVector& origin, CVector& target, bool doGunflash); + void TriggerTankFire(CVector& origin, CVector& target); + void TriggerWaterSplash(CVector& position); + void TriggerBulletSplash(CVector& position); + void TriggerFootSplash(CVector& position); + void CreateEntityFx(CEntity* entity, char* fxName, RwV3d* position, RwMatrix* transform); + void DestroyEntityFx(CEntity* entity); + void ExitEntitySystems(); + void Exit(); +}; + +VALIDATE_SIZE(Fx_c, 0x70); + +void RenderBegin(RwRaster* raster, RwMatrix* transform, unsigned int transformRenderFlags); +void RenderAddTri(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float u1, float v1, float u2, float v2, float u3, float v3, int r1, int g1, int b1, int a1, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3); +void RenderEnd(); +void RotateVecIntoVec(RwV3d* vectorsOut, RwV3d* vectorsIn, RwV3d* dir); +void RotateVecAboutVec(RwV3d* out, RwV3d* arg1, RwV3d* arg2, float angle); + +extern PLUGIN_API Fx_c &g_fx; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/IplDef.h b/third-party/plugin-sdk/plugin_sa/game_sa/IplDef.h new file mode 100644 index 00000000..fe19c9c8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/IplDef.h @@ -0,0 +1,35 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CRect.h" + +class PLUGIN_API IplDef { +public: + CRect m_boundBox; + char m_szName[16]; +private: + short _pad20; +public: + short m_nMinBuildingId; + short m_nMaxBuildingId; + short m_nMinDummyId; + short m_nMaxDummyId; + short m_nRelatedIpl; // entity arrays index + bool m_bInterior; + char field_2D; + bool m_bLoadRequest; + bool m_bDisableDynamicStreaming; + char field_30; + char field_31; +private: + char _pad32[2]; +public: +}; + +VALIDATE_SIZE(IplDef, 0x34); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/JPegCompress.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/JPegCompress.cpp new file mode 100644 index 00000000..5acc52f7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/JPegCompress.cpp @@ -0,0 +1,41 @@ +# include "JPegCompress.h" +# include "CScene.h" +# include + +// NOTE: pCamera parameter is not used, game's full screen will be saved in any way +// US-1.00 @ 0x005D0820 +// EU-1.00 @ 0x005D0820 +void JPegCompressScreenToFile(RwCamera * pCamera, char const * pszPath) { + assert(pszPath && pszPath[0]); + assert(pCamera == Scene.m_pRwCamera && "Required due to dirty Rockstar implementation"); + plugin::Call<0x005D0820>(pCamera, pszPath); +} + +void JPegCompressScreenToFile(char const * pszPath) { + JPegCompressScreenToFile(Scene.m_pRwCamera, pszPath); +} + +// NOTE: pCamera parameter is not used, game's full screen will be saved in any way +// US-1.00 @ 0x005D0820 +// EU-1.00 @ 0x005D0820 +void JPegCompressScreenToBuffer(RwCamera * pCamera, char ** pBuffer, unsigned int * pSize) { + assert(pBuffer && *pBuffer && pSize); + assert(pCamera == Scene.m_pRwCamera && "Required due to dirty Rockstar implementation"); + plugin::Call<0x005D0740>(pCamera, pBuffer, pSize); +} + +void JPegCompressScreenToBuffer(char ** pBuffer, unsigned int * pSize) { + JPegCompressScreenToBuffer(Scene.m_pRwCamera, pBuffer, pSize); +} + +// NOTE: CMenuManager::m_pJPegBuffer usage is hardcoded by Rockstar, you can't use any other pointer +// also buffer size and image dimension is also hardcoded in executable so this function is not fully usable +// US-1.00 @ 0x005D07A0 +// EU-1.00 @ 0x005D07A0 +RwBool JPegDecompressToVramFromBuffer(RwRaster * pRaster, char ** pBuffer) { + assert(pRaster); + assert(pBuffer && *pBuffer); + assert(pBuffer == &FrontEndMenuManager.m_pJPegBuffer && "Required due to dirty Rockstar implementation"); + return plugin::CallAndReturn(pRaster, pBuffer); +} + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/JPegCompress.h b/third-party/plugin-sdk/plugin_sa/game_sa/JPegCompress.h new file mode 100644 index 00000000..cc269c2e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/JPegCompress.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#pragma once +#include "PluginBase.h" +#include "RenderWare.h" +#include "CMenuManager.h" + +/** + * Compress camera screen and save at the given file path + */ +void JPegCompressScreenToFile(char const * pszPath); + +/** + * Compress camera screen to the given buffer + */ +void JPegCompressScreenToBuffer(char ** pBuffer, unsigned int * pSize); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/ListItem_c.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/ListItem_c.cpp new file mode 100644 index 00000000..4401b111 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/ListItem_c.cpp @@ -0,0 +1,13 @@ +#include "ListItem_c.h" + +// US-1.00 @ 0x004A8DB0 +// EU-1.00 @ 0x004A8DB0 +ListItem_c::ListItem_c(void) { + plugin::CallMethod<0x004A8DB0>(this); +} + +// US-1.00 @ 0x004A8DC0 +// EU-1.00 @ 0x0049EA70 +ListItem_c::~ListItem_c(void) { + plugin::CallMethod<0x004A8DC0>(this); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/ListItem_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/ListItem_c.h new file mode 100644 index 00000000..56ef3436 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/ListItem_c.h @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +/** + * Double linked list item base class + * + * You should inherit this class to use it in List_c lists! + */ +class PLUGIN_API ListItem_c +{ +protected: + ListItem_c *next; + ListItem_c *prev; + +protected: + ListItem_c(void); + ~ListItem_c(void); + +friend class List_c; +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/List_c.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/List_c.cpp new file mode 100644 index 00000000..b6470002 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/List_c.cpp @@ -0,0 +1,55 @@ +# include "List_c.h" +# include + +// US-1.00 @ 0x004A8DD0 +// EU-1.00 @ 0x004A8DD0 +List_c::List_c(void) { + plugin::CallMethod<0x004A8DD0>(this); +} + +// US-1.00 @ 0x004A8DE0 +// EU-1.00 @ 0x004A8DE0 +List_c::~List_c(void) { + plugin::CallMethod<0x004A8DE0>(this); +} + +// US-1.00 @ 0x004A8DF0 +// EU-1.00 @ 0x004A8DF0 +void List_c::AddItem(ListItem_c * pItem) { + assert(pItem); + return plugin::CallMethod<0x004A8DF0, List_c *, ListItem_c *>(this, pItem); +} + +// US-1.00 @ 0x004A8E30 +// EU-1.00 @ 0x004A8E30 +void List_c::RemoveItem(ListItem_c * pItem) { + assert(pItem); + return plugin::CallMethod<0x004A8E30, List_c *, ListItem_c *>(this, pItem); +} + +ListItem_c * List_c::GetHead(void) { + return first; +} + +// EU-1.00 @ 0x004A8E70 +ListItem_c * List_c::RemoveHead(void) { + return plugin::CallMethodAndReturn(this); +} + +ListItem_c * List_c::GetNext(ListItem_c * pItem) { + assert(pItem); + return pItem->next; +} + +// US-1.00 @ 0x004A9000 +// EU-1.00 @ 0x004A9000 +ListItem_c * List_c::GetPrev(ListItem_c * pItem) { + assert(pItem); + return plugin::CallMethodAndReturn(this, pItem); +} + +// US-1.00 @ 0x004A9010 +// EU-1.00 @ 0x004A9010 +ListItem_c * List_c::GetItemOffset(bool bFromHead, int iOffset) { + return plugin::CallMethodAndReturn(this, bFromHead, iOffset); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/List_c.h b/third-party/plugin-sdk/plugin_sa/game_sa/List_c.h new file mode 100644 index 00000000..13f9746a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/List_c.h @@ -0,0 +1,96 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "ListItem_c.h" + +/** + * Double linked list base implemantation + * + * NOTE: You should not use this class directly, use TList_c template instead. + */ +class PLUGIN_API List_c +{ +public: + ListItem_c *last; + ListItem_c *first; + unsigned int count; + + List_c(void); + ~List_c(void); + + /** + * Add new item to the head + */ + void AddItem(ListItem_c * pItem); + + /** + * Remove given item from the list and decrease counter + */ + void RemoveItem(ListItem_c * pItem); + + /** + * Get list head + */ + ListItem_c * GetHead(void); + + /** + * Remove heading item and return it's pointer + */ + ListItem_c * RemoveHead(void); + + /** + * Get next item in a list + */ + ListItem_c * GetNext(ListItem_c * pItem); + + /** + * Get previous item + */ + ListItem_c * GetPrev(ListItem_c * pItem); + + /** + * Get N-th item from list head/tail + */ + ListItem_c * GetItemOffset(bool bFromHead, int iOffset); +}; + + +/** + * Double linked list template wrapper + * (not an original game class name) + */ +template < + typename ItemType +> +class TList_c : public List_c +{ +public: + ItemType * GetHead(void) { + return static_cast(List_c::GetHead()); + } + + ItemType * RemoveHead(void) { + return static_cast(List_c::RemoveHead()); + } + + ItemType * GetNext(ItemType * pItem) { + return static_cast(List_c::GetNext(pItem)); + } + + ItemType * GetPrev(ItemType * pItem) { + return static_cast(List_c::GetPrev(pItem)); + } + + ItemType * GetItemOffset(bool bFromHead, int iOffset) { + return static_cast(List_c::GetItemOffset(bFromHead, iOffset)); + } +}; + + +VALIDATE_SIZE(List_c, 0xC); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/NodeName.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/NodeName.cpp new file mode 100644 index 00000000..c9373db8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/NodeName.cpp @@ -0,0 +1,22 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "NodeName.h" + +// Converted from cdecl bool NodeNamePluginAttach(void) 0x72FAB0 +bool NodeNamePluginAttach() { + return ((bool(__cdecl *)())0x72FAB0)(); +} + +// Converted from cdecl void SetFrameNodeName(RwFrame *frame,char const*name) 0x72FB00 +void SetFrameNodeName(RwFrame* frame, char const* name) { + ((void(__cdecl *)(RwFrame*, char const*))0x72FB00)(frame, name); +} + +// Converted from cdecl char* GetFrameNodeName(RwFrame *frame) 0x72FB30 +char* GetFrameNodeName(RwFrame* frame) { + return ((char* (__cdecl *)(RwFrame*))0x72FB30)(frame); +} \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/NodeName.h b/third-party/plugin-sdk/plugin_sa/game_sa/NodeName.h new file mode 100644 index 00000000..b67ee327 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/NodeName.h @@ -0,0 +1,12 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "RenderWare.h" + +bool NodeNamePluginAttach(); +void SetFrameNodeName(RwFrame* frame, char const* name); +char* GetFrameNodeName(RwFrame* frame); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/PipelinePlugin.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/PipelinePlugin.cpp new file mode 100644 index 00000000..0c57fdb6 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/PipelinePlugin.cpp @@ -0,0 +1,28 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +# include "PipelinePlugin.h" +# include + +// US-1.00 @ 0x0072FBD0 +// EU-1.00 @ 0x0072FBD0 +RwBool PipelinePluginAttach(void) { + return plugin::CallAndReturn(); +} + +// US-1.00 @ 0x0072FC40 +// EU-1.00 @ 0x0072FC40 +RwUInt32 GetPipelineID(RpAtomic * pAtomic) { + assert(pAtomic); + return plugin::CallAndReturn(pAtomic); +} + +// US-1.00 @ 0x0072FC50 +// EU-1.00 @ 0x0072FC50 +void SetPipelineID(RpAtomic * pAtomic, RwUInt32 uPipelineID) { + assert(pAtomic); + plugin::Call<0x0072FC50>(pAtomic, uPipelineID); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/PipelinePlugin.h b/third-party/plugin-sdk/plugin_sa/game_sa/PipelinePlugin.h new file mode 100644 index 00000000..e4fe456a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/PipelinePlugin.h @@ -0,0 +1,37 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "RenderWare.h" + +// Plugin ID: MAKECHUNKID(rwVENDORID_DEVELOPER, 0xF3) + +/** + * Attach pipeline plugin + * + * @since gtasa + * @return true if plugin was successfully attached. + */ +RwBool PipelinePluginAttach(void); + +/** + * Get pipeline ID + * + * @since gtasa + * @param pAtomic pointer to RpAtomic struct + * @return pipeline ID + */ +RwUInt32 GetPipelineID(RpAtomic * pAtomic); + +/** + * Set pipeline ID + * + * @since gtasa + * @param pAtomic pointer to RpAtomic struct + * @param nPipelineID pipeline ID + */ +void SetPipelineID(RpAtomic * pAtomic, RwUInt32 uPipelineID); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/RenderWare.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/RenderWare.cpp new file mode 100644 index 00000000..cc2e991d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/RenderWare.cpp @@ -0,0 +1,3540 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "RenderWare.h" +#include "PluginBase.h" + +RwGlobals *&RwEngineInstance = *(RwGlobals **)0xC97B24; + +RsGlobalType &RsGlobal = *(RsGlobalType *)0xC17040; + +RwPluginRegistry &geometryTKList = *(RwPluginRegistry *)0x8D628C; + +IDirect3DDevice9 *GetD3DDevice() { + return *reinterpret_cast(0xC97C28); +} + +_D3DMATRIX *GetD3DViewTransform() { + return reinterpret_cast<_D3DMATRIX *>(0xC9BC80); +} + +_D3DMATRIX *GetD3DProjTransform() { + return reinterpret_cast<_D3DMATRIX *>(0x8E2458); +} + +/* rwplcore.h */ + +RwMemoryFunctions* RwOsGetMemoryInterface(void) { + return ((RwMemoryFunctions*(__cdecl *)(void))0x802230)(); +} + +RwFreeList* _rwFreeListCreate(RwInt32 entrySize, RwInt32 entriesPerBlock, RwInt32 alignment, RwUInt32 hint, const RwChar* fileCreate, RwUInt32 lineCreate) { + return ((RwFreeList*(__cdecl *)(RwInt32, RwInt32, RwInt32, RwUInt32, const RwChar*, RwUInt32))0x801980)(entrySize, entriesPerBlock, alignment, hint, fileCreate, lineCreate); +} + +RwFreeList* RwFreeListCreateAndPreallocateSpace(RwInt32 entrySize, RwInt32 entriesPerBlock, RwInt32 alignment, RwInt32 numBlocksToPreallocate, RwFreeList* inPlaceSpaceForFreeListStruct, RwUInt32 hint) { + return ((RwFreeList*(__cdecl *)(RwInt32, RwInt32, RwInt32, RwInt32, RwFreeList*, RwUInt32))0x801B70)(entrySize, entriesPerBlock, alignment, numBlocksToPreallocate, inPlaceSpaceForFreeListStruct, hint); +} + +RwBool RwFreeListDestroy(RwFreeList* freelist) { + return ((RwBool(__cdecl *)(RwFreeList*))0x801B80)(freelist); +} + +void RwFreeListSetFlags(RwFreeList* freeList, RwUInt32 flags) { + ((void(__cdecl *)(RwFreeList*, RwUInt32))0x801C10)(freeList, flags); +} + +RwUInt32 RwFreeListGetFlags(RwFreeList* freeList) { + return ((RwUInt32(__cdecl *)(RwFreeList*))0x801C20)(freeList); +} + +RwInt32 RwFreeListPurge(RwFreeList* freelist) { + return ((RwInt32(__cdecl *)(RwFreeList*))0x801E00)(freelist); +} + +RwFreeList* RwFreeListForAllUsed(RwFreeList* freelist, RwFreeListCallBack fpCallBack, void* pData) { + return ((RwFreeList*(__cdecl *)(RwFreeList*, RwFreeListCallBack, void*))0x801E90)(freelist, fpCallBack, pData); +} + +RwInt32 RwFreeListPurgeAllFreeLists(void) { + return ((RwInt32(__cdecl *)(void))0x801F90)(); +} + +void RwStreamSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x7EC760)(blockSize, numBlocksToPrealloc); +} + +RwStream* _rwStreamInitialize(RwStream* stream, RwBool rwOwned, RwStreamType type, RwStreamAccessType accessType, const void* pData) { + return ((RwStream*(__cdecl *)(RwStream*, RwBool, RwStreamType, RwStreamAccessType, const void*))0x7EC810)(stream, rwOwned, type, accessType, pData); +} + +RwStream* RwStreamOpen(RwStreamType type, RwStreamAccessType accessType, const void* pData) { + return ((RwStream*(__cdecl *)(RwStreamType, RwStreamAccessType, const void*))0x7ECEF0)(type, accessType, pData); +} + +RwBool RwStreamClose(RwStream* stream, void* pData) { + return ((RwBool(__cdecl *)(RwStream*, void*))0x7ECE20)(stream, pData); +} + +RwUInt32 RwStreamRead(RwStream* stream, void* buffer, RwUInt32 length) { + return ((RwUInt32(__cdecl *)(RwStream*, void*, RwUInt32))0x7EC9D0)(stream, buffer, length); +} + +RwStream* RwStreamWrite(RwStream* stream, const void* buffer, RwUInt32 length) { + return ((RwStream*(__cdecl *)(RwStream*, const void*, RwUInt32))0x7ECB30)(stream, buffer, length); +} + +RwStream* RwStreamSkip(RwStream* stream, RwUInt32 offset) { + return ((RwStream*(__cdecl *)(RwStream*, RwUInt32))0x7ECD00)(stream, offset); +} + +RwBool _rwStringOpen(void) { + return ((RwBool(__cdecl *)(void))0x80A240)(); +} + +void _rwStringClose(void) { + ((void(__cdecl *)(void))0x80A440)(); +} + +RwBool _rwStringDestroy(RwChar* string) { + return ((RwBool(__cdecl *)(RwChar*))0x80A450)(string); +} + +RwUInt32 _rwStringStreamGetSize(const RwChar* string) { + return ((RwUInt32(__cdecl *)(const RwChar*))0x80A470)(string); +} + +const RwChar* _rwStringStreamWrite(const RwChar* string, RwStream* stream) { + return ((const RwChar*(__cdecl *)(const RwChar*, RwStream*))0x80A4A0)(string, stream); +} + +RwChar* _rwStringStreamFindAndRead(RwChar* string, RwStream* stream) { + return ((RwChar*(__cdecl *)(RwChar*, RwStream*))0x80A510)(string, stream); +} + +void RwPluginRegistrySetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x8087B0)(blockSize, numBlocksToPrealloc); +} + +RwBool _rwPluginRegistrySetStaticPluginsSize(RwPluginRegistry* reg, RwInt32 size) { + return ((RwBool(__cdecl *)(RwPluginRegistry*, RwInt32))0x808430)(reg, size); +} + +RwInt32 _rwPluginRegistryAddPlugin(RwPluginRegistry* reg, RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwPluginRegistry*, RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x8084A0)(reg, size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 _rwPluginRegistryGetPluginOffset(const RwPluginRegistry* reg, RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(const RwPluginRegistry*, RwUInt32))0x808470)(reg, pluginID); +} + +const RwPluginRegistry* _rwPluginRegistryInitObject(const RwPluginRegistry* reg, void* object) { + return ((const RwPluginRegistry*(__cdecl *)(const RwPluginRegistry*, void*))0x8086E0)(reg, object); +} + +const RwPluginRegistry* _rwPluginRegistryDeInitObject(const RwPluginRegistry* reg, void* object) { + return ((const RwPluginRegistry*(__cdecl *)(const RwPluginRegistry*, void*))0x808740)(reg, object); +} + +const RwPluginRegistry* _rwPluginRegistryCopyObject(const RwPluginRegistry* reg, void* dstObject, const void* srcObject) { + return ((const RwPluginRegistry*(__cdecl *)(const RwPluginRegistry*, void*, const void*))0x808770)(reg, dstObject, srcObject); +} + +RwInt32 _rwPluginRegistryAddPluginStream(RwPluginRegistry* reg, RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { + return ((RwInt32(__cdecl *)(RwPluginRegistry*, RwUInt32, RwPluginDataChunkReadCallBack, RwPluginDataChunkWriteCallBack, RwPluginDataChunkGetSizeCallBack))0x8088E0)(reg, pluginID, readCB, writeCB, getSizeCB); +} + +RwInt32 _rwPluginRegistryAddPlgnStrmlwysCB(RwPluginRegistry* reg, RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { + return ((RwInt32(__cdecl *)(RwPluginRegistry*, RwUInt32, RwPluginDataChunkAlwaysCallBack))0x808920)(reg, pluginID, alwaysCB); +} + +RwInt32 _rwPluginRegistryAddPlgnStrmRightsCB(RwPluginRegistry* reg, RwUInt32 pluginID, RwPluginDataChunkRightsCallBack rightsCB) { + return ((RwInt32(__cdecl *)(RwPluginRegistry*, RwUInt32, RwPluginDataChunkRightsCallBack))0x808950)(reg, pluginID, rightsCB); +} + +const RwPluginRegistry* _rwPluginRegistryReadDataChunks(const RwPluginRegistry* reg, RwStream* stream, void* object) { + return ((const RwPluginRegistry*(__cdecl *)(const RwPluginRegistry*, RwStream*, void*))0x808980)(reg, stream, object); +} + +const RwPluginRegistry* _rwPluginRegistryWriteDataChunks(const RwPluginRegistry* reg, RwStream* stream, const void* object) { + return ((const RwPluginRegistry*(__cdecl *)(const RwPluginRegistry*, RwStream*, const void*))0x808B40)(reg, stream, object); +} + +const RwPluginRegistry* _rwPluginRegistrySkipDataChunks(const RwPluginRegistry* reg, RwStream* stream) { + return ((const RwPluginRegistry*(__cdecl *)(const RwPluginRegistry*, RwStream*))0x808C10)(reg, stream); +} + +RwInt32 _rwPluginRegistryGetSize(const RwPluginRegistry* reg, const void* object) { + return ((RwInt32(__cdecl *)(const RwPluginRegistry*, const void*))0x808B00)(reg, object); +} + +const RwPluginRegistry* _rwPluginRegistryInvokeRights(const RwPluginRegistry* reg, RwUInt32 id, void* obj, RwUInt32 extraData) { + return ((const RwPluginRegistry*(__cdecl *)(const RwPluginRegistry*, RwUInt32, void*, RwUInt32))0x808AB0)(reg, id, obj, extraData); +} + +RwBool RwEngineGetMatrixTolerances(RwMatrixTolerance * const tolerance) { + return ((RwBool(__cdecl *)(RwMatrixTolerance * const))0x7F1780)(tolerance); +} + +RwBool RwEngineSetMatrixTolerances(const RwMatrixTolerance * const tolerance) { + return ((RwBool(__cdecl *)(const RwMatrixTolerance*))0x7F17B0)(tolerance); +} + +void RwMatrixSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x7F16A0)(blockSize, numBlocksToPrealloc); +} + +RwBool RwMatrixDestroy(RwMatrix* mpMat) { + return ((RwBool(__cdecl *)(RwMatrix*))0x7F2A20)(mpMat); +} + +RwMatrix* RwMatrixCreate(void) { + return ((RwMatrix*(__cdecl *)(void))0x7F2A50)(); +} + +RwMatrix* RwMatrixMultiply(RwMatrix* matrixOut, const RwMatrix* MatrixIn1, const RwMatrix* matrixIn2) { + return ((RwMatrix*(__cdecl *)(RwMatrix*, const RwMatrix*, const RwMatrix*))0x7F18B0)(matrixOut, MatrixIn1, matrixIn2); +} + +RwMatrix* RwMatrixTransform(RwMatrix* matrix, const RwMatrix* transform, RwOpCombineType combineOp) { + return ((RwMatrix*(__cdecl *)(RwMatrix*, const RwMatrix*, RwOpCombineType))0x7F25A0)(matrix, transform, combineOp); +} + +RwMatrix* RwMatrixOrthoNormalize(RwMatrix* matrixOut, const RwMatrix* matrixIn) { + return ((RwMatrix*(__cdecl *)(RwMatrix*, const RwMatrix*))0x7F1920)(matrixOut, matrixIn); +} + +RwMatrix* RwMatrixInvert(RwMatrix* matrixOut, const RwMatrix* matrixIn) { + return ((RwMatrix*(__cdecl *)(RwMatrix*, const RwMatrix*))0x7F2070)(matrixOut, matrixIn); +} + +RwMatrix* RwMatrixScale(RwMatrix* matrix, const RwV3d* scale, RwOpCombineType combineOp) { + return ((RwMatrix*(__cdecl *)(RwMatrix*, const RwV3d*, RwOpCombineType))0x7F22C0)(matrix, scale, combineOp); +} + +RwMatrix* RwMatrixTranslate(RwMatrix* matrix, const RwV3d* translation, RwOpCombineType combineOp) { + return ((RwMatrix*(__cdecl *)(RwMatrix*, const RwV3d*, RwOpCombineType))0x7F2450)(matrix, translation, combineOp); +} + +RwMatrix* RwMatrixRotate(RwMatrix* matrix, const RwV3d* axis, RwReal angle, RwOpCombineType combineOp) { + return ((RwMatrix*(__cdecl *)(RwMatrix*, const RwV3d*, RwReal, RwOpCombineType))0x7F1FD0)(matrix, axis, angle, combineOp); +} + +RwMatrix* RwMatrixRotateOneMinusCosineSine(RwMatrix* matrix, const RwV3d* unitAxis, RwReal oneMinusCosine, RwReal sine, RwOpCombineType combineOp) { + return ((RwMatrix*(__cdecl *)(RwMatrix*, const RwV3d*, RwReal, RwReal, RwOpCombineType))0x7F1D00)(matrix, unitAxis, oneMinusCosine, sine, combineOp); +} + +const RwMatrix* RwMatrixQueryRotate(const RwMatrix* matrix, RwV3d* unitAxis, RwReal* angle, RwV3d* center) { + return ((const RwMatrix*(__cdecl *)(const RwMatrix*, RwV3d*, RwReal*, RwV3d*))0x7F2720)(matrix, unitAxis, angle, center); +} + +RwMatrix* RwMatrixUpdate(RwMatrix* matrix) { + return ((RwMatrix*(__cdecl *)(RwMatrix*))0x7F18A0)(matrix); +} + +RwMatrix* RwMatrixOptimize(RwMatrix* matrix, const RwMatrixTolerance* tolerance) { + return ((RwMatrix*(__cdecl *)(RwMatrix*, const RwMatrixTolerance*))0x7F17E0)(matrix, tolerance); +} + +RwReal _rwMatrixDeterminant(const RwMatrix* matrix) { + return ((RwReal(__cdecl *)(const RwMatrix*))0x7F1450)(matrix); +} + +RwReal _rwMatrixNormalError(const RwMatrix* matrix) { + return ((RwReal(__cdecl *)(const RwMatrix*))0x7F1500)(matrix); +} + +RwReal _rwMatrixOrthogonalError(const RwMatrix* matrix) { + return ((RwReal(__cdecl *)(const RwMatrix*))0x7F14A0)(matrix); +} + +RwReal _rwMatrixIdentityError(const RwMatrix* matrix) { + return ((RwReal(__cdecl *)(const RwMatrix*))0x7F1590)(matrix); +} + +RwReal RwV3dNormalize(RwV3d* out, const RwV3d* in) { + return ((RwReal(__cdecl *)(RwV3d*, const RwV3d*))0x7ED9B0)(out, in); +} + +RwReal RwV3dLength(const RwV3d* in) { + return ((RwReal(__cdecl *)(const RwV3d*))0x7EDAC0)(in); +} + +RwReal RwV2dLength(const RwV2d* in) { + return ((RwReal(__cdecl *)(const RwV2d*))0x7EDBF0)(in); +} + +RwReal RwV2dNormalize(RwV2d* out, const RwV2d* in) { + return ((RwReal(__cdecl *)(RwV2d*, const RwV2d*))0x7EDC60)(out, in); +} + +RwV3d* RwV3dTransformPoint(RwV3d* pointOut, const RwV3d* pointIn, const RwMatrix* matrix) { + return ((RwV3d*(__cdecl *)(RwV3d*, const RwV3d*, const RwMatrix*))0x7EDD60)(pointOut, pointIn, matrix); +} + +RwV3d* RwV3dTransformPoints(RwV3d* pointsOut, const RwV3d* pointsIn, RwInt32 numPoints, const RwMatrix* matrix) { + return ((RwV3d*(__cdecl *)(RwV3d*, const RwV3d*, RwInt32, const RwMatrix*))0x7EDD90)(pointsOut, pointsIn, numPoints, matrix); +} + +RwV3d* RwV3dTransformVector(RwV3d* vectorOut, const RwV3d* vectorIn, const RwMatrix* matrix) { + return ((RwV3d*(__cdecl *)(RwV3d*, const RwV3d*, const RwMatrix*))0x7EDDC0)(vectorOut, vectorIn, matrix); +} + +RwV3d* RwV3dTransformVectors(RwV3d* vectorsOut, const RwV3d* vectorsIn, RwInt32 numPoints, const RwMatrix* matrix) { + return ((RwV3d*(__cdecl *)(RwV3d*, const RwV3d*, RwInt32, const RwMatrix*))0x7EDDF0)(vectorsOut, vectorsIn, numPoints, matrix); +} + +RwReal _rwSqrt(const RwReal num) { + return ((RwReal(__cdecl *)(const RwReal))0x7EDB30)(num); +} + +RwReal _rwInvSqrt(const RwReal num) { + return ((RwReal(__cdecl *)(const RwReal))0x7EDB90)(num); +} + +RwReal _rwV3dNormalize(RwV3d* out, const RwV3d* in) { + return ((RwReal(__cdecl *)(RwV3d*, const RwV3d*))0x7ED910)(out, in); +} + +RwSList* _rwSListCreate(RwInt32 size, RwUInt32 hint) { + return ((RwSList*(__cdecl *)(RwInt32, RwUInt32))0x809160)(size, hint); +} + +RwBool _rwSListDestroy(RwSList* sList) { + return ((RwBool(__cdecl *)(RwSList*))0x809440)(sList); +} + +void _rwSListDestroyEndEntries(RwSList* sList, RwInt32 amount) { + ((void(__cdecl *)(RwSList*, RwInt32))0x809400)(sList, amount); +} + +void* _rwSListGetEntry(RwSList* sList, RwInt32 entry) { + return ((void*(__cdecl *)(RwSList*, RwInt32))0x809510)(sList, entry); +} + +void* _rwSListGetNewEntry(RwSList* sList, RwUInt32 hint) { + return ((void*(__cdecl *)(RwSList*, RwUInt32))0x809240)(sList, hint); +} + +RwInt32 _rwSListGetNumEntries(const RwSList* sList) { + return ((RwInt32(__cdecl *)(const RwSList*))0x8094B0)(sList); +} + +void* _rwSListGetBegin(RwSList* sList) { + return ((void*(__cdecl *)(RwSList*))0x809530)(sList); +} + +void* _rwSListGetEnd(RwSList* sList) { + return ((void*(__cdecl *)(RwSList*))0x809540)(sList); +} + +RwBool RwIm2DRenderPrimitive(RwPrimitiveType primType, RwIm2DVertex* vertices, RwInt32 numVertices) { + return ((int(__cdecl *)(RwPrimitiveType, RwIm2DVertex*, RwInt32))0x734E90)(primType, vertices, numVertices); +} + +RwBool RwIm2DRenderIndexedPrimitive(RwPrimitiveType primType, RwIm2DVertex* vertices, RwInt32 numVertices, RwImVertexIndex* indices, RwInt32 numIndices) { + return ((int(__cdecl *)(RwPrimitiveType, RwIm2DVertex*, RwInt32, RwImVertexIndex*, RwInt32))0x734EA0)(primType, vertices, numVertices, indices, numIndices); +} + +RwBool RwIm2DRenderTriangle(RwIm2DVertex* vertices, RwInt32 numVertices, RwInt32 vert1, RwInt32 vert2, RwInt32 vert3) { + return ((int(__cdecl *)(RwIm2DVertex*, RwInt32, RwInt32, RwInt32, RwInt32))0x734EB0)(vertices, numVertices, vert1, vert2, vert3); +} + +RwBool RwIm2DRenderLine(RwIm2DVertex* vertices, RwInt32 numVertices, RwInt32 vert1, RwInt32 vert2) { + return ((int(__cdecl *)(RwIm2DVertex*, RwInt32, RwInt32, RwInt32))0x734EC0)(vertices, numVertices, vert1, vert2); +} + +RwUInt32 RwEngineGetVersion(void) { + return ((RwUInt32(__cdecl *)(void))0x7F2BA0)(); +} + +RwBool RwEngineInit(const RwMemoryFunctions* memFuncs, RwUInt32 initFlags, RwUInt32 resArenaSize) { + return ((RwBool(__cdecl *)(const RwMemoryFunctions*, RwUInt32, RwUInt32))0x7F3170)(memFuncs, initFlags, resArenaSize); +} + +RwInt32 RwEngineRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor initCB, RwPluginObjectDestructor termCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor))0x7F2BB0)(size, pluginID, initCB, termCB); +} + +RwInt32 RwEngineGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x7F2BE0)(pluginID); +} + +RwBool RwEngineOpen(RwEngineOpenParams* initParams) { + return ((RwBool(__cdecl *)(RwEngineOpenParams*))0x7F2F70)(initParams); +} + +RwBool RwEngineStart(void) { + return ((RwBool(__cdecl *)(void))0x7F2E70)(); +} + +RwBool RwEngineStop(void) { + return ((RwBool(__cdecl *)(void))0x7F2E20)(); +} + +RwBool RwEngineClose(void) { + return ((RwBool(__cdecl *)(void))0x7F2F00)(); +} + +RwBool RwEngineTerm(void) { + return ((RwBool(__cdecl *)(void))0x7F3130)(); +} + +RwInt32 RwEngineGetNumSubSystems(void) { + return ((RwInt32(__cdecl *)(void))0x7F2C00)(); +} + +RwSubSystemInfo* RwEngineGetSubSystemInfo(RwSubSystemInfo* subSystemInfo, RwInt32 subSystemIndex) { + return ((RwSubSystemInfo*(__cdecl *)(RwSubSystemInfo*, RwInt32))0x7F2C30)(subSystemInfo, subSystemIndex); +} + +RwInt32 RwEngineGetCurrentSubSystem(void) { + return ((RwInt32(__cdecl *)(void))0x7F2C60)(); +} + +RwBool RwEngineSetSubSystem(RwInt32 subSystemIndex) { + return ((RwBool(__cdecl *)(RwInt32))0x7F2C90)(subSystemIndex); +} + +RwInt32 RwEngineGetNumVideoModes(void) { + return ((RwInt32(__cdecl *)(void))0x7F2CC0)(); +} + +RwVideoMode* RwEngineGetVideoModeInfo(RwVideoMode* modeinfo, RwInt32 modeIndex) { + return ((RwVideoMode*(__cdecl *)(RwVideoMode*, RwInt32))0x7F2CF0)(modeinfo, modeIndex); +} + +RwInt32 RwEngineGetCurrentVideoMode(void) { + return ((RwInt32(__cdecl *)(void))0x7F2D20)(); +} + +RwBool RwEngineSetVideoMode(RwInt32 modeIndex) { + return ((RwBool(__cdecl *)(RwInt32))0x7F2D50)(modeIndex); +} + +RwInt32 RwEngineGetTextureMemorySize(void) { + return ((RwInt32(__cdecl *)(void))0x7F2D80)(); +} + +RwInt32 RwEngineGetMaxTextureSize(void) { + return ((RwInt32(__cdecl *)(void))0x7F2DB0)(); +} + +RwBool RwEngineSetFocus(RwBool enable) { + return ((RwBool(__cdecl *)(RwBool))0x7F2DE0)(enable); +} + +RwMetrics* RwEngineGetMetrics(void) { + return ((RwMetrics*(__cdecl *)(void))0x7F2E10)(); +} + +RwFileFunctions* RwOsGetFileInterface(void) { + return ((RwFileFunctions*(__cdecl *)(void))0x804130)(); +} + +RwError* RwErrorGet(RwError* code) { + return ((RwError*(__cdecl *)(RwError*))0x808880)(code); +} + +RwError* RwErrorSet(RwError* code) { + return ((RwError*(__cdecl *)(RwError*))0x808820)(code); +} + +RwInt32 _rwerror(RwInt32 code, ...) { + return code; +} + +RwBool RwResourcesSetArenaSize(RwUInt32 size) { + return ((RwBool(__cdecl *)(RwUInt32))0x8080C0)(size); +} + +RwInt32 RwResourcesGetArenaSize(void) { + return ((RwInt32(__cdecl *)(void))0x8081B0)(); +} + +RwInt32 RwResourcesGetArenaUsage(void) { + return ((RwInt32(__cdecl *)(void))0x8081C0)(); +} + +RwBool RwResourcesEmptyArena(void) { + return ((RwBool(__cdecl *)(void))0x8081F0)(); +} + +RwResEntry* RwResourcesAllocateResEntry(void* owner, RwResEntry* ownerRef, RwInt32 size, RwResEntryDestroyNotify destroyNotify) { + return ((RwResEntry*(__cdecl *)(void*, RwResEntry*, RwInt32, RwResEntryDestroyNotify))0x807ED0)(owner, ownerRef, size, destroyNotify); +} + +RwBool RwResourcesFreeResEntry(RwResEntry* entry) { + return ((RwBool(__cdecl *)(RwResEntry*))0x807DE0)(entry); +} + +void _rwResourcesPurge(void) { + ((void(__cdecl *)(void))0x807E50)(); +} + +RwBool RwStreamFindChunk(RwStream* stream, RwUInt32 type, RwUInt32* lengthOut, RwUInt32* versionOut) { + return ((RwBool(__cdecl *)(RwStream*, RwUInt32, RwUInt32*, RwUInt32*))0x7ED2D0)(stream, type, lengthOut, versionOut); +} + +RwStream* _rwStreamWriteVersionedChunkHeader(RwStream* stream, RwInt32 type, RwInt32 size, RwUInt32 version, RwUInt32 buildNum) { + return ((RwStream*(__cdecl *)(RwStream*, RwInt32, RwInt32, RwUInt32, RwUInt32))0x7ED270)(stream, type, size, version, buildNum); +} + +RwStream* RwStreamWriteReal(RwStream* stream, const RwReal* reals, RwUInt32 numBytes) { + return ((RwStream*(__cdecl *)(RwStream*, const RwReal*, RwUInt32))0x7ED3D0)(stream, reals, numBytes); +} + +RwStream* RwStreamWriteInt32(RwStream* stream, const RwInt32* ints, RwUInt32 numBytes) { + return ((RwStream*(__cdecl *)(RwStream*, const RwInt32*, RwUInt32))0x7ED460)(stream, ints, numBytes); +} + +RwStream* RwStreamWriteInt16(RwStream* stream, const RwInt16* ints, RwUInt32 numBytes) { + return ((RwStream*(__cdecl *)(RwStream*, const RwInt16*, RwUInt32))0x7ED480)(stream, ints, numBytes); +} + +RwStream* RwStreamReadReal(RwStream* stream, RwReal* reals, RwUInt32 numBytes) { + return ((RwStream*(__cdecl *)(RwStream*, RwReal*, RwUInt32))0x7ED4F0)(stream, reals, numBytes); +} + +RwStream* RwStreamReadInt32(RwStream* stream, RwInt32* ints, RwUInt32 numBytes) { + return ((RwStream*(__cdecl *)(RwStream*, RwInt32*, RwUInt32))0x7ED540)(stream, ints, numBytes); +} + +RwStream* RwStreamReadInt16(RwStream* stream, RwInt16* ints, RwUInt32 numBytes) { + return ((RwStream*(__cdecl *)(RwStream*, RwInt16*, RwUInt32))0x7ED4A0)(stream, ints, numBytes); +} + +RwStream* RwStreamReadChunkHeaderInfo(RwStream* stream, RwChunkHeaderInfo* chunkHeaderInfo) { + return ((RwStream*(__cdecl *)(RwStream*, RwChunkHeaderInfo*))0x7ED590)(stream, chunkHeaderInfo); +} + +/* rwcore.h */ + +RxHeap* RxHeapCreate(RwUInt32 size) { + return ((RxHeap*(__cdecl *)(RwUInt32))0x809F90)(size); +} + +void RxHeapDestroy(RxHeap* heap) { + ((void(__cdecl *)(RxHeap*))0x809F30)(heap); +} + +RwBool _rxHeapReset(RxHeap* heap) { + return ((RwBool(__cdecl *)(RxHeap*))0x809EC0)(heap); +} + +void* RxHeapAlloc(RxHeap* heap, RwUInt32 size) { + return ((void*(__cdecl *)(RxHeap*, RwUInt32))0x809AA0)(heap, size); +} + +void RxHeapFree(RxHeap* heap, void* block) { + ((void(__cdecl *)(RxHeap*, void*))0x8098B0)(heap, block); +} + +void* RxHeapRealloc(RxHeap* heap, void* block, RwUInt32 newSize, RwBool allowCopy) { + return ((void*(__cdecl *)(RxHeap*, void*, RwUInt32, RwBool))0x809D10)(heap, block, newSize, allowCopy); +} + +void RxPipelineSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x804FC0)(blockSize, numBlocksToPrealloc); +} + +RwBool _rxPipelineOpen(void) { + return ((RwBool(__cdecl *)(void))0x804FE0)(); +} + +RwBool _rxPipelineClose(void) { + return ((RwBool(__cdecl *)(void))0x804F60)(); +} + +RxPipeline* RxPipelineCreate(void) { + return ((RxPipeline*(__cdecl *)(void))0x8057B0)(); +} + +void _rxPipelineDestroy(RxPipeline* Pipeline) { + ((void(__cdecl *)(RxPipeline*))0x805820)(Pipeline); +} + +RxHeap* RxHeapGetGlobalHeap(void) { + return ((RxHeap*(__cdecl *)(void))0x8052F0)(); +} + +RxPipeline* RxPipelineExecute(RxPipeline* pipeline, void* data, RwBool heapReset) { + return ((RxPipeline*(__cdecl *)(RxPipeline*, void*, RwBool))0x805710)(pipeline, data, heapReset); +} + +RxPacket* RxPacketCreate(RxPipelineNode* node) { + return ((RxPacket*(__cdecl *)(RxPipelineNode*))0x805300)(node); +} + +RxCluster* RxClusterSetStride(RxCluster* cluster, RwInt32 stride) { + return ((RxCluster*(__cdecl *)(RxCluster*, RwInt32))0x805330)(cluster, stride); +} + +RxCluster* RxClusterSetExternalData(RxCluster* cluster, void* data, RwInt32 stride, RwInt32 numElements) { + return ((RxCluster*(__cdecl *)(RxCluster*, void*, RwInt32, RwInt32))0x805340)(cluster, data, stride, numElements); +} + +RxCluster* RxClusterSetData(RxCluster* cluster, void* data, RwInt32 stride, RwInt32 numElements) { + return ((RxCluster*(__cdecl *)(RxCluster*, void*, RwInt32, RwInt32))0x8053A0)(cluster, data, stride, numElements); +} + +void _rxPacketDestroy(RxPacket* Packet) { + ((void(__cdecl *)(RxPacket*))0x80F070)(Packet); +} + +RxCluster* RxClusterInitializeData(RxCluster* cluster, RwUInt32 numElements, RwUInt16 stride) { + return ((RxCluster*(__cdecl *)(RxCluster*, RwUInt32, RwUInt16))0x805400)(cluster, numElements, stride); +} + +RxCluster* RxClusterResizeData(RxCluster* CurrentCluster, RwUInt32 NumElements) { + return ((RxCluster*(__cdecl *)(RxCluster*, RwUInt32))0x805470)(CurrentCluster, NumElements); +} + +RxCluster* RxClusterDestroyData(RxCluster* CurrentCluster) { + return ((RxCluster*(__cdecl *)(RxCluster*))0x8054C0)(CurrentCluster); +} + +RxCluster* RxClusterLockWrite(RxPacket* packet, RwUInt32 clusterIndex, RxPipelineNode* node) { + return ((RxCluster*(__cdecl *)(RxPacket*, RwUInt32, RxPipelineNode*))0x8054F0)(packet, clusterIndex, node); +} + +void RxClusterUnlock(RxCluster* cluster) { + ((void(__cdecl *)(RxCluster*))0x8055C0)(cluster); +} + +RwUInt32 RxPipelineNodeSendConfigMsg(RxPipelineNode* dest, RwUInt32 msg, RwUInt32 intparam, void* ptrparam) { + return ((RwUInt32(__cdecl *)(RxPipelineNode*, RwUInt32, RwUInt32, void*))0x8055D0)(dest, msg, intparam, ptrparam); +} + +RxPipelineNode* RxPipelineNodeForAllConnectedOutputs(RxPipelineNode* node, RxPipeline* pipeline, RxPipelineNodeOutputCallBack callbackfn, void* callbackdata) { + return ((RxPipelineNode*(__cdecl *)(RxPipelineNode*, RxPipeline*, RxPipelineNodeOutputCallBack, void*))0x8055F0)(node, pipeline, callbackfn, callbackdata); +} + +RxPipelineCluster* RxPipelineNodeGetPipelineCluster(RxPipelineNode* node, RwUInt32 clustersOfInterestIndex) { + return ((RxPipelineCluster*(__cdecl *)(RxPipelineNode*, RwUInt32))0x805680)(node, clustersOfInterestIndex); +} + +RwUInt32 RxPipelineClusterGetCreationAttributes(RxPipelineCluster* cluster) { + return ((RwUInt32(__cdecl *)(RxPipelineCluster*))0x8056B0)(cluster); +} + +RxPipelineCluster* RxPipelineClusterSetCreationAttributes(RxPipelineCluster* cluster, RwUInt32 creationAttributes) { + return ((RxPipelineCluster*(__cdecl *)(RxPipelineCluster*, RwUInt32))0x8056C0)(cluster, creationAttributes); +} + +RwUInt32 RxClusterGetAttributes(RxCluster* cluster) { + return ((RwUInt32(__cdecl *)(RxCluster*))0x8056E0)(cluster); +} + +RxCluster* RxClusterSetAttributes(RxCluster* cluster, RwUInt32 attributes) { + return ((RxCluster*(__cdecl *)(RxCluster*, RwUInt32))0x8056F0)(cluster, attributes); +} + +RxNodeOutput RxPipelineNodeFindOutputByName(RxPipelineNode* node, const RwChar* outputname) { + return ((RxNodeOutput(__cdecl *)(RxPipelineNode*, const RwChar*))0x805D10)(node, outputname); +} + +RxNodeOutput RxPipelineNodeFindOutputByIndex(RxPipelineNode* node, RwUInt32 outputindex) { + return ((RxNodeOutput(__cdecl *)(RxPipelineNode*, RwUInt32))0x805D70)(node, outputindex); +} + +RxNodeInput RxPipelineNodeFindInput(RxPipelineNode* node) { + return ((RxNodeInput(__cdecl *)(RxPipelineNode*))0x805DA0)(node); +} + +RxNodeDefinition* RxPipelineNodeCloneDefinition(RxPipelineNode* node, RxClusterDefinition* cluster2add) { + return ((RxNodeDefinition*(__cdecl *)(RxPipelineNode*, RxClusterDefinition*))0x8059C0)(node, cluster2add); +} + +RxPipeline* RxPipelineNodeRequestCluster(RxPipeline* pipeline, RxPipelineNode* node, RxClusterDefinition* clusterDef) { + return ((RxPipeline*(__cdecl *)(RxPipeline*, RxPipelineNode*, RxClusterDefinition*))0x805DB0)(pipeline, node, clusterDef); +} + +RxPipeline* RxPipelineNodeReplaceCluster(RxPipeline* pipeline, RxPipelineNode* node, RxClusterDefinition* oldClusterDef, RxClusterDefinition* newClusterDef) { + return ((RxPipeline*(__cdecl *)(RxPipeline*, RxPipelineNode*, RxClusterDefinition*, RxClusterDefinition*))0x805E20)(pipeline, node, oldClusterDef, newClusterDef); +} + +void* RxPipelineNodeGetInitData(RxPipelineNode* node) { + return ((void*(__cdecl *)(RxPipelineNode*))0x805F30)(node); +} + +void* RxPipelineNodeCreateInitData(RxPipelineNode* node, RwUInt32 size) { + return ((void*(__cdecl *)(RxPipelineNode*, RwUInt32))0x805EA0)(node, size); +} + +RxPipeline* RxPipelineClone(RxPipeline* pipeline) { + return ((RxPipeline*(__cdecl *)(RxPipeline*))0x806AC0)(pipeline); +} + +RxPipelineNode* RxPipelineFindNodeByName(RxPipeline* pipeline, const RwChar* name, RxPipelineNode* start, RwInt32* nodeIndex) { + return ((RxPipelineNode*(__cdecl *)(RxPipeline*, const RwChar*, RxPipelineNode*, RwInt32*))0x806B30)(pipeline, name, start, nodeIndex); +} + +RxPipelineNode* RxPipelineFindNodeByIndex(RxPipeline* pipeline, RwUInt32 nodeindex) { + return ((RxPipelineNode*(__cdecl *)(RxPipeline*, RwUInt32))0x806BC0)(pipeline, nodeindex); +} + +RxLockedPipe* RxPipelineLock(RxPipeline* pipeline) { + return ((RxLockedPipe*(__cdecl *)(RxPipeline*))0x806990)(pipeline); +} + +RxPipeline* RxLockedPipeUnlock(RxLockedPipe* pipeline) { + return ((RxPipeline*(__cdecl *)(RxLockedPipe*))0x805F40)(pipeline); +} + +RxPipeline* RxLockedPipeReplaceNode(RxLockedPipe* pipeline, RxPipelineNode* node, RxNodeDefinition* nodeDef) { + return ((RxPipeline*(__cdecl *)(RxLockedPipe*, RxPipelineNode*, RxNodeDefinition*))0x806F20)(pipeline, node, nodeDef); +} + +RxPipeline* RxLockedPipeDeleteNode(RxLockedPipe* pipeline, RxPipelineNode* node) { + return ((RxPipeline*(__cdecl *)(RxLockedPipe*, RxPipelineNode*))0x807040)(pipeline, node); +} + +RxPipeline* RxLockedPipeSetEntryPoint(RxLockedPipe* pipeline, RxNodeInput in) { + return ((RxPipeline*(__cdecl *)(RxLockedPipe*, RxNodeInput))0x807070)(pipeline, in); +} + +RxPipelineNode* RxLockedPipeGetEntryPoint(RxLockedPipe* pipeline) { + return ((RxPipelineNode*(__cdecl *)(RxLockedPipe*))0x8070D0)(pipeline); +} + +RxPipeline* RxLockedPipeAddPath(RxLockedPipe* pipeline, RxNodeOutput out, RxNodeInput in) { + return ((RxPipeline*(__cdecl *)(RxLockedPipe*, RxNodeOutput, RxNodeInput))0x807100)(pipeline, out, in); +} + +RxPipeline* RxLockedPipeDeletePath(RxLockedPipe* pipeline, RxNodeOutput out, RxNodeInput in) { + return ((RxPipeline*(__cdecl *)(RxLockedPipe*, RxNodeOutput, RxNodeInput))0x807170)(pipeline, out, in); +} + +RxPipeline* RxPipelineInsertDebugNode(RxPipeline* pipeline, RxPipelineNode* before, RxPipelineNode* after, RxNodeDefinition* debugNode) { + return ((RxPipeline*(__cdecl *)(RxPipeline*, RxPipelineNode*, RxPipelineNode*, RxNodeDefinition*))0x8071B0)(pipeline, before, after, debugNode); +} + +void RwD3D9VertexBufferManagerChangeDefaultSize(RwUInt32 defaultSize) { + ((void(__cdecl *)(RwUInt32))0x7F57F0)(defaultSize); +} + +RwBool RwD3D9CreateVertexBuffer(RwUInt32 stride, RwUInt32 size, void* vertexBuffer, RwUInt32* offset) { + return ((RwBool(__cdecl *)(RwUInt32, RwUInt32, void*, RwUInt32*))0x7F5500)(stride, size, vertexBuffer, offset); +} + +void RwD3D9DestroyVertexBuffer(RwUInt32 stride, RwUInt32 size, void* vertexBuffer, RwUInt32 offset) { + ((void(__cdecl *)(RwUInt32, RwUInt32, void*, RwUInt32))0x7F56A0)(stride, size, vertexBuffer, offset); +} + +RwBool RwD3D9DynamicVertexBufferCreate(RwUInt32 size, void* vertexBuffer) { + return ((RwBool(__cdecl *)(RwUInt32, void*))0x7F5A00)(size, vertexBuffer); +} + +void RwD3D9DynamicVertexBufferDestroy(void) { + ((void(__cdecl *)(void))0x7F5AE0)(); +} + +RwBool RwD3D9DynamicVertexBufferLock(RwUInt32 vertexSize, RwUInt32 numVertex, void* vertexBufferOut, void* vertexDataOut, RwUInt32* baseIndexOut) { + return ((RwBool(__cdecl *)(RwUInt32, RwUInt32, void*, void*, RwUInt32*))0x7F5B10)(vertexSize, numVertex, vertexBufferOut, vertexDataOut, baseIndexOut); +} + +RwBool RwD3D9DynamicVertexBufferUnlock(void) { + return ((RwBool(__cdecl *)(void))0x7F5C90)(); +} + +void RwRasterSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x7FB350)(blockSize, numBlocksToPrealloc); +} + +RwRaster* RwRasterCreate(RwInt32 width, RwInt32 height, RwInt32 depth, RwInt32 flags) { + return ((RwRaster*(__cdecl *)(RwInt32, RwInt32, RwInt32, RwInt32))0x7FB230)(width, height, depth, flags); +} + +RwBool RwRasterDestroy(RwRaster* raster) { + return ((RwBool(__cdecl *)(RwRaster*))0x7FB020)(raster); +} + +RwRaster* RwRasterGetOffset(RwRaster* raster, RwInt16* xOffset, RwInt16* yOffset) { + return ((RwRaster*(__cdecl *)(RwRaster*, RwInt16*, RwInt16*))0x7FAEA0)(raster, xOffset, yOffset); +} + +RwInt32 RwRasterGetNumLevels(RwRaster* raster) { + return ((RwInt32(__cdecl *)(RwRaster*))0x7FB160)(raster); +} + +RwRaster* RwRasterSubRaster(RwRaster* subRaster, RwRaster* raster, RwRect* rect) { + return ((RwRaster*(__cdecl *)(RwRaster*, RwRaster*, RwRect*))0x7FB1D0)(subRaster, raster, rect); +} + +RwRaster* RwRasterRenderFast(RwRaster* raster, RwInt32 x, RwInt32 y) { + return ((RwRaster*(__cdecl *)(RwRaster*, RwInt32, RwInt32))0x7FAF50)(raster, x, y); +} + +RwRaster* RwRasterRender(RwRaster* raster, RwInt32 x, RwInt32 y) { + return ((RwRaster*(__cdecl *)(RwRaster*, RwInt32, RwInt32))0x7FAFB0)(raster, x, y); +} + +RwRaster* RwRasterRenderScaled(RwRaster* raster, RwRect* rect) { + return ((RwRaster*(__cdecl *)(RwRaster*, RwRect*))0x7FAE80)(raster, rect); +} + +RwRaster* RwRasterPushContext(RwRaster* raster) { + return ((RwRaster*(__cdecl *)(RwRaster*))0x7FB060)(raster); +} + +RwRaster* RwRasterPopContext(void) { + return ((RwRaster*(__cdecl *)(void))0x7FB110)(); +} + +RwRaster* RwRasterGetCurrentContext(void) { + return ((RwRaster*(__cdecl *)(void))0x7FAE60)(); +} + +RwBool RwRasterClear(RwInt32 pixelValue) { + return ((RwBool(__cdecl *)(RwInt32))0x7FAEE0)(pixelValue); +} + +RwBool RwRasterClearRect(RwRect* rpRect, RwInt32 pixelValue) { + return ((RwBool(__cdecl *)(RwRect*, RwInt32))0x7FAF90)(rpRect, pixelValue); +} + +RwRaster* RwRasterShowRaster(RwRaster* raster, void* dev, RwUInt32 flags) { + return ((RwRaster*(__cdecl *)(RwRaster*, void*, RwUInt32))0x7FB1A0)(raster, dev, flags); +} + +RwUInt8* RwRasterLock(RwRaster* raster, RwUInt8 level, RwInt32 lockMode) { + return ((RwUInt8*(__cdecl *)(RwRaster*, RwUInt8, RwInt32))0x7FB2D0)(raster, level, lockMode); +} + +RwRaster* RwRasterUnlock(RwRaster* raster) { + return ((RwRaster*(__cdecl *)(RwRaster*))0x7FAEC0)(raster); +} + +RwUInt8* RwRasterLockPalette(RwRaster* raster, RwInt32 lockMode) { + return ((RwUInt8*(__cdecl *)(RwRaster*, RwInt32))0x7FB0E0)(raster, lockMode); +} + +RwRaster* RwRasterUnlockPalette(RwRaster* raster) { + return ((RwRaster*(__cdecl *)(RwRaster*))0x7FAFF0)(raster); +} + +RwInt32 RwRasterRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x7FB0B0)(size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 RwRasterGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x7FAE40)(pluginID); +} + +RxRenderStateVector* RxRenderStateVectorSetDefaultRenderStateVector(RxRenderStateVector* rsvp) { + return ((RxRenderStateVector*(__cdecl *)(RxRenderStateVector*))0x80EA40)(rsvp); +} + +RwImage* RwImageCreate(RwInt32 width, RwInt32 height, RwInt32 depth) { + return ((RwImage*(__cdecl *)(RwInt32, RwInt32, RwInt32))0x8026E0)(width, height, depth); +} + +RwBool RwImageDestroy(RwImage* image) { + return ((RwBool(__cdecl *)(RwImage*))0x802740)(image); +} + +RwImage* RwImageAllocatePixels(RwImage* image) { + return ((RwImage*(__cdecl *)(RwImage*))0x8027A0)(image); +} + +RwImage* RwImageFreePixels(RwImage* image) { + return ((RwImage*(__cdecl *)(RwImage*))0x802860)(image); +} + +RwImage* RwImageApplyMask(RwImage* image, const RwImage* mask) { + return ((RwImage*(__cdecl *)(RwImage*, const RwImage*))0x802AF0)(image, mask); +} + +RwImage* RwImageMakeMask(RwImage* image) { + return ((RwImage*(__cdecl *)(RwImage*))0x802A20)(image); +} + +RwImage* RwImageReadMaskedImage(const RwChar* imageName, const RwChar* maskname) { + return ((RwImage*(__cdecl *)(const RwChar*, const RwChar*))0x8035C0)(imageName, maskname); +} + +RwImage* RwImageRead(const RwChar* imageName) { + return ((RwImage*(__cdecl *)(const RwChar*))0x802FD0)(imageName); +} + +const RwChar* RwImageSetPath(const RwChar* path) { + return ((const RwChar*(__cdecl *)(const RwChar*))0x802EA0)(path); +} + +RwBool RwImageSetGamma(RwReal gammaValue) { + return ((RwBool(__cdecl *)(RwReal))0x803FE0)(gammaValue); +} + +RwImage* RwImageGammaCorrect(RwImage* image) { + return ((RwImage*(__cdecl *)(RwImage*))0x803E30)(image); +} + +RwBool RwPalQuantInit(RwPalQuant* pq) { + return ((RwBool(__cdecl *)(RwPalQuant*))0x80C470)(pq); +} + +void RwPalQuantTerm(RwPalQuant* pq) { + ((void(__cdecl *)(RwPalQuant*))0x80C520)(pq); +} + +void RwPalQuantAddImage(RwPalQuant* pq, RwImage* img, RwReal weight) { + ((void(__cdecl *)(RwPalQuant*, RwImage*, RwReal))0x80AA80)(pq, img, weight); +} + +RwInt32 RwPalQuantResolvePalette(RwRGBA* palette, RwInt32 maxcols, RwPalQuant* pq) { + return ((RwInt32(__cdecl *)(RwRGBA*, RwInt32, RwPalQuant*))0x80AF60)(palette, maxcols, pq); +} + +void RwPalQuantMatchImage(RwUInt8* dstpixels, RwInt32 dststride, RwInt32 dstdepth, RwBool dstPacked, RwPalQuant* pq, RwImage* img) { + ((void(__cdecl *)(RwUInt8*, RwInt32, RwInt32, RwBool, RwPalQuant*, RwImage*))0x80BF20)(dstpixels, dststride, dstdepth, dstPacked, pq, img); +} + +RwBool RwTextureSetMipmapping(RwBool enable) { + return ((RwBool(__cdecl *)(RwBool))0x7F3530)(enable); +} + +RwBool RwTextureGetMipmapping(void) { + return ((RwBool(__cdecl *)(void))0x7F3550)(); +} + +RwBool RwTextureSetAutoMipmapping(RwBool enable) { + return ((RwBool(__cdecl *)(RwBool))0x7F3560)(enable); +} + +RwBool RwTextureGetAutoMipmapping(void) { + return ((RwBool(__cdecl *)(void))0x7F3580)(); +} + +RwBool RwTextureSetMipmapGenerationCallBack(RwTextureCallBackMipmapGeneration callback) { + return ((RwBool(__cdecl *)(RwTextureCallBackMipmapGeneration))0x7F3C70)(callback); +} + +RwTextureCallBackMipmapGeneration RwTextureGetMipmapGenerationCallBack(void) { + return ((RwTextureCallBackMipmapGeneration(__cdecl *)(void))0x7F3C90)(); +} + +RwBool RwTextureSetMipmapNameCallBack(RwTextureCallBackMipmapName callback) { + return ((RwBool(__cdecl *)(RwTextureCallBackMipmapName))0x7F3CA0)(callback); +} + +RwTextureCallBackMipmapName RwTextureGetMipmapNameCallBack(void) { + return ((RwTextureCallBackMipmapName(__cdecl *)(void))0x7F3CC0)(); +} + +RwBool RwTextureGenerateMipmapName(RwChar* name, RwChar* maskName, RwUInt8 mipLevel, RwInt32 format) { + return ((RwBool(__cdecl *)(RwChar*, RwChar*, RwUInt8, RwInt32))0x7F3AA0)(name, maskName, mipLevel, format); +} + +RwBool RwTextureRasterGenerateMipmaps(RwRaster* raster, RwImage* image) { + return ((RwBool(__cdecl *)(RwRaster*, RwImage*))0x7F3CD0)(raster, image); +} + +RwBool _rwTextureSetAutoMipMapState(RwBool enable) { + return ((RwBool(__cdecl *)(RwBool))0x7F3590)(enable); +} + +RwBool _rwTextureGetAutoMipMapState(void) { + return ((RwBool(__cdecl *)(void))0x7F35C0)(); +} + +RwTextureCallBackRead RwTextureGetReadCallBack(void) { + return ((RwTextureCallBackRead(__cdecl *)(void))0x7F3520)(); +} + +RwBool RwTextureSetReadCallBack(RwTextureCallBackRead callBack) { + return ((RwBool(__cdecl *)(RwTextureCallBackRead))0x7F3500)(callBack); +} + +RwTextureCallBackFind RwTextureGetFindCallBack(void) { + return ((RwTextureCallBackFind(__cdecl *)(void))0x7F34F0)(); +} + +RwBool RwTextureSetFindCallBack(RwTextureCallBackFind callBack) { + return ((RwBool(__cdecl *)(RwTextureCallBackFind))0x7F34D0)(callBack); +} + +RwTexture* RwTextureSetName(RwTexture* texture, const RwChar* name) { + return ((RwTexture*(__cdecl *)(RwTexture*, const RwChar*))0x7F38A0)(texture, name); +} + +RwTexture* RwTextureSetMaskName(RwTexture* texture, const RwChar* maskName) { + return ((RwTexture*(__cdecl *)(RwTexture*, const RwChar*))0x7F3910)(texture, maskName); +} + +void RwTexDictionarySetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x7F3E80)(blockSize, numBlocksToPrealloc); +} + +RwTexDictionary* RwTexDictionaryCreate(void) { + return ((RwTexDictionary*(__cdecl *)(void))0x7F3600)(); +} + +RwBool RwTexDictionaryDestroy(RwTexDictionary* dict) { + return ((RwBool(__cdecl *)(RwTexDictionary*))0x7F36A0)(dict); +} + +RwTexture* RwTextureCreate(RwRaster* raster) { + return ((RwTexture*(__cdecl *)(RwRaster*))0x7F37C0)(raster); +} + +RwBool RwTextureDestroy(RwTexture* texture) { + return ((RwBool(__cdecl *)(RwTexture*))0x7F3820)(texture); +} + +RwTexture* RwTextureSetRaster(RwTexture* texture, RwRaster* raster) { + return ((RwTexture*(__cdecl *)(RwTexture*, RwRaster*))0x7F35D0)(texture, raster); +} + +RwTexture* RwTexDictionaryAddTexture(RwTexDictionary* dict, RwTexture* texture) { + return ((RwTexture*(__cdecl *)(RwTexDictionary*, RwTexture*))0x7F3980)(dict, texture); +} + +RwTexture* RwTexDictionaryRemoveTexture(RwTexture* texture) { + return ((RwTexture*(__cdecl *)(RwTexture*))0x7F39C0)(texture); +} + +RwTexture* RwTexDictionaryFindNamedTexture(RwTexDictionary* dict, const RwChar* name) { + return ((RwTexture*(__cdecl *)(RwTexDictionary*, const RwChar*))0x7F39F0)(dict, name); +} + +RwTexDictionary* RwTexDictionaryGetCurrent(void) { + return ((RwTexDictionary*(__cdecl *)(void))0x7F3A90)(); +} + +RwTexDictionary* RwTexDictionarySetCurrent(RwTexDictionary* dict) { + return ((RwTexDictionary*(__cdecl *)(RwTexDictionary*))0x7F3A70)(dict); +} + +const RwTexDictionary* RwTexDictionaryForAllTextures(const RwTexDictionary* dict, RwTextureCallBack fpCallBack, void* pData) { + return ((const RwTexDictionary*(__cdecl *)(const RwTexDictionary*, RwTextureCallBack, void*))0x7F3730)(dict, fpCallBack, pData); +} + +RwBool RwTexDictionaryForAllTexDictionaries(RwTexDictionaryCallBack fpCallBack, void* pData) { + return ((RwBool(__cdecl *)(RwTexDictionaryCallBack, void*))0x7F3770)(fpCallBack, pData); +} + +RwInt32 RwTextureRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x7F3BB0)(size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 RwTexDictionaryRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x7F3C10)(size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 RwTextureGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x7F3BE0)(pluginID); +} + +RwInt32 RwTexDictionaryGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x7F3C40)(pluginID); +} + +RwBool RwTextureValidatePlugins(const RwTexture* texture) { + return ((RwBool(__cdecl *)(const RwTexture*))0x7F3C00)(texture); +} + +RwBool RwTexDictionaryValidatePlugins(const RwTexDictionary* dict) { + return ((RwBool(__cdecl *)(const RwTexDictionary*))0x7F3C60)(dict); +} + +rwIm3DPool* _rwIm3DGetPool(void) { + return ((rwIm3DPool*(__cdecl *)(void))0x7EFDD0)(); +} + +void* RwIm3DTransform(RwIm3DVertex* pVerts, RwUInt32 numVerts, RwMatrix* ltm, RwUInt32 flags) { + return ((void*(__cdecl *)(RwIm3DVertex*, RwUInt32, RwMatrix*, RwUInt32))0x7EF450)(pVerts, numVerts, ltm, flags); +} + +RwBool RwIm3DEnd(void) { + return ((RwBool(__cdecl *)(void))0x7EF520)(); +} + +RwBool RwIm3DRenderLine(RwInt32 vert1, RwInt32 vert2) { + return ((RwBool(__cdecl *)(RwInt32, RwInt32))0x7EF900)(vert1, vert2); +} + +RwBool RwIm3DRenderTriangle(RwInt32 vert1, RwInt32 vert2, RwInt32 vert3) { + return ((RwBool(__cdecl *)(RwInt32, RwInt32, RwInt32))0x7EF810)(vert1, vert2, vert3); +} + +RwBool RwIm3DRenderIndexedPrimitive(RwPrimitiveType primType, RwImVertexIndex* indices, RwInt32 numIndices) { + return ((RwBool(__cdecl *)(RwPrimitiveType, RwImVertexIndex*, RwInt32))0x7EF550)(primType, indices, numIndices); +} + +RwBool RwIm3DRenderPrimitive(RwPrimitiveType primType) { + return ((RwBool(__cdecl *)(RwPrimitiveType))0x7EF6B0)(primType); +} + +RxPipeline* RwIm3DGetTransformPipeline(void) { + return ((RxPipeline*(__cdecl *)(void))0x7EF9D0)(); +} + +RxPipeline* RwIm3DGetRenderPipeline(RwPrimitiveType primType) { + return ((RxPipeline*(__cdecl *)(RwPrimitiveType))0x7EF9E0)(primType); +} + +RxPipeline* RwIm3DSetTransformPipeline(RxPipeline* pipeline) { + return ((RxPipeline*(__cdecl *)(RxPipeline*))0x7EFAC0)(pipeline); +} + +RxPipeline* RwIm3DSetRenderPipeline(RxPipeline* pipeline, RwPrimitiveType primType) { + return ((RxPipeline*(__cdecl *)(RxPipeline*, RwPrimitiveType))0x7EFB10)(pipeline, primType); +} + +RwRaster* RwD3D9RasterStreamReadDDS(RwStream* stream) { + return ((RwRaster*(__cdecl *)(RwStream*))0x81F360)(stream); +} + +RwTexture* RwD3D9DDSTextureRead(const RwChar* name, const RwChar* maskname) { + return ((RwTexture*(__cdecl *)(const RwChar*, const RwChar*))0x820A10)(name, maskname); +} + +RwBool RwD3D9RasterIsCompressed(const RwRaster* raster) { + return ((RwBool(__cdecl *)(const RwRaster*))0x820C90)(raster); +} + +RwBool RwD3D9DeviceSupportsDXTTexture(void) { + return ((RwBool(__cdecl *)(void))0x7F9C30)(); +} + +void* RwD3D9GetCurrentD3DDevice(void) { + return ((void*(__cdecl *)(void))0x7F9D50)(); +} + +RwUInt32 RwD3D9EngineGetMaxMultiSamplingLevels(void) { + return ((RwUInt32(__cdecl *)(void))0x7F84E0)(); +} + +void RwD3D9EngineSetMultiSamplingLevels(RwUInt32 numLevels) { + ((void(__cdecl *)(RwUInt32))0x7F84F0)(numLevels); +} + +void RwD3D9EngineSetRefreshRate(RwUInt32 refreshRate) { + ((void(__cdecl *)(RwUInt32))0x7F8580)(refreshRate); +} + +void RwD3D9EngineSetMultiThreadSafe(RwBool enable) { + ((void(__cdecl *)(RwBool))0x7F8620)(enable); +} + +void RwD3D9EngineSetSoftwareVertexProcessing(RwBool enable) { + ((void(__cdecl *)(RwBool))0x7F8630)(enable); +} + +void* RwD3D9GetCurrentD3DRenderTarget(RwUInt32 index) { + return ((void*(__cdecl *)(RwUInt32))0x7F9E80)(index); +} + +RwBool RwD3D9SetRenderTarget(RwUInt32 index, RwRaster* raster) { + return ((RwBool(__cdecl *)(RwUInt32, RwRaster*))0x7F9E90)(index, raster); +} + +RwBool RwD3D9ChangeVideoMode(RwInt32 modeIndex) { + return ((RwBool(__cdecl *)(RwInt32))0x7F8640)(modeIndex); +} + +RwBool RwD3D9ChangeMultiSamplingLevels(RwUInt32 numLevels) { + return ((RwBool(__cdecl *)(RwUInt32))0x7F8A90)(numLevels); +} + +RwBool RwD3D9CameraAttachWindow(void* camera, void* hwnd) { + return ((RwBool(__cdecl *)(void*, void*))0x7F8D70)(camera, hwnd); +} + +void RwD3D9SetStreamSource(RwUInt32 streamNumber, void* streamData, RwUInt32 offset, RwUInt32 stride) { + ((void(__cdecl *)(RwUInt32, void*, RwUInt32, RwUInt32))0x7FA030)(streamNumber, streamData, offset, stride); +} + +void _rwD3D9RenderStateFlushCache(void) { + ((void(__cdecl *)(void))0x7FC200)(); +} + +void _rwD3D9DrawIndexedPrimitiveUP(RwUInt32 primitiveType, RwUInt32 minIndex, RwUInt32 numVertices, RwUInt32 primitiveCount, const void* indexData, const void* vertexStreamZeroData, RwUInt32 VertexStreamZeroStride) { + ((void(__cdecl *)(RwUInt32, RwUInt32, RwUInt32, RwUInt32, const void*, const void*, RwUInt32))0x7FA1F0)(primitiveType, minIndex, numVertices, primitiveCount, indexData, vertexStreamZeroData, VertexStreamZeroStride); +} + +void _rwD3D9DrawPrimitiveUP(RwUInt32 primitiveType, RwUInt32 primitiveCount, const void* vertexStreamZeroData, RwUInt32 VertexStreamZeroStride) { + ((void(__cdecl *)(RwUInt32, RwUInt32, const void*, RwUInt32))0x7FA290)(primitiveType, primitiveCount, vertexStreamZeroData, VertexStreamZeroStride); +} + +void _rwD3D9DrawIndexedPrimitive(RwUInt32 primitiveType, RwInt32 baseVertexIndex, RwUInt32 minIndex, RwUInt32 numVertices, RwUInt32 startIndex, RwUInt32 primitiveCount) { + ((void(__cdecl *)(RwUInt32, RwInt32, RwUInt32, RwUInt32, RwUInt32, RwUInt32))0x7FA320)(primitiveType, baseVertexIndex, minIndex, numVertices, startIndex, primitiveCount); +} + +void _rwD3D9SetVertexShaderConstant(RwUInt32 registerAddress, const void* constantData, RwUInt32 constantCount) { + ((void(__cdecl *)(RwUInt32, const void*, RwUInt32))0x7FACA0)(registerAddress, constantData, constantCount); +} + +void _rwD3D9SetPixelShaderConstant(RwUInt32 registerAddress, const void* constantData, RwUInt32 constantCount) { + ((void(__cdecl *)(RwUInt32, const void*, RwUInt32))0x7FAD00)(registerAddress, constantData, constantCount); +} + +void _rwD3D9SetFVF(RwUInt32 fvf) { + ((void(__cdecl *)(RwUInt32))0x7F9F30)(fvf); +} + +void _rwD3D9SetVertexShader(void *shader) { + ((void(__cdecl *)(void *))0x7F9FB0)(shader); +} + +void _rwD3D9SetPixelShader(void *shader) { + ((void(__cdecl *)(void *))0x7F9FF0)(shader); +} + +void RwD3D9SetRenderState(RwUInt32 state, RwUInt32 value) { + ((void(__cdecl *)(RwUInt32, RwUInt32))0x7FC2D0)(state, value); +} + +void RwD3D9GetRenderState(RwUInt32 state, void* value) { + ((void(__cdecl *)(RwUInt32, void*))0x7FC320)(state, value); +} + +void RwD3D9SetTextureStageState(RwUInt32 stage, RwUInt32 type, RwUInt32 value) { + ((void(__cdecl *)(RwUInt32, RwUInt32, RwUInt32))0x7FC340)(stage, type, value); +} + +void RwD3D9GetTextureStageState(RwUInt32 stage, RwUInt32 type, void* value) { + ((void(__cdecl *)(RwUInt32, RwUInt32, void*))0x7FC3A0)(stage, type, value); +} + +void RwD3D9SetSamplerState(RwUInt32 stage, RwUInt32 type, RwUInt32 value) { + ((void(__cdecl *)(RwUInt32, RwUInt32, RwUInt32))0x7FC3C0)(stage, type, value); +} + +void RwD3D9GetSamplerState(RwUInt32 stage, RwUInt32 type, void* value) { + ((void(__cdecl *)(RwUInt32, RwUInt32, void*))0x7FC400)(stage, type, value); +} + +void RwD3D9SetStencilClear(RwUInt32 stencilClear) { + ((void(__cdecl *)(RwUInt32))0x7F9D30)(stencilClear); +} + +RwUInt32 RwD3D9GetStencilClear(void) { + return ((RwUInt32(__cdecl *)(void))0x7F9D40)(); +} + +RwBool RwD3D9SetTexture(RwTexture* texture, RwUInt32 stage) { + return ((RwBool(__cdecl *)(RwTexture*, RwUInt32))0x7FDE70)(texture, stage); +} + +RwBool RwD3D9SetTransform(RwUInt32 state, const void* matrix) { + return ((RwBool(__cdecl *)(RwUInt32, const void*))0x7FA390)(state, matrix); +} + +void RwD3D9GetTransform(RwUInt32 state, void* matrix) { + ((void(__cdecl *)(RwUInt32, void*))0x7FA4F0)(state, matrix); +} + +RwBool RwD3D9SetMaterial(const void* material) { + return ((RwBool(__cdecl *)(const void*))0x7FC430)(material); +} + +RwBool RwD3D9SetClipPlane(RwUInt32 index, const RwV4d* plane) { + return ((RwBool(__cdecl *)(RwUInt32, const RwV4d*))0x7FC4A0)(index, plane); +} + +RwBool RwD3D9SetTransformWorld(const RwMatrix* matrix) { + return ((RwBool(__cdecl *)(const RwMatrix*))0x7FA520)(matrix); +} + +RwBool RwD3D9SetSurfaceProperties(const RwSurfaceProperties* surfaceProps, const RwRGBA* color, RwUInt32 flags) { + return ((RwBool(__cdecl *)(const RwSurfaceProperties*, const RwRGBA*, RwUInt32))0x7FC4D0)(surfaceProps, color, flags); +} + +RwBool RwD3D9SetLight(RwInt32 index, const void* light) { + return ((RwBool(__cdecl *)(RwInt32, const void*))0x7FA660)(index, light); +} + +void RwD3D9GetLight(RwInt32 index, void* light) { + ((void(__cdecl *)(RwInt32, void*))0x7FA820)(index, light); +} + +RwBool RwD3D9EnableLight(RwInt32 index, RwBool enable) { + return ((RwBool(__cdecl *)(RwInt32, RwBool))0x7FA860)(index, enable); +} + +RwBool RwD3D9IndexBufferCreate(RwUInt32 numIndices, void* indexBuffer) { + return ((RwBool(__cdecl *)(RwUInt32, void*))0x4C9970)(numIndices, indexBuffer); +} + +RwBool RwD3D9CreateVertexDeclaration(const void* elements, void* vertexdeclaration) { + return ((RwBool(__cdecl *)(const void*, void*))0x7FAA30)(elements, vertexdeclaration); +} + +void RwD3D9DeleteVertexDeclaration(void) { + ((void(__cdecl *)(void))0x7FAC10)(); +} + +void RwD3D9DeleteVertexShader(void) { + ((void(__cdecl *)(void))0x7FAC90)(); +} + +RwBool RwD3D9CreatePixelShader(const RwUInt32* function, void* shader) { + return ((RwBool(__cdecl *)(const RwUInt32*, void*))0x7FACC0)(function, shader); +} + +void RwD3D9DeletePixelShader(void) { + ((void(__cdecl *)(void))0x7FACF0)(); +} + +const void* RwD3D9GetCaps(void) { + return ((const void*(__cdecl *)(void))0x7FAD20)(); +} + +RwBool RwD3D9CameraIsSphereFullyInsideFrustum(const void* camera, const void* sphere) { + return ((RwBool(__cdecl *)(const void*, const void*))0x7FAD30)(camera, sphere); +} + +RwBool RwD3D9CameraIsBBoxFullyInsideFrustum(const void* camera, const void* boundingBox) { + return ((RwBool(__cdecl *)(const void*, const void*))0x7FAD90)(camera, boundingBox); +} + +void _rwD3D9RasterConvertToNonPalettized(RwRaster* raster) { + ((void(__cdecl *)(RwRaster*))0x4CD250)(raster); +} + +RwBool _rwDeviceRegisterPlugin(void) { + return ((RwBool(__cdecl *)(void))0x7F5F60)(); +} + +void _rwD3D9DeviceSetRestoreCallback(rwD3D9DeviceRestoreCallBack callback) { + ((void(__cdecl *)(rwD3D9DeviceRestoreCallBack))0x7FAE20)(callback); +} + +rwD3D9DeviceRestoreCallBack _rwD3D9DeviceGetRestoreCallback(void) { + return ((rwD3D9DeviceRestoreCallBack(__cdecl *)(void))0x7FAE30)(); +} + +RwImage* RwImageResample(RwImage* dstImage, const RwImage* srcImage) { + return ((RwImage*(__cdecl *)(RwImage*, const RwImage*))0x80C600)(dstImage, srcImage); +} + +RwImage* RwImageCreateResample(const RwImage* srcImage, RwInt32 width, RwInt32 height) { + return ((RwImage*(__cdecl *)(const RwImage*, RwInt32, RwInt32))0x80CD10)(srcImage, width, height); +} + +RwImage* RwImageSetFromRaster(RwImage* image, RwRaster* raster) { + return ((RwImage*(__cdecl *)(RwImage*, RwRaster*))0x804250)(image, raster); +} + +RwRaster* RwRasterSetFromImage(RwRaster* raster, RwImage* image) { + return ((RwRaster*(__cdecl *)(RwRaster*, RwImage*))0x804290)(raster, image); +} + +RwRaster* RwRasterRead(const RwChar* filename) { + return ((RwRaster*(__cdecl *)(const RwChar*))0x8043F0)(filename); +} + +RwRaster* RwRasterReadMaskedRaster(const RwChar* filename, const RwChar* maskname) { + return ((RwRaster*(__cdecl *)(const RwChar*, const RwChar*))0x8044E0)(filename, maskname); +} + +RwImage* RwImageFindRasterFormat(RwImage* ipImage, RwInt32 nRasterType, RwInt32* npWidth, RwInt32* npHeight, RwInt32* npDepth, RwInt32* npFormat) { + return ((RwImage*(__cdecl *)(RwImage*, RwInt32, RwInt32*, RwInt32*, RwInt32*, RwInt32*))0x8042C0)(ipImage, nRasterType, npWidth, npHeight, npDepth, npFormat); +} + +RwFrame* RwFrameForAllObjects(RwFrame* frame, RwObjectCallBack callBack, void* data) { + return ((RwFrame*(__cdecl *)(RwFrame*, RwObjectCallBack, void*))0x7F1200)(frame, callBack, data); +} + +RwFrame* RwFrameTranslate(RwFrame* frame, const RwV3d* v, RwOpCombineType combine) { + return ((RwFrame*(__cdecl *)(RwFrame*, const RwV3d*, RwOpCombineType))0x7F0E30)(frame, v, combine); +} + +RwFrame* RwFrameRotate(RwFrame* frame, const RwV3d* axis, RwReal angle, RwOpCombineType combine) { + return ((RwFrame*(__cdecl *)(RwFrame*, const RwV3d*, RwReal, RwOpCombineType))0x7F1010)(frame, axis, angle, combine); +} + +RwFrame* RwFrameScale(RwFrame* frame, const RwV3d* v, RwOpCombineType combine) { + return ((RwFrame*(__cdecl *)(RwFrame*, const RwV3d*, RwOpCombineType))0x7F0ED0)(frame, v, combine); +} + +RwFrame* RwFrameTransform(RwFrame* frame, const RwMatrix* m, RwOpCombineType combine) { + return ((RwFrame*(__cdecl *)(RwFrame*, const RwMatrix*, RwOpCombineType))0x7F0F70)(frame, m, combine); +} + +RwFrame* RwFrameOrthoNormalize(RwFrame* frame) { + return ((RwFrame*(__cdecl *)(RwFrame*))0x7F1170)(frame); +} + +RwFrame* RwFrameSetIdentity(RwFrame* frame) { + return ((RwFrame*(__cdecl *)(RwFrame*))0x7F10B0)(frame); +} + +RwFrame* RwFrameCloneHierarchy(RwFrame* root) { + return ((RwFrame*(__cdecl *)(RwFrame*))0x7F0250)(root); +} + +RwBool RwFrameDestroyHierarchy(RwFrame* frame) { + return ((RwBool(__cdecl *)(RwFrame*))0x7F08A0)(frame); +} + +RwFrame* RwFrameForAllChildren(RwFrame* frame, RwFrameCallBack callBack, void* data) { + return ((RwFrame*(__cdecl *)(RwFrame*, RwFrameCallBack, void*))0x7F0DC0)(frame, callBack, data); +} + +RwFrame* RwFrameRemoveChild(RwFrame* child) { + return ((RwFrame*(__cdecl *)(RwFrame*))0x7F0CD0)(child); +} + +RwFrame* RwFrameAddChild(RwFrame* parent, RwFrame* child) { + return ((RwFrame*(__cdecl *)(RwFrame*, RwFrame*))0x7F0B00)(parent, child); +} + +RwFrame* RwFrameAddChildNoUpdate(RwFrame* parent, RwFrame* child) { + return ((RwFrame*(__cdecl *)(RwFrame*, RwFrame*))0x7F09C0)(parent, child); +} + +RwFrame* RwFrameGetRoot(const RwFrame* frame) { + return ((RwFrame*(__cdecl *)(const RwFrame*))0x7F09B0)(frame); +} + +RwMatrix* RwFrameGetLTM(RwFrame* frame) { + return ((RwMatrix*(__cdecl *)(RwFrame*))0x7F0990)(frame); +} + +RwFrame* RwFrameUpdateObjects(RwFrame* frame) { + return ((RwFrame*(__cdecl *)(RwFrame*))0x7F0910)(frame); +} + +void RwFrameSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x7EFED0)(blockSize, numBlocksToPrealloc); +} + +RwFrame* RwFrameCreate(void) { + return ((RwFrame*(__cdecl *)(void))0x7F0410)(); +} + +RwBool RwFrameDestroy(RwFrame* frame) { + return ((RwBool(__cdecl *)(RwFrame*))0x7F05A0)(frame); +} + +void _rwFrameInit(RwFrame* frame) { + ((void(__cdecl *)(RwFrame*))0x7F0450)(frame); +} + +void _rwFrameDeInit(RwFrame* frame) { + ((void(__cdecl *)(RwFrame*))0x7F06F0)(frame); +} + +RwBool RwFrameDirty(const RwFrame* frame) { + return ((RwBool(__cdecl *)(const RwFrame*))0x7F0340)(frame); +} + +RwInt32 RwFrameCount(RwFrame* frame) { + return ((RwInt32(__cdecl *)(RwFrame*))0x7F0E00)(frame); +} + +RwInt32 RwFrameRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x7F1260)(size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 RwFrameGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x7F1290)(pluginID); +} + +RwBool RwFrameValidatePlugins(const RwFrame* frame) { + return ((RwBool(__cdecl *)(const RwFrame*))0x7F12B0)(frame); +} + +RwFrame* _rwFrameCloneAndLinkClones(RwFrame* root) { + return ((RwFrame*(__cdecl *)(RwFrame*))0x7EFFB0)(root); +} + +RwFrame* _rwFramePurgeClone(RwFrame* root) { + return ((RwFrame*(__cdecl *)(RwFrame*))0x7F01A0)(root); +} + +void _rwObjectHasFrameReleaseFrame(void) { + ((void(__cdecl *)(void))0x804F40)(); +} + +RwBool _rwFrameSyncDirty(void) { + return ((RwBool(__cdecl *)(void))0x809550)(); +} + +void _rwFrameSyncHierarchyLTM(RwFrame* frame) { + ((void(__cdecl *)(RwFrame*))0x8097D0)(frame); +} + +RwInt32 RwTextureRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkReadCallBack, RwPluginDataChunkWriteCallBack, RwPluginDataChunkGetSizeCallBack))0x804550)(pluginID, readCB, writeCB, getSizeCB); +} + +RwInt32 RwTextureSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkAlwaysCallBack))0x804580)(pluginID, alwaysCB); +} + +RwUInt32 RwTextureStreamGetSize(const RwTexture* texture) { + return ((RwUInt32(__cdecl *)(const RwTexture*))0x8045A0)(texture); +} + +RwTexture* RwTextureStreamRead(RwStream* stream) { + return ((RwTexture*(__cdecl *)(RwStream*))0x8046E0)(stream); +} + +const RwTexture* RwTextureStreamWrite(const RwTexture* texture, RwStream* stream) { + return ((const RwTexture*(__cdecl *)(const RwTexture*, RwStream*))0x8045E0)(texture, stream); +} + +RwInt32 RwTexDictionaryRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkReadCallBack, RwPluginDataChunkWriteCallBack, RwPluginDataChunkGetSizeCallBack))0x8048E0)(pluginID, readCB, writeCB, getSizeCB); +} + +RwInt32 RwTexDictionarySetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkAlwaysCallBack))0x804910)(pluginID, alwaysCB); +} + +RwUInt32 RwTexDictionaryStreamGetSize(const RwTexDictionary* texDict) { + return ((RwUInt32(__cdecl *)(const RwTexDictionary*))0x804930)(texDict); +} + +RwTexDictionary* RwTexDictionaryStreamRead(RwStream* stream) { + return ((RwTexDictionary*(__cdecl *)(RwStream*))0x804C30)(stream); +} + +const RwTexDictionary* RwTexDictionaryStreamWrite(const RwTexDictionary* texDict, RwStream* stream) { + return ((const RwTexDictionary*(__cdecl *)(const RwTexDictionary*, RwStream*))0x8049F0)(texDict, stream); +} + +RwTextureChunkInfo* _rwTextureChunkInfoRead(RwStream* stream, RwTextureChunkInfo* textureChunkInfo, RwInt32* bytesRead) { + return ((RwTextureChunkInfo*(__cdecl *)(RwStream*, RwTextureChunkInfo*, RwInt32*))0x804E60)(stream, textureChunkInfo, bytesRead); +} + +void RwFrameListSetAutoUpdate(RwBool flag) { + ((void(__cdecl *)(RwBool))0x807570)(flag); +} + +RwInt32 RwFrameRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkReadCallBack, RwPluginDataChunkWriteCallBack, RwPluginDataChunkGetSizeCallBack))0x807580)(pluginID, readCB, writeCB, getSizeCB); +} + +RwInt32 RwFrameSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkAlwaysCallBack))0x8075B0)(pluginID, alwaysCB); +} + +rwFrameList* _rwFrameListInitialize(rwFrameList* frameList, RwFrame* frame) { + return ((rwFrameList*(__cdecl *)(rwFrameList*, RwFrame*))0x8075D0)(frameList, frame); +} + +RwBool _rwFrameListFindFrame(const rwFrameList* frameList, const RwFrame* frame, RwInt32* npIndex) { + return ((RwBool(__cdecl *)(const rwFrameList*, const RwFrame*, RwInt32*))0x8076E0)(frameList, frame, npIndex); +} + +rwFrameList* _rwFrameListDeinitialize(rwFrameList* frameList) { + return ((rwFrameList*(__cdecl *)(rwFrameList*))0x807720)(frameList); +} + +RwUInt32 _rwFrameListStreamGetSize(const rwFrameList* frameList) { + return ((RwUInt32(__cdecl *)(const rwFrameList*))0x807750)(frameList); +} + +rwFrameList* _rwFrameListStreamRead(RwStream* stream, rwFrameList* fl) { + return ((rwFrameList*(__cdecl *)(RwStream*, rwFrameList*))0x807970)(stream, fl); +} + +const rwFrameList* _rwFrameListStreamWrite(const rwFrameList* frameList, RwStream* stream) { + return ((const rwFrameList*(__cdecl *)(const rwFrameList*, RwStream*))0x8077A0)(frameList, stream); +} + +RwBBox* RwBBoxCalculate(RwBBox* boundBox, const RwV3d* verts, RwInt32 numVerts) { + return ((RwBBox*(__cdecl *)(RwBBox*, const RwV3d*, RwInt32))0x808F60)(boundBox, verts, numVerts); +} + +RwBBox* RwBBoxInitialize(RwBBox* boundBox, const RwV3d* vertex) { + return ((RwBBox*(__cdecl *)(RwBBox*, const RwV3d*))0x809020)(boundBox, vertex); +} + +RwBBox* RwBBoxAddPoint(RwBBox* boundBox, const RwV3d* vertex) { + return ((RwBBox*(__cdecl *)(RwBBox*, const RwV3d*))0x809060)(boundBox, vertex); +} + +RwBool RwBBoxContainsPoint(const RwBBox* boundBox, const RwV3d* vertex) { + return ((RwBool(__cdecl *)(const RwBBox*, const RwV3d*))0x8090E0)(boundBox, vertex); +} + +RwCamera* RwCameraBeginUpdate(RwCamera* camera) { + return ((RwCamera*(__cdecl *)(RwCamera*))0x7EE190)(camera); +} + +RwCamera* RwCameraEndUpdate(RwCamera* camera) { + return ((RwCamera*(__cdecl *)(RwCamera*))0x7EE180)(camera); +} + +RwCamera* RwCameraClear(RwCamera* camera, RwRGBA* colour, RwInt32 clearMode) { + return ((RwCamera*(__cdecl *)(RwCamera*, RwRGBA*, RwInt32))0x7EE340)(camera, colour, clearMode); +} + +RwCamera* RwCameraShowRaster(RwCamera* camera, void* pDev, RwUInt32 flags) { + return ((RwCamera*(__cdecl *)(RwCamera*, void*, RwUInt32))0x7EE370)(camera, pDev, flags); +} + +void RwCameraSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x7EE0F0)(blockSize, numBlocksToPrealloc); +} + +RwBool RwCameraDestroy(RwCamera* camera) { + return ((RwBool(__cdecl *)(RwCamera*))0x7EE4B0)(camera); +} + +RwCamera* RwCameraCreate(void) { + return ((RwCamera*(__cdecl *)(void))0x7EE4F0)(); +} + +RwCamera* RwCameraClone(RwCamera* camera) { + return ((RwCamera*(__cdecl *)(RwCamera*))0x7EF3B0)(camera); +} + +RwCamera* RwCameraSetViewOffset(RwCamera* camera, const RwV2d* offset) { + return ((RwCamera*(__cdecl *)(RwCamera*, const RwV2d*))0x7EE1A0)(camera, offset); +} + +RwCamera* RwCameraSetViewWindow(RwCamera* camera, const RwV2d* viewWindow) { + return ((RwCamera*(__cdecl *)(RwCamera*, const RwV2d*))0x7EE410)(camera, viewWindow); +} + +RwCamera* RwCameraSetProjection(RwCamera* camera, RwCameraProjection projection) { + return ((RwCamera*(__cdecl *)(RwCamera*, RwCameraProjection))0x7EE3A0)(camera, projection); +} + +RwCamera* RwCameraSetNearClipPlane(RwCamera* camera, RwReal nearClip) { + return ((RwCamera*(__cdecl *)(RwCamera*, RwReal))0x7EE1D0)(camera, nearClip); +} + +RwCamera* RwCameraSetFarClipPlane(RwCamera* camera, RwReal farClip) { + return ((RwCamera*(__cdecl *)(RwCamera*, RwReal))0x7EE2A0)(camera, farClip); +} + +RwInt32 RwCameraRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x7EE450)(size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 RwCameraGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x7EE480)(pluginID); +} + +RwBool RwCameraValidatePlugins(const RwCamera* camera) { + return ((RwBool(__cdecl *)(const RwCamera*))0x7EE4A0)(camera); +} + +RwFrustumTestResult RwCameraFrustumTestSphere(const RwCamera* camera, const RwSphere* sphere) { + return ((RwFrustumTestResult(__cdecl *)(const RwCamera*, const RwSphere*))0x7EE2D0)(camera, sphere); +} + +RwInt32 RwCameraRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkReadCallBack, RwPluginDataChunkWriteCallBack, RwPluginDataChunkGetSizeCallBack))0x808C90)(pluginID, readCB, writeCB, getSizeCB); +} + +RwInt32 RwCameraSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkAlwaysCallBack))0x808CC0)(pluginID, alwaysCB); +} + +RwUInt32 RwCameraStreamGetSize(const RwCamera* camera) { + return ((RwUInt32(__cdecl *)(const RwCamera*))0x808CE0)(camera); +} + +RwCamera* RwCameraStreamRead(RwStream* stream) { + return ((RwCamera*(__cdecl *)(RwStream*))0x808DE0)(stream); +} + +const RwCamera* RwCameraStreamWrite(const RwCamera* camera, RwStream* stream) { + return ((const RwCamera*(__cdecl *)(const RwCamera*, RwStream*))0x808D00)(camera, stream); +} + +RwCameraChunkInfo* RwCameraChunkInfoRead(RwStream* stream, RwCameraChunkInfo* cameraChunkInfo, RwInt32* bytesRead) { + return ((RwCameraChunkInfo*(__cdecl *)(RwStream*, RwCameraChunkInfo*, RwInt32*))0x808EF0)(stream, cameraChunkInfo, bytesRead); +} + +/* rpworld.h */ + +void _rwD3D9VSSetActiveWorldMatrix(const RwMatrix* worldMatrix) { + ((void(__cdecl *)(const RwMatrix*))0x764650)(worldMatrix); +} + +void _rwD3D9VSGetComposedTransformMatrix(void) { + ((void(__cdecl *)(void))0x7646E0)(); +} + +void _rwD3D9VSGetWorldViewTransposedMatrix(void) { + ((void(__cdecl *)(void))0x764730)(); +} + +void _rwD3D9VSGetWorldViewMatrix(void) { + ((void(__cdecl *)(void))0x764760)(); +} + +void _rwD3D9VSGetInverseWorldMatrix(void) { + ((void(__cdecl *)(void))0x7647B0)(); +} + +void _rwD3D9VSGetWorldMultiplyMatrix(RwMatrix* worldMultiplyMatrix, const RwMatrix* matrix) { + ((void(__cdecl *)(RwMatrix*, const RwMatrix*))0x764920)(worldMultiplyMatrix, matrix); +} + +void _rwD3D9VSGetWorldMultiplyTransposeMatrix(void* worldMultiplyMatrix, const RwMatrix* matrix) { + ((void(__cdecl *)(void*, const RwMatrix*))0x764960)(worldMultiplyMatrix, matrix); +} + +void _rwD3D9VSGetWorldViewMultiplyTransposeMatrix(void* worldViewMultiplyMatrix, const RwMatrix* matrix) { + ((void(__cdecl *)(void*, const RwMatrix*))0x7649D0)(worldViewMultiplyMatrix, matrix); +} + +void _rwD3D9VSGetWorldNormalizedMultiplyTransposeMatrix(void* worldMultiplyMatrix, const RwMatrix* matrix) { + ((void(__cdecl *)(void*, const RwMatrix*))0x764A70)(worldMultiplyMatrix, matrix); +} + +void _rwD3D9VSGetWorldNormalizedViewMultiplyTransposeMatrix(void* worldViewMultiplyMatrix, const RwMatrix* matrix) { + ((void(__cdecl *)(void*, const RwMatrix*))0x764B50)(worldViewMultiplyMatrix, matrix); +} + +void _rwD3D9VSGetWorldNormalizedTransposeMatrix(void) { + ((void(__cdecl *)(void))0x764C60)(); +} + +void _rwD3D9VSGetProjectionTransposedMatrix(void) { + ((void(__cdecl *)(void))0x764D20)(); +} + +void _rwD3D9VSGetNormalInLocalSpace(const RwV3d* normalWorldSpace, RwV3d* normalLocalSpace) { + ((void(__cdecl *)(const RwV3d*, RwV3d*))0x764D30)(normalWorldSpace, normalLocalSpace); +} + +void _rwD3D9VSGetPointInLocalSpace(const RwV3d* pointWorldSpace, RwV3d* pointLocalSpace) { + ((void(__cdecl *)(const RwV3d*, RwV3d*))0x764E70)(pointWorldSpace, pointLocalSpace); +} + +void _rwD3D9VSGetRadiusInLocalSpace(RwReal radiusWorldSpace, RwReal* radiusLocalSpace) { + ((void(__cdecl *)(RwReal, RwReal*))0x764F60)(radiusWorldSpace, radiusLocalSpace); +} + +void _rpD3D9VertexShaderCachePurge(void) { + ((void(__cdecl *)(void))0x75EE60)(); +} + +void* _rpD3D9GetVertexShader(const _rpD3D9VertexShaderDescriptor* desc, _rpD3D9VertexShaderDispatchDescriptor* dispatch) { + return ((void*(__cdecl *)(const _rpD3D9VertexShaderDescriptor*, _rpD3D9VertexShaderDispatchDescriptor*))0x75EED0)(desc, dispatch); +} + +RwUInt32 _rpD3D9GetNumConstantsUsed(const _rpD3D9VertexShaderDescriptor* desc) { + return ((RwUInt32(__cdecl *)(const _rpD3D9VertexShaderDescriptor*))0x75EDD0)(desc); +} + +void _rxD3D9VertexShaderDefaultBeginCallBack(void* object, RwUInt32 type, _rpD3D9VertexShaderDescriptor* desc) { + ((void(__cdecl *)(void*, RwUInt32, _rpD3D9VertexShaderDescriptor*))0x760DF0)(object, type, desc); +} + +RwV4d* _rxD3D9VertexShaderDefaultLightingCallBack(void* object, RwUInt32 type, RwV4d* shaderConstantPtr, _rpD3D9VertexShaderDescriptor* desc) { + return ((RwV4d*(__cdecl *)(void*, RwUInt32, RwV4d*, _rpD3D9VertexShaderDescriptor*))0x761170)(object, type, shaderConstantPtr, desc); +} + +void* _rxD3D9VertexShaderDefaultGetMaterialShaderCallBack(const RpMaterial* material, _rpD3D9VertexShaderDescriptor* desc, _rpD3D9VertexShaderDispatchDescriptor* dispatch) { + return ((void*(__cdecl *)(const RpMaterial*, _rpD3D9VertexShaderDescriptor*, _rpD3D9VertexShaderDispatchDescriptor*))0x761010)(material, desc, dispatch); +} + +void _rxD3D9VertexShaderDefaultMeshRenderCallBack(RxD3D9ResEntryHeader* resEntryHeader, RxD3D9InstanceData* instancedMesh, const _rpD3D9VertexShaderDescriptor* desc, const _rpD3D9VertexShaderDispatchDescriptor* dispatch) { + ((void(__cdecl *)(RxD3D9ResEntryHeader*, RxD3D9InstanceData*, const _rpD3D9VertexShaderDescriptor*, const _rpD3D9VertexShaderDispatchDescriptor*))0x761030)(resEntryHeader, instancedMesh, desc, dispatch); +} + +void _rxD3D9VertexShaderDefaultEndCallBack(void* object, RwUInt32 type, _rpD3D9VertexShaderDescriptor* desc) { + ((void(__cdecl *)(void*, RwUInt32, _rpD3D9VertexShaderDescriptor*))0x761000)(object, type, desc); +} + +void _rpD3D9VertexShaderUpdateLightsColors(RwV4d* shaderConstantPtr, const _rpD3D9VertexShaderDescriptor* desc, RwReal ambientCoef, RwReal diffuseCoef) { + ((void(__cdecl *)(RwV4d*, const _rpD3D9VertexShaderDescriptor*, RwReal, RwReal))0x761720)(shaderConstantPtr, desc, ambientCoef, diffuseCoef); +} + +void _rpD3D9VertexShaderUpdateMaterialColor(const RwRGBA* color, const _rpD3D9VertexShaderDispatchDescriptor* dispatch) { + ((void(__cdecl *)(const RwRGBA*, const _rpD3D9VertexShaderDispatchDescriptor*))0x761820)(color, dispatch); +} + +void _rpD3D9VertexShaderUpdateFogData(const _rpD3D9VertexShaderDescriptor* desc, const _rpD3D9VertexShaderDispatchDescriptor* dispatch) { + ((void(__cdecl *)(const _rpD3D9VertexShaderDescriptor*, const _rpD3D9VertexShaderDispatchDescriptor*))0x7618B0)(desc, dispatch); +} + +void _rpD3D9VertexShaderUpdateMorphingCoef(RwReal morphingCoef, const _rpD3D9VertexShaderDispatchDescriptor* dispatch) { + ((void(__cdecl *)(RwReal, const _rpD3D9VertexShaderDispatchDescriptor*))0x761950)(morphingCoef, dispatch); +} + +void _rpD3DVertexShaderSetUVAnimMatrix(RwMatrix* matrix, const _rpD3D9VertexShaderDispatchDescriptor* dispatch) { + ((void(__cdecl *)(RwMatrix*, const _rpD3D9VertexShaderDispatchDescriptor*))0x7619A0)(matrix, dispatch); +} + +void _rpD3D9VertexShaderSetEnvMatrix(RwFrame* frame, const _rpD3D9VertexShaderDescriptor* desc, const _rpD3D9VertexShaderDispatchDescriptor* dispatch) { + ((void(__cdecl *)(RwFrame*, const _rpD3D9VertexShaderDescriptor*, const _rpD3D9VertexShaderDispatchDescriptor*))0x761A10)(frame, desc, dispatch); +} + +void _rpD3D9VertexShaderSetBumpMatrix(RwFrame* frame, RwReal factor, const _rpD3D9VertexShaderDispatchDescriptor* dispatch) { + ((void(__cdecl *)(RwFrame*, RwReal, const _rpD3D9VertexShaderDispatchDescriptor*))0x761B70)(frame, factor, dispatch); +} + +RxNodeDefinition* RxNodeDefinitionGetD3D9WorldSectorAllInOne(void) { + return ((RxNodeDefinition*(__cdecl *)(void))0x75E9F0)(); +} + +RxNodeDefinition* RxNodeDefinitionGetD3D9AtomicAllInOne(void) { + return ((RxNodeDefinition*(__cdecl *)(void))0x7582E0)(); +} + +void RpMaterialSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x74D8C0)(blockSize, numBlocksToPrealloc); +} + +RpMaterial* RpMaterialCreate(void) { + return ((RpMaterial*(__cdecl *)(void))0x74D990)(); +} + +RwBool RpMaterialDestroy(RpMaterial* material) { + return ((RwBool(__cdecl *)(RpMaterial*))0x74DA20)(material); +} + +RpMaterial* RpMaterialClone(RpMaterial* material) { + return ((RpMaterial*(__cdecl *)(RpMaterial*))0x74DA80)(material); +} + +RpMaterial* RpMaterialSetTexture(RpMaterial* material, RwTexture* texture) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwTexture*))0x74DBC0)(material, texture); +} + +RwInt32 RpMaterialRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x74DBF0)(size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 RpMaterialRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkReadCallBack, RwPluginDataChunkWriteCallBack, RwPluginDataChunkGetSizeCallBack))0x74DC20)(pluginID, readCB, writeCB, getSizeCB); +} + +RwInt32 RpMaterialSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkAlwaysCallBack))0x74DC50)(pluginID, alwaysCB); +} + +RwInt32 RpMaterialSetStreamRightsCallBack(RwUInt32 pluginID, RwPluginDataChunkRightsCallBack rightsCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkRightsCallBack))0x74DC70)(pluginID, rightsCB); +} + +RwInt32 RpMaterialGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x74DC90)(pluginID); +} + +RwBool RpMaterialValidatePlugins(const RpMaterial* material) { + return ((RwBool(__cdecl *)(const RpMaterial*))0x74DCB0)(material); +} + +RwUInt32 RpMaterialStreamGetSize(const RpMaterial* material) { + return ((RwUInt32(__cdecl *)(const RpMaterial*))0x74E010)(material); +} + +RpMaterial* RpMaterialStreamRead(RwStream* stream) { + return ((RpMaterial*(__cdecl *)(RwStream*))0x74DD30)(stream); +} + +const RpMaterial* RpMaterialStreamWrite(const RpMaterial* material, RwStream* stream) { + return ((const RpMaterial*(__cdecl *)(const RpMaterial*, RwStream*))0x74E050)(material, stream); +} + +RpMaterialChunkInfo* _rpMaterialChunkInfoRead(RwStream* stream, RpMaterialChunkInfo* materialChunkInfo, RwInt32* bytesRead) { + return ((RpMaterialChunkInfo*(__cdecl *)(RwStream*, RpMaterialChunkInfo*, RwInt32*))0x74DCC0)(stream, materialChunkInfo, bytesRead); +} + +RpMaterialList* _rpMaterialListInitialize(RpMaterialList* matList) { + return ((RpMaterialList*(__cdecl *)(RpMaterialList*))0x74E1B0)(matList); +} + +RpMaterialList* _rpMaterialListDeinitialize(RpMaterialList* matList) { + return ((RpMaterialList*(__cdecl *)(RpMaterialList*))0x74E150)(matList); +} + +RpMaterial** _rpMaterialListAlloc(RwUInt32 count) { + return ((RpMaterial**(__cdecl *)(RwUInt32))0x74E1C0)(count); +} + +RpMaterial* _rpMaterialListGetMaterial(const RpMaterialList* matList, RwInt32 matIndex) { + return ((RpMaterial*(__cdecl *)(const RpMaterialList*, RwInt32))0x74E2B0)(matList, matIndex); +} + +RpMaterialList* _rpMaterialListSetSize(RpMaterialList* matList, RwInt32 size) { + return ((RpMaterialList*(__cdecl *)(RpMaterialList*, RwInt32))0x74E2C0)(matList, size); +} + +RpMaterialList* _rpMaterialListCopy(RpMaterialList* matListOut, const RpMaterialList* matListIn) { + return ((RpMaterialList*(__cdecl *)(RpMaterialList*, const RpMaterialList*))0x74E1F0)(matListOut, matListIn); +} + +RwInt32 _rpMaterialListAppendMaterial(RpMaterialList* matList, RpMaterial* material) { + return ((RwInt32(__cdecl *)(RpMaterialList*, RpMaterial*))0x74E350)(matList, material); +} + +RwInt32 _rpMaterialListFindMaterialIndex(const RpMaterialList* matList, const RpMaterial* material) { + return ((RwInt32(__cdecl *)(const RpMaterialList*, const RpMaterial*))0x74E420)(matList, material); +} + +RwUInt32 _rpMaterialListStreamGetSize(const RpMaterialList* matList) { + return ((RwUInt32(__cdecl *)(const RpMaterialList*))0x74E450)(matList); +} + +RpMaterialList* _rpMaterialListStreamRead(RwStream* stream, RpMaterialList* matList) { + return ((RpMaterialList*(__cdecl *)(RwStream*, RpMaterialList*))0x74E600)(stream, matList); +} + +const RpMaterialList* _rpMaterialListStreamWrite(const RpMaterialList* matList, RwStream* stream) { + return ((const RpMaterialList*(__cdecl *)(const RpMaterialList*, RwStream*))0x74E4B0)(matList, stream); +} + +void* _rpMeshOpen(void* instance, RwInt32 offset, RwInt32 size) { + return ((void*(__cdecl *)(void*, RwInt32, RwInt32))0x758970)(instance, offset, size); +} + +void* _rpMeshClose(void* instance, RwInt32 offset, RwInt32 size) { + return ((void*(__cdecl *)(void*, RwInt32, RwInt32))0x758940)(instance, offset, size); +} + +RwInt16 _rpMeshGetNextSerialNumber(void) { + return ((RwInt16(__cdecl *)(void))0x7590E0)(); +} + +RpBuildMesh* _rpBuildMeshCreate(RwUInt32 bufferSize) { + return ((RpBuildMesh*(__cdecl *)(RwUInt32))0x758A90)(bufferSize); +} + +RwBool _rpBuildMeshDestroy(RpBuildMesh* mesh) { + return ((RwBool(__cdecl *)(RpBuildMesh*))0x758B80)(mesh); +} + +RwBool _rpMeshDestroy(RpMeshHeader* mesh) { + return ((RwBool(__cdecl *)(RpMeshHeader*))0x758BC0)(mesh); +} + +RpBuildMesh* _rpBuildMeshAddTriangle(RpBuildMesh* mesh, RpMaterial* material, RwInt32 vert1, RwInt32 vert2, RwInt32 vert3, RwUInt16 matIndex, RwUInt16 textureIndex, RwUInt16 rasterIndex, RwUInt16 pipelineIndex) { + return ((RpBuildMesh*(__cdecl *)(RpBuildMesh*, RpMaterial*, RwInt32, RwInt32, RwInt32, RwUInt16, RwUInt16, RwUInt16, RwUInt16))0x758C00)(mesh, material, vert1, vert2, vert3, matIndex, textureIndex, rasterIndex, pipelineIndex); +} + +RpMeshHeader* _rpMeshHeaderForAllMeshes(RpMeshHeader* meshHeader, RpMeshCallBack fpCallBack, void* pData) { + return ((RpMeshHeader*(__cdecl *)(RpMeshHeader*, RpMeshCallBack, void*))0x758D30)(meshHeader, fpCallBack, pData); +} + +RwStream* _rpMeshWrite(const RpMeshHeader* meshHeader, const void* object, RwStream* stream, const RpMaterialList* matList) { + return ((RwStream*(__cdecl *)(const RpMeshHeader*, const void*, RwStream*, const RpMaterialList*))0x758D70)(meshHeader, object, stream, matList); +} + +RpMeshHeader* _rpMeshRead(RwStream* stream, const void* object, const RpMaterialList* matList) { + return ((RpMeshHeader*(__cdecl *)(RwStream*, const void*, const RpMaterialList*))0x758EC0)(stream, object, matList); +} + +RwInt32 _rpMeshSize(const RpMeshHeader* meshHeader, const void* object) { + return ((RwInt32(__cdecl *)(const RpMeshHeader*, const void*))0x759090)(meshHeader, object); +} + +void _rpMeshHeaderDestroy(RpMeshHeader* meshHeader) { + ((void(__cdecl *)(RpMeshHeader*))0x758910)(meshHeader); +} + +RpMeshHeader* _rpMeshHeaderCreate(RwUInt32 size) { + return ((RpMeshHeader*(__cdecl *)(RwUInt32))0x758920)(size); +} + +RpTriStripPolygon* RpTriStripPolygonFollowStrip(RpTriStripPolygon* curr, RpTriStripPolygon* prev) { + return ((RpTriStripPolygon*(__cdecl *)(RpTriStripPolygon*, RpTriStripPolygon*))0x75C330)(curr, prev); +} + +RwUInt32 RpTriStripDefaultCost(RpTriStripPolygon* startPolygon, RwUInt32 testFrame, void* data) { + return ((RwUInt32(__cdecl *)(RpTriStripPolygon*, RwUInt32, void*))0x75B500)(startPolygon, testFrame, data); +} + +RpTriStripMesh* RpTriStripMeshTunnel(RpTriStripMesh* mesh, void* data) { + return ((RpTriStripMesh*(__cdecl *)(RpTriStripMesh*, void*))0x75B780)(mesh, data); +} + +RpTriStripMesh* RpTriStripMeshQuick(RpTriStripMesh* mesh, void* data) { + return ((RpTriStripMesh*(__cdecl *)(RpTriStripMesh*, void*))0x75BD80)(mesh, data); +} + +RpMeshHeader* RpBuildMeshGenerateTriStrip(RpBuildMesh* buildMesh, void* data) { + return ((RpMeshHeader*(__cdecl *)(RpBuildMesh*, void*))0x75C380)(buildMesh, data); +} + +RpMeshHeader* RpBuildMeshGenerateTrivialTriStrip(RpBuildMesh* buildMesh, void* data) { + return ((RpMeshHeader*(__cdecl *)(RpBuildMesh*, void*))0x759100)(buildMesh, data); +} + +RpMeshHeader* RpBuildMeshGenerateDefaultTriStrip(RpBuildMesh* buildmesh, void* data) { + return ((RpMeshHeader*(__cdecl *)(RpBuildMesh*, void*))0x7591B0)(buildmesh, data); +} + +RpMeshHeader* RpBuildMeshGeneratePreprocessTriStrip(RpBuildMesh* buildmesh, void* data) { + return ((RpMeshHeader*(__cdecl *)(RpBuildMesh*, void*))0x75A900)(buildmesh, data); +} + +RpMeshHeader* RpBuildMeshGenerateExhaustiveTriStrip(RpBuildMesh* buildmesh, void* data) { + return ((RpMeshHeader*(__cdecl *)(RpBuildMesh*, void*))0x75A940)(buildmesh, data); +} + +RpMeshHeader* RpBuildMeshGenerateDefaultIgnoreWindingTriStrip(RpBuildMesh* buildmesh, void* data) { + return ((RpMeshHeader*(__cdecl *)(RpBuildMesh*, void*))0x75A8E0)(buildmesh, data); +} + +RpMeshHeader* RpBuildMeshGeneratePreprocessIgnoreWindingTriStrip(RpBuildMesh* buildmesh, void* data) { + return ((RpMeshHeader*(__cdecl *)(RpBuildMesh*, void*))0x75A920)(buildmesh, data); +} + +RpMeshHeader* RpBuildMeshGenerateExhaustiveIgnoreWindingTriStrip(RpBuildMesh* buildmesh, void* data) { + return ((RpMeshHeader*(__cdecl *)(RpBuildMesh*, void*))0x75B4E0)(buildmesh, data); +} + +RwBool RpMeshSetTriStripMethod(RpTriStripMeshCallBack callback, void* data) { + return ((RwBool(__cdecl *)(RpTriStripMeshCallBack, void*))0x75D4C0)(callback, data); +} + +RwBool RpMeshGetTriStripMethod(RpTriStripMeshCallBack* callback, void* data) { + return ((RwBool(__cdecl *)(RpTriStripMeshCallBack*, void*))0x75D500)(callback, data); +} + +RpMeshHeader* _rpTriListMeshGenerate(RpBuildMesh* buildMesh, void* data) { + return ((RpMeshHeader*(__cdecl *)(RpBuildMesh*, void*))0x75D530)(buildMesh, data); +} + +RpMeshHeader* _rpMeshOptimise(RpBuildMesh* buildmesh, RwUInt32 flags) { + return ((RpMeshHeader*(__cdecl *)(RpBuildMesh*, RwUInt32))0x75D970)(buildmesh, flags); +} + +RpGeometry* RpGeometryTransform(RpGeometry* geometry, const RwMatrix* matrix) { + return ((RpGeometry*(__cdecl *)(RpGeometry*, const RwMatrix*))0x74BFE0)(geometry, matrix); +} + +RpGeometry* RpGeometryCreateSpace(RwReal radius) { + return ((RpGeometry*(__cdecl *)(RwReal))0x74C130)(radius); +} + +const RpMorphTarget* RpMorphTargetCalcBoundingSphere(const RpMorphTarget* morphTarget, RwSphere* boundingSphere) { + return ((const RpMorphTarget*(__cdecl *)(const RpMorphTarget*, RwSphere*))0x74C200)(morphTarget, boundingSphere); +} + +RwInt32 RpGeometryAddMorphTargets(RpGeometry* geometry, RwInt32 mtcount) { + return ((RwInt32(__cdecl *)(RpGeometry*, RwInt32))0x74C310)(geometry, mtcount); +} + +RwInt32 RpGeometryAddMorphTarget(RpGeometry* geometry) { + return ((RwInt32(__cdecl *)(RpGeometry*))0x74C4D0)(geometry); +} + +RpGeometry* RpGeometryRemoveMorphTarget(RpGeometry* geometry, RwInt32 morphTarget) { + return ((RpGeometry*(__cdecl *)(RpGeometry*, RwInt32))0x74C4E0)(geometry, morphTarget); +} + +const RpGeometry* RpGeometryTriangleSetVertexIndices(const RpGeometry* geometry, RpTriangle* triangle, RwUInt16 vert1, RwUInt16 vert2, RwUInt16 vert3) { + return ((const RpGeometry*(__cdecl *)(const RpGeometry*, RpTriangle*, RwUInt16, RwUInt16, RwUInt16))0x74C690)(geometry, triangle, vert1, vert2, vert3); +} + +RpGeometry* RpGeometryTriangleSetMaterial(RpGeometry* geometry, RpTriangle* triangle, RpMaterial* material) { + return ((RpGeometry*(__cdecl *)(RpGeometry*, RpTriangle*, RpMaterial*))0x74C6C0)(geometry, triangle, material); +} + +const RpGeometry* RpGeometryTriangleGetVertexIndices(const RpGeometry* geometry, const RpTriangle* triangle, RwUInt16* vert1, RwUInt16* vert2, RwUInt16* vert3) { + return ((const RpGeometry*(__cdecl *)(const RpGeometry*, const RpTriangle*, RwUInt16*, RwUInt16*, RwUInt16*))0x74C720)(geometry, triangle, vert1, vert2, vert3); +} + +RpMaterial* RpGeometryTriangleGetMaterial(const RpGeometry* geometry, const RpTriangle* triangle) { + return ((RpMaterial*(__cdecl *)(const RpGeometry*, const RpTriangle*))0x74C760)(geometry, triangle); +} + +RpGeometry* RpGeometryForAllMaterials(RpGeometry* geometry, RpMaterialCallBack fpCallBack, void* pData) { + return ((RpGeometry*(__cdecl *)(RpGeometry*, RpMaterialCallBack, void*))0x74C790)(geometry, fpCallBack, pData); +} + +RpGeometry* RpGeometryLock(RpGeometry* geometry, RwInt32 lockMode) { + return ((RpGeometry*(__cdecl *)(RpGeometry*, RwInt32))0x74C7D0)(geometry, lockMode); +} + +RpGeometry* RpGeometryUnlock(RpGeometry* geometry) { + return ((RpGeometry*(__cdecl *)(RpGeometry*))0x74C800)(geometry); +} + +const RpGeometry* RpGeometryForAllMeshes(const RpGeometry* geometry, RpMeshCallBack fpCallBack, void* pData) { + return ((const RpGeometry*(__cdecl *)(const RpGeometry*, RpMeshCallBack, void*))0x74CA60)(geometry, fpCallBack, pData); +} + +RpGeometry* RpGeometryCreate(RwInt32 numVert, RwInt32 numTriangles, RwUInt32 format) { + return ((RpGeometry*(__cdecl *)(RwInt32, RwInt32, RwUInt32))0x74CA90)(numVert, numTriangles, format); +} + +RwBool RpGeometryDestroy(RpGeometry* geometry) { + return ((RwBool(__cdecl *)(RpGeometry*))0x74CCC0)(geometry); +} + +RwInt32 RpGeometryRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x74CD70)(size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 RpGeometryRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkReadCallBack, RwPluginDataChunkWriteCallBack, RwPluginDataChunkGetSizeCallBack))0x74CDA0)(pluginID, readCB, writeCB, getSizeCB); +} + +RwInt32 RpGeometrySetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkAlwaysCallBack))0x74CDD0)(pluginID, alwaysCB); +} + +RwInt32 RpGeometryGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x74CDF0)(pluginID); +} + +RwBool RpGeometryValidatePlugins(const RpGeometry* geometry) { + return ((RwBool(__cdecl *)(const RpGeometry*))0x74CE10)(geometry); +} + +RwUInt32 RpGeometryStreamGetSize(const RpGeometry* geometry) { + return ((RwUInt32(__cdecl *)(const RpGeometry*))0x74CE20)(geometry); +} + +const RpGeometry* RpGeometryStreamWrite(const RpGeometry* geometry, RwStream* stream) { + return ((const RpGeometry*(__cdecl *)(const RpGeometry*, RwStream*))0x74CED0)(geometry, stream); +} + +RpGeometry* RpGeometryStreamRead(RwStream* stream) { + return ((RpGeometry*(__cdecl *)(RwStream*))0x74D190)(stream); +} + +RpGeometryChunkInfo* _rpGeometryChunkInfoRead(RwStream* stream, RpGeometryChunkInfo* geometryChunkInfo, RwInt32* bytesRead) { + return ((RpGeometryChunkInfo*(__cdecl *)(RwStream*, RpGeometryChunkInfo*, RwInt32*))0x74D750)(stream, geometryChunkInfo, bytesRead); +} + +RpWorldSector* RpWorldSectorRender(RpWorldSector* worldSector) { + return ((RpWorldSector*(__cdecl *)(RpWorldSector*))0x761C50)(worldSector); +} + +const RpWorldSector* RpWorldSectorForAllMeshes(const RpWorldSector* sector, RpMeshCallBack fpCallBack, void* pData) { + return ((const RpWorldSector*(__cdecl *)(const RpWorldSector*, RpMeshCallBack, void*))0x761C60)(sector, fpCallBack, pData); +} + +RwInt32 RpWorldSectorRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x761C90)(size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 RpWorldSectorRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkReadCallBack, RwPluginDataChunkWriteCallBack, RwPluginDataChunkGetSizeCallBack))0x761CC0)(pluginID, readCB, writeCB, getSizeCB); +} + +RwInt32 RpWorldSectorSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkAlwaysCallBack))0x761CF0)(pluginID, alwaysCB); +} + +RwInt32 RpWorldSectorSetStreamRightsCallBack(RwUInt32 pluginID, RwPluginDataChunkRightsCallBack rightsCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkRightsCallBack))0x761D10)(pluginID, rightsCB); +} + +RwInt32 RpWorldSectorGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x761D30)(pluginID); +} + +RwBool RpWorldSectorValidatePlugins(const RpWorldSector* sector) { + return ((RwBool(__cdecl *)(const RpWorldSector*))0x761D50)(sector); +} + +void RpLightSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x752250)(blockSize, numBlocksToPrealloc); +} + +RpLight* RpLightCreate(RwInt32 type) { + return ((RpLight*(__cdecl *)(RwInt32))0x752110)(type); +} + +RwBool RpLightDestroy(RpLight* light) { + return ((RwBool(__cdecl *)(RpLight*))0x7520D0)(light); +} + +RpLight* RpLightSetRadius(RpLight* light, RwReal radius) { + return ((RpLight*(__cdecl *)(RpLight*, RwReal))0x751A70)(light, radius); +} + +RpLight* RpLightSetColor(RpLight* light, const RwRGBAReal* color) { + return ((RpLight*(__cdecl *)(RpLight*, const RwRGBAReal*))0x751A90)(light, color); +} + +RwReal RpLightGetConeAngle(const RpLight* light) { + return ((RwReal(__cdecl *)(const RpLight*))0x751AE0)(light); +} + +RpLight* RpLightSetConeAngle(RpLight* ight, RwReal angle) { + return ((RpLight*(__cdecl *)(RpLight*, RwReal))0x751D20)(ight, angle); +} + +RwUInt32 RpLightStreamGetSize(const RpLight* light) { + return ((RwUInt32(__cdecl *)(const RpLight*))0x751E10)(light); +} + +RpLight* RpLightStreamRead(RwStream* stream) { + return ((RpLight*(__cdecl *)(RwStream*))0x751F00)(stream); +} + +RpLightChunkInfo* _rpLightChunkInfoRead(RwStream* stream, RpLightChunkInfo* lightChunkInfo, RwInt32* bytesRead) { + return ((RpLightChunkInfo*(__cdecl *)(RwStream*, RpLightChunkInfo*, RwInt32*))0x752060)(stream, lightChunkInfo, bytesRead); +} + +RwInt32 RpLightRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x751D60)(size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 RpLightRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkReadCallBack, RwPluginDataChunkWriteCallBack, RwPluginDataChunkGetSizeCallBack))0x751D90)(pluginID, readCB, writeCB, getSizeCB); +} + +RwInt32 RpLightSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkAlwaysCallBack))0x751DC0)(pluginID, alwaysCB); +} + +RwInt32 RpLightGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x751DE0)(pluginID); +} + +RwBool RpLightValidatePlugins(const RpLight* light) { + return ((RwBool(__cdecl *)(const RpLight*))0x751E00)(light); +} + +void RpD3D9LightSetAttenuationParams(RpLight* light, const RpD3D9AttenuationParams* params) { + ((void(__cdecl *)(RpLight*, const RpD3D9AttenuationParams*))0x755D20)(light, params); +} + +void RpD3D9LightGetAttenuationParams(const RpLight* light, RpD3D9AttenuationParams* params) { + ((void(__cdecl *)(const RpLight*, RpD3D9AttenuationParams*))0x755D50)(light, params); +} + +RwBool _rwD3D9LightsOpen(void) { + return ((RwBool(__cdecl *)(void))0x755D80)(); +} + +RwBool _rwD3D9LightsGlobalEnable(RpLightFlag flags) { + return ((RwBool(__cdecl *)(RpLightFlag))0x756070)(flags); +} + +RwBool _rwD3D9LightDirectionalEnable(RpLight* light) { + return ((RwBool(__cdecl *)(RpLight*))0x756260)(light); +} + +RwBool _rwD3D9LightLocalEnable(RpLight* light) { + return ((RwBool(__cdecl *)(RpLight*))0x756390)(light); +} + +void _rwD3D9LightsEnable(RwBool enable, RwUInt32 type) { + ((void(__cdecl *)(RwBool, RwUInt32))0x756600)(enable, type); +} + +void _rwD3D9LightsClose(void) { + ((void(__cdecl *)(void))0x755FE0)(); +} + +void RpAtomicSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x749720)(blockSize, numBlocksToPrealloc); +} + +void RpClumpSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x749740)(blockSize, numBlocksToPrealloc); +} + +RpAtomic* AtomicDefaultRenderCallBack(RpAtomic* atomic) { + return ((RpAtomic*(__cdecl *)(RpAtomic*))0x7491C0)(atomic); +} + +void _rpAtomicResyncInterpolatedSphere(RpAtomic* atomic) { + ((void(__cdecl *)(RpAtomic*))0x7491F0)(atomic); +} + +const RwSphere* RpAtomicGetWorldBoundingSphere(RpAtomic* atomic) { + return ((const RwSphere*(__cdecl *)(RpAtomic*))0x749330)(atomic); +} + +RpClump* RpClumpForAllAtomics(RpClump* clump, RpAtomicCallBack callback, void* pData) { + return ((RpClump*(__cdecl *)(RpClump*, RpAtomicCallBack, void*))0x749B70)(clump, callback, pData); +} + +RpClump* RpClumpForAllLights(RpClump* clump, RpLightCallBack callback, void* pData) { + return ((RpClump*(__cdecl *)(RpClump*, RpLightCallBack, void*))0x749C00)(clump, callback, pData); +} + +RpClump* RpClumpForAllCameras(RpClump* clump, RwCameraCallBack callback, void* pData) { + return ((RpClump*(__cdecl *)(RpClump*, RwCameraCallBack, void*))0x749BB0)(clump, callback, pData); +} + +RpAtomic* RpAtomicSetFrame(RpAtomic* atomic, RwFrame* frame) { + return ((RpAtomic*(__cdecl *)(RpAtomic*, RwFrame*))0x74BF20)(atomic, frame); +} + +RpClump* RpClumpCreateSpace(const RwV3d* position, RwReal radius) { + return ((RpClump*(__cdecl *)(const RwV3d*, RwReal))0x749970)(position, radius); +} + +RpClump* RpClumpRender(RpClump* clump) { + return ((RpClump*(__cdecl *)(RpClump*))0x749B20)(clump); +} + +RpClump* RpClumpRemoveAtomic(RpClump* clump, RpAtomic* atomic) { + return ((RpClump*(__cdecl *)(RpClump*, RpAtomic*))0x74A4C0)(clump, atomic); +} + +RpClump* RpClumpAddAtomic(RpClump* clump, RpAtomic* atomic) { + return ((RpClump*(__cdecl *)(RpClump*, RpAtomic*))0x74A490)(clump, atomic); +} + +RpClump* RpClumpRemoveLight(RpClump* clump, RpLight* light) { + return ((RpClump*(__cdecl *)(RpClump*, RpLight*))0x74A520)(clump, light); +} + +RpClump* RpClumpAddLight(RpClump* clump, RpLight* light) { + return ((RpClump*(__cdecl *)(RpClump*, RpLight*))0x74A4F0)(clump, light); +} + +RpClump* RpClumpRemoveCamera(RpClump* clump, RwCamera* camera) { + return ((RpClump*(__cdecl *)(RpClump*, RwCamera*))0x74A580)(clump, camera); +} + +RpClump* RpClumpAddCamera(RpClump* clump, RwCamera* camera) { + return ((RpClump*(__cdecl *)(RpClump*, RwCamera*))0x74A550)(clump, camera); +} + +RwBool RpClumpDestroy(RpClump* clump) { + return ((RwBool(__cdecl *)(RpClump*))0x74A310)(clump); +} + +RpClump* RpClumpCreate(void) { + return ((RpClump*(__cdecl *)(void))0x74A290)(); +} + +RpClump* RpClumpClone(RpClump* clump) { + return ((RpClump*(__cdecl *)(RpClump*))0x749F70)(clump); +} + +RwBool RpAtomicDestroy(RpAtomic* atomic) { + return ((RwBool(__cdecl *)(RpAtomic*))0x749DC0)(atomic); +} + +RpAtomic* RpAtomicClone(RpAtomic* atomic) { + return ((RpAtomic*(__cdecl *)(RpAtomic*))0x749E60)(atomic); +} + +RpAtomic* RpAtomicCreate(void) { + return ((RpAtomic*(__cdecl *)(void))0x749C50)(); +} + +RpAtomic* RpAtomicSetGeometry(RpAtomic* atomic, RpGeometry* geometry, RwUInt32 flags) { + return ((RpAtomic*(__cdecl *)(RpAtomic*, RpGeometry*, RwUInt32))0x749D40)(atomic, geometry, flags); +} + +RpClump* RpClumpSetCallBack(RpClump* clump, RpClumpCallBack callback) { + return ((RpClump*(__cdecl *)(RpClump*, RpClumpCallBack))0x74A240)(clump, callback); +} + +RpClumpCallBack RpClumpGetCallBack(const RpClump* clump) { + return ((RpClumpCallBack(__cdecl *)(const RpClump*))0x74A270)(clump); +} + +RwInt32 RpClumpGetNumAtomics(RpClump* clump) { + return ((RwInt32(__cdecl *)(RpClump*))0x7498E0)(clump); +} + +RwInt32 RpClumpGetNumLights(RpClump* clump) { + return ((RwInt32(__cdecl *)(RpClump*))0x749910)(clump); +} + +RwInt32 RpClumpGetNumCameras(RpClump* clump) { + return ((RwInt32(__cdecl *)(RpClump*))0x749940)(clump); +} + +RpClump* RpLightGetClump(const RpLight* light) { + return ((RpClump*(__cdecl *)(const RpLight*))0x749E40)(light); +} + +RpClump* RwCameraGetClump(const RwCamera* camera) { + return ((RpClump*(__cdecl *)(const RwCamera*))0x749E50)(camera); +} + +RwUInt32 RpAtomicStreamGetSize(RpAtomic* atomic) { + return ((RwUInt32(__cdecl *)(RpAtomic*))0x74A5B0)(atomic); +} + +RpAtomic* RpAtomicStreamRead(RwStream* stream) { + return ((RpAtomic*(__cdecl *)(RwStream*))0x74B030)(stream); +} + +RpAtomic* RpAtomicStreamWrite(RpAtomic* atomic, RwStream* stream) { + return ((RpAtomic*(__cdecl *)(RpAtomic*, RwStream*))0x74A850)(atomic, stream); +} + +RwUInt32 RpClumpStreamGetSize(RpClump* clump) { + return ((RwUInt32(__cdecl *)(RpClump*))0x74A5E0)(clump); +} + +RpClump* RpClumpStreamRead(RwStream* stream) { + return ((RpClump*(__cdecl *)(RwStream*))0x74B420)(stream); +} + +RpClump* RpClumpStreamWrite(RpClump* clump, RwStream* stream) { + return ((RpClump*(__cdecl *)(RpClump*, RwStream*))0x74AA10)(clump, stream); +} + +RpClumpChunkInfo* _rpClumpChunkInfoRead(RwStream* stream, RpClumpChunkInfo* clumpChunkInfo, RwInt32* bytesRead) { + return ((RpClumpChunkInfo*(__cdecl *)(RwStream*, RpClumpChunkInfo*, RwInt32*))0x74BD40)(stream, clumpChunkInfo, bytesRead); +} + +RwInt32 RpAtomicRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x74BDA0)(size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 RpClumpRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x74BDD0)(size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 RpAtomicRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkReadCallBack, RwPluginDataChunkWriteCallBack, RwPluginDataChunkGetSizeCallBack))0x74BE00)(pluginID, readCB, writeCB, getSizeCB); +} + +RwInt32 RpAtomicSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkAlwaysCallBack))0x74BE30)(pluginID, alwaysCB); +} + +RwInt32 RpAtomicSetStreamRightsCallBack(RwUInt32 pluginID, RwPluginDataChunkRightsCallBack rightsCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkRightsCallBack))0x74BE50)(pluginID, rightsCB); +} + +RwInt32 RpClumpRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkReadCallBack, RwPluginDataChunkWriteCallBack, RwPluginDataChunkGetSizeCallBack))0x74BE70)(pluginID, readCB, writeCB, getSizeCB); +} + +RwInt32 RpClumpSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkAlwaysCallBack))0x74BEA0)(pluginID, alwaysCB); +} + +RwInt32 RpAtomicGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x74BEC0)(pluginID); +} + +RwInt32 RpClumpGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x74BEE0)(pluginID); +} + +RwBool RpAtomicValidatePlugins(const RpAtomic* atomic) { + return ((RwBool(__cdecl *)(const RpAtomic*))0x74BF00)(atomic); +} + +RwBool RpClumpValidatePlugins(const RpClump* clump) { + return ((RwBool(__cdecl *)(const RpClump*))0x74BF10)(clump); +} + +RwBool RpAtomicInstance(RpAtomic* atomic) { + return ((RwBool(__cdecl *)(RpAtomic*))0x74BF40)(atomic); +} + +RwBool _rpWorldFindBBox(RpWorld* world, RwBBox* boundingBox) { + return ((RwBool(__cdecl *)(RpWorld*, RwBBox*))0x74EFA0)(world, boundingBox); +} + +RpWorld* _rpWorldSetupSectorBoundingBoxes(RpWorld* world) { + return ((RpWorld*(__cdecl *)(RpWorld*))0x74F020)(world); +} + +void _rpWorldSectorDeinstanceAll(RpSector* sector) { + ((void(__cdecl *)(RpSector*))0x74ECA0)(sector); +} + +void _rpWorldSectorDestroyRecurse(RpSector* sector) { + ((void(__cdecl *)(RpSector*))0x74ED50)(sector); +} + +RwBool _rpWorldForAllGlobalLights(RpLightCallBack callBack, void* pData) { + return ((RwBool(__cdecl *)(RpLightCallBack, void*))0x74EF10)(callBack, pData); +} + +RpWorldSector* _rpWorldSectorForAllLocalLights(RpWorldSector* sector, RpLightCallBack callBack, void* pData) { + return ((RpWorldSector*(__cdecl *)(RpWorldSector*, RpLightCallBack, void*))0x74EF60)(sector, callBack, pData); +} + +RpWorldSector* _rpSectorDefaultRenderCallBack(RpWorldSector* sector) { + return ((RpWorldSector*(__cdecl *)(RpWorldSector*))0x74EEC0)(sector); +} + +RpWorld* RpWorldLock(RpWorld* world) { + return ((RpWorld*(__cdecl *)(RpWorld*))0x74F1A0)(world); +} + +RpWorld* RpWorldUnlock(RpWorld* world) { + return ((RpWorld*(__cdecl *)(RpWorld*))0x74F210)(world); +} + +void _rpWorldRegisterWorld(RpWorld* world, RwUInt32 memorySize) { + ((void(__cdecl *)(RpWorld*, RwUInt32))0x74F0C0)(world, memorySize); +} + +void _rpWorldUnregisterWorld(RpWorld* world) { + ((void(__cdecl *)(RpWorld*))0x74F140)(world); +} + +RwBool RpWorldPluginAttach(void) { + return ((RwBool(__cdecl *)(void))0x74FDA0)(); +} + +RpWorld* RpWorldForAllClumps(RpWorld* world, RpClumpCallBack fpCallBack, void* pData) { + return ((RpWorld*(__cdecl *)(RpWorld*, RpClumpCallBack, void*))0x74FB80)(world, fpCallBack, pData); +} + +RpWorld* RpWorldForAllMaterials(RpWorld* world, RpMaterialCallBack fpCallBack, void* pData) { + return ((RpWorld*(__cdecl *)(RpWorld*, RpMaterialCallBack, void*))0x74FBC0)(world, fpCallBack, pData); +} + +RpWorld* RpWorldForAllLights(RpWorld* world, RpLightCallBack fpCallBack, void* pData) { + return ((RpWorld*(__cdecl *)(RpWorld*, RpLightCallBack, void*))0x74FC00)(world, fpCallBack, pData); +} + +RpWorld* RpWorldForAllWorldSectors(RpWorld* world, RpWorldSectorCallBack fpCallBack, void* pData) { + return ((RpWorld*(__cdecl *)(RpWorld*, RpWorldSectorCallBack, void*))0x74FC70)(world, fpCallBack, pData); +} + +RpWorld* RpWorldRender(RpWorld* world) { + return ((RpWorld*(__cdecl *)(RpWorld*))0x74F570)(world); +} + +RwBool RpWorldDestroy(RpWorld* world) { + return ((RwBool(__cdecl *)(RpWorld*))0x74F610)(world); +} + +RpWorld* RpWorldCreate(RwBBox* boundingBox) { + return ((RpWorld*(__cdecl *)(RwBBox*))0x74F760)(boundingBox); +} + +RpWorld* RpWorldSetSectorRenderCallBack(RpWorld* world, RpWorldSectorCallBackRender fpCallBack) { + return ((RpWorld*(__cdecl *)(RpWorld*, RpWorldSectorCallBackRender))0x74F730)(world, fpCallBack); +} + +RpWorldSectorCallBackRender RpWorldGetSectorRenderCallBack(const RpWorld* world) { + return ((RpWorldSectorCallBackRender(__cdecl *)(const RpWorld*))0x74F750)(world); +} + +RpWorld* RpWorldSectorGetWorld(const RpWorldSector* sector) { + return ((RpWorld*(__cdecl *)(const RpWorldSector*))0x74F4E0)(sector); +} + +RwInt32 RpWorldRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { + return ((RwInt32(__cdecl *)(RwInt32, RwUInt32, RwPluginObjectConstructor, RwPluginObjectDestructor, RwPluginObjectCopy))0x74FCD0)(size, pluginID, constructCB, destructCB, copyCB); +} + +RwInt32 RpWorldRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkReadCallBack, RwPluginDataChunkWriteCallBack, RwPluginDataChunkGetSizeCallBack))0x74FD00)(pluginID, readCB, writeCB, getSizeCB); +} + +RwInt32 RpWorldSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkAlwaysCallBack))0x74FD30)(pluginID, alwaysCB); +} + +RwInt32 RpWorldSetStreamRightsCallBack(RwUInt32 pluginID, RwPluginDataChunkRightsCallBack rightsCB) { + return ((RwInt32(__cdecl *)(RwUInt32, RwPluginDataChunkRightsCallBack))0x74FD50)(pluginID, rightsCB); +} + +RwInt32 RpWorldGetPluginOffset(RwUInt32 pluginID) { + return ((RwInt32(__cdecl *)(RwUInt32))0x74FD70)(pluginID); +} + +RwBool RpWorldValidatePlugins(RpWorld* world) { + return ((RwBool(__cdecl *)(RpWorld*))0x74FD90)(world); +} + +void RpD3D9GeometrySetUsageFlags(RpGeometry* geometry, RpD3D9GeometryUsageFlag flags) { + ((void(__cdecl *)(RpGeometry*, RpD3D9GeometryUsageFlag))0x7588B0)(geometry, flags); +} + +RpD3D9GeometryUsageFlag RpD3D9GeometryGetUsageFlags(const RpGeometry* geometry) { + return ((RpD3D9GeometryUsageFlag(__cdecl *)(const RpGeometry*))0x7588D0)(geometry); +} + +void RpD3D9WorldSectorSetUsageFlags(RpWorldSector* sector, RpD3D9WorldSectorUsageFlag flags) { + ((void(__cdecl *)(RpWorldSector*, RpD3D9WorldSectorUsageFlag))0x7588E0)(sector, flags); +} + +RpD3D9WorldSectorUsageFlag RpD3D9WorldSectorGetUsageFlags(const RpWorldSector* sector) { + return ((RpD3D9WorldSectorUsageFlag(__cdecl *)(const RpWorldSector*))0x758900)(sector); +} + +void RxD3D9AllInOneSetInstanceCallBack(RxPipelineNode* node, RxD3D9AllInOneInstanceCallBack callback) { + ((void(__cdecl *)(RxPipelineNode*, RxD3D9AllInOneInstanceCallBack))0x757380)(node, callback); +} + +RxD3D9AllInOneInstanceCallBack RxD3D9AllInOneGetInstanceCallBack(RxPipelineNode* node) { + return ((RxD3D9AllInOneInstanceCallBack(__cdecl *)(RxPipelineNode*))0x757390)(node); +} + +void RxD3D9AllInOneSetReinstanceCallBack(RxPipelineNode* node, RxD3D9AllInOneReinstanceCallBack callback) { + ((void(__cdecl *)(RxPipelineNode*, RxD3D9AllInOneReinstanceCallBack))0x7573A0)(node, callback); +} + +RxD3D9AllInOneReinstanceCallBack RxD3D9AllInOneGetReinstanceCallBack(RxPipelineNode* node) { + return ((RxD3D9AllInOneReinstanceCallBack(__cdecl *)(RxPipelineNode*))0x7573B0)(node); +} + +void RxD3D9AllInOneSetLightingCallBack(RxPipelineNode* node, RxD3D9AllInOneLightingCallBack callback) { + ((void(__cdecl *)(RxPipelineNode*, RxD3D9AllInOneLightingCallBack))0x7573C0)(node, callback); +} + +RxD3D9AllInOneLightingCallBack RxD3D9AllInOneGetLightingCallBack(RxPipelineNode* node) { + return ((RxD3D9AllInOneLightingCallBack(__cdecl *)(RxPipelineNode*))0x7573D0)(node); +} + +void RxD3D9AllInOneSetRenderCallBack(RxPipelineNode* node, RxD3D9AllInOneRenderCallBack callback) { + ((void(__cdecl *)(RxPipelineNode*, RxD3D9AllInOneRenderCallBack))0x7573E0)(node, callback); +} + +RxD3D9AllInOneRenderCallBack RxD3D9AllInOneGetRenderCallBack(RxPipelineNode* node) { + return ((RxD3D9AllInOneRenderCallBack(__cdecl *)(RxPipelineNode*))0x7573F0)(node); +} + +void _rpD3D9AddDynamicGeometry(RpGeometry* geometry) { + ((void(__cdecl *)(RpGeometry*))0x74E970)(geometry); +} + +void _rpD3D9RemoveDynamicGeometry(RpGeometry* geometry) { + ((void(__cdecl *)(RpGeometry*))0x74E9E0)(geometry); +} + +RwUInt32 _rpD3D9VertexDeclarationGetSize(RwUInt32 type) { + return ((RwUInt32(__cdecl *)(RwUInt32))0x7522E0)(type); +} + +RwUInt32 _rpD3D9VertexDeclarationGetStride(const void* vertexDeclaration) { + return ((RwUInt32(__cdecl *)(const void*))0x7522F0)(vertexDeclaration); +} + +RwUInt32 _rpD3D9VertexDeclarationInstV3d(RwUInt32 type, RwUInt8* mem, const RwV3d* src, RwInt32 numVerts, RwUInt32 stride) { + return ((RwUInt32(__cdecl *)(RwUInt32, RwUInt8*, const RwV3d*, RwInt32, RwUInt32))0x752AD0)(type, mem, src, numVerts, stride); +} + +RwUInt32 _rpD3D9VertexDeclarationInstV3dComp(RwUInt32 type, RwUInt8* mem, const RpVertexNormal* src, RwInt32 numVerts, RwUInt32 stride) { + return ((RwUInt32(__cdecl *)(RwUInt32, RwUInt8*, const RpVertexNormal*, RwInt32, RwUInt32))0x7531B0)(type, mem, src, numVerts, stride); +} + +RwUInt32 _rpD3D9VertexDeclarationInstV3dMorph(RwUInt32 type, RwUInt8* mem, const RwV3d* src1, const RwV3d* src2, RwReal scale, RwInt32 numVerts, RwUInt32 stride) { + return ((RwUInt32(__cdecl *)(RwUInt32, RwUInt8*, const RwV3d*, const RwV3d*, RwReal, RwInt32, RwUInt32))0x753B60)(type, mem, src1, src2, scale, numVerts, stride); +} + +RwUInt32 _rpD3D9VertexDeclarationInstV2d(RwUInt32 type, RwUInt8* mem, const RwV2d* src, RwInt32 numVerts, RwUInt32 stride) { + return ((RwUInt32(__cdecl *)(RwUInt32, RwUInt8*, const RwV2d*, RwInt32, RwUInt32))0x7544E0)(type, mem, src, numVerts, stride); +} + +RwBool _rpD3D9VertexDeclarationInstColor(RwUInt8* mem, const RwRGBA* color, RwInt32 numVerts, RwUInt32 stride) { + return ((RwBool(__cdecl *)(RwUInt8*, const RwRGBA*, RwInt32, RwUInt32))0x754AE0)(mem, color, numVerts, stride); +} + +RwUInt32 _rpD3D9VertexDeclarationInstIndices(RwUInt32 type, RwUInt8* mem, const RwUInt32* indices, RwInt32 numVerts, RwUInt32 stride) { + return ((RwUInt32(__cdecl *)(RwUInt32, RwUInt8*, const RwUInt32*, RwInt32, RwUInt32))0x754B40)(type, mem, indices, numVerts, stride); +} + +RwUInt32 _rpD3D9VertexDeclarationInstIndicesRemap(RwUInt32 type, RwUInt8* mem, const RwUInt32* indices, const RwUInt8* remap, RwInt32 numVerts, RwUInt32 stride) { + return ((RwUInt32(__cdecl *)(RwUInt32, RwUInt8*, const RwUInt32*, const RwUInt8*, RwInt32, RwUInt32))0x754C80)(type, mem, indices, remap, numVerts, stride); +} + +RwUInt32 _rpD3D9VertexDeclarationInstWeights(RwUInt32 type, RwUInt8* mem, const RwV4d* src, RwInt32 numVerts, RwUInt32 stride) { + return ((RwUInt32(__cdecl *)(RwUInt32, RwUInt8*, const RwV4d*, RwInt32, RwUInt32))0x752320)(type, mem, src, numVerts, stride); +} + +RwUInt32 _rpD3D9VertexDeclarationInstTangent(RwUInt32 type, RwUInt8* mem, const RwV3d* pos, const RwTexCoords* texCoord, RxD3D9ResEntryHeader* meshHeader, RwUInt32 stride) { + return ((RwUInt32(__cdecl *)(RwUInt32, RwUInt8*, const RwV3d*, const RwTexCoords*, RxD3D9ResEntryHeader*, RwUInt32))0x754E20)(type, mem, pos, texCoord, meshHeader, stride); +} + +void _rpD3D9VertexDeclarationUnInstV3d(RwUInt32 type, RwV3d* dst, const RwUInt8* src) { + ((void(__cdecl *)(RwUInt32, RwV3d*, const RwUInt8*))0x7551F0)(type, dst, src); +} + +void _rpD3D9VertexDeclarationUnInstV2d(RwUInt32 type, RwV2d* dst, const RwUInt8* src) { + ((void(__cdecl *)(RwUInt32, RwV2d*, const RwUInt8*))0x7555E0)(type, dst, src); +} + +void _rpD3D9GetMinMaxValuesV3d(const RwV3d* src, RwInt32 numElements, RwV3d* min, RwV3d* max) { + ((void(__cdecl *)(const RwV3d*, RwInt32, RwV3d*, RwV3d*))0x755830)(src, numElements, min, max); +} + +void _rpD3D9GetMinMaxValuesV2d(const RwV2d* src, RwInt32 numElements, RwV2d* min, RwV2d* max) { + ((void(__cdecl *)(const RwV2d*, RwInt32, RwV2d*, RwV2d*))0x7558F0)(src, numElements, min, max); +} + +RwUInt32 _rpD3D9FindFormatV3d(const RwV3d* src, RwInt32 numElements) { + return ((RwUInt32(__cdecl *)(const RwV3d*, RwInt32))0x755980)(src, numElements); +} + +RwUInt32 _rpD3D9FindFormatV2d(const RwV2d* src, RwInt32 numElements) { + return ((RwUInt32(__cdecl *)(const RwV2d*, RwInt32))0x755AA0)(src, numElements); +} + +RxPipeline* RpWorldSetDefaultSectorPipeline(RxPipeline* pipeline) { + return ((RxPipeline*(__cdecl *)(RxPipeline*))0x75E270)(pipeline); +} + +RxPipeline* RpAtomicSetDefaultPipeline(RxPipeline* pipeline) { + return ((RxPipeline*(__cdecl *)(RxPipeline*))0x75E2A0)(pipeline); +} + +RxPipeline* RpMaterialSetDefaultPipeline(RxPipeline* pipeline) { + return ((RxPipeline*(__cdecl *)(RxPipeline*))0x75E2D0)(pipeline); +} + +const RpGeometry* RpGeometryIsCorrectlySorted(const RpGeometry* geometry, RwBool* result) { + return ((const RpGeometry*(__cdecl *)(const RpGeometry*, RwBool*))0x75D9D0)(geometry, result); +} + +RpGeometry* RpGeometrySortByMaterial(const RpGeometry* geometry, RpGeometrySortByMaterialCallBack callback) { + return ((RpGeometry*(__cdecl *)(const RpGeometry*, RpGeometrySortByMaterialCallBack))0x75DAE0)(geometry, callback); +} + +void RpTieSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x74FF60)(blockSize, numBlocksToPrealloc); +} + +void RpLightTieSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x74FF80)(blockSize, numBlocksToPrealloc); +} + +RpWorld* RpWorldRemoveCamera(RpWorld* world, RwCamera* camera) { + return ((RpWorld*(__cdecl *)(RpWorld*, RwCamera*))0x750F50)(world, camera); +} + +RpWorld* RpWorldAddCamera(RpWorld* world, RwCamera* camera) { + return ((RpWorld*(__cdecl *)(RpWorld*, RwCamera*))0x750F20)(world, camera); +} + +RpWorld* RwCameraGetWorld(const RwCamera* camera) { + return ((RpWorld*(__cdecl *)(const RwCamera*))0x750F80)(camera); +} + +RpWorld* RpWorldRemoveAtomic(RpWorld* world, RpAtomic* atomic) { + return ((RpWorld*(__cdecl *)(RpWorld*, RpAtomic*))0x750FC0)(world, atomic); +} + +RpWorld* RpWorldAddAtomic(RpWorld* world, RpAtomic* atomic) { + return ((RpWorld*(__cdecl *)(RpWorld*, RpAtomic*))0x750F90)(world, atomic); +} + +RpWorld* RpAtomicGetWorld(const RpAtomic* atomic) { + return ((RpWorld*(__cdecl *)(const RpAtomic*))0x751050)(atomic); +} + +RpWorld* RpWorldAddClump(RpWorld* world, RpClump* clump) { + return ((RpWorld*(__cdecl *)(RpWorld*, RpClump*))0x751300)(world, clump); +} + +RpWorld* RpWorldRemoveClump(RpWorld* world, RpClump* clump) { + return ((RpWorld*(__cdecl *)(RpWorld*, RpClump*))0x751460)(world, clump); +} + +RpWorld* RpClumpGetWorld(const RpClump* clump) { + return ((RpWorld*(__cdecl *)(const RpClump*))0x7516B0)(clump); +} + +RpWorld* RpWorldAddLight(RpWorld* world, RpLight* light) { + return ((RpWorld*(__cdecl *)(RpWorld*, RpLight*))0x751910)(world, light); +} + +RpWorld* RpWorldRemoveLight(RpWorld* world, RpLight* light) { + return ((RpWorld*(__cdecl *)(RpWorld*, RpLight*))0x751960)(world, light); +} + +RpWorld* RpLightGetWorld(const RpLight* light) { + return ((RpWorld*(__cdecl *)(const RpLight*))0x7519E0)(light); +} + +RwCamera* RwCameraForAllClumpsInFrustum(RwCamera* camera, void* data) { + return ((RwCamera*(__cdecl *)(RwCamera*, void*))0x7516C0)(camera, data); +} + +RwCamera* RwCameraForAllAtomicsInFrustum(RwCamera* camera, RpAtomicCallBack callback, void* data) { + return ((RwCamera*(__cdecl *)(RwCamera*, RpAtomicCallBack, void*))0x7517F0)(camera, callback, data); +} + +RwCamera* RwCameraForAllSectorsInFrustum(RwCamera* camera, RpWorldSectorCallBack callBack, void* pData) { + return ((RwCamera*(__cdecl *)(RwCamera*, RpWorldSectorCallBack, void*))0x751660)(camera, callBack, pData); +} + +RpLight* RpLightForAllWorldSectors(RpLight* light, RpWorldSectorCallBack callback, void* data) { + return ((RpLight*(__cdecl *)(RpLight*, RpWorldSectorCallBack, void*))0x7519F0)(light, callback, data); +} + +RpAtomic* RpAtomicForAllWorldSectors(RpAtomic* atomic, RpWorldSectorCallBack callback, void* data) { + return ((RpAtomic*(__cdecl *)(RpAtomic*, RpWorldSectorCallBack, void*))0x751060)(atomic, callback, data); +} + +RpWorldSector* RpWorldSectorForAllAtomics(RpWorldSector* sector, RpAtomicCallBack callback, void* data) { + return ((RpWorldSector*(__cdecl *)(RpWorldSector*, RpAtomicCallBack, void*))0x7510A0)(sector, callback, data); +} + +RpWorldSector* RpWorldSectorForAllCollisionAtomics(RpWorldSector* sector, RpAtomicCallBack callback, void* data) { + return ((RpWorldSector*(__cdecl *)(RpWorldSector*, RpAtomicCallBack, void*))0x751140)(sector, callback, data); +} + +RpWorldSector* RpWorldSectorForAllLights(RpWorldSector* sector, RpLightCallBack callback, void* data) { + return ((RpWorldSector*(__cdecl *)(RpWorldSector*, RpLightCallBack, void*))0x7511E0)(sector, callback, data); +} + +RwUInt32 RpWorldStreamGetSize(const RpWorld* world) { + return ((RwUInt32(__cdecl *)(const RpWorld*))0x761EA0)(world); +} + +RpWorld* RpWorldStreamRead(RwStream* stream) { + return ((RpWorld*(__cdecl *)(RwStream*))0x762960)(stream); +} + +const RpWorld* RpWorldStreamWrite(const RpWorld* world, RwStream* stream) { + return ((const RpWorld*(__cdecl *)(const RpWorld*, RwStream*))0x762150)(world, stream); +} + +RpWorldSectorChunkInfo* _rpWorldSectorChunkInfoRead(RwStream* stream, RpWorldSectorChunkInfo* worldSectorChunkInfo, RwInt32* bytesRead) { + return ((RpWorldSectorChunkInfo*(__cdecl *)(RwStream*, RpWorldSectorChunkInfo*, RwInt32*))0x7635B0)(stream, worldSectorChunkInfo, bytesRead); +} + +RpPlaneSectorChunkInfo* _rpPlaneSectorChunkInfoRead(RwStream* stream, RpPlaneSectorChunkInfo* planeSectorChunkInfo, RwInt32* bytesRead) { + return ((RpPlaneSectorChunkInfo*(__cdecl *)(RwStream*, RpPlaneSectorChunkInfo*, RwInt32*))0x763620)(stream, planeSectorChunkInfo, bytesRead); +} + +RpWorldChunkInfo* _rpWorldChunkInfoRead(RwStream* stream, RpWorldChunkInfo* worldChunkInfo, RwInt32* bytesRead) { + return ((RpWorldChunkInfo*(__cdecl *)(RwStream*, RpWorldChunkInfo*, RwInt32*))0x763690)(stream, worldChunkInfo, bytesRead); +} + +/* rtquat.h */ + +RwBool RtQuatConvertFromMatrix(RtQuat * const qpQuat, const RwMatrix * const mpMatrix) { + return ((RwBool(__cdecl *)(RtQuat * const, const RwMatrix * const))0x7EB5C0)(qpQuat, mpMatrix); +} + +RtQuat* RtQuatRotate(RtQuat* quat, const RwV3d* axis, RwReal angle, RwOpCombineType combineOp) { + return ((RtQuat*(__cdecl *)(RtQuat*, const RwV3d*, RwReal, RwOpCombineType))0x7EB7C0)(quat, axis, angle, combineOp); +} + +const RtQuat* RtQuatQueryRotate(const RtQuat* quat, RwV3d* unitAxis, RwReal* angle) { + return ((const RtQuat*(__cdecl *)(const RtQuat*, RwV3d*, RwReal*))0x7EBA80)(quat, unitAxis, angle); +} + +RwV3d* RtQuatTransformVectors(RwV3d* vectorsOut, const RwV3d* vectorsIn, const RwInt32 numPoints, const RtQuat* quat) { + return ((RwV3d*(__cdecl *)(RwV3d*, const RwV3d*, const RwInt32, const RtQuat*))0x7EBBB0)(vectorsOut, vectorsIn, numPoints, quat); +} + +RwReal RtQuatModulus(RtQuat* q) { + return ((RwReal(__cdecl *)(RtQuat*))0x7EBD10)(q); +} + +/* rtanim.h */ + +void RtAnimAnimationFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x7CCC80)(blockSize, numBlocksToPrealloc); +} + +RwBool RtAnimInitialize(void) { + return ((RwBool(__cdecl *)(void))0x7CCCA0)(); +} + +RwBool RtAnimRegisterInterpolationScheme(RtAnimInterpolatorInfo* interpolatorInfo) { + return ((RwBool(__cdecl *)(RtAnimInterpolatorInfo*))0x7CCD40)(interpolatorInfo); +} + +RtAnimInterpolatorInfo* RtAnimGetInterpolatorInfo(RwInt32 typeID) { + return ((RtAnimInterpolatorInfo*(__cdecl *)(RwInt32))0x7CCDE0)(typeID); +} + +RtAnimAnimation* RtAnimAnimationCreate(RwInt32 typeID, RwInt32 numFrames, RwInt32 flags, RwReal duration) { + return ((RtAnimAnimation*(__cdecl *)(RwInt32, RwInt32, RwInt32, RwReal))0x7CCE40)(typeID, numFrames, flags, duration); +} + +RwBool RtAnimAnimationDestroy(RtAnimAnimation* animation) { + return ((RwBool(__cdecl *)(RtAnimAnimation*))0x7CCF10)(animation); +} + +RtAnimAnimation* RtAnimAnimationRead(const RwChar* filename) { + return ((RtAnimAnimation*(__cdecl *)(const RwChar*))0x7CCF30)(filename); +} + +RwBool RtAnimAnimationWrite(const RtAnimAnimation* animation, const RwChar* filename) { + return ((RwBool(__cdecl *)(const RtAnimAnimation*, const RwChar*))0x7CD160)(animation, filename); +} + +RtAnimAnimation* RtAnimAnimationStreamRead(RwStream* stream) { + return ((RtAnimAnimation*(__cdecl *)(RwStream*))0x7CD220)(stream); +} + +RwBool RtAnimAnimationStreamWrite(const RtAnimAnimation* animation, RwStream* stream) { + return ((RwBool(__cdecl *)(const RtAnimAnimation*, RwStream*))0x7CD410)(animation, stream); +} + +RwInt32 RtAnimAnimationStreamGetSize(const RtAnimAnimation* animation) { + return ((RwInt32(__cdecl *)(const RtAnimAnimation*))0x7CD4D0)(animation); +} + +RwUInt32 RtAnimAnimationGetNumNodes(const RtAnimAnimation* animation) { + return ((RwUInt32(__cdecl *)(const RtAnimAnimation*))0x7CD4F0)(animation); +} + +RtAnimInterpolator* RtAnimInterpolatorCreate(RwInt32 numNodes, RwInt32 maxInterpKeyFrameSize) { + return ((RtAnimInterpolator*(__cdecl *)(RwInt32, RwInt32))0x7CD520)(numNodes, maxInterpKeyFrameSize); +} + +void RtAnimInterpolatorDestroy(RtAnimInterpolator* anim) { + ((void(__cdecl *)(RtAnimInterpolator*))0x7CD590)(anim); +} + +RwBool RtAnimInterpolatorSetCurrentAnim(RtAnimInterpolator* animI, RtAnimAnimation* anim) { + return ((RwBool(__cdecl *)(RtAnimInterpolator*, RtAnimAnimation*))0x7CD5A0)(animI, anim); +} + +RwBool RtAnimInterpolatorSetKeyFrameCallBacks(RtAnimInterpolator* anim, RwInt32 keyFrameTypeID) { + return ((RwBool(__cdecl *)(RtAnimInterpolator*, RwInt32))0x7CD660)(anim, keyFrameTypeID); +} + +void RtAnimInterpolatorSetAnimLoopCallBack(RtAnimInterpolator* anim, RtAnimCallBack callBack, void* data) { + ((void(__cdecl *)(RtAnimInterpolator*, RtAnimCallBack, void*))0x7CD6F0)(anim, callBack, data); +} + +void RtAnimInterpolatorSetAnimCallBack(RtAnimInterpolator* anim, RtAnimCallBack callBack, RwReal time, void* data) { + ((void(__cdecl *)(RtAnimInterpolator*, RtAnimCallBack, RwReal, void*))0x7CD710)(anim, callBack, time, data); +} + +RwBool RtAnimInterpolatorCopy(RtAnimInterpolator* outAnim, RtAnimInterpolator* inAnim) { + return ((RwBool(__cdecl *)(RtAnimInterpolator*, RtAnimInterpolator*))0x7CD730)(outAnim, inAnim); +} + +RwBool RtAnimInterpolatorSubAnimTime(RtAnimInterpolator* anim, RwReal time) { + return ((RwBool(__cdecl *)(RtAnimInterpolator*, RwReal))0x7CD760)(anim, time); +} + +RwBool RtAnimInterpolatorAddAnimTime(RtAnimInterpolator* anim, RwReal time) { + return ((RwBool(__cdecl *)(RtAnimInterpolator*, RwReal))0x7CD8D0)(anim, time); +} + +RwBool RtAnimInterpolatorSetCurrentTime(RtAnimInterpolator* anim, RwReal time) { + return ((RwBool(__cdecl *)(RtAnimInterpolator*, RwReal))0x7CDAB0)(anim, time); +} + +RwBool RtAnimAnimationMakeDelta(RtAnimAnimation* animation, RwInt32 numNodes, RwReal time) { + return ((RwBool(__cdecl *)(RtAnimAnimation*, RwInt32, RwReal))0x7CDB00)(animation, numNodes, time); +} + +RwBool RtAnimInterpolatorBlend(RtAnimInterpolator* outAnim, RtAnimInterpolator* inAnim1, RtAnimInterpolator* inAnim2, RwReal alpha) { + return ((RwBool(__cdecl *)(RtAnimInterpolator*, RtAnimInterpolator*, RtAnimInterpolator*, RwReal))0x7CDBF0)(outAnim, inAnim1, inAnim2, alpha); +} + +RwBool RtAnimInterpolatorAddTogether(RtAnimInterpolator* outAnim, RtAnimInterpolator* inAnim1, RtAnimInterpolator* inAnim2) { + return ((RwBool(__cdecl *)(RtAnimInterpolator*, RtAnimInterpolator*, RtAnimInterpolator*))0x7CDC50)(outAnim, inAnim1, inAnim2); +} + +RtAnimInterpolator* RtAnimInterpolatorCreateSubInterpolator(RtAnimInterpolator* parentAnim, RwInt32 startNode, RwInt32 numNodes, RwInt32 maxInterpKeyFrameSize) { + return ((RtAnimInterpolator*(__cdecl *)(RtAnimInterpolator*, RwInt32, RwInt32, RwInt32))0x7CDCB0)(parentAnim, startNode, numNodes, maxInterpKeyFrameSize); +} + +RwBool RtAnimInterpolatorBlendSubInterpolator(RtAnimInterpolator* outAnim, RtAnimInterpolator* inAnim1, RtAnimInterpolator* inAnim2, RwReal alpha) { + return ((RwBool(__cdecl *)(RtAnimInterpolator*, RtAnimInterpolator*, RtAnimInterpolator*, RwReal))0x7CDCF0)(outAnim, inAnim1, inAnim2, alpha); +} + +RwBool RtAnimInterpolatorAddSubInterpolator(RtAnimInterpolator* outAnim, RtAnimInterpolator* mainAnim, RtAnimInterpolator* subAnim) { + return ((RwBool(__cdecl *)(RtAnimInterpolator*, RtAnimInterpolator*, RtAnimInterpolator*))0x7CDEF0)(outAnim, mainAnim, subAnim); +} + +/* rphanim.h */ + +void RpHAnimHierarchySetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x7C45E0)(blockSize, numBlocksToPrealloc); +} + +RpHAnimHierarchy* RpHAnimHierarchyCreate(RwInt32 numNodes, RwUInt32* nodeFlags, RwInt32* nodeIDs, RpHAnimHierarchyFlag flags, RwInt32 maxInterpKeyFrameSize) { + return ((RpHAnimHierarchy*(__cdecl *)(RwInt32, RwUInt32*, RwInt32*, RpHAnimHierarchyFlag, RwInt32))0x7C4C30)(numNodes, nodeFlags, nodeIDs, flags, maxInterpKeyFrameSize); +} + +RpHAnimHierarchy* RpHAnimHierarchyCreateFromHierarchy(RpHAnimHierarchy* hierarchy, RpHAnimHierarchyFlag flags, RwInt32 maxInterpKeyFrameSize) { + return ((RpHAnimHierarchy*(__cdecl *)(RpHAnimHierarchy*, RpHAnimHierarchyFlag, RwInt32))0x7C4ED0)(hierarchy, flags, maxInterpKeyFrameSize); +} + +RpHAnimHierarchy* RpHAnimHierarchyDestroy(RpHAnimHierarchy* hierarchy) { + return ((RpHAnimHierarchy*(__cdecl *)(RpHAnimHierarchy*))0x7C4D30)(hierarchy); +} + +RpHAnimHierarchy* RpHAnimHierarchyCreateSubHierarchy(RpHAnimHierarchy* parentHierarchy, RwInt32 startNode, RpHAnimHierarchyFlag flags, RwInt32 maxInterpKeyFrameSize) { + return ((RpHAnimHierarchy*(__cdecl *)(RpHAnimHierarchy*, RwInt32, RpHAnimHierarchyFlag, RwInt32))0x7C4DB0)(parentHierarchy, startNode, flags, maxInterpKeyFrameSize); +} + +RpHAnimHierarchy* RpHAnimHierarchyAttach(RpHAnimHierarchy* hierarchy) { + return ((RpHAnimHierarchy*(__cdecl *)(RpHAnimHierarchy*))0x7C4F40)(hierarchy); +} + +RpHAnimHierarchy* RpHAnimHierarchyDetach(RpHAnimHierarchy* hierarchy) { + return ((RpHAnimHierarchy*(__cdecl *)(RpHAnimHierarchy*))0x7C4FF0)(hierarchy); +} + +RpHAnimHierarchy* RpHAnimHierarchyAttachFrameIndex(RpHAnimHierarchy* hierarchy, RwInt32 nodeIndex) { + return ((RpHAnimHierarchy*(__cdecl *)(RpHAnimHierarchy*, RwInt32))0x7C5020)(hierarchy, nodeIndex); +} + +RpHAnimHierarchy* RpHAnimHierarchyDetachFrameIndex(RpHAnimHierarchy* hierarchy, RwInt32 nodeIndex) { + return ((RpHAnimHierarchy*(__cdecl *)(RpHAnimHierarchy*, RwInt32))0x7C5100)(hierarchy, nodeIndex); +} + +RwBool RpHAnimFrameSetHierarchy(RwFrame* frame, RpHAnimHierarchy* hierarchy) { + return ((RwBool(__cdecl *)(RwFrame*, RpHAnimHierarchy*))0x7C5130)(frame, hierarchy); +} + +RpHAnimHierarchy* RpHAnimFrameGetHierarchy(RwFrame* frame) { + return ((RpHAnimHierarchy*(__cdecl *)(RwFrame*))0x7C5160)(frame); +} + +RwMatrix* RpHAnimHierarchyGetMatrixArray(RpHAnimHierarchy* hierarchy) { + return ((RwMatrix*(__cdecl *)(RpHAnimHierarchy*))0x7C5120)(hierarchy); +} + +RwBool RpHAnimHierarchyUpdateMatrices(RpHAnimHierarchy* hierarchy) { + return ((RwBool(__cdecl *)(RpHAnimHierarchy*))0x7C51D0)(hierarchy); +} + +RwInt32 RpHAnimIDGetIndex(RpHAnimHierarchy* hierarchy, RwInt32 ID) { + return ((RwInt32(__cdecl *)(RpHAnimHierarchy*, RwInt32))0x7C51A0)(hierarchy, ID); +} + +RwBool RpHAnimPluginAttach(void) { + return ((RwBool(__cdecl *)(void))0x7C4600)(); +} + +void RpHAnimKeyFrameApply(void* matrix, void* voidIFrame) { + ((void(__cdecl *)(void*, void*))0x7C5B80)(matrix, voidIFrame); +} + +void RpHAnimKeyFrameBlend(void* voidOut, void* voidIn1, void* voidIn2, RwReal alpha) { + ((void(__cdecl *)(void*, void*, void*, RwReal))0x7C60C0)(voidOut, voidIn1, voidIn2, alpha); +} + +void RpHAnimKeyFrameInterpolate(void* voidOut, void* voidIn1, void* voidIn2, RwReal time, void* customData) { + ((void(__cdecl *)(void*, void*, void*, RwReal, void*))0x7C5CA0)(voidOut, voidIn1, voidIn2, time, customData); +} + +void RpHAnimKeyFrameAdd(void* voidOut, void* voidIn1, void* voidIn2) { + ((void(__cdecl *)(void*, void*, void*))0x7C6720)(voidOut, voidIn1, voidIn2); +} + +void RpHAnimKeyFrameMulRecip(void* voidFrame, void* voidStart) { + ((void(__cdecl *)(void*, void*))0x7C65C0)(voidFrame, voidStart); +} + +RtAnimAnimation* RpHAnimKeyFrameStreamRead(RwStream* stream, RtAnimAnimation* animation) { + return ((RtAnimAnimation*(__cdecl *)(RwStream*, RtAnimAnimation*))0x7C64C0)(stream, animation); +} + +RwBool RpHAnimKeyFrameStreamWrite(const RtAnimAnimation* animation, RwStream* stream) { + return ((RwBool(__cdecl *)(const RtAnimAnimation*, RwStream*))0x7C6540)(animation, stream); +} + +RwInt32 RpHAnimKeyFrameStreamGetSize(const RtAnimAnimation* animation) { + return ((RwInt32(__cdecl *)(const RtAnimAnimation*))0x7C65B0)(animation); +} + +RwBool RpHAnimFrameSetID(RwFrame* frame, RwInt32 id) { + return ((RwBool(__cdecl *)(RwFrame*, RwInt32))0x7C5170)(frame, id); +} + +RwInt32 RpHAnimFrameGetID(RwFrame* frame) { + return ((RwInt32(__cdecl *)(RwFrame*))0x7C5190)(frame); +} + +/* rpuvanim.h */ + +_rpUVAnimCustomData* _rpUVAnimCustomDataStreamRead(RwStream* stream) { + return ((_rpUVAnimCustomData*(__cdecl *)(RwStream*))0x7CBF70)(stream); +} + +const _rpUVAnimCustomData* _rpUVAnimCustomDataStreamWrite(const _rpUVAnimCustomData* customData, RwStream* stream) { + return ((const _rpUVAnimCustomData*(__cdecl *)(const _rpUVAnimCustomData*, RwStream*))0x7CBFD0)(customData, stream); +} + +RwUInt32 _rpUVAnimCustomDataStreamGetSize(const _rpUVAnimCustomData* customData) { + return ((RwUInt32(__cdecl *)(const _rpUVAnimCustomData*))0x7CC010)(customData); +} + +RwBool RpUVAnimPluginAttach(void) { + return ((RwBool(__cdecl *)(void))0x7CB940)(); +} + +void RpUVAnimLinearKeyFrameApply(void* matrix, void* voidIFrame) { + ((void(__cdecl *)(void*, void*))0x7CC9F0)(matrix, voidIFrame); +} + +void RpUVAnimLinearKeyFrameBlend(void* voidOut, void* voidIn1, void* voidIn2, RwReal alpha) { + ((void(__cdecl *)(void*, void*, void*, RwReal))0x7CCAC0)(voidOut, voidIn1, voidIn2, alpha); +} + +void RpUVAnimLinearKeyFrameInterpolate(void* voidOut, void* voidIn1, void* voidIn2, RwReal time, void* customData) { + ((void(__cdecl *)(void*, void*, void*, RwReal, void*))0x7CCA40)(voidOut, voidIn1, voidIn2, time, customData); +} + +void RpUVAnimLinearKeyFrameAdd(void* voidOut, void* voidIn1, void* voidIn2) { + ((void(__cdecl *)(void*, void*, void*))0x7CCBE0)(voidOut, voidIn1, voidIn2); +} + +void RpUVAnimLinearKeyFrameMulRecip(void* voidFrame, void* voidStart) { + ((void(__cdecl *)(void*, void*))0x7CCB30)(voidFrame, voidStart); +} + +void RpUVAnimParamKeyFrameApply(void* matrix, void* voidIFrame) { + ((void(__cdecl *)(void*, void*))0x7CC560)(matrix, voidIFrame); +} + +void RpUVAnimParamKeyFrameBlend(void* voidOut, void* voidIn1, void* voidIn2, RwReal alpha) { + ((void(__cdecl *)(void*, void*, void*, RwReal))0x7CC6A0)(voidOut, voidIn1, voidIn2, alpha); +} + +void RpUVAnimParamKeyFrameInterpolate(void* voidOut, void* voidIn1, void* voidIn2, RwReal time, void* customData) { + ((void(__cdecl *)(void*, void*, void*, RwReal, void*))0x7CC600)(voidOut, voidIn1, voidIn2, time, customData); +} + +void RpUVAnimParamKeyFrameAdd(void* voidOut, void* voidIn1, void* voidIn2) { + ((void(__cdecl *)(void*, void*, void*))0x7CC750)(voidOut, voidIn1, voidIn2); +} + +void RpUVAnimParamKeyFrameMulRecip(void* voidFrame, void* voidStart) { + ((void(__cdecl *)(void*, void*))0x7CC740)(voidFrame, voidStart); +} + +RtAnimAnimation* RpUVAnimKeyFrameStreamRead(RwStream* stream, RtAnimAnimation* animation) { + return ((RtAnimAnimation*(__cdecl *)(RwStream*, RtAnimAnimation*))0x7CC870)(stream, animation); +} + +RwBool RpUVAnimKeyFrameStreamWrite(const RtAnimAnimation* animation, RwStream* stream) { + return ((RwBool(__cdecl *)(const RtAnimAnimation*, RwStream*))0x7CC920)(animation, stream); +} + +RwInt32 RpUVAnimKeyFrameStreamGetSize(const RtAnimAnimation* animation) { + return ((RwInt32(__cdecl *)(const RtAnimAnimation*))0x7CC9D0)(animation); +} + +RpUVAnim* RpUVAnimCreate(const RwChar* name, RwUInt32 numNodes, RwUInt32 numFrames, RwReal duration, RwUInt32* nodeIndexToUVChannelMap, RpUVAnimKeyFrameType keyframeType) { + return ((RpUVAnim*(__cdecl *)(const RwChar*, RwUInt32, RwUInt32, RwReal, RwUInt32*, RpUVAnimKeyFrameType))0x7CC020)(name, numNodes, numFrames, duration, nodeIndexToUVChannelMap, keyframeType); +} + +RwBool RpUVAnimDestroy(RpUVAnim* anim) { + return ((RwBool(__cdecl *)(RpUVAnim*))0x7CC0C0)(anim); +} + +RpUVAnim* RpUVAnimAddRef(RpUVAnim* anim) { + return ((RpUVAnim*(__cdecl *)(RpUVAnim*))0x7CC100)(anim); +} + +const RwChar* RpUVAnimGetName(const RpUVAnim* anim) { + return ((const RwChar*(__cdecl *)(const RpUVAnim*))0x7CC3A0)(anim); +} + +RpMaterial* RpMaterialSetUVAnim(RpMaterial* material, RpUVAnim* anim, RwUInt32 slot) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RpUVAnim*, RwUInt32))0x7CC3B0)(material, anim, slot); +} + +RpUVAnimInterpolator* RpMaterialUVAnimGetInterpolator(RpMaterial* material, RwUInt32 slot) { + return ((RpUVAnimInterpolator*(__cdecl *)(RpMaterial*, RwUInt32))0x7CC430)(material, slot); +} + +RpMaterial* RpMaterialUVAnimSetInterpolator(RpMaterial* material, RpUVAnimInterpolator* interp, RwUInt32 slot) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RpUVAnimInterpolator*, RwUInt32))0x7CC450)(material, interp, slot); +} + +RpMaterial* RpMaterialUVAnimSetCurrentTime(RpMaterial* material, RwReal time) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwReal))0x7CC470)(material, time); +} + +RpMaterial* RpMaterialUVAnimAddAnimTime(RpMaterial* material, RwReal deltaTime) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwReal))0x7CC4B0)(material, deltaTime); +} + +RpMaterial* RpMaterialUVAnimSubAnimTime(RpMaterial* material, RwReal deltaTime) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwReal))0x7CC4F0)(material, deltaTime); +} + +RwBool RpMaterialUVAnimExists(const RpMaterial* material) { + return ((RwBool(__cdecl *)(const RpMaterial*))0x7CC530)(material); +} + +/* rpskin.h */ + +void RpSkinSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x7C67F0)(blockSize, numBlocksToPrealloc); +} + +RwBool RpSkinPluginAttach(void) { + return ((RwBool(__cdecl *)(void))0x7C6820)(); +} + +RpAtomic* RpSkinAtomicSetHAnimHierarchy(RpAtomic* atomic, RpHAnimHierarchy* hierarchy) { + return ((RpAtomic*(__cdecl *)(RpAtomic*, RpHAnimHierarchy*))0x7C7520)(atomic, hierarchy); +} + +RpHAnimHierarchy* RpSkinAtomicGetHAnimHierarchy(const RpAtomic* atomic) { + return ((RpHAnimHierarchy*(__cdecl *)(const RpAtomic*))0x7C7540)(atomic); +} + +RpGeometry* RpSkinGeometrySetSkin(RpGeometry* geometry, RpSkin* skin) { + return ((RpGeometry*(__cdecl *)(RpGeometry*, RpSkin*))0x7C7560)(geometry, skin); +} + +RpSkin* RpSkinGeometryGetSkin(RpGeometry* geometry) { + return ((RpSkin*(__cdecl *)(RpGeometry*))0x7C7550)(geometry); +} + +RpSkin* RpSkinCreate(RwUInt32 numVertices, RwUInt32 numBones, RwMatrixWeights* vertexWeights, RwUInt32* vertexIndices, RwMatrix* inverseMatrices) { + return ((RpSkin*(__cdecl *)(RwUInt32, RwUInt32, RwMatrixWeights*, RwUInt32*, RwMatrix*))0x7C75B0)(numVertices, numBones, vertexWeights, vertexIndices, inverseMatrices); +} + +RpSkin* RpSkinDestroy(RpSkin* skin) { + return ((RpSkin*(__cdecl *)(RpSkin*))0x7C77A0)(skin); +} + +RwUInt32 RpSkinGetNumBones(RpSkin* skin) { + return ((RwUInt32(__cdecl *)(RpSkin*))0x7C77E0)(skin); +} + +const RwMatrixWeights* RpSkinGetVertexBoneWeights(RpSkin* skin) { + return ((const RwMatrixWeights*(__cdecl *)(RpSkin*))0x7C77F0)(skin); +} + +const RwUInt32* RpSkinGetVertexBoneIndices(RpSkin* skin) { + return ((const RwUInt32*(__cdecl *)(RpSkin*))0x7C7800)(skin); +} + +const RwMatrix* RpSkinGetSkinToBoneMatrices(RpSkin* skin) { + return ((const RwMatrix*(__cdecl *)(RpSkin*))0x7C7810)(skin); +} + +RwBool RpSkinIsSplit(RpSkin* skin) { + return ((RwBool(__cdecl *)(RpSkin*))0x7C7820)(skin); +} + +RpAtomic* RpSkinAtomicSetType(RpAtomic* atomic, RpSkinType type) { + return ((RpAtomic*(__cdecl *)(RpAtomic*, RpSkinType))0x7C7830)(atomic, type); +} + +RpSkinType RpSkinAtomicGetType(RpAtomic* atomic) { + return ((RpSkinType(__cdecl *)(RpAtomic*))0x7C7880)(atomic); +} + +RpGeometry* _rpSkinInitialize(RpGeometry* geometry) { + return ((RpGeometry*(__cdecl *)(RpGeometry*))0x7C8740)(geometry); +} + +RpGeometry* _rpSkinDeinitialize(RpGeometry* geometry) { + return ((RpGeometry*(__cdecl *)(RpGeometry*))0x7C8820)(geometry); +} + +RwUInt8* _rpSkinGetMeshBoneRemapIndices(RpSkin* skin) { + return ((RwUInt8*(__cdecl *)(RpSkin*))0x7C8A40)(skin); +} + +RwUInt8* _rpSkinGetMeshBoneRLECount(RpSkin* skin) { + return ((RwUInt8*(__cdecl *)(RpSkin*))0x7C8A50)(skin); +} + +RwUInt8* _rpSkinGetMeshBoneRLE(RpSkin* skin) { + return ((RwUInt8*(__cdecl *)(RpSkin*))0x7C8A60)(skin); +} + +RpSkin* _rpSkinSplitDataCreate(RpSkin* skin, RwUInt32 boneLimit, RwUInt32 numMatrices, RwUInt32 numMeshes, RwUInt32 numRLE) { + return ((RpSkin*(__cdecl *)(RpSkin*, RwUInt32, RwUInt32, RwUInt32, RwUInt32))0x7C8A70)(skin, boneLimit, numMatrices, numMeshes, numRLE); +} + +RwBool _rpSkinSplitDataDestroy(RpSkin* skin) { + return ((RwBool(__cdecl *)(RpSkin*))0x7C8B10)(skin); +} + +RxNodeDefinition* RxNodeDefinitionGetD3D9SkinAtomicAllInOne(void) { + return ((RxNodeDefinition*(__cdecl *)(void))0x7CB2A0)(); +} + +/* rtdict.h */ + +RtDictSchema* RtDictSchemaInit(RtDictSchema* schema) { + return ((RtDictSchema*(__cdecl *)(RtDictSchema*))0x7CED40)(schema); +} + +RwBool RtDictSchemaDestruct(RtDictSchema* schema) { + return ((RwBool(__cdecl *)(RtDictSchema*))0x7CED70)(schema); +} + +RtDict* RtDictSchemaStreamReadDict(RtDictSchema* schema, RwStream* stream) { + return ((RtDict*(__cdecl *)(RtDictSchema*, RwStream*))0x7CF240)(schema, stream); +} + +RtDict* RtDictSchemaCreateDict(RtDictSchema* schema) { + return ((RtDict*(__cdecl *)(RtDictSchema*))0x7CED90)(schema); +} + +RtDictSchema* RtDictSchemaAddDict(RtDictSchema* schema, RtDict* dict) { + return ((RtDictSchema*(__cdecl *)(RtDictSchema*, RtDict*))0x7CEE50)(schema, dict); +} + +RtDictSchema* RtDictSchemaRemoveDict(RtDictSchema* schema, RtDict* dict) { + return ((RtDictSchema*(__cdecl *)(RtDictSchema*, RtDict*))0x7CEE80)(schema, dict); +} + +RwBool RtDictSchemaForAllDictionaries(RtDictSchema* schema, RtDictCallBack* callback, RtDictEntryType data) { + return ((RwBool(__cdecl *)(RtDictSchema*, RtDictCallBack*, RtDictEntryType))0x7CF5B0)(schema, callback, data); +} + +RtDict* RtDictSchemaGetCurrentDict(RtDictSchema* schema) { + return ((RtDict*(__cdecl *)(RtDictSchema*))0x7CEEE0)(schema); +} + +RtDictSchema* RtDictSchemaSetCurrentDict(RtDictSchema* schema, RtDict* dict) { + return ((RtDictSchema*(__cdecl *)(RtDictSchema*, RtDict*))0x7CEEF0)(schema, dict); +} + +RwBool RtDictDestroy(RtDict* dictionary) { + return ((RwBool(__cdecl *)(RtDict*))0x7CF130)(dictionary); +} + +RtDictEntryType RtDictAddEntry(RtDict* dictionary, RtDictEntryType entry) { + return ((RtDictEntryType(__cdecl *)(RtDict*, RtDictEntryType))0x7CEFB0)(dictionary, entry); +} + +RtDictEntryType RtDictFindNamedEntry(RtDict* dictionary, const RwChar* name) { + return ((RtDictEntryType(__cdecl *)(RtDict*, const RwChar*))0x7CEFE0)(dictionary, name); +} + +const RtDict* RtDictForAllEntries(const RtDict* dictionary, RtDictEntryCallBack* callBack, RtDictEntryType data) { + return ((const RtDict*(__cdecl *)(const RtDict*, RtDictEntryCallBack*, RtDictEntryType))0x7CF060)(dictionary, callBack, data); +} + +RtDict* RtDictRemoveEntry(RtDict* dictionary, RtDictEntryType entry) { + return ((RtDict*(__cdecl *)(RtDict*, RtDictEntryType))0x7CF0C0)(dictionary, entry); +} + +const RtDict* RtDictStreamWrite(const RtDict* dictionary, RwStream* stream) { + return ((const RtDict*(__cdecl *)(const RtDict*, RwStream*))0x7CF490)(dictionary, stream); +} + +RwUInt32 RtDictStreamGetSize(const RtDict* dictionary) { + return ((RwUInt32(__cdecl *)(const RtDict*))0x7CF1F0)(dictionary); +} + +RtDict* _rtDictSchemaInitDict(RtDictSchema* schema, RtDict* dictionary) { + return ((RtDict*(__cdecl *)(RtDictSchema*, RtDict*))0x7CEF00)(schema, dictionary); +} + +RwBool _rtDictDestruct(RtDict* dictionary) { + return ((RwBool(__cdecl *)(RtDict*))0x7CEF60)(dictionary); +} + +/* rpmatfx.h */ + +void RpMatFXMaterialDataSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc) { + ((void(__cdecl *)(RwInt32, RwInt32))0x810700)(blockSize, numBlocksToPrealloc); +} + +RwBool RpMatFXPluginAttach(void) { + return ((RwBool(__cdecl *)(void))0x810AA0)(); +} + +RpAtomic* RpMatFXAtomicEnableEffects(RpAtomic* atomic) { + return ((RpAtomic*(__cdecl *)(RpAtomic*))0x811C00)(atomic); +} + +RwBool RpMatFXAtomicQueryEffects(RpAtomic* atomic) { + return ((RwBool(__cdecl *)(RpAtomic*))0x811C30)(atomic); +} + +RpWorldSector* RpMatFXWorldSectorEnableEffects(RpWorldSector* worldSector) { + return ((RpWorldSector*(__cdecl *)(RpWorldSector*))0x811C40)(worldSector); +} + +RwBool RpMatFXWorldSectorQueryEffects(RpWorldSector* worldSector) { + return ((RwBool(__cdecl *)(RpWorldSector*))0x811C70)(worldSector); +} + +RpMaterial* RpMatFXMaterialSetEffects(RpMaterial* material, RpMatFXMaterialFlags flags) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RpMatFXMaterialFlags))0x811C80)(material, flags); +} + +RpMaterial* RpMatFXMaterialSetupBumpMap(RpMaterial* material, RwTexture* texture, RwFrame* frame, RwReal coef) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwTexture*, RwFrame*, RwReal))0x811E00)(material, texture, frame, coef); +} + +RpMaterial* RpMatFXMaterialSetupEnvMap(RpMaterial* material, RwTexture* texture, RwFrame* frame, RwBool useFrameBufferAlpha, RwReal coef) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwTexture*, RwFrame*, RwBool, RwReal))0x811ED0)(material, texture, frame, useFrameBufferAlpha, coef); +} + +RpMaterial* RpMatFXMaterialSetupDualTexture(RpMaterial* material, RwTexture* texture, RwBlendFunction srcBlendMode, RwBlendFunction dstBlendMode) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwTexture*, RwBlendFunction, RwBlendFunction))0x812040)(material, texture, srcBlendMode, dstBlendMode); +} + +RpMatFXMaterialFlags RpMatFXMaterialGetEffects(const RpMaterial* material) { + return ((RpMatFXMaterialFlags(__cdecl *)(const RpMaterial*))0x812140)(material); +} + +RpMaterial* RpMatFXMaterialSetBumpMapTexture(RpMaterial* material, RwTexture* texture) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwTexture*))0x812160)(material, texture); +} + +RpMaterial* RpMatFXMaterialSetBumpMapFrame(RpMaterial* material, RwFrame* frame) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwFrame*))0x812320)(material, frame); +} + +RpMaterial* RpMatFXMaterialSetBumpMapCoefficient(RpMaterial* material, RwReal coef) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwReal))0x812380)(material, coef); +} + +RwTexture* RpMatFXMaterialGetBumpMapTexture(const RpMaterial* material) { + return ((RwTexture*(__cdecl *)(const RpMaterial*))0x812430)(material); +} + +RwTexture* RpMatFXMaterialGetBumpMapBumpedTexture(const RpMaterial* material) { + return ((RwTexture*(__cdecl *)(const RpMaterial*))0x8123E0)(material); +} + +RwFrame* RpMatFXMaterialGetBumpMapFrame(const RpMaterial* material) { + return ((RwFrame*(__cdecl *)(const RpMaterial*))0x812480)(material); +} + +RwReal RpMatFXMaterialGetBumpMapCoefficient(const RpMaterial* material) { + return ((RwReal(__cdecl *)(const RpMaterial*))0x8124D0)(material); +} + +RpMaterial* RpMatFXMaterialSetEnvMapTexture(RpMaterial* material, RwTexture* texture) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwTexture*))0x812530)(material, texture); +} + +RpMaterial* RpMatFXMaterialSetEnvMapFrame(RpMaterial* material, RwFrame* frame) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwFrame*))0x8125B0)(material, frame); +} + +RpMaterial* RpMatFXMaterialSetEnvMapFrameBufferAlpha(RpMaterial* material, RwBool useFrameBufferAlpha) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwBool))0x812610)(material, useFrameBufferAlpha); +} + +RpMaterial* RpMatFXMaterialSetEnvMapCoefficient(RpMaterial* material, RwReal coef) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwReal))0x812680)(material, coef); +} + +RwTexture* RpMatFXMaterialGetEnvMapTexture(const RpMaterial* material) { + return ((RwTexture*(__cdecl *)(const RpMaterial*))0x8126F0)(material); +} + +RwFrame* RpMatFXMaterialGetEnvMapFrame(const RpMaterial* material) { + return ((RwFrame*(__cdecl *)(const RpMaterial*))0x812740)(material); +} + +RwBool RpMatFXMaterialGetEnvMapFrameBufferAlpha(const RpMaterial* material) { + return ((RwBool(__cdecl *)(const RpMaterial*))0x812790)(material); +} + +RwReal RpMatFXMaterialGetEnvMapCoefficient(const RpMaterial* material) { + return ((RwReal(__cdecl *)(const RpMaterial*))0x8127E0)(material); +} + +RpMaterial* RpMatFXMaterialSetDualTexture(RpMaterial* material, RwTexture* texture) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwTexture*))0x812830)(material, texture); +} + +RpMaterial* RpMatFXMaterialSetDualBlendModes(RpMaterial* material, RwBlendFunction srcBlendMode, RwBlendFunction dstBlendMode) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwBlendFunction, RwBlendFunction))0x8128C0)(material, srcBlendMode, dstBlendMode); +} + +RwTexture* RpMatFXMaterialGetDualTexture(const RpMaterial* material) { + return ((RwTexture*(__cdecl *)(const RpMaterial*))0x812930)(material); +} + +const RpMaterial* RpMatFXMaterialGetDualBlendModes(const RpMaterial* material, RwBlendFunction* srcBlendMode, RwBlendFunction* dstBlendMode) { + return ((const RpMaterial*(__cdecl *)(const RpMaterial*, RwBlendFunction*, RwBlendFunction*))0x812980)(material, srcBlendMode, dstBlendMode); +} + +RpMaterial* RpMatFXMaterialSetUVTransformMatrices(RpMaterial* material, RwMatrix* baseTransform, RwMatrix* dualTransform) { + return ((RpMaterial*(__cdecl *)(RpMaterial*, RwMatrix*, RwMatrix*))0x8129E0)(material, baseTransform, dualTransform); +} + +const RpMaterial* RpMatFXMaterialGetUVTransformMatrices(const RpMaterial* material, RwMatrix* baseTransform, RwMatrix* dualTransform) { + return ((const RpMaterial*(__cdecl *)(const RpMaterial*, RwMatrix*, RwMatrix*))0x812A50)(material, baseTransform, dualTransform); +} + +RxPipeline* RpMatFXGetD3D9Pipeline(RpMatFXD3D9Pipeline d3d9Pipeline) { + return ((RxPipeline*(__cdecl *)(RpMatFXD3D9Pipeline))0x8162F0)(d3d9Pipeline); +} + +/* skeleton.h */ + +RsEventStatus RsEventHandler(RsEvent e, void* param) { + return plugin::CallAndReturn(e, param); +} + +/* rpanisot.h */ + +RwInt8 RpAnisotGetMaxSupportedMaxAnisotropy(void) { + return ((RwInt8(__cdecl *)(void))0x748F20)(); +} + +RwTexture* RpAnisotTextureSetMaxAnisotropy(RwTexture* tex, RwInt8 val) { + return ((RwTexture*(__cdecl *)(RwTexture*, RwInt8))0x748F30)(tex, val); +} + +RwInt8 RpAnisotTextureGetMaxAnisotropy(RwTexture* tex) { + return ((RwInt8(__cdecl *)(RwTexture*))0x748F50)(tex); +} + +RwBool RpAnisotPluginAttach(void) { + return ((RwBool(__cdecl *)(void))0x748F70)(); +} + +/* rtbmp.h */ + +RwImage* RtBMPImageWrite(RwImage* image, const RwChar* imageName) { + return ((RwImage*(__cdecl *)(RwImage*, const RwChar*))0x7CE990)(image, imageName); +} + +RwImage* RtBMPImageRead(const RwChar* imageName) { + return ((RwImage*(__cdecl *)(const RwChar*))0x7CDF60)(imageName); +} + +/* rtpng.h */ + +RwImage* RtPNGImageWrite(RwImage* image, const RwChar* imageName) { + return ((RwImage*(__cdecl *)(RwImage*, const RwChar*))0x7CF600)(image, imageName); +} + +RwImage* RtPNGImageRead(const RwChar* imageName) { + return ((RwImage*(__cdecl *)(const RwChar*))0x7CF9B0)(imageName); +} + + +void _rpMaterialSetDefaultSurfaceProperties(RwSurfaceProperties *surfProps) { + ((void (__cdecl *)(RwSurfaceProperties*))0x74D870)(surfProps); +} + + +void _rwObjectHasFrameSetFrame(void *object, RwFrame *frame) { + plugin::Call<0x804EF0, void *, RwFrame *>(object, frame); +} + +void _rwObjectHasFrameReleaseFrame(void *object) { + plugin::Call<0x804F40, void *>(object); +} + +RpAtomic *_rpD3D9SkinVertexShaderMatrixUpdate(RwMatrix *matrices, RpAtomic *atomic, RpSkin *skin) { + return plugin::CallAndReturn(matrices, atomic, skin); +} + +void _rwD3D9SetStreams(RxD3D9VertexStream *streams, RwBool useOffsets) { + plugin::Call<0x7FA090, RxD3D9VertexStream *, RwBool>(streams, useOffsets); +} + +RwBool _rwD3D9RenderStateVertexAlphaEnable(RwBool enable) { + return plugin::CallAndReturn(enable); +} + +RwBool _rwD3D9RenderStateIsVertexAlphaEnable() { + return plugin::CallAndReturn(); +} + +RwBool _rwD3D9CheckValidCameraTextureFormat(RwUInt32 format) { + return plugin::CallAndReturn(format); +} + +void _rwD3D9SetVertexDeclaration(void *vertexDeclaration) { + plugin::Call<0x7F9F70, void *>(vertexDeclaration); +} + +void _rwD3D9SetIndices(void *indices) { + plugin::Call<0x7FA1C0, void *>(indices); +} + +void _rwD3D9DrawPrimitive(RwUInt32 primitiveType, RwUInt32 startIndex, RwUInt32 primitiveCount) { + plugin::Call<0x7FA360, RwUInt32, RwUInt32, RwUInt32>(primitiveType, startIndex, primitiveCount); +} + +RwBool _rwStreamReadChunkHeader(RwStream *stream, RwUInt32 *pType, RwUInt32 *pLength, RwUInt32 *pVersion, RwUInt32 *pBuild) { + return plugin::CallAndReturn(stream, pType, pLength, pVersion, pBuild); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/RenderWare.h b/third-party/plugin-sdk/plugin_sa/game_sa/RenderWare.h new file mode 100644 index 00000000..0c941395 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/RenderWare.h @@ -0,0 +1,973 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +// TODO: Clean up RW headers + +#include "rw/rwcore.h" +#include "rw/rphanim.h" +#include "rw/rpuvanim.h" +#include "rw/rpskin.h" +#include "rw/rpmatfx.h" +#include "rw/skeleton.h" +#ifdef _DX9_SDK_INSTALLED +#include "d3d9.h" +#endif + +extern RwGlobals *&RwEngineInstance; + +/* macro used to access global data structure (the root type is RwGlobals) */ +#define RWSRCGLOBAL(variable) (RwEngineInstance->variable) + +extern RsGlobalType &RsGlobal; + +extern RwPluginRegistry &geometryTKList; + +struct IDirect3DDevice9 *GetD3DDevice(); + +#ifndef D3DMATRIX_DEFINED +struct _D3DMATRIX; +#endif + +_D3DMATRIX *GetD3DViewTransform(); +_D3DMATRIX *GetD3DProjTransform(); + +/* rwplcore.h */ + +RwMemoryFunctions* RwOsGetMemoryInterface(void); // 0x802230 +RwFreeList* _rwFreeListCreate(RwInt32 entrySize, RwInt32 entriesPerBlock, RwInt32 alignment, RwUInt32 hint, const RwChar* fileCreate, RwUInt32 lineCreate); // 0x801980 +RwFreeList* RwFreeListCreateAndPreallocateSpace(RwInt32 entrySize, RwInt32 entriesPerBlock, RwInt32 alignment, RwInt32 numBlocksToPreallocate, RwFreeList* inPlaceSpaceForFreeListStruct, RwUInt32 hint); // 0x801B70 +RwBool RwFreeListDestroy(RwFreeList* freelist); // 0x801B80 +void RwFreeListSetFlags(RwFreeList* freeList, RwUInt32 flags); // 0x801C10 +RwUInt32 RwFreeListGetFlags(RwFreeList* freeList); // 0x801C20 +RwInt32 RwFreeListPurge(RwFreeList* freelist); // 0x801E00 +RwFreeList* RwFreeListForAllUsed(RwFreeList* freelist, RwFreeListCallBack fpCallBack, void* pData); // 0x801E90 +RwInt32 RwFreeListPurgeAllFreeLists(void); // 0x801F90 +void RwStreamSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x7EC760 +RwStream* _rwStreamInitialize(RwStream* stream, RwBool rwOwned, RwStreamType type, RwStreamAccessType accessType, const void* pData); // 0x7EC810 +RwStream* RwStreamOpen(RwStreamType type, RwStreamAccessType accessType, const void* pData); // 0x7ECEF0 +RwBool RwStreamClose(RwStream* stream, void* pData); // 0x7ECE20 +RwUInt32 RwStreamRead(RwStream* stream, void* buffer, RwUInt32 length); // 0x7EC9D0 +RwStream* RwStreamWrite(RwStream* stream, const void* buffer, RwUInt32 length); // 0x7ECB30 +RwStream* RwStreamSkip(RwStream* stream, RwUInt32 offset); // 0x7ECD00 +RwBool _rwStringOpen(void); // 0x80A240 +void _rwStringClose(void); // 0x80A440 +RwBool _rwStringDestroy(RwChar* string); // 0x80A450 +RwUInt32 _rwStringStreamGetSize(const RwChar* string); // 0x80A470 +const RwChar* _rwStringStreamWrite(const RwChar* string, RwStream* stream); // 0x80A4A0 +RwChar* _rwStringStreamFindAndRead(RwChar* string, RwStream* stream); // 0x80A510 +void RwPluginRegistrySetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x8087B0 +RwBool _rwPluginRegistrySetStaticPluginsSize(RwPluginRegistry* reg, RwInt32 size); // 0x808430 +RwInt32 _rwPluginRegistryAddPlugin(RwPluginRegistry* reg, RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x8084A0 +RwInt32 _rwPluginRegistryGetPluginOffset(const RwPluginRegistry* reg, RwUInt32 pluginID); // 0x808470 +const RwPluginRegistry* _rwPluginRegistryInitObject(const RwPluginRegistry* reg, void* object); // 0x8086E0 +const RwPluginRegistry* _rwPluginRegistryDeInitObject(const RwPluginRegistry* reg, void* object); // 0x808740 +const RwPluginRegistry* _rwPluginRegistryCopyObject(const RwPluginRegistry* reg, void* dstObject, const void* srcObject); // 0x808770 +RwInt32 _rwPluginRegistryAddPluginStream(RwPluginRegistry* reg, RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB); // 0x8088E0 +RwInt32 _rwPluginRegistryAddPlgnStrmlwysCB(RwPluginRegistry* reg, RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB); // 0x808920 +RwInt32 _rwPluginRegistryAddPlgnStrmRightsCB(RwPluginRegistry* reg, RwUInt32 pluginID, RwPluginDataChunkRightsCallBack rightsCB); // 0x808950 +const RwPluginRegistry* _rwPluginRegistryReadDataChunks(const RwPluginRegistry* reg, RwStream* stream, void* object); // 0x808980 +const RwPluginRegistry* _rwPluginRegistryWriteDataChunks(const RwPluginRegistry* reg, RwStream* stream, const void* object); // 0x808B40 +const RwPluginRegistry* _rwPluginRegistrySkipDataChunks(const RwPluginRegistry* reg, RwStream* stream); // 0x808C10 +RwInt32 _rwPluginRegistryGetSize(const RwPluginRegistry* reg, const void* object); // 0x808B00 +const RwPluginRegistry* _rwPluginRegistryInvokeRights(const RwPluginRegistry* reg, RwUInt32 id, void* obj, RwUInt32 extraData); // 0x808AB0 +RwBool RwEngineGetMatrixTolerances(RwMatrixTolerance * const tolerance); // 0x7F1780 +RwBool RwEngineSetMatrixTolerances(const RwMatrixTolerance * const tolerance); // 0x7F17B0 +void RwMatrixSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x7F16A0 +RwBool RwMatrixDestroy(RwMatrix* mpMat); // 0x7F2A20 +RwMatrix* RwMatrixCreate(void); // 0x7F2A50 +RwMatrix* RwMatrixMultiply(RwMatrix* matrixOut, const RwMatrix* MatrixIn1, const RwMatrix* matrixIn2); // 0x7F18B0 +RwMatrix* RwMatrixTransform(RwMatrix* matrix, const RwMatrix* transform, RwOpCombineType combineOp); // 0x7F25A0 +RwMatrix* RwMatrixOrthoNormalize(RwMatrix* matrixOut, const RwMatrix* matrixIn); // 0x7F1920 +RwMatrix* RwMatrixInvert(RwMatrix* matrixOut, const RwMatrix* matrixIn); // 0x7F2070 +RwMatrix* RwMatrixScale(RwMatrix* matrix, const RwV3d* scale, RwOpCombineType combineOp); // 0x7F22C0 +RwMatrix* RwMatrixTranslate(RwMatrix* matrix, const RwV3d* translation, RwOpCombineType combineOp); // 0x7F2450 +RwMatrix* RwMatrixRotate(RwMatrix* matrix, const RwV3d* axis, RwReal angle, RwOpCombineType combineOp); // 0x7F1FD0 +RwMatrix* RwMatrixRotateOneMinusCosineSine(RwMatrix* matrix, const RwV3d* unitAxis, RwReal oneMinusCosine, RwReal sine, RwOpCombineType combineOp); // 0x7F1D00 +const RwMatrix* RwMatrixQueryRotate(const RwMatrix* matrix, RwV3d* unitAxis, RwReal* angle, RwV3d* center); // 0x7F2720 +RwMatrix* RwMatrixUpdate(RwMatrix* matrix); // 0x7F18A0 +RwMatrix* RwMatrixOptimize(RwMatrix* matrix, const RwMatrixTolerance* tolerance); // 0x7F17E0 +RwReal _rwMatrixDeterminant(const RwMatrix* matrix); // 0x7F1450 +RwReal _rwMatrixNormalError(const RwMatrix* matrix); // 0x7F1500 +RwReal _rwMatrixOrthogonalError(const RwMatrix* matrix); // 0x7F14A0 +RwReal _rwMatrixIdentityError(const RwMatrix* matrix); // 0x7F1590 +RwReal RwV3dNormalize(RwV3d* out, const RwV3d* in); // 0x7ED9B0 +RwReal RwV3dLength(const RwV3d* in); // 0x7EDAC0 +RwReal RwV2dLength(const RwV2d* in); // 0x7EDBF0 +RwReal RwV2dNormalize(RwV2d* out, const RwV2d* in); // 0x7EDC60 +RwV3d* RwV3dTransformPoint(RwV3d* pointOut, const RwV3d* pointIn, const RwMatrix* matrix); // 0x7EDD60 +RwV3d* RwV3dTransformPoints(RwV3d* pointsOut, const RwV3d* pointsIn, RwInt32 numPoints, const RwMatrix* matrix); // 0x7EDD90 +RwV3d* RwV3dTransformVector(RwV3d* vectorOut, const RwV3d* vectorIn, const RwMatrix* matrix); // 0x7EDDC0 +RwV3d* RwV3dTransformVectors(RwV3d* vectorsOut, const RwV3d* vectorsIn, RwInt32 numPoints, const RwMatrix* matrix); // 0x7EDDF0 +RwReal _rwSqrt(const RwReal num); // 0x7EDB30 +RwReal _rwInvSqrt(const RwReal num); // 0x7EDB90 +RwReal _rwV3dNormalize(RwV3d* out, const RwV3d* in); // 0x7ED910 +RwSList* _rwSListCreate(RwInt32 size, RwUInt32 hint); // 0x809160 +RwBool _rwSListDestroy(RwSList* sList); // 0x809440 +void _rwSListDestroyEndEntries(RwSList* sList, RwInt32 amount); // 0x809400 +void* _rwSListGetEntry(RwSList* sList, RwInt32 entry); // 0x809510 +void* _rwSListGetNewEntry(RwSList* sList, RwUInt32 hint); // 0x809240 +RwInt32 _rwSListGetNumEntries(const RwSList* sList); // 0x8094B0 +void* _rwSListGetBegin(RwSList* sList); // 0x809530 +void* _rwSListGetEnd(RwSList* sList); // 0x809540 +RwBool RwIm2DRenderPrimitive(RwPrimitiveType primType, RwIm2DVertex* vertices, RwInt32 numVertices); +RwBool RwIm2DRenderIndexedPrimitive(RwPrimitiveType primType, RwIm2DVertex* vertices, RwInt32 numVertices, RwImVertexIndex* indices, RwInt32 numIndices); +RwBool RwIm2DRenderTriangle(RwIm2DVertex* vertices, RwInt32 numVertices, RwInt32 vert1, RwInt32 vert2, RwInt32 vert3); +RwBool RwIm2DRenderLine(RwIm2DVertex* vertices, RwInt32 numVertices, RwInt32 vert1, RwInt32 vert2); +RwUInt32 RwEngineGetVersion(void); // 0x7F2BA0 +RwBool RwEngineInit(const RwMemoryFunctions* memFuncs, RwUInt32 initFlags, RwUInt32 resArenaSize); // 0x7F3170 +RwInt32 RwEngineRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor initCB, RwPluginObjectDestructor termCB); // 0x7F2BB0 +RwInt32 RwEngineGetPluginOffset(RwUInt32 pluginID); // 0x7F2BE0 +RwBool RwEngineOpen(RwEngineOpenParams* initParams); // 0x7F2F70 +RwBool RwEngineStart(void); // 0x7F2E70 +RwBool RwEngineStop(void); // 0x7F2E20 +RwBool RwEngineClose(void); // 0x7F2F00 +RwBool RwEngineTerm(void); // 0x7F3130 +RwInt32 RwEngineGetNumSubSystems(void); // 0x7F2C00 +RwSubSystemInfo* RwEngineGetSubSystemInfo(RwSubSystemInfo* subSystemInfo, RwInt32 subSystemIndex); // 0x7F2C30 +RwInt32 RwEngineGetCurrentSubSystem(void); // 0x7F2C60 +RwBool RwEngineSetSubSystem(RwInt32 subSystemIndex); // 0x7F2C90 +RwInt32 RwEngineGetNumVideoModes(void); // 0x7F2CC0 +RwVideoMode* RwEngineGetVideoModeInfo(RwVideoMode* modeinfo, RwInt32 modeIndex); // 0x7F2CF0 +RwInt32 RwEngineGetCurrentVideoMode(void); // 0x7F2D20 +RwBool RwEngineSetVideoMode(RwInt32 modeIndex); // 0x7F2D50 +RwInt32 RwEngineGetTextureMemorySize(void); // 0x7F2D80 +RwInt32 RwEngineGetMaxTextureSize(void); // 0x7F2DB0 +RwBool RwEngineSetFocus(RwBool enable); // 0x7F2DE0 +RwMetrics* RwEngineGetMetrics(void); // 0x7F2E10 +RwFileFunctions* RwOsGetFileInterface(void); // 0x804130 +RwError* RwErrorGet(RwError* code); // 0x808880 +RwError* RwErrorSet(RwError* code); // 0x808820 +RwInt32 _rwerror(RwInt32 code, ...); // 0x8088D0 +RwBool RwResourcesSetArenaSize(RwUInt32 size); // 0x8080C0 +RwInt32 RwResourcesGetArenaSize(void); // 0x8081B0 +RwInt32 RwResourcesGetArenaUsage(void); // 0x8081C0 +RwBool RwResourcesEmptyArena(void); // 0x8081F0 +RwResEntry* RwResourcesAllocateResEntry(void* owner, RwResEntry* ownerRef, RwInt32 size, RwResEntryDestroyNotify destroyNotify); // 0x807ED0 +RwBool RwResourcesFreeResEntry(RwResEntry* entry); // 0x807DE0 +void _rwResourcesPurge(void); // 0x807E50 +RwBool RwStreamFindChunk(RwStream* stream, RwUInt32 type, RwUInt32* lengthOut, RwUInt32* versionOut); // 0x7ED2D0 +RwStream* _rwStreamWriteVersionedChunkHeader(RwStream* stream, RwInt32 type, RwInt32 size, RwUInt32 version, RwUInt32 buildNum); // 0x7ED270 +RwStream* RwStreamWriteReal(RwStream* stream, const RwReal* reals, RwUInt32 numBytes); // 0x7ED3D0 +RwStream* RwStreamWriteInt32(RwStream* stream, const RwInt32* ints, RwUInt32 numBytes); // 0x7ED460 +RwStream* RwStreamWriteInt16(RwStream* stream, const RwInt16* ints, RwUInt32 numBytes); // 0x7ED480 +RwStream* RwStreamReadReal(RwStream* stream, RwReal* reals, RwUInt32 numBytes); // 0x7ED4F0 +RwStream* RwStreamReadInt32(RwStream* stream, RwInt32* ints, RwUInt32 numBytes); // 0x7ED540 +RwStream* RwStreamReadInt16(RwStream* stream, RwInt16* ints, RwUInt32 numBytes); // 0x7ED4A0 +RwStream* RwStreamReadChunkHeaderInfo(RwStream* stream, RwChunkHeaderInfo* chunkHeaderInfo); // 0x7ED590 + +/* rwcore.h */ + +RxHeap* RxHeapCreate(RwUInt32 size); // 0x809F90 +void RxHeapDestroy(RxHeap* heap); // 0x809F30 +RwBool _rxHeapReset(RxHeap* heap); // 0x809EC0 +void* RxHeapAlloc(RxHeap* heap, RwUInt32 size); // 0x809AA0 +void RxHeapFree(RxHeap* heap, void* block); // 0x8098B0 +void* RxHeapRealloc(RxHeap* heap, void* block, RwUInt32 newSize, RwBool allowCopy); // 0x809D10 +void RxPipelineSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x804FC0 +RwBool _rxPipelineOpen(void); // 0x804FE0 +RwBool _rxPipelineClose(void); // 0x804F60 +RxPipeline* RxPipelineCreate(void); // 0x8057B0 +void _rxPipelineDestroy(RxPipeline* Pipeline); // 0x805820 +RxHeap* RxHeapGetGlobalHeap(void); // 0x8052F0 +RxPipeline* RxPipelineExecute(RxPipeline* pipeline, void* data, RwBool heapReset); // 0x805710 +RxPacket* RxPacketCreate(RxPipelineNode* node); // 0x805300 +RxCluster* RxClusterSetStride(RxCluster* cluster, RwInt32 stride); // 0x805330 +RxCluster* RxClusterSetExternalData(RxCluster* cluster, void* data, RwInt32 stride, RwInt32 numElements); // 0x805340 +RxCluster* RxClusterSetData(RxCluster* cluster, void* data, RwInt32 stride, RwInt32 numElements); // 0x8053A0 +void _rxPacketDestroy(RxPacket* Packet); // 0x80F070 +RxCluster* RxClusterInitializeData(RxCluster* cluster, RwUInt32 numElements, RwUInt16 stride); // 0x805400 +RxCluster* RxClusterResizeData(RxCluster* CurrentCluster, RwUInt32 NumElements); // 0x805470 +RxCluster* RxClusterDestroyData(RxCluster* CurrentCluster); // 0x8054C0 +RxCluster* RxClusterLockWrite(RxPacket* packet, RwUInt32 clusterIndex, RxPipelineNode* node); // 0x8054F0 +void RxClusterUnlock(RxCluster* cluster); // 0x8055C0 +RwUInt32 RxPipelineNodeSendConfigMsg(RxPipelineNode* dest, RwUInt32 msg, RwUInt32 intparam, void* ptrparam); // 0x8055D0 +RxPipelineNode* RxPipelineNodeForAllConnectedOutputs(RxPipelineNode* node, RxPipeline* pipeline, RxPipelineNodeOutputCallBack callbackfn, void* callbackdata); // 0x8055F0 +RxPipelineCluster* RxPipelineNodeGetPipelineCluster(RxPipelineNode* node, RwUInt32 clustersOfInterestIndex); // 0x805680 +RwUInt32 RxPipelineClusterGetCreationAttributes(RxPipelineCluster* cluster); // 0x8056B0 +RxPipelineCluster* RxPipelineClusterSetCreationAttributes(RxPipelineCluster* cluster, RwUInt32 creationAttributes); // 0x8056C0 +RwUInt32 RxClusterGetAttributes(RxCluster* cluster); // 0x8056E0 +RxCluster* RxClusterSetAttributes(RxCluster* cluster, RwUInt32 attributes); // 0x8056F0 +RxNodeOutput RxPipelineNodeFindOutputByName(RxPipelineNode* node, const RwChar* outputname); // 0x805D10 +RxNodeOutput RxPipelineNodeFindOutputByIndex(RxPipelineNode* node, RwUInt32 outputindex); // 0x805D70 +RxNodeInput RxPipelineNodeFindInput(RxPipelineNode* node); // 0x805DA0 +RxNodeDefinition* RxPipelineNodeCloneDefinition(RxPipelineNode* node, RxClusterDefinition* cluster2add); // 0x8059C0 +RxPipeline* RxPipelineNodeRequestCluster(RxPipeline* pipeline, RxPipelineNode* node, RxClusterDefinition* clusterDef); // 0x805DB0 +RxPipeline* RxPipelineNodeReplaceCluster(RxPipeline* pipeline, RxPipelineNode* node, RxClusterDefinition* oldClusterDef, RxClusterDefinition* newClusterDef); // 0x805E20 +void* RxPipelineNodeGetInitData(RxPipelineNode* node); // 0x805F30 +void* RxPipelineNodeCreateInitData(RxPipelineNode* node, RwUInt32 size); // 0x805EA0 +RxPipeline* RxPipelineClone(RxPipeline* pipeline); // 0x806AC0 +RxPipelineNode* RxPipelineFindNodeByName(RxPipeline* pipeline, const RwChar* name, RxPipelineNode* start, RwInt32* nodeIndex); // 0x806B30 +RxPipelineNode* RxPipelineFindNodeByIndex(RxPipeline* pipeline, RwUInt32 nodeindex); // 0x806BC0 +RxLockedPipe* RxPipelineLock(RxPipeline* pipeline); // 0x806990 +RxPipeline* RxLockedPipeUnlock(RxLockedPipe* pipeline); // 0x805F40 +RxPipeline* RxLockedPipeReplaceNode(RxLockedPipe* pipeline, RxPipelineNode* node, RxNodeDefinition* nodeDef); // 0x806F20 +RxPipeline* RxLockedPipeDeleteNode(RxLockedPipe* pipeline, RxPipelineNode* node); // 0x807040 +RxPipeline* RxLockedPipeSetEntryPoint(RxLockedPipe* pipeline, RxNodeInput in); // 0x807070 +RxPipelineNode* RxLockedPipeGetEntryPoint(RxLockedPipe* pipeline); // 0x8070D0 +RxPipeline* RxLockedPipeAddPath(RxLockedPipe* pipeline, RxNodeOutput out, RxNodeInput in); // 0x807100 +RxPipeline* RxLockedPipeDeletePath(RxLockedPipe* pipeline, RxNodeOutput out, RxNodeInput in); // 0x807170 +RxPipeline* RxPipelineInsertDebugNode(RxPipeline* pipeline, RxPipelineNode* before, RxPipelineNode* after, RxNodeDefinition* debugNode); // 0x8071B0 +void RwD3D9VertexBufferManagerChangeDefaultSize(RwUInt32 defaultSize); // 0x7F57F0 +RwBool RwD3D9CreateVertexBuffer(RwUInt32 stride, RwUInt32 size, void* vertexBuffer, RwUInt32* offset); // 0x7F5500 +void RwD3D9DestroyVertexBuffer(RwUInt32 stride, RwUInt32 size, void* vertexBuffer, RwUInt32 offset); // 0x7F56A0 +RwBool RwD3D9DynamicVertexBufferCreate(RwUInt32 size, void* vertexBuffer); // 0x7F5A00 +void RwD3D9DynamicVertexBufferDestroy(void); // 0x7F5AE0 +RwBool RwD3D9DynamicVertexBufferLock(RwUInt32 vertexSize, RwUInt32 numVertex, void* vertexBufferOut, void* vertexDataOut, RwUInt32* baseIndexOut); // 0x7F5B10 +RwBool RwD3D9DynamicVertexBufferUnlock(void); // 0x7F5C90 +void RwRasterSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x7FB350 +RwRaster* RwRasterCreate(RwInt32 width, RwInt32 height, RwInt32 depth, RwInt32 flags); // 0x7FB230 +RwBool RwRasterDestroy(RwRaster* raster); // 0x7FB020 +RwRaster* RwRasterGetOffset(RwRaster* raster, RwInt16* xOffset, RwInt16* yOffset); // 0x7FAEA0 +RwInt32 RwRasterGetNumLevels(RwRaster* raster); // 0x7FB160 +RwRaster* RwRasterSubRaster(RwRaster* subRaster, RwRaster* raster, RwRect* rect); // 0x7FB1D0 +RwRaster* RwRasterRenderFast(RwRaster* raster, RwInt32 x, RwInt32 y); // 0x7FAF50 +RwRaster* RwRasterRender(RwRaster* raster, RwInt32 x, RwInt32 y); // 0x7FAFB0 +RwRaster* RwRasterRenderScaled(RwRaster* raster, RwRect* rect); // 0x7FAE80 +RwRaster* RwRasterPushContext(RwRaster* raster); // 0x7FB060 +RwRaster* RwRasterPopContext(void); // 0x7FB110 +RwRaster* RwRasterGetCurrentContext(void); // 0x7FAE60 +RwBool RwRasterClear(RwInt32 pixelValue); // 0x7FAEE0 +RwBool RwRasterClearRect(RwRect* rpRect, RwInt32 pixelValue); // 0x7FAF90 +RwRaster* RwRasterShowRaster(RwRaster* raster, void* dev, RwUInt32 flags); // 0x7FB1A0 +RwUInt8* RwRasterLock(RwRaster* raster, RwUInt8 level, RwInt32 lockMode); // 0x7FB2D0 +RwRaster* RwRasterUnlock(RwRaster* raster); // 0x7FAEC0 +RwUInt8* RwRasterLockPalette(RwRaster* raster, RwInt32 lockMode); // 0x7FB0E0 +RwRaster* RwRasterUnlockPalette(RwRaster* raster); // 0x7FAFF0 +RwInt32 RwRasterRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x7FB0B0 +RwInt32 RwRasterGetPluginOffset(RwUInt32 pluginID); // 0x7FAE40 +RxRenderStateVector* RxRenderStateVectorSetDefaultRenderStateVector(RxRenderStateVector* rsvp); // 0x80EA40 +RwImage* RwImageCreate(RwInt32 width, RwInt32 height, RwInt32 depth); // 0x8026E0 +RwBool RwImageDestroy(RwImage* image); // 0x802740 +RwImage* RwImageAllocatePixels(RwImage* image); // 0x8027A0 +RwImage* RwImageFreePixels(RwImage* image); // 0x802860 +RwImage* RwImageApplyMask(RwImage* image, const RwImage* mask); // 0x802AF0 +RwImage* RwImageMakeMask(RwImage* image); // 0x802A20 +RwImage* RwImageReadMaskedImage(const RwChar* imageName, const RwChar* maskname); // 0x8035C0 +RwImage* RwImageRead(const RwChar* imageName); // 0x802FD0 +const RwChar* RwImageSetPath(const RwChar* path); // 0x802EA0 +RwBool RwImageSetGamma(RwReal gammaValue); // 0x803FE0 +RwImage* RwImageGammaCorrect(RwImage* image); // 0x803E30 +RwBool RwPalQuantInit(RwPalQuant* pq); // 0x80C470 +void RwPalQuantTerm(RwPalQuant* pq); // 0x80C520 +void RwPalQuantAddImage(RwPalQuant* pq, RwImage* img, RwReal weight); // 0x80AA80 +RwInt32 RwPalQuantResolvePalette(RwRGBA* palette, RwInt32 maxcols, RwPalQuant* pq); // 0x80AF60 +void RwPalQuantMatchImage(RwUInt8* dstpixels, RwInt32 dststride, RwInt32 dstdepth, RwBool dstPacked, RwPalQuant* pq, RwImage* img); // 0x80BF20 +RwBool RwTextureSetMipmapping(RwBool enable); // 0x7F3530 +RwBool RwTextureGetMipmapping(void); // 0x7F3550 +RwBool RwTextureSetAutoMipmapping(RwBool enable); // 0x7F3560 +RwBool RwTextureGetAutoMipmapping(void); // 0x7F3580 +RwBool RwTextureSetMipmapGenerationCallBack(RwTextureCallBackMipmapGeneration callback); // 0x7F3C70 +RwTextureCallBackMipmapGeneration RwTextureGetMipmapGenerationCallBack(void); // 0x7F3C90 +RwBool RwTextureSetMipmapNameCallBack(RwTextureCallBackMipmapName callback); // 0x7F3CA0 +RwTextureCallBackMipmapName RwTextureGetMipmapNameCallBack(void); // 0x7F3CC0 +RwBool RwTextureGenerateMipmapName(RwChar* name, RwChar* maskName, RwUInt8 mipLevel, RwInt32 format); // 0x7F3AA0 +RwBool RwTextureRasterGenerateMipmaps(RwRaster* raster, RwImage* image); // 0x7F3CD0 +RwBool _rwTextureSetAutoMipMapState(RwBool enable); // 0x7F3590 +RwBool _rwTextureGetAutoMipMapState(void); // 0x7F35C0 +RwTextureCallBackRead RwTextureGetReadCallBack(void); // 0x7F3520 +RwBool RwTextureSetReadCallBack(RwTextureCallBackRead callBack); // 0x7F3500 +RwTextureCallBackFind RwTextureGetFindCallBack(void); // 0x7F34F0 +RwBool RwTextureSetFindCallBack(RwTextureCallBackFind callBack); // 0x7F34D0 +RwTexture* RwTextureSetName(RwTexture* texture, const RwChar* name); // 0x7F38A0 +RwTexture* RwTextureSetMaskName(RwTexture* texture, const RwChar* maskName); // 0x7F3910 +void RwTexDictionarySetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x7F3E80 +RwTexDictionary* RwTexDictionaryCreate(void); // 0x7F3600 +RwBool RwTexDictionaryDestroy(RwTexDictionary* dict); // 0x7F36A0 +RwTexture* RwTextureCreate(RwRaster* raster); // 0x7F37C0 +RwBool RwTextureDestroy(RwTexture* texture); // 0x7F3820 +RwTexture* RwTextureSetRaster(RwTexture* texture, RwRaster* raster); // 0x7F35D0 +RwTexture* RwTexDictionaryAddTexture(RwTexDictionary* dict, RwTexture* texture); // 0x7F3980 +RwTexture* RwTexDictionaryRemoveTexture(RwTexture* texture); // 0x7F39C0 +RwTexture* RwTexDictionaryFindNamedTexture(RwTexDictionary* dict, const RwChar* name); // 0x7F39F0 +RwTexDictionary* RwTexDictionaryGetCurrent(void); // 0x7F3A90 +RwTexDictionary* RwTexDictionarySetCurrent(RwTexDictionary* dict); // 0x7F3A70 +const RwTexDictionary* RwTexDictionaryForAllTextures(const RwTexDictionary* dict, RwTextureCallBack fpCallBack, void* pData); // 0x7F3730 +RwBool RwTexDictionaryForAllTexDictionaries(RwTexDictionaryCallBack fpCallBack, void* pData); // 0x7F3770 +RwInt32 RwTextureRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x7F3BB0 +RwInt32 RwTexDictionaryRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x7F3C10 +RwInt32 RwTextureGetPluginOffset(RwUInt32 pluginID); // 0x7F3BE0 +RwInt32 RwTexDictionaryGetPluginOffset(RwUInt32 pluginID); // 0x7F3C40 +RwBool RwTextureValidatePlugins(const RwTexture* texture); // 0x7F3C00 +RwBool RwTexDictionaryValidatePlugins(const RwTexDictionary* dict); // 0x7F3C60 +rwIm3DPool* _rwIm3DGetPool(void); // 0x7EFDD0 +void* RwIm3DTransform(RwIm3DVertex* pVerts, RwUInt32 numVerts, RwMatrix* ltm, RwUInt32 flags); // 0x7EF450 +RwBool RwIm3DEnd(void); // 0x7EF520 +RwBool RwIm3DRenderLine(RwInt32 vert1, RwInt32 vert2); // 0x7EF900 +RwBool RwIm3DRenderTriangle(RwInt32 vert1, RwInt32 vert2, RwInt32 vert3); // 0x7EF810 +RwBool RwIm3DRenderIndexedPrimitive(RwPrimitiveType primType, RwImVertexIndex* indices, RwInt32 numIndices); // 0x7EF550 +RwBool RwIm3DRenderPrimitive(RwPrimitiveType primType); // 0x7EF6B0 +RxPipeline* RwIm3DGetTransformPipeline(void); // 0x7EF9D0 +RxPipeline* RwIm3DGetRenderPipeline(RwPrimitiveType primType); // 0x7EF9E0 +RxPipeline* RwIm3DSetTransformPipeline(RxPipeline* pipeline); // 0x7EFAC0 +RxPipeline* RwIm3DSetRenderPipeline(RxPipeline* pipeline, RwPrimitiveType primType); // 0x7EFB10 +RwRaster* RwD3D9RasterStreamReadDDS(RwStream* stream); // 0x81F360 +RwTexture* RwD3D9DDSTextureRead(const RwChar* name, const RwChar* maskname); // 0x820A10 +RwBool RwD3D9RasterIsCompressed(const RwRaster* raster); // 0x820C90 +RwBool RwD3D9DeviceSupportsDXTTexture(void); // 0x7F9C30 +void* RwD3D9GetCurrentD3DDevice(void); // 0x7F9D50 +RwUInt32 RwD3D9EngineGetMaxMultiSamplingLevels(void); // 0x7F84E0 +void RwD3D9EngineSetMultiSamplingLevels(RwUInt32 numLevels); // 0x7F84F0 +void RwD3D9EngineSetRefreshRate(RwUInt32 refreshRate); // 0x7F8580 +void RwD3D9EngineSetMultiThreadSafe(RwBool enable); // 0x7F8620 +void RwD3D9EngineSetSoftwareVertexProcessing(RwBool enable); // 0x7F8630 +void* RwD3D9GetCurrentD3DRenderTarget(RwUInt32 index); // 0x7F9E80 +RwBool RwD3D9SetRenderTarget(RwUInt32 index, RwRaster* raster); // 0x7F9E90 +RwBool RwD3D9ChangeVideoMode(RwInt32 modeIndex); // 0x7F8640 +RwBool RwD3D9ChangeMultiSamplingLevels(RwUInt32 numLevels); // 0x7F8A90 +RwBool RwD3D9CameraAttachWindow(void* camera, void* hwnd); // 0x7F8D70 +void RwD3D9SetStreamSource(RwUInt32 streamNumber, void* streamData, RwUInt32 offset, RwUInt32 stride); // 0x7FA030 +void _rwD3D9RenderStateFlushCache(void); // 0x7FC200 +void _rwD3D9DrawIndexedPrimitiveUP(RwUInt32 primitiveType, RwUInt32 minIndex, RwUInt32 numVertices, RwUInt32 primitiveCount, const void* indexData, const void* vertexStreamZeroData, RwUInt32 VertexStreamZeroStride); // 0x7FA1F0 +void _rwD3D9DrawPrimitiveUP(RwUInt32 primitiveType, RwUInt32 primitiveCount, const void* vertexStreamZeroData, RwUInt32 VertexStreamZeroStride); // 0x7FA290 +void _rwD3D9DrawIndexedPrimitive(RwUInt32 primitiveType, RwInt32 baseVertexIndex, RwUInt32 minIndex, RwUInt32 numVertices, RwUInt32 startIndex, RwUInt32 primitiveCount); // 0x7FA320 +void _rwD3D9SetVertexShaderConstant(RwUInt32 registerAddress, const void* constantData, RwUInt32 constantCount); // 0x7FACA0 +void _rwD3D9SetPixelShaderConstant(RwUInt32 registerAddress, const void* constantData, RwUInt32 constantCount); // 0x7FAD00 +void _rwD3D9SetFVF(RwUInt32 fvf); // 0x7F9F30 +void _rwD3D9SetVertexShader(void *shader); // 0x7F9FB0 +void _rwD3D9SetPixelShader(void *shader); // 0x7F9FF0 +void RwD3D9SetRenderState(RwUInt32 state, RwUInt32 value); // 0x7FC2D0 +void RwD3D9GetRenderState(RwUInt32 state, void* value); // 0x7FC320 +void RwD3D9SetTextureStageState(RwUInt32 stage, RwUInt32 type, RwUInt32 value); // 0x7FC340 +void RwD3D9GetTextureStageState(RwUInt32 stage, RwUInt32 type, void* value); // 0x7FC3A0 +void RwD3D9SetSamplerState(RwUInt32 stage, RwUInt32 type, RwUInt32 value); // 0x7FC3C0 +void RwD3D9GetSamplerState(RwUInt32 stage, RwUInt32 type, void* value); // 0x7FC400 +void RwD3D9SetStencilClear(RwUInt32 stencilClear); // 0x7F9D30 +RwUInt32 RwD3D9GetStencilClear(void); // 0x7F9D40 +RwBool RwD3D9SetTexture(RwTexture* texture, RwUInt32 stage); // 0x7FDE70 +RwBool RwD3D9SetTransform(RwUInt32 state, const void* matrix); // 0x7FA390 +void RwD3D9GetTransform(RwUInt32 state, void* matrix); // 0x7FA4F0 +RwBool RwD3D9SetMaterial(const void* material); // 0x7FC430 +RwBool RwD3D9SetClipPlane(RwUInt32 index, const RwV4d* plane); // 0x7FC4A0 +RwBool RwD3D9SetTransformWorld(const RwMatrix* matrix); // 0x7FA520 +RwBool RwD3D9SetSurfaceProperties(const RwSurfaceProperties* surfaceProps, const RwRGBA* color, RwUInt32 flags); // 0x7FC4D0 +RwBool RwD3D9SetLight(RwInt32 index, const void* light); // 0x7FA660 +void RwD3D9GetLight(RwInt32 index, void* light); // 0x7FA820 +RwBool RwD3D9EnableLight(RwInt32 index, RwBool enable); // 0x7FA860 +RwBool RwD3D9IndexBufferCreate(RwUInt32 numIndices, void* indexBuffer); // 0x4C9970 +RwBool RwD3D9CreateVertexDeclaration(const void* elements, void* vertexdeclaration); // 0x7FAA30 +void RwD3D9DeleteVertexDeclaration(void); // 0x7FAC10 +void RwD3D9DeleteVertexShader(void); // 0x7FAC90 +RwBool RwD3D9CreatePixelShader(const RwUInt32* function, void* shader); // 0x7FACC0 +void RwD3D9DeletePixelShader(void); // 0x7FACF0 +const void* RwD3D9GetCaps(void); // 0x7FAD20 +RwBool RwD3D9CameraIsSphereFullyInsideFrustum(const void* camera, const void* sphere); // 0x7FAD30 +RwBool RwD3D9CameraIsBBoxFullyInsideFrustum(const void* camera, const void* boundingBox); // 0x7FAD90 +void _rwD3D9RasterConvertToNonPalettized(RwRaster* raster); // 0x4CD250 +RwBool _rwDeviceRegisterPlugin(void); // 0x7F5F60 +void _rwD3D9DeviceSetRestoreCallback(rwD3D9DeviceRestoreCallBack callback); // 0x7FAE20 +rwD3D9DeviceRestoreCallBack _rwD3D9DeviceGetRestoreCallback(void); // 0x7FAE30 +RwImage* RwImageResample(RwImage* dstImage, const RwImage* srcImage); // 0x80C600 +RwImage* RwImageCreateResample(const RwImage* srcImage, RwInt32 width, RwInt32 height); // 0x80CD10 +RwImage* RwImageSetFromRaster(RwImage* image, RwRaster* raster); // 0x804250 +RwRaster* RwRasterSetFromImage(RwRaster* raster, RwImage* image); // 0x804290 +RwRaster* RwRasterRead(const RwChar* filename); // 0x8043F0 +RwRaster* RwRasterReadMaskedRaster(const RwChar* filename, const RwChar* maskname); // 0x8044E0 +RwImage* RwImageFindRasterFormat(RwImage* ipImage, RwInt32 nRasterType, RwInt32* npWidth, RwInt32* npHeight, RwInt32* npDepth, RwInt32* npFormat); // 0x8042C0 +RwFrame* RwFrameForAllObjects(RwFrame* frame, RwObjectCallBack callBack, void* data); // 0x7F1200 +RwFrame* RwFrameTranslate(RwFrame* frame, const RwV3d* v, RwOpCombineType combine); // 0x7F0E30 +RwFrame* RwFrameRotate(RwFrame* frame, const RwV3d* axis, RwReal angle, RwOpCombineType combine); // 0x7F1010 +RwFrame* RwFrameScale(RwFrame* frame, const RwV3d* v, RwOpCombineType combine); // 0x7F0ED0 +RwFrame* RwFrameTransform(RwFrame* frame, const RwMatrix* m, RwOpCombineType combine); // 0x7F0F70 +RwFrame* RwFrameOrthoNormalize(RwFrame* frame); // 0x7F1170 +RwFrame* RwFrameSetIdentity(RwFrame* frame); // 0x7F10B0 +RwFrame* RwFrameCloneHierarchy(RwFrame* root); // 0x7F0250 +RwBool RwFrameDestroyHierarchy(RwFrame* frame); // 0x7F08A0 +RwFrame* RwFrameForAllChildren(RwFrame* frame, RwFrameCallBack callBack, void* data); // 0x7F0DC0 +RwFrame* RwFrameRemoveChild(RwFrame* child); // 0x7F0CD0 +RwFrame* RwFrameAddChild(RwFrame* parent, RwFrame* child); // 0x7F0B00 +RwFrame* RwFrameAddChildNoUpdate(RwFrame* parent, RwFrame* child); // 0x7F09C0 +RwFrame* RwFrameGetRoot(const RwFrame* frame); // 0x7F09B0 +RwMatrix* RwFrameGetLTM(RwFrame* frame); // 0x7F0990 +RwFrame* RwFrameUpdateObjects(RwFrame* frame); // 0x7F0910 +void RwFrameSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x7EFED0 +RwFrame* RwFrameCreate(void); // 0x7F0410 +RwBool RwFrameDestroy(RwFrame* frame); // 0x7F05A0 +void _rwFrameInit(RwFrame* frame); // 0x7F0450 +void _rwFrameDeInit(RwFrame* frame); // 0x7F06F0 +RwBool RwFrameDirty(const RwFrame* frame); // 0x7F0340 +RwInt32 RwFrameCount(RwFrame* frame); // 0x7F0E00 +RwInt32 RwFrameRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x7F1260 +RwInt32 RwFrameGetPluginOffset(RwUInt32 pluginID); // 0x7F1290 +RwBool RwFrameValidatePlugins(const RwFrame* frame); // 0x7F12B0 +RwFrame* _rwFrameCloneAndLinkClones(RwFrame* root); // 0x7EFFB0 +RwFrame* _rwFramePurgeClone(RwFrame* root); // 0x7F01A0 +void _rwObjectHasFrameReleaseFrame(void); // 0x804F40 +RwBool _rwFrameSyncDirty(void); // 0x809550 +void _rwFrameSyncHierarchyLTM(RwFrame* frame); // 0x8097D0 +RwInt32 RwTextureRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB); // 0x804550 +RwInt32 RwTextureSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB); // 0x804580 +RwUInt32 RwTextureStreamGetSize(const RwTexture* texture); // 0x8045A0 +RwTexture* RwTextureStreamRead(RwStream* stream); // 0x8046E0 +const RwTexture* RwTextureStreamWrite(const RwTexture* texture, RwStream* stream); // 0x8045E0 +RwInt32 RwTexDictionaryRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB); // 0x8048E0 +RwInt32 RwTexDictionarySetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB); // 0x804910 +RwUInt32 RwTexDictionaryStreamGetSize(const RwTexDictionary* texDict); // 0x804930 +RwTexDictionary* RwTexDictionaryStreamRead(RwStream* stream); // 0x804C30 +const RwTexDictionary* RwTexDictionaryStreamWrite(const RwTexDictionary* texDict, RwStream* stream); // 0x8049F0 +RwTextureChunkInfo* _rwTextureChunkInfoRead(RwStream* stream, RwTextureChunkInfo* textureChunkInfo, RwInt32* bytesRead); // 0x804E60 +void RwFrameListSetAutoUpdate(RwBool flag); // 0x807570 +RwInt32 RwFrameRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB); // 0x807580 +RwInt32 RwFrameSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB); // 0x8075B0 +rwFrameList* _rwFrameListInitialize(rwFrameList* frameList, RwFrame* frame); // 0x8075D0 +RwBool _rwFrameListFindFrame(const rwFrameList* frameList, const RwFrame* frame, RwInt32* npIndex); // 0x8076E0 +rwFrameList* _rwFrameListDeinitialize(rwFrameList* frameList); // 0x807720 +RwUInt32 _rwFrameListStreamGetSize(const rwFrameList* frameList); // 0x807750 +rwFrameList* _rwFrameListStreamRead(RwStream* stream, rwFrameList* fl); // 0x807970 +const rwFrameList* _rwFrameListStreamWrite(const rwFrameList* frameList, RwStream* stream); // 0x8077A0 +RwBBox* RwBBoxCalculate(RwBBox* boundBox, const RwV3d* verts, RwInt32 numVerts); // 0x808F60 +RwBBox* RwBBoxInitialize(RwBBox* boundBox, const RwV3d* vertex); // 0x809020 +RwBBox* RwBBoxAddPoint(RwBBox* boundBox, const RwV3d* vertex); // 0x809060 +RwBool RwBBoxContainsPoint(const RwBBox* boundBox, const RwV3d* vertex); // 0x8090E0 +RwCamera* RwCameraBeginUpdate(RwCamera* camera); // 0x7EE190 +RwCamera* RwCameraEndUpdate(RwCamera* camera); // 0x7EE180 +RwCamera* RwCameraClear(RwCamera* camera, RwRGBA* colour, RwInt32 clearMode); // 0x7EE340 +RwCamera* RwCameraShowRaster(RwCamera* camera, void* pDev, RwUInt32 flags); // 0x7EE370 +void RwCameraSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x7EE0F0 +RwBool RwCameraDestroy(RwCamera* camera); // 0x7EE4B0 +RwCamera* RwCameraCreate(void); // 0x7EE4F0 +RwCamera* RwCameraClone(RwCamera* camera); // 0x7EF3B0 +RwCamera* RwCameraSetViewOffset(RwCamera* camera, const RwV2d* offset); // 0x7EE1A0 +RwCamera* RwCameraSetViewWindow(RwCamera* camera, const RwV2d* viewWindow); // 0x7EE410 +RwCamera* RwCameraSetProjection(RwCamera* camera, RwCameraProjection projection); // 0x7EE3A0 +RwCamera* RwCameraSetNearClipPlane(RwCamera* camera, RwReal nearClip); // 0x7EE1D0 +RwCamera* RwCameraSetFarClipPlane(RwCamera* camera, RwReal farClip); // 0x7EE2A0 +RwInt32 RwCameraRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x7EE450 +RwInt32 RwCameraGetPluginOffset(RwUInt32 pluginID); // 0x7EE480 +RwBool RwCameraValidatePlugins(const RwCamera* camera); // 0x7EE4A0 +RwFrustumTestResult RwCameraFrustumTestSphere(const RwCamera* camera, const RwSphere* sphere); // 0x7EE2D0 +RwInt32 RwCameraRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB); // 0x808C90 +RwInt32 RwCameraSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB); // 0x808CC0 +RwUInt32 RwCameraStreamGetSize(const RwCamera* camera); // 0x808CE0 +RwCamera* RwCameraStreamRead(RwStream* stream); // 0x808DE0 +const RwCamera* RwCameraStreamWrite(const RwCamera* camera, RwStream* stream); // 0x808D00 +RwCameraChunkInfo* RwCameraChunkInfoRead(RwStream* stream, RwCameraChunkInfo* cameraChunkInfo, RwInt32* bytesRead); // 0x808EF0 + +/* rpworld.h */ + +void _rwD3D9VSSetActiveWorldMatrix(const RwMatrix* worldMatrix); // 0x764650 +void _rwD3D9VSGetComposedTransformMatrix(void); // 0x7646E0 +void _rwD3D9VSGetWorldViewTransposedMatrix(void); // 0x764730 +void _rwD3D9VSGetWorldViewMatrix(void); // 0x764760 +void _rwD3D9VSGetInverseWorldMatrix(void); // 0x7647B0 +void _rwD3D9VSGetWorldMultiplyMatrix(RwMatrix* worldMultiplyMatrix, const RwMatrix* matrix); // 0x764920 +void _rwD3D9VSGetWorldMultiplyTransposeMatrix(void* worldMultiplyMatrix, const RwMatrix* matrix); // 0x764960 +void _rwD3D9VSGetWorldViewMultiplyTransposeMatrix(void* worldViewMultiplyMatrix, const RwMatrix* matrix); // 0x7649D0 +void _rwD3D9VSGetWorldNormalizedMultiplyTransposeMatrix(void* worldMultiplyMatrix, const RwMatrix* matrix); // 0x764A70 +void _rwD3D9VSGetWorldNormalizedViewMultiplyTransposeMatrix(void* worldViewMultiplyMatrix, const RwMatrix* matrix); // 0x764B50 +void _rwD3D9VSGetWorldNormalizedTransposeMatrix(void); // 0x764C60 +void _rwD3D9VSGetProjectionTransposedMatrix(void); // 0x764D20 +void _rwD3D9VSGetNormalInLocalSpace(const RwV3d* normalWorldSpace, RwV3d* normalLocalSpace); // 0x764D30 +void _rwD3D9VSGetPointInLocalSpace(const RwV3d* pointWorldSpace, RwV3d* pointLocalSpace); // 0x764E70 +void _rwD3D9VSGetRadiusInLocalSpace(RwReal radiusWorldSpace, RwReal* radiusLocalSpace); // 0x764F60 +void _rpD3D9VertexShaderCachePurge(void); // 0x75EE60 +void* _rpD3D9GetVertexShader(const _rpD3D9VertexShaderDescriptor* desc, _rpD3D9VertexShaderDispatchDescriptor* dispatch); // 0x75EED0 +RwUInt32 _rpD3D9GetNumConstantsUsed(const _rpD3D9VertexShaderDescriptor* desc); // 0x75EDD0 +void _rxD3D9VertexShaderDefaultBeginCallBack(void* object, RwUInt32 type, _rpD3D9VertexShaderDescriptor* desc); // 0x760DF0 +RwV4d* _rxD3D9VertexShaderDefaultLightingCallBack(void* object, RwUInt32 type, RwV4d* shaderConstantPtr, _rpD3D9VertexShaderDescriptor* desc); // 0x761170 +void* _rxD3D9VertexShaderDefaultGetMaterialShaderCallBack(const RpMaterial* material, _rpD3D9VertexShaderDescriptor* desc, _rpD3D9VertexShaderDispatchDescriptor* dispatch); // 0x761010 +void _rxD3D9VertexShaderDefaultMeshRenderCallBack(RxD3D9ResEntryHeader* resEntryHeader, RxD3D9InstanceData* instancedMesh, const _rpD3D9VertexShaderDescriptor* desc, const _rpD3D9VertexShaderDispatchDescriptor* dispatch); // 0x761030 +void _rxD3D9VertexShaderDefaultEndCallBack(void* object, RwUInt32 type, _rpD3D9VertexShaderDescriptor* desc); // 0x761000 +void _rpD3D9VertexShaderUpdateLightsColors(RwV4d* shaderConstantPtr, const _rpD3D9VertexShaderDescriptor* desc, RwReal ambientCoef, RwReal diffuseCoef); // 0x761720 +void _rpD3D9VertexShaderUpdateMaterialColor(const RwRGBA* color, const _rpD3D9VertexShaderDispatchDescriptor* dispatch); // 0x761820 +void _rpD3D9VertexShaderUpdateFogData(const _rpD3D9VertexShaderDescriptor* desc, const _rpD3D9VertexShaderDispatchDescriptor* dispatch); // 0x7618B0 +void _rpD3D9VertexShaderUpdateMorphingCoef(RwReal morphingCoef, const _rpD3D9VertexShaderDispatchDescriptor* dispatch); // 0x761950 +void _rpD3DVertexShaderSetUVAnimMatrix(RwMatrix* matrix, const _rpD3D9VertexShaderDispatchDescriptor* dispatch); // 0x7619A0 +void _rpD3D9VertexShaderSetEnvMatrix(RwFrame* frame, const _rpD3D9VertexShaderDescriptor* desc, const _rpD3D9VertexShaderDispatchDescriptor* dispatch); // 0x761A10 +void _rpD3D9VertexShaderSetBumpMatrix(RwFrame* frame, RwReal factor, const _rpD3D9VertexShaderDispatchDescriptor* dispatch); // 0x761B70 +RxNodeDefinition* RxNodeDefinitionGetD3D9WorldSectorAllInOne(void); // 0x75E9F0 +RxNodeDefinition* RxNodeDefinitionGetD3D9AtomicAllInOne(void); // 0x7582E0 +void RpMaterialSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x74D8C0 +RpMaterial* RpMaterialCreate(void); // 0x74D990 +RwBool RpMaterialDestroy(RpMaterial* material); // 0x74DA20 +RpMaterial* RpMaterialClone(RpMaterial* material); // 0x74DA80 +RpMaterial* RpMaterialSetTexture(RpMaterial* material, RwTexture* texture); // 0x74DBC0 +RwInt32 RpMaterialRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x74DBF0 +RwInt32 RpMaterialRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB); // 0x74DC20 +RwInt32 RpMaterialSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB); // 0x74DC50 +RwInt32 RpMaterialSetStreamRightsCallBack(RwUInt32 pluginID, RwPluginDataChunkRightsCallBack rightsCB); // 0x74DC70 +RwInt32 RpMaterialGetPluginOffset(RwUInt32 pluginID); // 0x74DC90 +RwBool RpMaterialValidatePlugins(const RpMaterial* material); // 0x74DCB0 +RwUInt32 RpMaterialStreamGetSize(const RpMaterial* material); // 0x74E010 +RpMaterial* RpMaterialStreamRead(RwStream* stream); // 0x74DD30 +const RpMaterial* RpMaterialStreamWrite(const RpMaterial* material, RwStream* stream); // 0x74E050 +RpMaterialChunkInfo* _rpMaterialChunkInfoRead(RwStream* stream, RpMaterialChunkInfo* materialChunkInfo, RwInt32* bytesRead); // 0x74DCC0 +RpMaterialList* _rpMaterialListInitialize(RpMaterialList* matList); // 0x74E1B0 +RpMaterialList* _rpMaterialListDeinitialize(RpMaterialList* matList); // 0x74E150 +RpMaterial** _rpMaterialListAlloc(RwUInt32 count); // 0x74E1C0 +RpMaterial* _rpMaterialListGetMaterial(const RpMaterialList* matList, RwInt32 matIndex); // 0x74E2B0 +RpMaterialList* _rpMaterialListSetSize(RpMaterialList* matList, RwInt32 size); // 0x74E2C0 +RpMaterialList* _rpMaterialListCopy(RpMaterialList* matListOut, const RpMaterialList* matListIn); // 0x74E1F0 +RwInt32 _rpMaterialListAppendMaterial(RpMaterialList* matList, RpMaterial* material); // 0x74E350 +RwInt32 _rpMaterialListFindMaterialIndex(const RpMaterialList* matList, const RpMaterial* material); // 0x74E420 +RwUInt32 _rpMaterialListStreamGetSize(const RpMaterialList* matList); // 0x74E450 +RpMaterialList* _rpMaterialListStreamRead(RwStream* stream, RpMaterialList* matList); // 0x74E600 +const RpMaterialList* _rpMaterialListStreamWrite(const RpMaterialList* matList, RwStream* stream); // 0x74E4B0 +void* _rpMeshOpen(void* instance, RwInt32 offset, RwInt32 size); // 0x758970 +void* _rpMeshClose(void* instance, RwInt32 offset, RwInt32 size); // 0x758940 +RwInt16 _rpMeshGetNextSerialNumber(void); // 0x7590E0 +RpBuildMesh* _rpBuildMeshCreate(RwUInt32 bufferSize); // 0x758A90 +RwBool _rpBuildMeshDestroy(RpBuildMesh* mesh); // 0x758B80 +RwBool _rpMeshDestroy(RpMeshHeader* mesh); // 0x758BC0 +RpBuildMesh* _rpBuildMeshAddTriangle(RpBuildMesh* mesh, RpMaterial* material, RwInt32 vert1, RwInt32 vert2, RwInt32 vert3, RwUInt16 matIndex, RwUInt16 textureIndex, RwUInt16 rasterIndex, RwUInt16 pipelineIndex); // 0x758C00 +RpMeshHeader* _rpMeshHeaderForAllMeshes(RpMeshHeader* meshHeader, RpMeshCallBack fpCallBack, void* pData); // 0x758D30 +RwStream* _rpMeshWrite(const RpMeshHeader* meshHeader, const void* object, RwStream* stream, const RpMaterialList* matList); // 0x758D70 +RpMeshHeader* _rpMeshRead(RwStream* stream, const void* object, const RpMaterialList* matList); // 0x758EC0 +RwInt32 _rpMeshSize(const RpMeshHeader* meshHeader, const void* object); // 0x759090 +void _rpMeshHeaderDestroy(RpMeshHeader* meshHeader); // 0x758910 +RpMeshHeader* _rpMeshHeaderCreate(RwUInt32 size); // 0x758920 +RpTriStripPolygon* RpTriStripPolygonFollowStrip(RpTriStripPolygon* curr, RpTriStripPolygon* prev); // 0x75C330 +RwUInt32 RpTriStripDefaultCost(RpTriStripPolygon* startPolygon, RwUInt32 testFrame, void* data); // 0x75B500 +RpTriStripMesh* RpTriStripMeshTunnel(RpTriStripMesh* mesh, void* data); // 0x75B780 +RpTriStripMesh* RpTriStripMeshQuick(RpTriStripMesh* mesh, void* data); // 0x75BD80 +RpMeshHeader* RpBuildMeshGenerateTriStrip(RpBuildMesh* buildMesh, void* data); // 0x75C380 +RpMeshHeader* RpBuildMeshGenerateTrivialTriStrip(RpBuildMesh* buildMesh, void* data); // 0x759100 +RpMeshHeader* RpBuildMeshGenerateDefaultTriStrip(RpBuildMesh* buildmesh, void* data); // 0x7591B0 +RpMeshHeader* RpBuildMeshGeneratePreprocessTriStrip(RpBuildMesh* buildmesh, void* data); // 0x75A900 +RpMeshHeader* RpBuildMeshGenerateExhaustiveTriStrip(RpBuildMesh* buildmesh, void* data); // 0x75A940 +RpMeshHeader* RpBuildMeshGenerateDefaultIgnoreWindingTriStrip(RpBuildMesh* buildmesh, void* data); // 0x75A8E0 +RpMeshHeader* RpBuildMeshGeneratePreprocessIgnoreWindingTriStrip(RpBuildMesh* buildmesh, void* data); // 0x75A920 +RpMeshHeader* RpBuildMeshGenerateExhaustiveIgnoreWindingTriStrip(RpBuildMesh* buildmesh, void* data); // 0x75B4E0 +RwBool RpMeshSetTriStripMethod(RpTriStripMeshCallBack callback, void* data); // 0x75D4C0 +RwBool RpMeshGetTriStripMethod(RpTriStripMeshCallBack* callback, void* data); // 0x75D500 +RpMeshHeader* _rpTriListMeshGenerate(RpBuildMesh* buildMesh, void* data); // 0x75D530 +RpMeshHeader* _rpMeshOptimise(RpBuildMesh* buildmesh, RwUInt32 flags); // 0x75D970 +RpGeometry* RpGeometryTransform(RpGeometry* geometry, const RwMatrix* matrix); // 0x74BFE0 +RpGeometry* RpGeometryCreateSpace(RwReal radius); // 0x74C130 +const RpMorphTarget* RpMorphTargetCalcBoundingSphere(const RpMorphTarget* morphTarget, RwSphere* boundingSphere); // 0x74C200 +RwInt32 RpGeometryAddMorphTargets(RpGeometry* geometry, RwInt32 mtcount); // 0x74C310 +RwInt32 RpGeometryAddMorphTarget(RpGeometry* geometry); // 0x74C4D0 +RpGeometry* RpGeometryRemoveMorphTarget(RpGeometry* geometry, RwInt32 morphTarget); // 0x74C4E0 +const RpGeometry* RpGeometryTriangleSetVertexIndices(const RpGeometry* geometry, RpTriangle* triangle, RwUInt16 vert1, RwUInt16 vert2, RwUInt16 vert3); // 0x74C690 +RpGeometry* RpGeometryTriangleSetMaterial(RpGeometry* geometry, RpTriangle* triangle, RpMaterial* material); // 0x74C6C0 +const RpGeometry* RpGeometryTriangleGetVertexIndices(const RpGeometry* geometry, const RpTriangle* triangle, RwUInt16* vert1, RwUInt16* vert2, RwUInt16* vert3); // 0x74C720 +RpMaterial* RpGeometryTriangleGetMaterial(const RpGeometry* geometry, const RpTriangle* triangle); // 0x74C760 +RpGeometry* RpGeometryForAllMaterials(RpGeometry* geometry, RpMaterialCallBack fpCallBack, void* pData); // 0x74C790 +RpGeometry* RpGeometryLock(RpGeometry* geometry, RwInt32 lockMode); // 0x74C7D0 +RpGeometry* RpGeometryUnlock(RpGeometry* geometry); // 0x74C800 +const RpGeometry* RpGeometryForAllMeshes(const RpGeometry* geometry, RpMeshCallBack fpCallBack, void* pData); // 0x74CA60 +RpGeometry* RpGeometryCreate(RwInt32 numVert, RwInt32 numTriangles, RwUInt32 format); // 0x74CA90 +RwBool RpGeometryDestroy(RpGeometry* geometry); // 0x74CCC0 +RwInt32 RpGeometryRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x74CD70 +RwInt32 RpGeometryRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB); // 0x74CDA0 +RwInt32 RpGeometrySetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB); // 0x74CDD0 +RwInt32 RpGeometryGetPluginOffset(RwUInt32 pluginID); // 0x74CDF0 +RwBool RpGeometryValidatePlugins(const RpGeometry* geometry); // 0x74CE10 +RwUInt32 RpGeometryStreamGetSize(const RpGeometry* geometry); // 0x74CE20 +const RpGeometry* RpGeometryStreamWrite(const RpGeometry* geometry, RwStream* stream); // 0x74CED0 +RpGeometry* RpGeometryStreamRead(RwStream* stream); // 0x74D190 +RpGeometryChunkInfo* _rpGeometryChunkInfoRead(RwStream* stream, RpGeometryChunkInfo* geometryChunkInfo, RwInt32* bytesRead); // 0x74D750 +RpWorldSector* RpWorldSectorRender(RpWorldSector* worldSector); // 0x761C50 +const RpWorldSector* RpWorldSectorForAllMeshes(const RpWorldSector* sector, RpMeshCallBack fpCallBack, void* pData); // 0x761C60 +RwInt32 RpWorldSectorRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x761C90 +RwInt32 RpWorldSectorRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB); // 0x761CC0 +RwInt32 RpWorldSectorSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB); // 0x761CF0 +RwInt32 RpWorldSectorSetStreamRightsCallBack(RwUInt32 pluginID, RwPluginDataChunkRightsCallBack rightsCB); // 0x761D10 +RwInt32 RpWorldSectorGetPluginOffset(RwUInt32 pluginID); // 0x761D30 +RwBool RpWorldSectorValidatePlugins(const RpWorldSector* sector); // 0x761D50 +void RpLightSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x752250 +RpLight* RpLightCreate(RwInt32 type); // 0x752110 +RwBool RpLightDestroy(RpLight* light); // 0x7520D0 +RpLight* RpLightSetRadius(RpLight* light, RwReal radius); // 0x751A70 +RpLight* RpLightSetColor(RpLight* light, const RwRGBAReal* color); // 0x751A90 +RwReal RpLightGetConeAngle(const RpLight* light); // 0x751AE0 +RpLight* RpLightSetConeAngle(RpLight* ight, RwReal angle); // 0x751D20 +RwUInt32 RpLightStreamGetSize(const RpLight* light); // 0x751E10 +RpLight* RpLightStreamRead(RwStream* stream); // 0x751F00 +RpLightChunkInfo* _rpLightChunkInfoRead(RwStream* stream, RpLightChunkInfo* lightChunkInfo, RwInt32* bytesRead); // 0x752060 +RwInt32 RpLightRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x751D60 +RwInt32 RpLightRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB); // 0x751D90 +RwInt32 RpLightSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB); // 0x751DC0 +RwInt32 RpLightGetPluginOffset(RwUInt32 pluginID); // 0x751DE0 +RwBool RpLightValidatePlugins(const RpLight* light); // 0x751E00 +void RpD3D9LightSetAttenuationParams(RpLight* light, const RpD3D9AttenuationParams* params); // 0x755D20 +void RpD3D9LightGetAttenuationParams(const RpLight* light, RpD3D9AttenuationParams* params); // 0x755D50 +RwBool _rwD3D9LightsOpen(void); // 0x755D80 +RwBool _rwD3D9LightsGlobalEnable(RpLightFlag flags); // 0x756070 +RwBool _rwD3D9LightDirectionalEnable(RpLight* light); // 0x756260 +RwBool _rwD3D9LightLocalEnable(RpLight* light); // 0x756390 +void _rwD3D9LightsEnable(RwBool enable, RwUInt32 type); // 0x756600 +void _rwD3D9LightsClose(void); // 0x755FE0 +void RpAtomicSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x749720 +void RpClumpSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x749740 +RpAtomic* AtomicDefaultRenderCallBack(RpAtomic* atomic); // 0x7491C0 +void _rpAtomicResyncInterpolatedSphere(RpAtomic* atomic); // 0x7491F0 +const RwSphere* RpAtomicGetWorldBoundingSphere(RpAtomic* atomic); // 0x749330 +RpClump* RpClumpForAllAtomics(RpClump* clump, RpAtomicCallBack callback, void* pData); // 0x749B70 +RpClump* RpClumpForAllLights(RpClump* clump, RpLightCallBack callback, void* pData); // 0x749C00 +RpClump* RpClumpForAllCameras(RpClump* clump, RwCameraCallBack callback, void* pData); // 0x749BB0 +RpAtomic* RpAtomicSetFrame(RpAtomic* atomic, RwFrame* frame); // 0x74BF20 +RpClump* RpClumpCreateSpace(const RwV3d* position, RwReal radius); // 0x749970 +RpClump* RpClumpRender(RpClump* clump); // 0x749B20 +RpClump* RpClumpRemoveAtomic(RpClump* clump, RpAtomic* atomic); // 0x74A4C0 +RpClump* RpClumpAddAtomic(RpClump* clump, RpAtomic* atomic); // 0x74A490 +RpClump* RpClumpRemoveLight(RpClump* clump, RpLight* light); // 0x74A520 +RpClump* RpClumpAddLight(RpClump* clump, RpLight* light); // 0x74A4F0 +RpClump* RpClumpRemoveCamera(RpClump* clump, RwCamera* camera); // 0x74A580 +RpClump* RpClumpAddCamera(RpClump* clump, RwCamera* camera); // 0x74A550 +RwBool RpClumpDestroy(RpClump* clump); // 0x74A310 +RpClump* RpClumpCreate(void); // 0x74A290 +RpClump* RpClumpClone(RpClump* clump); // 0x749F70 +RwBool RpAtomicDestroy(RpAtomic* atomic); // 0x749DC0 +RpAtomic* RpAtomicClone(RpAtomic* atomic); // 0x749E60 +RpAtomic* RpAtomicCreate(void); // 0x749C50 +RpAtomic* RpAtomicSetGeometry(RpAtomic* atomic, RpGeometry* geometry, RwUInt32 flags); // 0x749D40 +RpClump* RpClumpSetCallBack(RpClump* clump, RpClumpCallBack callback); // 0x74A240 +RpClumpCallBack RpClumpGetCallBack(const RpClump* clump); // 0x74A270 +RwInt32 RpClumpGetNumAtomics(RpClump* clump); // 0x7498E0 +RwInt32 RpClumpGetNumLights(RpClump* clump); // 0x749910 +RwInt32 RpClumpGetNumCameras(RpClump* clump); // 0x749940 +RpClump* RpLightGetClump(const RpLight* light); // 0x749E40 +RpClump* RwCameraGetClump(const RwCamera* camera); // 0x749E50 +RwUInt32 RpAtomicStreamGetSize(RpAtomic* atomic); // 0x74A5B0 +RpAtomic* RpAtomicStreamRead(RwStream* stream); // 0x74B030 +RpAtomic* RpAtomicStreamWrite(RpAtomic* atomic, RwStream* stream); // 0x74A850 +RwUInt32 RpClumpStreamGetSize(RpClump* clump); // 0x74A5E0 +RpClump* RpClumpStreamRead(RwStream* stream); // 0x74B420 +RpClump* RpClumpStreamWrite(RpClump* clump, RwStream* stream); // 0x74AA10 +RpClumpChunkInfo* _rpClumpChunkInfoRead(RwStream* stream, RpClumpChunkInfo* clumpChunkInfo, RwInt32* bytesRead); // 0x74BD40 +RwInt32 RpAtomicRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x74BDA0 +RwInt32 RpClumpRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x74BDD0 +RwInt32 RpAtomicRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB); // 0x74BE00 +RwInt32 RpAtomicSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB); // 0x74BE30 +RwInt32 RpAtomicSetStreamRightsCallBack(RwUInt32 pluginID, RwPluginDataChunkRightsCallBack rightsCB); // 0x74BE50 +RwInt32 RpClumpRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB); // 0x74BE70 +RwInt32 RpClumpSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB); // 0x74BEA0 +RwInt32 RpAtomicGetPluginOffset(RwUInt32 pluginID); // 0x74BEC0 +RwInt32 RpClumpGetPluginOffset(RwUInt32 pluginID); // 0x74BEE0 +RwBool RpAtomicValidatePlugins(const RpAtomic* atomic); // 0x74BF00 +RwBool RpClumpValidatePlugins(const RpClump* clump); // 0x74BF10 +RwBool RpAtomicInstance(RpAtomic* atomic); // 0x74BF40 +RwBool _rpWorldFindBBox(RpWorld* world, RwBBox* boundingBox); // 0x74EFA0 +RpWorld* _rpWorldSetupSectorBoundingBoxes(RpWorld* world); // 0x74F020 +void _rpWorldSectorDeinstanceAll(RpSector* sector); // 0x74ECA0 +void _rpWorldSectorDestroyRecurse(RpSector* sector); // 0x74ED50 +RwBool _rpWorldForAllGlobalLights(RpLightCallBack callBack, void* pData); // 0x74EF10 +RpWorldSector* _rpWorldSectorForAllLocalLights(RpWorldSector* sector, RpLightCallBack callBack, void* pData); // 0x74EF60 +RpWorldSector* _rpSectorDefaultRenderCallBack(RpWorldSector* sector); // 0x74EEC0 +RpWorld* RpWorldLock(RpWorld* world); // 0x74F1A0 +RpWorld* RpWorldUnlock(RpWorld* world); // 0x74F210 +void _rpWorldRegisterWorld(RpWorld* world, RwUInt32 memorySize); // 0x74F0C0 +void _rpWorldUnregisterWorld(RpWorld* world); // 0x74F140 +RwBool RpWorldPluginAttach(void); // 0x74FDA0 +RpWorld* RpWorldForAllClumps(RpWorld* world, RpClumpCallBack fpCallBack, void* pData); // 0x74FB80 +RpWorld* RpWorldForAllMaterials(RpWorld* world, RpMaterialCallBack fpCallBack, void* pData); // 0x74FBC0 +RpWorld* RpWorldForAllLights(RpWorld* world, RpLightCallBack fpCallBack, void* pData); // 0x74FC00 +RpWorld* RpWorldForAllWorldSectors(RpWorld* world, RpWorldSectorCallBack fpCallBack, void* pData); // 0x74FC70 +RpWorld* RpWorldRender(RpWorld* world); // 0x74F570 +RwBool RpWorldDestroy(RpWorld* world); // 0x74F610 +RpWorld* RpWorldCreate(RwBBox* boundingBox); // 0x74F760 +RpWorld* RpWorldSetSectorRenderCallBack(RpWorld* world, RpWorldSectorCallBackRender fpCallBack); // 0x74F730 +RpWorldSectorCallBackRender RpWorldGetSectorRenderCallBack(const RpWorld* world); // 0x74F750 +RpWorld* RpWorldSectorGetWorld(const RpWorldSector* sector); // 0x74F4E0 +RwInt32 RpWorldRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); // 0x74FCD0 +RwInt32 RpWorldRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB); // 0x74FD00 +RwInt32 RpWorldSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB); // 0x74FD30 +RwInt32 RpWorldSetStreamRightsCallBack(RwUInt32 pluginID, RwPluginDataChunkRightsCallBack rightsCB); // 0x74FD50 +RwInt32 RpWorldGetPluginOffset(RwUInt32 pluginID); // 0x74FD70 +RwBool RpWorldValidatePlugins(RpWorld* world); // 0x74FD90 +void RpD3D9GeometrySetUsageFlags(RpGeometry* geometry, RpD3D9GeometryUsageFlag flags); // 0x7588B0 +RpD3D9GeometryUsageFlag RpD3D9GeometryGetUsageFlags(const RpGeometry* geometry); // 0x7588D0 +void RpD3D9WorldSectorSetUsageFlags(RpWorldSector* sector, RpD3D9WorldSectorUsageFlag flags); // 0x7588E0 +RpD3D9WorldSectorUsageFlag RpD3D9WorldSectorGetUsageFlags(const RpWorldSector* sector); // 0x758900 +void RxD3D9AllInOneSetInstanceCallBack(RxPipelineNode* node, RxD3D9AllInOneInstanceCallBack callback); // 0x757380 +RxD3D9AllInOneInstanceCallBack RxD3D9AllInOneGetInstanceCallBack(RxPipelineNode* node); // 0x757390 +void RxD3D9AllInOneSetReinstanceCallBack(RxPipelineNode* node, RxD3D9AllInOneReinstanceCallBack callback); // 0x7573A0 +RxD3D9AllInOneReinstanceCallBack RxD3D9AllInOneGetReinstanceCallBack(RxPipelineNode* node); // 0x7573B0 +void RxD3D9AllInOneSetLightingCallBack(RxPipelineNode* node, RxD3D9AllInOneLightingCallBack callback); // 0x7573C0 +RxD3D9AllInOneLightingCallBack RxD3D9AllInOneGetLightingCallBack(RxPipelineNode* node); // 0x7573D0 +void RxD3D9AllInOneSetRenderCallBack(RxPipelineNode* node, RxD3D9AllInOneRenderCallBack callback); // 0x7573E0 +RxD3D9AllInOneRenderCallBack RxD3D9AllInOneGetRenderCallBack(RxPipelineNode* node); // 0x7573F0 +void _rpD3D9AddDynamicGeometry(RpGeometry* geometry); // 0x74E970 +void _rpD3D9RemoveDynamicGeometry(RpGeometry* geometry); // 0x74E9E0 +RwUInt32 _rpD3D9VertexDeclarationGetSize(RwUInt32 type); // 0x7522E0 +RwUInt32 _rpD3D9VertexDeclarationGetStride(const void* vertexDeclaration); // 0x7522F0 +RwUInt32 _rpD3D9VertexDeclarationInstV3d(RwUInt32 type, RwUInt8* mem, const RwV3d* src, RwInt32 numVerts, RwUInt32 stride); // 0x752AD0 +RwUInt32 _rpD3D9VertexDeclarationInstV3dComp(RwUInt32 type, RwUInt8* mem, const RpVertexNormal* src, RwInt32 numVerts, RwUInt32 stride); // 0x7531B0 +RwUInt32 _rpD3D9VertexDeclarationInstV3dMorph(RwUInt32 type, RwUInt8* mem, const RwV3d* src1, const RwV3d* src2, RwReal scale, RwInt32 numVerts, RwUInt32 stride); // 0x753B60 +RwUInt32 _rpD3D9VertexDeclarationInstV2d(RwUInt32 type, RwUInt8* mem, const RwV2d* src, RwInt32 numVerts, RwUInt32 stride); // 0x7544E0 +RwBool _rpD3D9VertexDeclarationInstColor(RwUInt8* mem, const RwRGBA* color, RwInt32 numVerts, RwUInt32 stride); // 0x754AE0 +RwUInt32 _rpD3D9VertexDeclarationInstIndices(RwUInt32 type, RwUInt8* mem, const RwUInt32* indices, RwInt32 numVerts, RwUInt32 stride); // 0x754B40 +RwUInt32 _rpD3D9VertexDeclarationInstIndicesRemap(RwUInt32 type, RwUInt8* mem, const RwUInt32* indices, const RwUInt8* remap, RwInt32 numVerts, RwUInt32 stride); // 0x754C80 +RwUInt32 _rpD3D9VertexDeclarationInstWeights(RwUInt32 type, RwUInt8* mem, const RwV4d* src, RwInt32 numVerts, RwUInt32 stride); // 0x752320 +RwUInt32 _rpD3D9VertexDeclarationInstTangent(RwUInt32 type, RwUInt8* mem, const RwV3d* pos, const RwTexCoords* texCoord, RxD3D9ResEntryHeader* meshHeader, RwUInt32 stride); // 0x754E20 +void _rpD3D9VertexDeclarationUnInstV3d(RwUInt32 type, RwV3d* dst, const RwUInt8* src); // 0x7551F0 +void _rpD3D9VertexDeclarationUnInstV2d(RwUInt32 type, RwV2d* dst, const RwUInt8* src); // 0x7555E0 +void _rpD3D9GetMinMaxValuesV3d(const RwV3d* src, RwInt32 numElements, RwV3d* min, RwV3d* max); // 0x755830 +void _rpD3D9GetMinMaxValuesV2d(const RwV2d* src, RwInt32 numElements, RwV2d* min, RwV2d* max); // 0x7558F0 +RwUInt32 _rpD3D9FindFormatV3d(const RwV3d* src, RwInt32 numElements); // 0x755980 +RwUInt32 _rpD3D9FindFormatV2d(const RwV2d* src, RwInt32 numElements); // 0x755AA0 +RxPipeline* RpWorldSetDefaultSectorPipeline(RxPipeline* pipeline); // 0x75E270 +RxPipeline* RpAtomicSetDefaultPipeline(RxPipeline* pipeline); // 0x75E2A0 +RxPipeline* RpMaterialSetDefaultPipeline(RxPipeline* pipeline); // 0x75E2D0 +const RpGeometry* RpGeometryIsCorrectlySorted(const RpGeometry* geometry, RwBool* result); // 0x75D9D0 +RpGeometry* RpGeometrySortByMaterial(const RpGeometry* geometry, RpGeometrySortByMaterialCallBack callback); // 0x75DAE0 +void RpTieSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x74FF60 +void RpLightTieSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x74FF80 +RpWorld* RpWorldRemoveCamera(RpWorld* world, RwCamera* camera); // 0x750F50 +RpWorld* RpWorldAddCamera(RpWorld* world, RwCamera* camera); // 0x750F20 +RpWorld* RwCameraGetWorld(const RwCamera* camera); // 0x750F80 +RpWorld* RpWorldRemoveAtomic(RpWorld* world, RpAtomic* atomic); // 0x750FC0 +RpWorld* RpWorldAddAtomic(RpWorld* world, RpAtomic* atomic); // 0x750F90 +RpWorld* RpAtomicGetWorld(const RpAtomic* atomic); // 0x751050 +RpWorld* RpWorldAddClump(RpWorld* world, RpClump* clump); // 0x751300 +RpWorld* RpWorldRemoveClump(RpWorld* world, RpClump* clump); // 0x751460 +RpWorld* RpClumpGetWorld(const RpClump* clump); // 0x7516B0 +RpWorld* RpWorldAddLight(RpWorld* world, RpLight* light); // 0x751910 +RpWorld* RpWorldRemoveLight(RpWorld* world, RpLight* light); // 0x751960 +RpWorld* RpLightGetWorld(const RpLight* light); // 0x7519E0 +RwCamera* RwCameraForAllClumpsInFrustum(RwCamera* camera, void* data); // 0x7516C0 +RwCamera* RwCameraForAllAtomicsInFrustum(RwCamera* camera, RpAtomicCallBack callback, void* data); // 0x7517F0 +RwCamera* RwCameraForAllSectorsInFrustum(RwCamera* camera, RpWorldSectorCallBack callBack, void* pData); // 0x751660 +RpLight* RpLightForAllWorldSectors(RpLight* light, RpWorldSectorCallBack callback, void* data); // 0x7519F0 +RpAtomic* RpAtomicForAllWorldSectors(RpAtomic* atomic, RpWorldSectorCallBack callback, void* data); // 0x751060 +RpWorldSector* RpWorldSectorForAllAtomics(RpWorldSector* sector, RpAtomicCallBack callback, void* data); // 0x7510A0 +RpWorldSector* RpWorldSectorForAllCollisionAtomics(RpWorldSector* sector, RpAtomicCallBack callback, void* data); // 0x751140 +RpWorldSector* RpWorldSectorForAllLights(RpWorldSector* sector, RpLightCallBack callback, void* data); // 0x7511E0 +RwUInt32 RpWorldStreamGetSize(const RpWorld* world); // 0x761EA0 +RpWorld* RpWorldStreamRead(RwStream* stream); // 0x762960 +const RpWorld* RpWorldStreamWrite(const RpWorld* world, RwStream* stream); // 0x762150 +RpWorldSectorChunkInfo* _rpWorldSectorChunkInfoRead(RwStream* stream, RpWorldSectorChunkInfo* worldSectorChunkInfo, RwInt32* bytesRead); // 0x7635B0 +RpPlaneSectorChunkInfo* _rpPlaneSectorChunkInfoRead(RwStream* stream, RpPlaneSectorChunkInfo* planeSectorChunkInfo, RwInt32* bytesRead); // 0x763620 +RpWorldChunkInfo* _rpWorldChunkInfoRead(RwStream* stream, RpWorldChunkInfo* worldChunkInfo, RwInt32* bytesRead); // 0x763690 + +/* rtquat.h */ + +RwBool RtQuatConvertFromMatrix(RtQuat * const qpQuat, const RwMatrix * const mpMatrix); // 0x7EB5C0 +RtQuat* RtQuatRotate(RtQuat* quat, const RwV3d* axis, RwReal angle, RwOpCombineType combineOp); // 0x7EB7C0 +const RtQuat* RtQuatQueryRotate(const RtQuat* quat, RwV3d* unitAxis, RwReal* angle); // 0x7EBA80 +RwV3d* RtQuatTransformVectors(RwV3d* vectorsOut, const RwV3d* vectorsIn, const RwInt32 numPoints, const RtQuat* quat); // 0x7EBBB0 +RwReal RtQuatModulus(RtQuat* q); // 0x7EBD10 + +/* rtanim.h */ + +void RtAnimAnimationFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x7CCC80 +RwBool RtAnimInitialize(void); // 0x7CCCA0 +RwBool RtAnimRegisterInterpolationScheme(RtAnimInterpolatorInfo* interpolatorInfo); // 0x7CCD40 +RtAnimInterpolatorInfo* RtAnimGetInterpolatorInfo(RwInt32 typeID); // 0x7CCDE0 +RtAnimAnimation* RtAnimAnimationCreate(RwInt32 typeID, RwInt32 numFrames, RwInt32 flags, RwReal duration); // 0x7CCE40 +RwBool RtAnimAnimationDestroy(RtAnimAnimation* animation); // 0x7CCF10 +RtAnimAnimation* RtAnimAnimationRead(const RwChar* filename); // 0x7CCF30 +RwBool RtAnimAnimationWrite(const RtAnimAnimation* animation, const RwChar* filename); // 0x7CD160 +RtAnimAnimation* RtAnimAnimationStreamRead(RwStream* stream); // 0x7CD220 +RwBool RtAnimAnimationStreamWrite(const RtAnimAnimation* animation, RwStream* stream); // 0x7CD410 +RwInt32 RtAnimAnimationStreamGetSize(const RtAnimAnimation* animation); // 0x7CD4D0 +RwUInt32 RtAnimAnimationGetNumNodes(const RtAnimAnimation* animation); // 0x7CD4F0 +RtAnimInterpolator* RtAnimInterpolatorCreate(RwInt32 numNodes, RwInt32 maxInterpKeyFrameSize); // 0x7CD520 +void RtAnimInterpolatorDestroy(RtAnimInterpolator* anim); // 0x7CD590 +RwBool RtAnimInterpolatorSetCurrentAnim(RtAnimInterpolator* animI, RtAnimAnimation* anim); // 0x7CD5A0 +RwBool RtAnimInterpolatorSetKeyFrameCallBacks(RtAnimInterpolator* anim, RwInt32 keyFrameTypeID); // 0x7CD660 +void RtAnimInterpolatorSetAnimLoopCallBack(RtAnimInterpolator* anim, RtAnimCallBack callBack, void* data); // 0x7CD6F0 +void RtAnimInterpolatorSetAnimCallBack(RtAnimInterpolator* anim, RtAnimCallBack callBack, RwReal time, void* data); // 0x7CD710 +RwBool RtAnimInterpolatorCopy(RtAnimInterpolator* outAnim, RtAnimInterpolator* inAnim); // 0x7CD730 +RwBool RtAnimInterpolatorSubAnimTime(RtAnimInterpolator* anim, RwReal time); // 0x7CD760 +RwBool RtAnimInterpolatorAddAnimTime(RtAnimInterpolator* anim, RwReal time); // 0x7CD8D0 +RwBool RtAnimInterpolatorSetCurrentTime(RtAnimInterpolator* anim, RwReal time); // 0x7CDAB0 +RwBool RtAnimAnimationMakeDelta(RtAnimAnimation* animation, RwInt32 numNodes, RwReal time); // 0x7CDB00 +RwBool RtAnimInterpolatorBlend(RtAnimInterpolator* outAnim, RtAnimInterpolator* inAnim1, RtAnimInterpolator* inAnim2, RwReal alpha); // 0x7CDBF0 +RwBool RtAnimInterpolatorAddTogether(RtAnimInterpolator* outAnim, RtAnimInterpolator* inAnim1, RtAnimInterpolator* inAnim2); // 0x7CDC50 +RtAnimInterpolator* RtAnimInterpolatorCreateSubInterpolator(RtAnimInterpolator* parentAnim, RwInt32 startNode, RwInt32 numNodes, RwInt32 maxInterpKeyFrameSize); // 0x7CDCB0 +RwBool RtAnimInterpolatorBlendSubInterpolator(RtAnimInterpolator* outAnim, RtAnimInterpolator* inAnim1, RtAnimInterpolator* inAnim2, RwReal alpha); // 0x7CDCF0 +RwBool RtAnimInterpolatorAddSubInterpolator(RtAnimInterpolator* outAnim, RtAnimInterpolator* mainAnim, RtAnimInterpolator* subAnim); // 0x7CDEF0 + +/* rphanim.h */ + +void RpHAnimHierarchySetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x7C45E0 +RpHAnimHierarchy* RpHAnimHierarchyCreate(RwInt32 numNodes, RwUInt32* nodeFlags, RwInt32* nodeIDs, RpHAnimHierarchyFlag flags, RwInt32 maxInterpKeyFrameSize); // 0x7C4C30 +RpHAnimHierarchy* RpHAnimHierarchyCreateFromHierarchy(RpHAnimHierarchy* hierarchy, RpHAnimHierarchyFlag flags, RwInt32 maxInterpKeyFrameSize); // 0x7C4ED0 +RpHAnimHierarchy* RpHAnimHierarchyDestroy(RpHAnimHierarchy* hierarchy); // 0x7C4D30 +RpHAnimHierarchy* RpHAnimHierarchyCreateSubHierarchy(RpHAnimHierarchy* parentHierarchy, RwInt32 startNode, RpHAnimHierarchyFlag flags, RwInt32 maxInterpKeyFrameSize); // 0x7C4DB0 +RpHAnimHierarchy* RpHAnimHierarchyAttach(RpHAnimHierarchy* hierarchy); // 0x7C4F40 +RpHAnimHierarchy* RpHAnimHierarchyDetach(RpHAnimHierarchy* hierarchy); // 0x7C4FF0 +RpHAnimHierarchy* RpHAnimHierarchyAttachFrameIndex(RpHAnimHierarchy* hierarchy, RwInt32 nodeIndex); // 0x7C5020 +RpHAnimHierarchy* RpHAnimHierarchyDetachFrameIndex(RpHAnimHierarchy* hierarchy, RwInt32 nodeIndex); // 0x7C5100 +RwBool RpHAnimFrameSetHierarchy(RwFrame* frame, RpHAnimHierarchy* hierarchy); // 0x7C5130 +RpHAnimHierarchy* RpHAnimFrameGetHierarchy(RwFrame* frame); // 0x7C5160 +RwMatrix* RpHAnimHierarchyGetMatrixArray(RpHAnimHierarchy* hierarchy); // 0x7C5120 +RwBool RpHAnimHierarchyUpdateMatrices(RpHAnimHierarchy* hierarchy); // 0x7C51D0 +RwInt32 RpHAnimIDGetIndex(RpHAnimHierarchy* hierarchy, RwInt32 ID); // 0x7C51A0 +RwBool RpHAnimPluginAttach(void); // 0x7C4600 +void RpHAnimKeyFrameApply(void* matrix, void* voidIFrame); // 0x7C5B80 +void RpHAnimKeyFrameBlend(void* voidOut, void* voidIn1, void* voidIn2, RwReal alpha); // 0x7C60C0 +void RpHAnimKeyFrameInterpolate(void* voidOut, void* voidIn1, void* voidIn2, RwReal time, void* customData); // 0x7C5CA0 +void RpHAnimKeyFrameAdd(void* voidOut, void* voidIn1, void* voidIn2); // 0x7C6720 +void RpHAnimKeyFrameMulRecip(void* voidFrame, void* voidStart); // 0x7C65C0 +RtAnimAnimation* RpHAnimKeyFrameStreamRead(RwStream* stream, RtAnimAnimation* animation); // 0x7C64C0 +RwBool RpHAnimKeyFrameStreamWrite(const RtAnimAnimation* animation, RwStream* stream); // 0x7C6540 +RwInt32 RpHAnimKeyFrameStreamGetSize(const RtAnimAnimation* animation); // 0x7C65B0 +RwBool RpHAnimFrameSetID(RwFrame* frame, RwInt32 id); // 0x7C5170 +RwInt32 RpHAnimFrameGetID(RwFrame* frame); // 0x7C5190 + +/* rpuvanim.h */ + +_rpUVAnimCustomData* _rpUVAnimCustomDataStreamRead(RwStream* stream); // 0x7CBF70 +const _rpUVAnimCustomData* _rpUVAnimCustomDataStreamWrite(const _rpUVAnimCustomData* customData, RwStream* stream); // 0x7CBFD0 +RwUInt32 _rpUVAnimCustomDataStreamGetSize(const _rpUVAnimCustomData* customData); // 0x7CC010 +RwBool RpUVAnimPluginAttach(void); // 0x7CB940 +void RpUVAnimLinearKeyFrameApply(void* matrix, void* voidIFrame); // 0x7CC9F0 +void RpUVAnimLinearKeyFrameBlend(void* voidOut, void* voidIn1, void* voidIn2, RwReal alpha); // 0x7CCAC0 +void RpUVAnimLinearKeyFrameInterpolate(void* voidOut, void* voidIn1, void* voidIn2, RwReal time, void* customData); // 0x7CCA40 +void RpUVAnimLinearKeyFrameAdd(void* voidOut, void* voidIn1, void* voidIn2); // 0x7CCBE0 +void RpUVAnimLinearKeyFrameMulRecip(void* voidFrame, void* voidStart); // 0x7CCB30 +void RpUVAnimParamKeyFrameApply(void* matrix, void* voidIFrame); // 0x7CC560 +void RpUVAnimParamKeyFrameBlend(void* voidOut, void* voidIn1, void* voidIn2, RwReal alpha); // 0x7CC6A0 +void RpUVAnimParamKeyFrameInterpolate(void* voidOut, void* voidIn1, void* voidIn2, RwReal time, void* customData); // 0x7CC600 +void RpUVAnimParamKeyFrameAdd(void* voidOut, void* voidIn1, void* voidIn2); // 0x7CC750 +void RpUVAnimParamKeyFrameMulRecip(void* voidFrame, void* voidStart); // 0x7CC740 +RtAnimAnimation* RpUVAnimKeyFrameStreamRead(RwStream* stream, RtAnimAnimation* animation); // 0x7CC870 +RwBool RpUVAnimKeyFrameStreamWrite(const RtAnimAnimation* animation, RwStream* stream); // 0x7CC920 +RwInt32 RpUVAnimKeyFrameStreamGetSize(const RtAnimAnimation* animation); // 0x7CC9D0 +RpUVAnim* RpUVAnimCreate(const RwChar* name, RwUInt32 numNodes, RwUInt32 numFrames, RwReal duration, RwUInt32* nodeIndexToUVChannelMap, RpUVAnimKeyFrameType keyframeType); // 0x7CC020 +RwBool RpUVAnimDestroy(RpUVAnim* anim); // 0x7CC0C0 +RpUVAnim* RpUVAnimAddRef(RpUVAnim* anim); // 0x7CC100 +const RwChar* RpUVAnimGetName(const RpUVAnim* anim); // 0x7CC3A0 +RpMaterial* RpMaterialSetUVAnim(RpMaterial* material, RpUVAnim* anim, RwUInt32 slot); // 0x7CC3B0 +RpUVAnimInterpolator* RpMaterialUVAnimGetInterpolator(RpMaterial* material, RwUInt32 slot); // 0x7CC430 +RpMaterial* RpMaterialUVAnimSetInterpolator(RpMaterial* material, RpUVAnimInterpolator* interp, RwUInt32 slot); // 0x7CC450 +RpMaterial* RpMaterialUVAnimSetCurrentTime(RpMaterial* material, RwReal time); // 0x7CC470 +RpMaterial* RpMaterialUVAnimAddAnimTime(RpMaterial* material, RwReal deltaTime); // 0x7CC4B0 +RpMaterial* RpMaterialUVAnimSubAnimTime(RpMaterial* material, RwReal deltaTime); // 0x7CC4F0 +RwBool RpMaterialUVAnimExists(const RpMaterial* material); // 0x7CC530 + +/* rpskin.h */ + +void RpSkinSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x7C67F0 +RwBool RpSkinPluginAttach(void); // 0x7C6820 +RpAtomic* RpSkinAtomicSetHAnimHierarchy(RpAtomic* atomic, RpHAnimHierarchy* hierarchy); // 0x7C7520 +RpHAnimHierarchy* RpSkinAtomicGetHAnimHierarchy(const RpAtomic* atomic); // 0x7C7540 +RpGeometry* RpSkinGeometrySetSkin(RpGeometry* geometry, RpSkin* skin); // 0x7C7560 +RpSkin* RpSkinGeometryGetSkin(RpGeometry* geometry); // 0x7C7550 +RpSkin* RpSkinCreate(RwUInt32 numVertices, RwUInt32 numBones, RwMatrixWeights* vertexWeights, RwUInt32* vertexIndices, RwMatrix* inverseMatrices); // 0x7C75B0 +RpSkin* RpSkinDestroy(RpSkin* skin); // 0x7C77A0 +RwUInt32 RpSkinGetNumBones(RpSkin* skin); // 0x7C77E0 +const RwMatrixWeights* RpSkinGetVertexBoneWeights(RpSkin* skin); // 0x7C77F0 +const RwUInt32* RpSkinGetVertexBoneIndices(RpSkin* skin); // 0x7C7800 +const RwMatrix* RpSkinGetSkinToBoneMatrices(RpSkin* skin); // 0x7C7810 +RwBool RpSkinIsSplit(RpSkin* skin); // 0x7C7820 +RpAtomic* RpSkinAtomicSetType(RpAtomic* atomic, RpSkinType type); // 0x7C7830 +RpSkinType RpSkinAtomicGetType(RpAtomic* atomic); // 0x7C7880 +RpGeometry* _rpSkinInitialize(RpGeometry* geometry); // 0x7C8740 +RpGeometry* _rpSkinDeinitialize(RpGeometry* geometry); // 0x7C8820 +RwUInt8* _rpSkinGetMeshBoneRemapIndices(RpSkin* skin); // 0x7C8A40 +RwUInt8* _rpSkinGetMeshBoneRLECount(RpSkin* skin); // 0x7C8A50 +RwUInt8* _rpSkinGetMeshBoneRLE(RpSkin* skin); // 0x7C8A60 +RpSkin* _rpSkinSplitDataCreate(RpSkin* skin, RwUInt32 boneLimit, RwUInt32 numMatrices, RwUInt32 numMeshes, RwUInt32 numRLE); // 0x7C8A70 +RwBool _rpSkinSplitDataDestroy(RpSkin* skin); // 0x7C8B10 +RxNodeDefinition* RxNodeDefinitionGetD3D9SkinAtomicAllInOne(void); // 0x7CB2A0 + +/* rtdict.h */ + +RtDictSchema* RtDictSchemaInit(RtDictSchema* schema); // 0x7CED40 +RwBool RtDictSchemaDestruct(RtDictSchema* schema); // 0x7CED70 +RtDict* RtDictSchemaStreamReadDict(RtDictSchema* schema, RwStream* stream); // 0x7CF240 +RtDict* RtDictSchemaCreateDict(RtDictSchema* schema); // 0x7CED90 +RtDictSchema* RtDictSchemaAddDict(RtDictSchema* schema, RtDict* dict); // 0x7CEE50 +RtDictSchema* RtDictSchemaRemoveDict(RtDictSchema* schema, RtDict* dict); // 0x7CEE80 +RwBool RtDictSchemaForAllDictionaries(RtDictSchema* schema, RtDictCallBack* callback, RtDictEntryType data); // 0x7CF5B0 +RtDict* RtDictSchemaGetCurrentDict(RtDictSchema* schema); // 0x7CEEE0 +RtDictSchema* RtDictSchemaSetCurrentDict(RtDictSchema* schema, RtDict* dict); // 0x7CEEF0 +RwBool RtDictDestroy(RtDict* dictionary); // 0x7CF130 +RtDictEntryType RtDictAddEntry(RtDict* dictionary, RtDictEntryType entry); // 0x7CEFB0 +RtDictEntryType RtDictFindNamedEntry(RtDict* dictionary, const RwChar* name); // 0x7CEFE0 +const RtDict* RtDictForAllEntries(const RtDict* dictionary, RtDictEntryCallBack* callBack, RtDictEntryType data); // 0x7CF060 +RtDict* RtDictRemoveEntry(RtDict* dictionary, RtDictEntryType entry); // 0x7CF0C0 +const RtDict* RtDictStreamWrite(const RtDict* dictionary, RwStream* stream); // 0x7CF490 +RwUInt32 RtDictStreamGetSize(const RtDict* dictionary); // 0x7CF1F0 +RtDict* _rtDictSchemaInitDict(RtDictSchema* schema, RtDict* dictionary); // 0x7CEF00 +RwBool _rtDictDestruct(RtDict* dictionary); // 0x7CEF60 + +/* rpmatfx.h */ + +void RpMatFXMaterialDataSetFreeListCreateParams(RwInt32 blockSize, RwInt32 numBlocksToPrealloc); // 0x810700 +RwBool RpMatFXPluginAttach(void); // 0x810AA0 +RpAtomic* RpMatFXAtomicEnableEffects(RpAtomic* atomic); // 0x811C00 +RwBool RpMatFXAtomicQueryEffects(RpAtomic* atomic); // 0x811C30 +RpWorldSector* RpMatFXWorldSectorEnableEffects(RpWorldSector* worldSector); // 0x811C40 +RwBool RpMatFXWorldSectorQueryEffects(RpWorldSector* worldSector); // 0x811C70 +RpMaterial* RpMatFXMaterialSetEffects(RpMaterial* material, RpMatFXMaterialFlags flags); // 0x811C80 +RpMaterial* RpMatFXMaterialSetupBumpMap(RpMaterial* material, RwTexture* texture, RwFrame* frame, RwReal coef); // 0x811E00 +RpMaterial* RpMatFXMaterialSetupEnvMap(RpMaterial* material, RwTexture* texture, RwFrame* frame, RwBool useFrameBufferAlpha, RwReal coef); // 0x811ED0 +RpMaterial* RpMatFXMaterialSetupDualTexture(RpMaterial* material, RwTexture* texture, RwBlendFunction srcBlendMode, RwBlendFunction dstBlendMode); // 0x812040 +RpMatFXMaterialFlags RpMatFXMaterialGetEffects(const RpMaterial* material); // 0x812140 +RpMaterial* RpMatFXMaterialSetBumpMapTexture(RpMaterial* material, RwTexture* texture); // 0x812160 +RpMaterial* RpMatFXMaterialSetBumpMapFrame(RpMaterial* material, RwFrame* frame); // 0x812320 +RpMaterial* RpMatFXMaterialSetBumpMapCoefficient(RpMaterial* material, RwReal coef); // 0x812380 +RwTexture* RpMatFXMaterialGetBumpMapTexture(const RpMaterial* material); // 0x812430 +RwTexture* RpMatFXMaterialGetBumpMapBumpedTexture(const RpMaterial* material); // 0x8123E0 +RwFrame* RpMatFXMaterialGetBumpMapFrame(const RpMaterial* material); // 0x812480 +RwReal RpMatFXMaterialGetBumpMapCoefficient(const RpMaterial* material); // 0x8124D0 +RpMaterial* RpMatFXMaterialSetEnvMapTexture(RpMaterial* material, RwTexture* texture); // 0x812530 +RpMaterial* RpMatFXMaterialSetEnvMapFrame(RpMaterial* material, RwFrame* frame); // 0x8125B0 +RpMaterial* RpMatFXMaterialSetEnvMapFrameBufferAlpha(RpMaterial* material, RwBool useFrameBufferAlpha); // 0x812610 +RpMaterial* RpMatFXMaterialSetEnvMapCoefficient(RpMaterial* material, RwReal coef); // 0x812680 +RwTexture* RpMatFXMaterialGetEnvMapTexture(const RpMaterial* material); // 0x8126F0 +RwFrame* RpMatFXMaterialGetEnvMapFrame(const RpMaterial* material); // 0x812740 +RwBool RpMatFXMaterialGetEnvMapFrameBufferAlpha(const RpMaterial* material); // 0x812790 +RwReal RpMatFXMaterialGetEnvMapCoefficient(const RpMaterial* material); // 0x8127E0 +RpMaterial* RpMatFXMaterialSetDualTexture(RpMaterial* material, RwTexture* texture); // 0x812830 +RpMaterial* RpMatFXMaterialSetDualBlendModes(RpMaterial* material, RwBlendFunction srcBlendMode, RwBlendFunction dstBlendMode); // 0x8128C0 +RwTexture* RpMatFXMaterialGetDualTexture(const RpMaterial* material); // 0x812930 +const RpMaterial* RpMatFXMaterialGetDualBlendModes(const RpMaterial* material, RwBlendFunction* srcBlendMode, RwBlendFunction* dstBlendMode); // 0x812980 +RpMaterial* RpMatFXMaterialSetUVTransformMatrices(RpMaterial* material, RwMatrix* baseTransform, RwMatrix* dualTransform); // 0x8129E0 +const RpMaterial* RpMatFXMaterialGetUVTransformMatrices(const RpMaterial* material, RwMatrix* baseTransform, RwMatrix* dualTransform); // 0x812A50 +RxPipeline* RpMatFXGetD3D9Pipeline(RpMatFXD3D9Pipeline d3d9Pipeline); // 0x8162F0 + +/* skeleton.h */ +RsEventStatus RsEventHandler(RsEvent e, void* param); + +/* rpanisot.h */ + +RwInt8 RpAnisotGetMaxSupportedMaxAnisotropy(void); // 0x748F20 +RwTexture* RpAnisotTextureSetMaxAnisotropy(RwTexture* tex, RwInt8 val); // 0x748F30 +RwInt8 RpAnisotTextureGetMaxAnisotropy(RwTexture* tex); // 0x748F50 +RwBool RpAnisotPluginAttach(void); // 0x748F70 + +/* rtbmp.h */ + +RwImage* RtBMPImageWrite(RwImage* image, const RwChar* imageName); // 0x7CE990 +RwImage* RtBMPImageRead(const RwChar* imageName); // 0x7CDF60 + +/* rtpng.h */ + +RwImage* RtPNGImageWrite(RwImage* image, const RwChar* imageName); // 0x7CF600 +RwImage* RtPNGImageRead(const RwChar* imageName); // 0x7CF9B0 + + +void _rpMaterialSetDefaultSurfaceProperties(RwSurfaceProperties *surfProps); + +void _rwObjectHasFrameSetFrame(void *object, RwFrame *frame); +void _rwObjectHasFrameReleaseFrame(void *object); + +RpAtomic *_rpD3D9SkinVertexShaderMatrixUpdate(RwMatrix *matrices, RpAtomic *atomic, RpSkin *skin); // 0x7C78A0 +void _rwD3D9SetStreams(RxD3D9VertexStream* streams, RwBool useOffsets); // 0x7FA090 +RwBool _rwD3D9RenderStateVertexAlphaEnable(RwBool enable); // 0x7FE0A0 +RwBool _rwD3D9RenderStateIsVertexAlphaEnable(); // 0x7FE190 +RwBool _rwD3D9CheckValidCameraTextureFormat(RwUInt32 format); // 0x4CBE20 +void _rwD3D9SetVertexDeclaration(void *vertexDeclaration); // 0x7F9F70 +void _rwD3D9SetIndices(void *indices); // 0x7FA1C0 +void _rwD3D9DrawPrimitive(RwUInt32 primitiveType, RwUInt32 startIndex, RwUInt32 primitiveCount); // 0x7FA360 + +RwBool _rwStreamReadChunkHeader(RwStream *stream, RwUInt32 *pType, RwUInt32 *pLength, RwUInt32 *pVersion, RwUInt32 *pBuild); // 0x7ED0F0 + +#define RwRenderStateGetMacro(_state, _value) \ + (RWSRCGLOBAL(dOpenDevice).fpRenderStateGet(_state, _value)) + +#define RwRenderStateSetMacro(_state, _value) \ + (RWSRCGLOBAL(dOpenDevice).fpRenderStateSet(_state, _value)) + +#define RwRenderStateGet(_state, _value) \ + RwRenderStateGetMacro(_state, _value) + +#define RwRenderStateSet(_state, _value) \ + RwRenderStateSetMacro(_state, _value) + +#define RWRSTATE(a) (reinterpret_cast(a)) + +#define rwObjectHasFrameSetFrame(object, frame) \ + _rwObjectHasFrameSetFrame(object, frame) +#define rwObjectHasFrameReleaseFrame(object) \ + _rwObjectHasFrameReleaseFrame(object) diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/RpHAnimBlendInterpFrame.h b/third-party/plugin-sdk/plugin_sa/game_sa/RpHAnimBlendInterpFrame.h new file mode 100644 index 00000000..432aaa50 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/RpHAnimBlendInterpFrame.h @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" + +struct RpHAnimBlendInterpFrame { + RtQuat orientation; + RwV3d translation; +}; + +VALIDATE_SIZE(RpHAnimBlendInterpFrame, 0x1C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/RwObjectNameIdAssocation.h b/third-party/plugin-sdk/plugin_sa/game_sa/RwObjectNameIdAssocation.h new file mode 100644 index 00000000..49b1e64a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/RwObjectNameIdAssocation.h @@ -0,0 +1,18 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + + +struct PLUGIN_API RwObjectNameIdAssocation +{ + char *m_pName; + unsigned int m_dwHierarchyId; + unsigned int m_dwFlags; +}; + +VALIDATE_SIZE(RwObjectNameIdAssocation, 0xC); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/SArray.h b/third-party/plugin-sdk/plugin_sa/game_sa/SArray.h new file mode 100644 index 00000000..c52b1d2d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/SArray.h @@ -0,0 +1,24 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +template +struct SArray /* : public std::vector */ { + /* allocator<_Ty>*/ void *allocator; // MSVC 6.0 STL vector + /* iterator */ T *_First; // + /* iterator */ T *_Last; // + /* iterator */ T *_End; // +private: + SArray() {} + SArray(SArray const &) {} + ~SArray() {} + void operator=(SArray const &) {} +}; + +VALIDATE_SIZE(SArray, 0x10); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/TxdDef.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/TxdDef.cpp new file mode 100644 index 00000000..2c3c8cfe --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/TxdDef.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "TxdDef.h" \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/TxdDef.h b/third-party/plugin-sdk/plugin_sa/game_sa/TxdDef.h new file mode 100644 index 00000000..25f2261c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/TxdDef.h @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "RenderWare.h" + +class TxdDef { +public: + RwTexDictionary *m_pRwDictionary; + unsigned short m_wRefsCount; + short m_wParentIndex; + unsigned int m_hash; +}; + +VALIDATE_SIZE(TxdDef, 0xC); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/cHandlingDataMgr.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/cHandlingDataMgr.cpp new file mode 100644 index 00000000..24abd8fa --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/cHandlingDataMgr.cpp @@ -0,0 +1,74 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "cHandlingDataMgr.h" + +cHandlingDataMgr& gHandlingDataMgr = *(cHandlingDataMgr*)0xC2B9C8; + +cHandlingDataMgr::cHandlingDataMgr() +{ + ((void (__thiscall *)(cHandlingDataMgr *))0x6F5330)(this); +}; + +void cHandlingDataMgr::Initialise() +{ + ((void (__thiscall *)(cHandlingDataMgr *))0x5BF3D0)(this); +}; + +void cHandlingDataMgr::LoadHandlingData() +{ + ((void (__thiscall *)(cHandlingDataMgr *))0x5BD830)(this); +}; + +int cHandlingDataMgr::FindExactWord(char *line, char *nameTable, int entrySize, int entryCount) +{ + return ((int (__thiscall *)(cHandlingDataMgr *, char *, char *, int, int))0x6F4F30)(this, line, nameTable, entrySize, entryCount); +}; + +bool cHandlingDataMgr::IsNotRearDriveVehicle(unsigned char handlingId) +{ + return ((bool (__thiscall *)(cHandlingDataMgr *, unsigned char))0x6A0480)(this, handlingId); +}; + +bool cHandlingDataMgr::IsNotFrontDriveVehicle(unsigned char handlingId) +{ + return ((bool (__thiscall *)(cHandlingDataMgr *, unsigned char))0x6A04B0)(this, handlingId); +}; + +int cHandlingDataMgr::GetHandlingId(char *name) +{ + return ((int (__thiscall *)(cHandlingDataMgr *, char *))0x6F4FD0)(this, name); +}; + +void cHandlingDataMgr::ConvertDataToWorldUnits(tHandlingData *handling) +{ + ((void (__thiscall *)(cHandlingDataMgr *, tHandlingData *))0x6F5010)(this, handling); +}; + +void cHandlingDataMgr::ConvertDataToGameUnits(tHandlingData *handling) +{ + ((void (__thiscall *)(cHandlingDataMgr *, tHandlingData *))0x6F5080)(this, handling); +}; + +void cHandlingDataMgr::ConvertBikeDataToWorldUnits(tBikeHandlingData *bikeHandling) +{ + ((void (__thiscall *)(cHandlingDataMgr *, tBikeHandlingData *))0x6F5240)(this, bikeHandling); +}; + +void cHandlingDataMgr::ConvertBikeDataToGameUnits(tBikeHandlingData *bikeHandling) +{ + ((void (__thiscall *)(cHandlingDataMgr *, tBikeHandlingData *))0x6F5290)(this, bikeHandling); +}; + +tFlyingHandlingData *cHandlingDataMgr::GetFlyingPointer(unsigned char handlingId) +{ + return ((tFlyingHandlingData *(__thiscall *)(cHandlingDataMgr *, unsigned char))0x6F52D0)(this, handlingId); +}; + +tBoatHandlingData *cHandlingDataMgr::GetBoatPointer(unsigned char handlingId) +{ + return ((tBoatHandlingData *(__thiscall *)(cHandlingDataMgr *, unsigned char))0x6F5300)(this, handlingId); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/cHandlingDataMgr.h b/third-party/plugin-sdk/plugin_sa/game_sa/cHandlingDataMgr.h new file mode 100644 index 00000000..9dc62987 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/cHandlingDataMgr.h @@ -0,0 +1,53 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "tHandlingData.h" +#include "tBikeHandlingData.h" +#include "tFlyingHandlingData.h" +#include "tBoatHandlingData.h" + +class PLUGIN_API cHandlingDataMgr +{ +public: + float field_0; + float field_4; + float field_8; + float field_C; + float field_10; + tHandlingData m_aVehicleHandling[210]; + tBikeHandlingData m_aBikeHandling[13]; + tFlyingHandlingData m_aFlyingHandling[24]; + tBoatHandlingData m_aBoatHandling[12]; + + cHandlingDataMgr(); + + void Initialise(); + // process handling.cfg + void LoadHandlingData(); + // get vehicle number id in names table + int FindExactWord(char *line, char *nameTable, int entrySize, int entryCount); + bool IsNotRearDriveVehicle(unsigned char handlingId); + bool IsNotFrontDriveVehicle(unsigned char handlingId); + // get handling id by name + int GetHandlingId(char *name); + // update some handling variables with some world-specific multipliers + void ConvertDataToWorldUnits(tHandlingData *handling); + // update some handling variables with some game-specific multipliers + void ConvertDataToGameUnits(tHandlingData *handling); + void ConvertBikeDataToWorldUnits(tBikeHandlingData *bikeHandling); + void ConvertBikeDataToGameUnits(tBikeHandlingData *bikeHandling); + // get flying handling by id + tFlyingHandlingData *GetFlyingPointer(unsigned char handlingId); + // get boat handling by id + tBoatHandlingData *GetBoatPointer(unsigned char handlingId); +}; + +VALIDATE_SIZE(cHandlingDataMgr, 0xC624); + +extern cHandlingDataMgr& gHandlingDataMgr; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/cTransmission.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/cTransmission.cpp new file mode 100644 index 00000000..0c057be9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/cTransmission.cpp @@ -0,0 +1,32 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "cTransmission.h" + +cTransmission::cTransmission() +{ + ((void (__thiscall *)(cTransmission *))0x6D0450)(this); +}; + +void cTransmission::InitGearRatios() +{ + ((void (__thiscall *)(cTransmission *))0x6D0460)(this); +}; + +void cTransmission::CalculateGearForSimpleCar(float velocity, unsigned char& currrentGear) +{ + ((void (__thiscall *)(cTransmission *, float, unsigned char&))0x6D0530)(this, velocity, currrentGear); +}; + +void cTransmission::DisplayGearRatios() +{ + ((void (__thiscall *)(cTransmission *))0x6D0590)(this); +}; + +float cTransmission::CalculateDriveAcceleration(float& gasPedal, unsigned char& currrentGear, float& gearChangeCount, float& speed, float& unk1, float& unk2, bool allWheelsOnGround, unsigned char handlingType) +{ + return ((float (__thiscall *)(cTransmission *, float&, unsigned char&, float&, float&, float&, float&, bool, unsigned char))0x6D05E0)(this, gasPedal, currrentGear, gearChangeCount, speed, unk1, unk2, allWheelsOnGround, handlingType); +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/cTransmission.h b/third-party/plugin-sdk/plugin_sa/game_sa/cTransmission.h new file mode 100644 index 00000000..c3d63146 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/cTransmission.h @@ -0,0 +1,35 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "tTransmissionGear.h" + +class PLUGIN_API cTransmission { +public: + tTransmissionGear m_aGears[6]; + unsigned char m_nDriveType; // F/R/4 + unsigned char m_nEngineType; // P/D/E + unsigned char m_nNumberOfGears; // 1 to 6 + char field_4B; + unsigned int m_nHandlingFlags; + float m_fEngineAcceleration; // 0.1 to 10.0 + float m_fEngineInertia; // 0.0 to 50.0 + float m_fMaxGearVelocity; // 5.0 to 150.0 + int field_5C; + float m_fMinGearVelocity; + float m_fCurrentSpeed; + + cTransmission(); + void InitGearRatios(); + void CalculateGearForSimpleCar(float velocity, unsigned char& currrentGear); + // it uses printf, so you won't see it actually... + void DisplayGearRatios(); + float CalculateDriveAcceleration(float& gasPedal, unsigned char& currrentGear, float& gearChangeCount, float& speed, float& unk1, float& unk2, bool allWheelsOnGround, unsigned char handlingType); +}; + +VALIDATE_SIZE(cTransmission, 0x68); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/common.cpp b/third-party/plugin-sdk/plugin_sa/game_sa/common.cpp new file mode 100644 index 00000000..d3048412 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/common.cpp @@ -0,0 +1,599 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "common.h" +#include + +char *gString = (char *)0xB71670; + +float &GAME_GRAVITY = *(float *)0x863984; + +CVector FindPlayerCoors(int playerId) +{ + return ((CVector (__cdecl *)(int))0x56E010)(playerId); +} + +CVector const& FindPlayerSpeed(int playerId) +{ + return ((CVector const& (__cdecl *)(int))0x56E090)(playerId); +} + +CEntity * FindPlayerEntity(int playerId) +{ + return ((CEntity *(__cdecl *)(int))0x56E120)(playerId); +} + +CVector const& FindPlayerCentreOfWorld(int playerId) +{ + return ((CVector const& (__cdecl *)(int))0x56E250)(playerId); +} + +CVector const& FindPlayerCentreOfWorld_NoSniperShift(int playerId) +{ + return ((CVector const& (__cdecl *)(int))0x56E320)(playerId); +} + +CVector FindPlayerCentreOfWorld_NoInteriorShift(int playerId) +{ + return ((CVector (__cdecl *)(int))0x56E400)(playerId); +} + +float FindPlayerHeading(int playerId) +{ + return ((float (__cdecl *)(int))0x56E450)(playerId); +} + +float FindPlayerHeight() +{ + return ((float (__cdecl *)())0x56E520)(); +} + +CPlayerPed * FindPlayerPed(int playerId) +{ + return ((CPlayerPed *(__cdecl *)(int))0x56E210)(playerId); +} + +CVehicle * FindPlayerVehicle(int playerId, bool bIncludeRemote) +{ + return ((CVehicle *(__cdecl *)(int, bool))0x56E0D0)(playerId, bIncludeRemote); +} + +bool InTwoPlayersMode() +{ + return ((bool (__cdecl *)())0x441390)(); +} + +CVector VectorSub(CVector const& from, CVector const& what) +{ + return ((CVector (__cdecl *)(CVector const&, CVector const&))0x40FE60)(from, what); +} + +CVector Multiply3x3(CMatrix const& matrix, CVector const& vec) +{ + return ((CVector (__cdecl *)(CMatrix const&, CVector const&))0x59C790)(matrix, vec); +} + +CWanted * FindPlayerWanted(int playerId) +{ + return ((CWanted*(__cdecl *)(int))0x56E230)(playerId); +} + +unsigned int &ClumpOffset = *(unsigned int *)0xB5F878; + +AnimBlendFrameData *RpAnimBlendClumpFindFrame(RpClump *clump, char *name) +{ + return ((AnimBlendFrameData *(__cdecl *)(RpClump *, char *))0x4D62A0)(clump, name); +} + +char *MakeUpperCase(char *dest, char *src) +{ + return ((char *(__cdecl *)(char *, char *))0x7186E0)(dest, src); +} + +// Converted from cdecl void CreateDebugFont(void) 0x734610 +void CreateDebugFont() { + ((void(__cdecl *)())0x734610)(); +} + +// Converted from cdecl void DestroyDebugFont(void) 0x734620 +void DestroyDebugFont() { + ((void(__cdecl *)())0x734620)(); +} + +// Converted from cdecl void ObrsPrintfString(char const*,short,short) 0x734630 +void ObrsPrintfString(char const* arg0, short arg1, short arg2) { + ((void(__cdecl *)(char const*, short, short))0x734630)(arg0, arg1, arg2); +} + +// Converted from cdecl void FlushObrsPrintfs(void) 0x734640 +void FlushObrsPrintfs() { + ((void(__cdecl *)())0x734640)(); +} + +// Converted from cdecl void DefinedState(void) 0x734650 +void DefinedState() { + ((void(__cdecl *)())0x734650)(); +} + +// Converted from cdecl void DefinedState2d(void) 0x734750 +void DefinedState2d() { + ((void(__cdecl *)())0x734750)(); +} + +// Converted from cdecl RpAtomic* GetFirstAtomicCallback(RpAtomic *atomic,void *data) 0x734810 +RpAtomic* GetFirstAtomicCallback(RpAtomic* atomic, void* data) { + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x734810)(atomic, data); +} + +// Converted from cdecl RpAtomic* GetFirstAtomic(RpClump *clump) 0x734820 +RpAtomic* GetFirstAtomic(RpClump* clump) { + return ((RpAtomic* (__cdecl *)(RpClump*))0x734820)(clump); +} + +// Converted from cdecl RpAtomic* Get2DEffectAtomicCallback(RpAtomic *atomic,void *data) 0x734850 +RpAtomic* Get2DEffectAtomicCallback(RpAtomic* atomic, void* data) { + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x734850)(atomic, data); +} + +// Converted from cdecl RpAtomic* Get2DEffectAtomic(RpClump *clump) 0x734880 +RpAtomic* Get2DEffectAtomic(RpClump* clump) { + return ((RpAtomic* (__cdecl *)(RpClump*))0x734880)(clump); +} + +// Converted from cdecl RwObject* GetFirstObjectCallback(RwObject *object,void *data) 0x7348B0 +RwObject* GetFirstObjectCallback(RwObject* object, void* data) { + return ((RwObject* (__cdecl *)(RwObject*, void*))0x7348B0)(object, data); +} + +// Converted from cdecl RwObject* GetFirstObject(RwFrame *frame) 0x7348C0 +RwObject* GetFirstObject(RwFrame* frame) { + return ((RwObject* (__cdecl *)(RwFrame*))0x7348C0)(frame); +} + +// Converted from cdecl RwFrame* GetFirstFrameCallback(RwFrame *frame,void *data) 0x7348F0 +RwFrame* GetFirstFrameCallback(RwFrame* frame, void* data) { + return ((RwFrame* (__cdecl *)(RwFrame*, void*))0x7348F0)(frame, data); +} + +// Converted from cdecl RwFrame* GetFirstChild(RwFrame *frame) 0x734900 +RwFrame* GetFirstChild(RwFrame* frame) { + return ((RwFrame* (__cdecl *)(RwFrame*))0x734900)(frame); +} + +// Converted from cdecl RwTexture* GetFirstTextureCallback(RwTexture *texture,void *data) 0x734930 +RwTexture* GetFirstTextureCallback(RwTexture* texture, void* data) { + return ((RwTexture* (__cdecl *)(RwTexture*, void*))0x734930)(texture, data); +} + +// Converted from cdecl RwTexture* GetFirstTexture(RwTexDictionary *txd) 0x734940 +RwTexture* GetFirstTexture(RwTexDictionary* txd) { + return ((RwTexture* (__cdecl *)(RwTexDictionary*))0x734940)(txd); +} + +// Converted from cdecl RpHAnimHierarchy* GetAnimHierarchyFromSkinClump(RpClump *clump) 0x734A40 +RpHAnimHierarchy* GetAnimHierarchyFromSkinClump(RpClump* clump) { + return ((RpHAnimHierarchy* (__cdecl *)(RpClump*))0x734A40)(clump); +} + +// Converted from cdecl RpHAnimHierarchy* GetAnimHierarchyFromFrame(RwFrame *frame) 0x734AB0 +RpHAnimHierarchy* GetAnimHierarchyFromFrame(RwFrame* frame) { + return ((RpHAnimHierarchy* (__cdecl *)(RwFrame*))0x734AB0)(frame); +} + +// Converted from cdecl RpHAnimHierarchy* GetAnimHierarchyFromClump(RpClump *clump) 0x734B10 +RpHAnimHierarchy* GetAnimHierarchyFromClump(RpClump* clump) { + return ((RpHAnimHierarchy* (__cdecl *)(RpClump*))0x734B10)(clump); +} + +// Converted from cdecl RpAtomic* AtomicRemoveAnimFromSkinCB(RpAtomic *atomic,void *data) 0x734B90 +RpAtomic* AtomicRemoveAnimFromSkinCB(RpAtomic* atomic, void* data) { + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x734B90)(atomic, data); +} + +// Converted from cdecl bool RpAtomicConvertGeometryToTL(RpAtomic *atomic) 0x734BE0 +bool RpAtomicConvertGeometryToTL(RpAtomic* atomic) { + return ((bool(__cdecl *)(RpAtomic*))0x734BE0)(atomic); +} + +// Converted from cdecl bool RpAtomicConvertGeometryToTS(RpAtomic *atomic) 0x734C20 +bool RpAtomicConvertGeometryToTS(RpAtomic* atomic) { + return ((bool(__cdecl *)(RpAtomic*))0x734C20)(atomic); +} + +// Converted from cdecl bool RpClumpConvertGeometryToTL(RpClump *clump) 0x734CB0 +bool RpClumpConvertGeometryToTL(RpClump* clump) { + return ((bool(__cdecl *)(RpClump*))0x734CB0)(clump); +} + +// Converted from cdecl bool RpClumpConvertGeometryToTS(RpClump *clump) 0x734D30 +bool RpClumpConvertGeometryToTS(RpClump* clump) { + return ((bool(__cdecl *)(RpClump*))0x734D30)(clump); +} + +// Converted from cdecl RpMaterial* forceLinearFilteringMatTexturesCB(RpMaterial *material,void *data) 0x734D60 +RpMaterial* forceLinearFilteringMatTexturesCB(RpMaterial* material, void* data) { + return ((RpMaterial* (__cdecl *)(RpMaterial*, void*))0x734D60)(material, data); +} + +// Converted from cdecl bool SetFilterModeOnAtomicsTextures(RpAtomic *atomic,RwTextureFilterMode filtering) 0x734D80 +bool SetFilterModeOnAtomicsTextures(RpAtomic* atomic, RwTextureFilterMode filtering) { + return ((bool(__cdecl *)(RpAtomic*, RwTextureFilterMode))0x734D80)(atomic, filtering); +} + +// Converted from cdecl RpAtomic* forceLinearFilteringAtomicsCB(RpAtomic *atomic,void *data) 0x734DA0 +RpAtomic* forceLinearFilteringAtomicsCB(RpAtomic* atomic, void* data) { + return ((RpAtomic* (__cdecl *)(RpAtomic*, void*))0x734DA0)(atomic, data); +} + +// Converted from cdecl bool SetFilterModeOnClumpsTextures(RpClump *clump,RwTextureFilterMode filtering) 0x734DC0 +bool SetFilterModeOnClumpsTextures(RpClump* clump, RwTextureFilterMode filtering) { + return ((bool(__cdecl *)(RpClump*, RwTextureFilterMode))0x734DC0)(clump, filtering); +} + +// Converted from cdecl bool RpGeometryReplaceOldMaterialWithNewMaterial(RpGeometry *geometry,RpMaterial *oldMaterial,RpMaterial *newMaterial) 0x734DE0 +bool RpGeometryReplaceOldMaterialWithNewMaterial(RpGeometry* geometry, RpMaterial* oldMaterial, RpMaterial* newMaterial) { + return ((bool(__cdecl *)(RpGeometry*, RpMaterial*, RpMaterial*))0x734DE0)(geometry, oldMaterial, newMaterial); +} + +// Converted from cdecl RwTexture* RwTexDictionaryFindHashNamedTexture(RwTexDictionary *txd,uint hash) 0x734E50 +RwTexture* RwTexDictionaryFindHashNamedTexture(RwTexDictionary* txd, unsigned int hash) { + return ((RwTexture* (__cdecl *)(RwTexDictionary*, unsigned int))0x734E50)(txd, hash); +} + +// Converted from cdecl RpClump* RpClumpGetBoundingSphere(RpClump *clump,RwSphere *bound,bool) 0x734FC0 +RpClump* RpClumpGetBoundingSphere(RpClump* clump, RwSphere* bound, bool arg2) { + return ((RpClump* (__cdecl *)(RpClump*, RwSphere*, bool))0x734FC0)(clump, bound, arg2); +} + +// Converted from cdecl void SkinGetBonePositions(RpClump *clump) 0x735140 +void SkinGetBonePositions(RpClump* clump) { + ((void(__cdecl *)(RpClump*))0x735140)(clump); +} + +// Converted from cdecl void SkinSetBonePositions(RpClump *clump) 0x7352D0 +void SkinSetBonePositions(RpClump* clump) { + ((void(__cdecl *)(RpClump*))0x7352D0)(clump); +} + +// Converted from cdecl void SkinGetBonePositionsToTable(RpClump *clump,RwV3d *table) 0x735360 +void SkinGetBonePositionsToTable(RpClump* clump, RwV3d* table) { + ((void(__cdecl *)(RpClump*, RwV3d*))0x735360)(clump, table); +} + +// Converted from cdecl void SetLightsWithTimeOfDayColour(RpWorld *world) 0x7354E0 +void SetLightsWithTimeOfDayColour(RpWorld* world) { + ((void(__cdecl *)(RpWorld*))0x7354E0)(world); +} + +// Converted from cdecl void LightsEnable(int) 0x735720 +void LightsEnable(int arg0) { + ((void(__cdecl *)(int))0x735720)(arg0); +} + +// Converted from cdecl RpWorld* LightsDestroy(RpWorld *world) 0x735730 +RpWorld* LightsDestroy(RpWorld* world) { + return ((RpWorld* (__cdecl *)(RpWorld*))0x735730)(world); +} + +// Converted from cdecl void WorldReplaceNormalLightsWithScorched(RpWorld *world,float lighting) 0x7357E0 +void WorldReplaceNormalLightsWithScorched(RpWorld* world, float lighting) { + ((void(__cdecl *)(RpWorld*, float))0x7357E0)(world, lighting); +} + +// Converted from cdecl void WorldReplaceScorchedLightsWithNormal(RpWorld *world) 0x735820 +void WorldReplaceScorchedLightsWithNormal(RpWorld* world) { + ((void(__cdecl *)(RpWorld*))0x735820)(world); +} + +// Converted from cdecl void AddAnExtraDirectionalLight(RpWorld *world,float x,float y,float z,float red,float green,float blue) 0x735840 +void AddAnExtraDirectionalLight(RpWorld* world, float x, float y, float z, float red, float green, float blue) { + ((void(__cdecl *)(RpWorld*, float, float, float, float, float, float))0x735840)(world, x, y, z, red, green, blue); +} + +// Converted from cdecl void RemoveExtraDirectionalLights(RpWorld *world) 0x7359E0 +void RemoveExtraDirectionalLights(RpWorld* world) { + ((void(__cdecl *)(RpWorld*))0x7359E0)(world); +} + +// Converted from cdecl void SetAmbientAndDirectionalColours(float lighting) 0x735A20 +void SetAmbientAndDirectionalColours(float lighting) { + ((void(__cdecl *)(float))0x735A20)(lighting); +} + +// Converted from cdecl void SetFlashyColours(float lighting) 0x735AB0 +void SetFlashyColours(float lighting) { + ((void(__cdecl *)(float))0x735AB0)(lighting); +} + +// Converted from cdecl void SetFlashyColours_Mild(float lighting) 0x735B40 +void SetFlashyColours_Mild(float lighting) { + ((void(__cdecl *)(float))0x735B40)(lighting); +} + +// Converted from cdecl void SetBrightMarkerColours(float lighting) 0x735BD0 +void SetBrightMarkerColours(float lighting) { + ((void(__cdecl *)(float))0x735BD0)(lighting); +} + +// Converted from cdecl void ReSetAmbientAndDirectionalColours(void) 0x735C40 +void ReSetAmbientAndDirectionalColours() { + ((void(__cdecl *)())0x735C40)(); +} + +// Converted from cdecl void DeActivateDirectional(void) 0x735C70 +void DeActivateDirectional() { + ((void(__cdecl *)())0x735C70)(); +} + +// Converted from cdecl void ActivateDirectional(void) 0x735C80 +void ActivateDirectional() { + ((void(__cdecl *)())0x735C80)(); +} + +// Converted from cdecl void SetAmbientColoursToIndicateRoadGroup(int) 0x735C90 +void SetAmbientColoursToIndicateRoadGroup(int arg0) { + ((void(__cdecl *)(int))0x735C90)(arg0); +} + +// Converted from cdecl void SetFullAmbient(void) 0x735D10 +void SetFullAmbient() { + ((void(__cdecl *)())0x735D10)(); +} + +// Converted from cdecl void SetAmbientColours(void) 0x735D30 +void SetAmbientColours() { + ((void(__cdecl *)())0x735D30)(); +} + +// Converted from cdecl void SetAmbientColours(RwRGBAReal *color) 0x735D50 +void SetAmbientColours(RwRGBAReal* color) { + ((void(__cdecl *)(RwRGBAReal*))0x735D50)(color); +} + +// Converted from cdecl void SetDirectionalColours(RwRGBAReal *color) 0x735D70 +void SetDirectionalColours(RwRGBAReal* color) { + ((void(__cdecl *)(RwRGBAReal*))0x735D70)(color); +} + +// Converted from cdecl void SetLightColoursForPedsCarsAndObjects(float lighting) 0x735D90 +void SetLightColoursForPedsCarsAndObjects(float lighting) { + ((void(__cdecl *)(float))0x735D90)(lighting); +} + +// Converted from cdecl void SetLightsForInfraredVisionHeatObjects(void) 0x735E40 +void SetLightsForInfraredVisionHeatObjects() { + ((void(__cdecl *)())0x735E40)(); +} + +// Converted from cdecl void StoreAndSetLightsForInfraredVisionHeatObjects(void) 0x735E70 +void StoreAndSetLightsForInfraredVisionHeatObjects() { + ((void(__cdecl *)())0x735E70)(); +} + +// Converted from cdecl void RestoreLightsForInfraredVisionHeatObjects(void) 0x735EF0 +void RestoreLightsForInfraredVisionHeatObjects() { + ((void(__cdecl *)())0x735EF0)(); +} + +// Converted from cdecl void SetLightsForInfraredVisionDefaultObjects(void) 0x735F20 +void SetLightsForInfraredVisionDefaultObjects() { + ((void(__cdecl *)())0x735F20)(); +} + +// Converted from cdecl void SetLightsForNightVision(void) 0x735F70 +void SetLightsForNightVision() { + ((void(__cdecl *)())0x735F70)(); +} + +// Converted from cdecl RpAtomic* RemoveRefsCB(RpAtomic *atomic, void *data) 0x7226D0 +RpAtomic* RemoveRefsCB(RpAtomic* atomic, void* _IGNORED_ data) { + return plugin::CallAndReturn(atomic, data); +} + +// Converted from cdecl void RemoveRefsForAtomic(RpClump *clump) 0x7226F0 +void RemoveRefsForAtomic(RpClump* clump) { + plugin::Call<0x7226F0, RpClump*>(clump); +} + + +// Converted from cdecl CAnimBlendClumpData* RpAnimBlendAllocateData(RpClump *clump) 0x4D5F50 +CAnimBlendClumpData* RpAnimBlendAllocateData(RpClump* clump) { + return plugin::CallAndReturn(clump); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendClumpAddAssociation(RpClump *clump,CAnimBlendAssociation *association,uint flags,float startTime,float blendAmount) 0x4D6790 +CAnimBlendAssociation* RpAnimBlendClumpAddAssociation(RpClump* clump, CAnimBlendAssociation* association, unsigned int flags, float startTime, float blendAmount) { + return plugin::CallAndReturn(clump, association, flags, startTime, blendAmount); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendClumpExtractAssociations(RpClump *clump) 0x4D6BE0 +CAnimBlendAssociation* RpAnimBlendClumpExtractAssociations(RpClump* clump) { + return plugin::CallAndReturn(clump); +} + +// Converted from cdecl void RpAnimBlendClumpFillFrameArray(RpClump *clump,AnimBlendFrameData **frameData) 0x4D64A0 +void RpAnimBlendClumpFillFrameArray(RpClump* clump, AnimBlendFrameData** frameData) { + plugin::Call<0x4D64A0, RpClump*, AnimBlendFrameData**>(clump, frameData); +} + +// Converted from cdecl AnimBlendFrameData* RpAnimBlendClumpFindBone(RpClump *clump,uint id) 0x4D6400 +AnimBlendFrameData* RpAnimBlendClumpFindBone(RpClump* clump, unsigned int id) { + return plugin::CallAndReturn(clump, id); +} + +// Converted from cdecl AnimBlendFrameData* RpAnimBlendClumpFindFrame(RpClump *clump,char const*name) 0x4D62A0 +AnimBlendFrameData* RpAnimBlendClumpFindFrame(RpClump* clump, char const* name) { + return plugin::CallAndReturn(clump, name); +} + +// Converted from cdecl AnimBlendFrameData* RpAnimBlendClumpFindFrameFromHashKey(RpClump *clump,uint key) 0x4D6370 +AnimBlendFrameData* RpAnimBlendClumpFindFrameFromHashKey(RpClump* clump, unsigned int key) { + return plugin::CallAndReturn(clump, key); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendClumpGetAssociation(RpClump *clump,bool,CAnimBlendHierarchy *hierarchy) 0x4D68E0 +CAnimBlendAssociation* RpAnimBlendClumpGetAssociation(RpClump* clump, bool arg1, CAnimBlendHierarchy* hierarchy) { + return plugin::CallAndReturn(clump, arg1, hierarchy); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendClumpGetAssociation(RpClump *clump,char const*name) 0x4D6870 +CAnimBlendAssociation* RpAnimBlendClumpGetAssociation(RpClump* clump, char const* name) { + return plugin::CallAndReturn(clump, name); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendClumpGetAssociation(RpClump *clump,uint animId) 0x4D68B0 +CAnimBlendAssociation* RpAnimBlendClumpGetAssociation(RpClump* clump, unsigned int animId) { + return plugin::CallAndReturn(clump, animId); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendClumpGetFirstAssociation(RpClump *clump) 0x4D15E0 +CAnimBlendAssociation* RpAnimBlendClumpGetFirstAssociation(RpClump* clump) { + return plugin::CallAndReturn(clump); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendClumpGetFirstAssociation(RpClump *clump,uint flags) 0x4D6A70 +CAnimBlendAssociation* RpAnimBlendClumpGetFirstAssociation(RpClump* clump, unsigned int flags) { + return plugin::CallAndReturn(clump, flags); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendClumpGetMainAssociation(RpClump *clump,CAnimBlendAssociation **pAssociation,float *blendAmount) 0x4D6910 +CAnimBlendAssociation* RpAnimBlendClumpGetMainAssociation(RpClump* clump, CAnimBlendAssociation** pAssociation, float* blendAmount) { + return plugin::CallAndReturn(clump, pAssociation, blendAmount); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendClumpGetMainAssociation_N(RpClump *clump,int n) 0x4D6A30 +CAnimBlendAssociation* RpAnimBlendClumpGetMainAssociation_N(RpClump* clump, int n) { + return plugin::CallAndReturn(clump, n); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendClumpGetMainPartialAssociation(RpClump *clump) 0x4D69A0 +CAnimBlendAssociation* RpAnimBlendClumpGetMainPartialAssociation(RpClump* clump) { + return plugin::CallAndReturn(clump); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendClumpGetMainPartialAssociation_N(RpClump *clump,int n) 0x4D69F0 +CAnimBlendAssociation* RpAnimBlendClumpGetMainPartialAssociation_N(RpClump* clump, int n) { + return plugin::CallAndReturn(clump, n); +} + +// Converted from cdecl uint RpAnimBlendClumpGetNumAssociations(RpClump *clump) 0x4D6B60 +unsigned int RpAnimBlendClumpGetNumAssociations(RpClump* clump) { + return plugin::CallAndReturn(clump); +} + +// Converted from cdecl uint RpAnimBlendClumpGetNumNonPartialAssociations(RpClump *clump) 0x4D6BB0 +unsigned int RpAnimBlendClumpGetNumNonPartialAssociations(RpClump* clump) { + return plugin::CallAndReturn(clump); +} + +// Converted from cdecl uint RpAnimBlendClumpGetNumPartialAssociations(RpClump *clump) 0x4D6B80 +unsigned int RpAnimBlendClumpGetNumPartialAssociations(RpClump* clump) { + return plugin::CallAndReturn(clump); +} + +// Converted from cdecl void RpAnimBlendClumpGiveAssociations(RpClump *clump,CAnimBlendAssociation *association) 0x4D6C30 +void RpAnimBlendClumpGiveAssociations(RpClump* clump, CAnimBlendAssociation* association) { + plugin::Call<0x4D6C30, RpClump*, CAnimBlendAssociation*>(clump, association); +} + +// Converted from cdecl void RpAnimBlendClumpInit(RpClump *clump) 0x4D6720 +void RpAnimBlendClumpInit(RpClump* clump) { + plugin::Call<0x4D6720, RpClump*>(clump); +} + +// Converted from cdecl bool RpAnimBlendClumpIsInitialized(RpClump *clump) 0x4D6760 +bool RpAnimBlendClumpIsInitialized(RpClump* clump) { + return plugin::CallAndReturn(clump); +} + +// Converted from cdecl void RpAnimBlendClumpPauseAllAnimations(RpClump *clump) 0x4D6B00 +void RpAnimBlendClumpPauseAllAnimations(RpClump* clump) { + plugin::Call<0x4D6B00, RpClump*>(clump); +} + +// Converted from cdecl void RpAnimBlendClumpRemoveAllAssociations(RpClump *clump) 0x4D6C00 +void RpAnimBlendClumpRemoveAllAssociations(RpClump* clump) { + plugin::Call<0x4D6C00, RpClump*>(clump); +} + +// Converted from cdecl void RpAnimBlendClumpRemoveAssociations(RpClump *clump,uint flags) 0x4D6820 +void RpAnimBlendClumpRemoveAssociations(RpClump* clump, unsigned int flags) { + plugin::Call<0x4D6820, RpClump*, unsigned int>(clump, flags); +} + +// Converted from cdecl void RpAnimBlendClumpSetBlendDeltas(RpClump *clump,uint flags,float delta) 0x4D67E0 +void RpAnimBlendClumpSetBlendDeltas(RpClump* clump, unsigned int flags, float delta) { + plugin::Call<0x4D67E0, RpClump*, unsigned int, float>(clump, flags, delta); +} + +// Converted from cdecl void RpAnimBlendClumpUnPauseAllAnimations(RpClump *clump) 0x4D6B30 +void RpAnimBlendClumpUnPauseAllAnimations(RpClump* clump) { + plugin::Call<0x4D6B30, RpClump*>(clump); +} + +// Converted from cdecl void RpAnimBlendClumpUpdateAnimations(RpClump *clump,float step,bool onScreen) 0x4D34F0 +void RpAnimBlendClumpUpdateAnimations(RpClump* clump, float step, bool onScreen) { + plugin::Call<0x4D34F0, RpClump*, float, bool>(clump, step, onScreen); +} + +// Converted from cdecl RtAnimAnimation* RpAnimBlendCreateAnimationForHierarchy(RpHAnimHierarchy *hierarchy) 0x4D60E0 +RtAnimAnimation* RpAnimBlendCreateAnimationForHierarchy(RpHAnimHierarchy* hierarchy) { + return plugin::CallAndReturn(hierarchy); +} + +// Converted from cdecl char* RpAnimBlendFrameGetName(RwFrame *frame) 0x4D5EF0 +char* RpAnimBlendFrameGetName(RwFrame* frame) { + return plugin::CallAndReturn(frame); +} + +// Converted from cdecl void RpAnimBlendFrameSetName(RwFrame *frame,char *name) 0x4D5F00 +void RpAnimBlendFrameSetName(RwFrame* frame, char* name) { + plugin::Call<0x4D5F00, RwFrame*, char*>(frame, name); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendGetNextAssociation(CAnimBlendAssociation *association) 0x4D6AB0 +CAnimBlendAssociation* RpAnimBlendGetNextAssociation(CAnimBlendAssociation* association) { + return plugin::CallAndReturn(association); +} + +// Converted from cdecl CAnimBlendAssociation* RpAnimBlendGetNextAssociation(CAnimBlendAssociation *association,uint flags) 0x4D6AD0 +CAnimBlendAssociation* RpAnimBlendGetNextAssociation(CAnimBlendAssociation* association, unsigned int flags) { + return plugin::CallAndReturn(association, flags); +} + +// Converted from cdecl void RpAnimBlendKeyFrameInterpolate(void *voidOut,void *voidIn1,void *voidIn2,float time,void *customData) 0x4D60C0 +void RpAnimBlendKeyFrameInterpolate(void* voidOut, void* voidIn1, void* voidIn2, float time, void* customData) { + plugin::Call<0x4D60C0, void*, void*, void*, float, void*>(voidOut, voidIn1, voidIn2, time, customData); +} + +// Converted from cdecl bool RpAnimBlendPluginAttach(void) 0x4D6150 +bool RpAnimBlendPluginAttach() { + return plugin::CallAndReturn(); +} + +void AsciiToGxtChar(char const *src, char *dst) { + plugin::Call<0x718600, char const *, char *>(src, dst); +} + +// US-1.00 @ 0x005A4150 +// EU-1.00 @ 0x005A4150 +void WriteRaster(RwRaster * pRaster, char const * pszPath) { + assert(pRaster); + assert(pszPath && pszPath[0]); + plugin::Call<0x005A4150>(pRaster, pszPath); +} + +bool DoRWStuffStartOfFrame(short topRed, short topGreen, short topBlue, short bottomRed, short bottomGreen, short bottomBlue, short alpha) { + return plugin::CallAndReturn(topRed, topGreen, topBlue, bottomRed, bottomGreen, bottomBlue, alpha); +} + +void DoRWStuffEndOfFrame() { + plugin::Call<0x53D840>(); +} + +void RsCameraShowRaster(RwCamera* camera) { + plugin::Call<0x619440>(camera); +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/common.h b/third-party/plugin-sdk/plugin_sa/game_sa/common.h new file mode 100644 index 00000000..48342cf4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/common.h @@ -0,0 +1,179 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CVector.h" +#include "CEntity.h" +#include "CPlayerPed.h" +#include "CVehicle.h" +#include "CWeaponInfo.h" +#include "CAnimBlendAssociation.h" +#include "CAnimBlendClumpData.h" + +extern char *gString; // char gString[200] + +extern float &GAME_GRAVITY; // default 0.0080000004 + +// returns player coors +CVector FindPlayerCoors(int playerId); +// returns player speed +CVector const& FindPlayerSpeed(int playerId); +// returns player ped or player vehicle if he's driving +CEntity * FindPlayerEntity(int playerId); +// gets player coords +CVector const& FindPlayerCentreOfWorld(int playerId); +// gets player coords with skipping sniper shift +CVector const& FindPlayerCentreOfWorld_NoSniperShift(int playerId); +// returns player coords with skipping interior shift +CVector FindPlayerCentreOfWorld_NoInteriorShift(int playerId); +// returns player angle in radians +float FindPlayerHeading(int playerId); +// returns Z coord for active player +float FindPlayerHeight(); +// returns player ped +CPlayerPed * FindPlayerPed(int playerId = -1); +// returns player vehicle +CVehicle * FindPlayerVehicle(int playerId, bool bIncludeRemote); +// 2 players are playing +bool InTwoPlayersMode(); +// vectorsub +CVector VectorSub(CVector const& from, CVector const& what); +// matrix mul +CVector Multiply3x3(CMatrix const& matrix, CVector const& vec); +// returns player wanted +CWanted * FindPlayerWanted(int playerId); + +extern unsigned int &ClumpOffset; + +#define RpClumpGetAnimBlendClumpData(clump) (*(CAnimBlendClumpData **)(((unsigned int)(clump) + ClumpOffset))) + +AnimBlendFrameData *RpAnimBlendClumpFindFrame(RpClump *clump, char *name); + +char *MakeUpperCase(char *dest, char *src); + +// dummy function +void CreateDebugFont(); +// dummy function +void DestroyDebugFont(); +// dummy function +void ObrsPrintfString(char const* arg0, short arg1, short arg2); +// dummy function +void FlushObrsPrintfs(); +void DefinedState(); +void DefinedState2d(); +RpAtomic* GetFirstAtomicCallback(RpAtomic* atomic, void* data); +RpAtomic* GetFirstAtomic(RpClump* clump); +RpAtomic* Get2DEffectAtomicCallback(RpAtomic* atomic, void* data); +RpAtomic* Get2DEffectAtomic(RpClump* clump); +RwObject* GetFirstObjectCallback(RwObject* object, void* data); +RwObject* GetFirstObject(RwFrame* frame); +RwFrame* GetFirstFrameCallback(RwFrame* frame, void* data); +RwFrame* GetFirstChild(RwFrame* frame); +RwTexture* GetFirstTextureCallback(RwTexture* texture, void* data); +RwTexture* GetFirstTexture(RwTexDictionary* txd); +RpHAnimHierarchy* GetAnimHierarchyFromSkinClump(RpClump* clump); +RpHAnimHierarchy* GetAnimHierarchyFromFrame(RwFrame* frame); +RpHAnimHierarchy* GetAnimHierarchyFromClump(RpClump* clump); +RpAtomic* AtomicRemoveAnimFromSkinCB(RpAtomic* atomic, void* data); +bool RpAtomicConvertGeometryToTL(RpAtomic* atomic); +bool RpAtomicConvertGeometryToTS(RpAtomic* atomic); +bool RpClumpConvertGeometryToTL(RpClump* clump); +bool RpClumpConvertGeometryToTS(RpClump* clump); +RpMaterial* forceLinearFilteringMatTexturesCB(RpMaterial* material, void* data); +bool SetFilterModeOnAtomicsTextures(RpAtomic* atomic, RwTextureFilterMode filtering); +RpAtomic* forceLinearFilteringAtomicsCB(RpAtomic* atomic, void* data); +bool SetFilterModeOnClumpsTextures(RpClump* clump, RwTextureFilterMode filtering); +bool RpGeometryReplaceOldMaterialWithNewMaterial(RpGeometry* geometry, RpMaterial* oldMaterial, RpMaterial* newMaterial); +RwTexture* RwTexDictionaryFindHashNamedTexture(RwTexDictionary* txd, unsigned int hash); +RpClump* RpClumpGetBoundingSphere(RpClump* clump, RwSphere* bound, bool arg2); +void SkinGetBonePositions(RpClump* clump); +void SkinSetBonePositions(RpClump* clump); +void SkinGetBonePositionsToTable(RpClump* clump, RwV3d* table); +void SetLightsWithTimeOfDayColour(RpWorld* world); +// dummy function +void LightsEnable(int arg0); +RpWorld* LightsDestroy(RpWorld* world); +// lighting = [0.0f;1.0f] +void WorldReplaceNormalLightsWithScorched(RpWorld* world, float lighting); +void WorldReplaceScorchedLightsWithNormal(RpWorld* world); +void AddAnExtraDirectionalLight(RpWorld* world, float x, float y, float z, float red, float green, float blue); +void RemoveExtraDirectionalLights(RpWorld* world); +// lighting = [0.0f;1.0f] +void SetAmbientAndDirectionalColours(float lighting); +// lighting = [0.0f;1.0f] +void SetFlashyColours(float lighting); +// lighting = [0.0f;1.0f] +void SetFlashyColours_Mild(float lighting); +// lighting = [0.0f;1.0f], unused +void SetBrightMarkerColours(float lighting); +void ReSetAmbientAndDirectionalColours(); +void DeActivateDirectional(); +void ActivateDirectional(); +void SetAmbientColoursToIndicateRoadGroup(int arg0); +void SetFullAmbient(); +void SetAmbientColours(); +void SetAmbientColours(RwRGBAReal* color); +void SetDirectionalColours(RwRGBAReal* color); +// lighting = [0.0f;1.0f] +void SetLightColoursForPedsCarsAndObjects(float lighting); +void SetLightsForInfraredVisionHeatObjects(); +void StoreAndSetLightsForInfraredVisionHeatObjects(); +void RestoreLightsForInfraredVisionHeatObjects(); +void SetLightsForInfraredVisionDefaultObjects(); +void SetLightsForNightVision(); + +// 'data' is unused +RpAtomic* RemoveRefsCB(RpAtomic* atomic, void* _IGNORED_ data); +void RemoveRefsForAtomic(RpClump* clump); + +CAnimBlendClumpData* RpAnimBlendAllocateData(RpClump* clump); +CAnimBlendAssociation* RpAnimBlendClumpAddAssociation(RpClump* clump, CAnimBlendAssociation* association, unsigned int flags, float startTime, float blendAmount); +CAnimBlendAssociation* RpAnimBlendClumpExtractAssociations(RpClump* clump); +void RpAnimBlendClumpFillFrameArray(RpClump* clump, AnimBlendFrameData** frameData); +AnimBlendFrameData* RpAnimBlendClumpFindBone(RpClump* clump, unsigned int id); +AnimBlendFrameData* RpAnimBlendClumpFindFrame(RpClump* clump, char const* name); +AnimBlendFrameData* RpAnimBlendClumpFindFrameFromHashKey(RpClump* clump, unsigned int key); +CAnimBlendAssociation* RpAnimBlendClumpGetAssociation(RpClump* clump, bool arg1, CAnimBlendHierarchy* hierarchy); +CAnimBlendAssociation* RpAnimBlendClumpGetAssociation(RpClump* clump, char const* name); +CAnimBlendAssociation* RpAnimBlendClumpGetAssociation(RpClump* clump, unsigned int animId); +CAnimBlendAssociation* RpAnimBlendClumpGetFirstAssociation(RpClump* clump); +CAnimBlendAssociation* RpAnimBlendClumpGetFirstAssociation(RpClump* clump, unsigned int flags); +CAnimBlendAssociation* RpAnimBlendClumpGetMainAssociation(RpClump* clump, CAnimBlendAssociation** pAssociation, float* blendAmount); +CAnimBlendAssociation* RpAnimBlendClumpGetMainAssociation_N(RpClump* clump, int n); +CAnimBlendAssociation* RpAnimBlendClumpGetMainPartialAssociation(RpClump* clump); +CAnimBlendAssociation* RpAnimBlendClumpGetMainPartialAssociation_N(RpClump* clump, int n); +unsigned int RpAnimBlendClumpGetNumAssociations(RpClump* clump); +unsigned int RpAnimBlendClumpGetNumNonPartialAssociations(RpClump* clump); +unsigned int RpAnimBlendClumpGetNumPartialAssociations(RpClump* clump); +void RpAnimBlendClumpGiveAssociations(RpClump* clump, CAnimBlendAssociation* association); +void RpAnimBlendClumpInit(RpClump* clump); +bool RpAnimBlendClumpIsInitialized(RpClump* clump); +void RpAnimBlendClumpPauseAllAnimations(RpClump* clump); +void RpAnimBlendClumpRemoveAllAssociations(RpClump* clump); +void RpAnimBlendClumpRemoveAssociations(RpClump* clump, unsigned int flags); +void RpAnimBlendClumpSetBlendDeltas(RpClump* clump, unsigned int flags, float delta); +void RpAnimBlendClumpUnPauseAllAnimations(RpClump* clump); +void RpAnimBlendClumpUpdateAnimations(RpClump* clump, float step, bool onScreen); +RtAnimAnimation* RpAnimBlendCreateAnimationForHierarchy(RpHAnimHierarchy* hierarchy); +char* RpAnimBlendFrameGetName(RwFrame* frame); +void RpAnimBlendFrameSetName(RwFrame* frame, char* name); +CAnimBlendAssociation* RpAnimBlendGetNextAssociation(CAnimBlendAssociation* association); +CAnimBlendAssociation* RpAnimBlendGetNextAssociation(CAnimBlendAssociation* association, unsigned int flags); +void RpAnimBlendKeyFrameInterpolate(void* voidOut, void* voidIn1, void* voidIn2, float time, void* customData); +bool RpAnimBlendPluginAttach(); + +void AsciiToGxtChar(char const *src, char *dst); + +/** + * Writes given raster to PNG file using RtPNGImageWrite + */ +void WriteRaster(RwRaster * pRaster, char const * pszPath); + +bool DoRWStuffStartOfFrame(short topRed, short topGreen, short topBlue, short bottomRed, short bottomGreen, short bottomBlue, short alpha); +void DoRWStuffEndOfFrame(); +void RsCameraShowRaster(RwCamera* camera); + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eAnimBlendCallbackType.h b/third-party/plugin-sdk/plugin_sa/game_sa/eAnimBlendCallbackType.h new file mode 100644 index 00000000..20ffcb29 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eAnimBlendCallbackType.h @@ -0,0 +1,14 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +enum PLUGIN_API eAnimBlendCallbackType : unsigned int { + ANIMBLENDCALLBACK_FINISH = 1, + ANIMBLENDCALLBACK_DELETE = 2 +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eAnimations.h b/third-party/plugin-sdk/plugin_sa/game_sa/eAnimations.h new file mode 100644 index 00000000..a69f6ff0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eAnimations.h @@ -0,0 +1,2795 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#pragma once + +enum eAnimGroup +{ + ANIM_GROUP_DEFAULT = 0, + ANIM_GROUP_DOOR = 1, + ANIM_GROUP_BIKES = 2, + ANIM_GROUP_BIKEV = 3, + ANIM_GROUP_BIKEH = 4, + ANIM_GROUP_BIKED = 5, + ANIM_GROUP_WAYFARER = 6, + ANIM_GROUP_BMX = 7, + ANIM_GROUP_MTB = 8, + ANIM_GROUP_CHOPPA = 9, + ANIM_GROUP_QUAD = 10, + ANIM_GROUP_PYTHON = 11, + ANIM_GROUP_PYTHONBAD = 12, + ANIM_GROUP_COLT45 = 13, + ANIM_GROUP_COLT_COP = 14, + ANIM_GROUP_COLT45PRO = 15, + ANIM_GROUP_SAWNOFF = 16, + ANIM_GROUP_SAWNOFFPRO = 17, + ANIM_GROUP_SILENCED = 18, + ANIM_GROUP_SHOTGUN = 19, + ANIM_GROUP_SHOTGUNBAD = 20, + ANIM_GROUP_BUDDY = 21, + ANIM_GROUP_BUDDYBAD = 22, + ANIM_GROUP_UZI = 23, + ANIM_GROUP_UZIBAD = 24, + ANIM_GROUP_RIFLE = 25, + ANIM_GROUP_RIFLEBAD = 26, + ANIM_GROUP_SNIPER = 27, + ANIM_GROUP_GRENADE = 28, + ANIM_GROUP_FLAME = 29, + ANIM_GROUP_ROCKET = 30, + ANIM_GROUP_SPRAYCAN = 31, + ANIM_GROUP_GOGGLES = 32, + ANIM_GROUP_MELEE_1 = 33, + ANIM_GROUP_MELEE_2 = 34, + ANIM_GROUP_MELEE_3 = 35, + ANIM_GROUP_MELEE_4 = 36, + ANIM_GROUP_BBBAT_1 = 37, + ANIM_GROUP_GCLUB_1 = 38, + ANIM_GROUP_KNIFE_1 = 39, + ANIM_GROUP_SWORD_1 = 40, + ANIM_GROUP_DILDO_1 = 41, + ANIM_GROUP_FLOWERS_1 = 42, + ANIM_GROUP_CSAW_1 = 43, + ANIM_GROUP_KICK_STD = 44, + ANIM_GROUP_PISTLWHP = 45, + ANIM_GROUP_MEDIC = 46, + ANIM_GROUP_BEACH = 47, + ANIM_GROUP_SUNBATHE = 48, + ANIM_GROUP_PLAYIDLES = 49, + ANIM_GROUP_RIOT = 50, + ANIM_GROUP_STRIP = 51, + ANIM_GROUP_GANGS = 52, + ANIM_GROUP_ATTRACTORS = 53, + ANIM_GROUP_PLAYER = 54, + ANIM_GROUP_FAT = 55, + ANIM_GROUP_MUSCULAR = 56, + ANIM_GROUP_PLAYERROCKET = 57, + ANIM_GROUP_PLAYERROCKETF = 58, + ANIM_GROUP_PLAYERROCKETM = 59, + ANIM_GROUP_PLAYER2ARMED = 60, + ANIM_GROUP_PLAYER2ARMEDF = 61, + ANIM_GROUP_PLAYER2ARMEDM = 62, + ANIM_GROUP_PLAYERBBBAT = 63, + ANIM_GROUP_PLAYERBBBATF = 64, + ANIM_GROUP_PLAYERBBBATM = 65, + ANIM_GROUP_PLAYERCSAW = 66, + ANIM_GROUP_PLAYERCSAWF = 67, + ANIM_GROUP_PLAYERCSAWM = 68, + ANIM_GROUP_PLAYERSNEAK = 69, + ANIM_GROUP_PLAYERJETPACK = 70, + ANIM_GROUP_SWIM = 71, + ANIM_GROUP_DRIVEBYS = 72, + ANIM_GROUP_BIKE_DBZ = 73, + ANIM_GROUP_COP_DBZ = 74, + ANIM_GROUP_QUAD_DBZ = 75, + ANIM_GROUP_FAT_TIRED = 76, + ANIM_GROUP_HANDSIGNAL = 77, + ANIM_GROUP_HANDSIGNALL = 78, + ANIM_GROUP_LHAND = 79, + ANIM_GROUP_RHAND = 80, + ANIM_GROUP_CARRY = 81, + ANIM_GROUP_CARRY05 = 82, + ANIM_GROUP_CARRY105 = 83, + ANIM_GROUP_INT_HOUSE = 84, + ANIM_GROUP_INT_OFFICE = 85, + ANIM_GROUP_INT_SHOP = 86, + ANIM_GROUP_STEALTH_KN = 87, + ANIM_GROUP_STDCARAMIMS = 88, + ANIM_GROUP_LOWCARAMIMS = 89, + ANIM_GROUP_TRKCARANIMS = 90, + ANIM_GROUP_STDBIKEANIMS = 91, + ANIM_GROUP_SPORTBIKEANIMS = 92, + ANIM_GROUP_VESPABIKEANIMS = 93, + ANIM_GROUP_HARLEYBIKEANIMS = 94, + ANIM_GROUP_DIRTBIKEANIMS = 95, + ANIM_GROUP_WAYFBIKEANIMS = 96, + ANIM_GROUP_BMXBIKEANIMS = 97, + ANIM_GROUP_MTBBIKEANIMS = 98, + ANIM_GROUP_CHOPPABIKEANIMS = 99, + ANIM_GROUP_QUADBIKEANIMS = 100, + ANIM_GROUP_VANCARANIMS = 101, + ANIM_GROUP_RUSTPLANEANIMS = 102, + ANIM_GROUP_COACHCARANIMS = 103, + ANIM_GROUP_BUSCARANIMS = 104, + ANIM_GROUP_DOZERCARANIMS = 105, + ANIM_GROUP_KARTCARANIMS = 106, + ANIM_GROUP_CONVCARANIMS = 107, + ANIM_GROUP_MTRKCARANIMS = 108, + ANIM_GROUP_TRAINCARRANIMS = 109, + ANIM_GROUP_STDTALLCARAMIMS = 110, + ANIM_GROUP_HOVERCARANIMS = 111, + ANIM_GROUP_TANKCARANIMS = 112, + ANIM_GROUP_BFINJCARAMIMS = 113, + ANIM_GROUP_LEARPLANEANIMS = 114, + ANIM_GROUP_HARRPLANEANIMS = 115, + ANIM_GROUP_STDCARUPRIGHT = 116, + ANIM_GROUP_NVADAPLANEANIMS = 117, + ANIM_GROUP_MAN = 118, + ANIM_GROUP_SHUFFLE = 119, + ANIM_GROUP_OLDMAN = 120, + ANIM_GROUP_GANG1 = 121, + ANIM_GROUP_GANG2 = 122, + ANIM_GROUP_OLDFATMAN = 123, + ANIM_GROUP_FATMAN = 124, + ANIM_GROUP_JOGGER = 125, + ANIM_GROUP_DRUNKMAN = 126, + ANIM_GROUP_BLINDMAN = 127, + ANIM_GROUP_SWAT = 128, + ANIM_GROUP_WOMAN = 129, + ANIM_GROUP_SHOPPING = 130, + ANIM_GROUP_BUSYWOMAN = 131, + ANIM_GROUP_SEXYWOMAN = 132, + ANIM_GROUP_PRO = 133, + ANIM_GROUP_OLDWOMAN = 134, + ANIM_GROUP_FATWOMAN = 135, + ANIM_GROUP_JOGWOMAN = 136, + ANIM_GROUP_OLDFATWOMAN = 137, + ANIM_GROUP_SKATE = 138, +}; + + + +// [GROUP] i = 0 | GroupName : default | Group ID: 0 | Total Animations: 191 +enum edefaultAnimGroup +{ + ANIM_DEFAULT_WALK_CIVI = 0, + ANIM_DEFAULT_RUN_CIVI = 1, + ANIM_DEFAULT_SPRINT_PANIC = 2, + ANIM_DEFAULT_IDLE_STANCE = 3, + ANIM_DEFAULT_ROADCROSS = 4, + ANIM_DEFAULT_WALK_START = 5, + ANIM_DEFAULT_RUN_STOP = 6, + ANIM_DEFAULT_RUN_STOPR = 7, + ANIM_DEFAULT_IDLE_HBHB_0 = 8, + ANIM_DEFAULT_IDLE_HBHB_1 = 9, + ANIM_DEFAULT_IDLE_TIRED = 10, + ANIM_DEFAULT_IDLE_ARMED = 11, + ANIM_DEFAULT_IDLE_CHAT = 12, + ANIM_DEFAULT_IDLE_TAXI = 13, + ANIM_DEFAULT_SWIM_TREAD = 14, + ANIM_DEFAULT_KO_SHOT_FRONT_0 = 15, + ANIM_DEFAULT_KO_SHOT_FRONT_1 = 16, + ANIM_DEFAULT_KO_SHOT_FRONT_2 = 17, + ANIM_DEFAULT_KO_SHOT_FRONT_3 = 18, + ANIM_DEFAULT_KO_SHOT_FACE = 19, + ANIM_DEFAULT_KO_SHOT_STOM = 20, + ANIM_DEFAULT_GAS_CWR = 21, + ANIM_DEFAULT_KD_LEFT = 22, + ANIM_DEFAULT_KD_RIGHT = 23, + ANIM_DEFAULT_KO_SKID_FRONT = 24, + ANIM_DEFAULT_KO_SPIN_R = 25, + ANIM_DEFAULT_KO_SKID_BACK = 26, + ANIM_DEFAULT_KO_SPIN_L = 27, + ANIM_DEFAULT_SHOT_PARTIAL = 28, + ANIM_DEFAULT_SHOT_LEFTP = 29, + ANIM_DEFAULT_SHOT_PARTIAL_B = 30, + ANIM_DEFAULT_SHOT_RIGHTP = 31, + ANIM_DEFAULT_HIT_FRONT = 32, + ANIM_DEFAULT_HIT_L = 33, + ANIM_DEFAULT_HIT_BACK = 34, + ANIM_DEFAULT_HIT_R = 35, + ANIM_DEFAULT_FLOOR_HIT = 36, + ANIM_DEFAULT_HIT_WALK = 37, + ANIM_DEFAULT_HIT_WALL = 38, + ANIM_DEFAULT_FLOOR_HIT_F = 39, + ANIM_DEFAULT_HIT_BEHIND = 40, + ANIM_DEFAULT_FIGHTSH_FWD = 41, + ANIM_DEFAULT_FIGHTSH_LEFT = 42, + ANIM_DEFAULT_FIGHTSH_BWD = 43, + ANIM_DEFAULT_FIGHTSH_RIGHT = 44, + ANIM_DEFAULT_FIGHTSHF = 45, + ANIM_DEFAULT_FIGHTSHB = 46, + ANIM_DEFAULT_FIGHT2IDLE = 47, + ANIM_DEFAULT_BOMBER = 48, + ANIM_DEFAULT_GUN_STAND = 49, + ANIM_DEFAULT_GUNMOVE_FWD = 50, + ANIM_DEFAULT_GUNMOVE_L = 51, + ANIM_DEFAULT_GUNMOVE_BWD = 52, + ANIM_DEFAULT_GUNMOVE_R = 53, + ANIM_DEFAULT_GUN_2_IDLE = 54, + ANIM_DEFAULT_WEAPON_CROUCH = 55, + ANIM_DEFAULT_GUNCROUCHFWD = 56, + ANIM_DEFAULT_CROUCH_ROLL_L = 57, + ANIM_DEFAULT_GUNCROUCHBWD = 58, + ANIM_DEFAULT_CROUCH_ROLL_R = 59, + ANIM_DEFAULT_CAR_SIT = 60, + ANIM_DEFAULT_CAR_LSIT = 61, + ANIM_DEFAULT_CAR_SIT_WEAK = 62, + ANIM_DEFAULT_CAR_SIT_PRO = 63, + ANIM_DEFAULT_CAR_SITP = 64, + ANIM_DEFAULT_CAR_SITPLO = 65, + ANIM_DEFAULT_DRIVE_L = 66, + ANIM_DEFAULT_DRIVE_R = 67, + ANIM_DEFAULT_DRIVE_LO_L = 68, + ANIM_DEFAULT_DRIVE_LO_R = 69, + ANIM_DEFAULT_DRIVE_L_WEAK = 70, + ANIM_DEFAULT_DRIVE_R_WEAK = 71, + ANIM_DEFAULT_DRIVE_L_PRO = 72, + ANIM_DEFAULT_DRIVE_R_PRO = 73, + ANIM_DEFAULT_DRIVEBY_L = 74, + ANIM_DEFAULT_DRIVEBY_R = 75, + ANIM_DEFAULT_DRIVEBYL_L = 76, + ANIM_DEFAULT_DRIVEBYL_R = 77, + ANIM_DEFAULT_CAR_LB = 78, + ANIM_DEFAULT_CAR_LB_WEAK = 79, + ANIM_DEFAULT_CAR_LB_PRO = 80, + ANIM_DEFAULT_DRIVE_BOAT = 81, + ANIM_DEFAULT_DRIVE_BOAT_L = 82, + ANIM_DEFAULT_DRIVE_BOAT_R = 83, + ANIM_DEFAULT_DRIVE_BOAT_BACK = 84, + ANIM_DEFAULT_DRIVE_L_SLOW = 85, + ANIM_DEFAULT_DRIVE_R_SLOW = 86, + ANIM_DEFAULT_DRIVE_L_WEAK_SLOW = 87, + ANIM_DEFAULT_DRIVE_R_WEAK_SLOW = 88, + ANIM_DEFAULT_DRIVE_L_PRO_SLOW = 89, + ANIM_DEFAULT_DRIVE_R_PRO_SLOW = 90, + ANIM_DEFAULT_DRIVE_TRUCK = 91, + ANIM_DEFAULT_DRIVE_TRUCK_L = 92, + ANIM_DEFAULT_DRIVE_TRUCK_R = 93, + ANIM_DEFAULT_DRIVE_TRUCK_BACK = 94, + ANIM_DEFAULT_KART_DRIVE = 95, + ANIM_DEFAULT_KART_L = 96, + ANIM_DEFAULT_KART_R = 97, + ANIM_DEFAULT_KART_LB = 98, + ANIM_DEFAULT_BIKE_PICKUPR = 99, + ANIM_DEFAULT_BIKE_PICKUPL = 100, + ANIM_DEFAULT_BIKE_PULLUPR = 101, + ANIM_DEFAULT_BIKE_PULLUPL = 102, + ANIM_DEFAULT_BIKE_ELBOWL = 103, + ANIM_DEFAULT_BIKE_ELBOWR = 104, + ANIM_DEFAULT_BIKE_FALL_OFF = 105, + ANIM_DEFAULT_BIKE_FALLR = 106, + ANIM_DEFAULT_CAR_HOOKERTALK = 107, + ANIM_DEFAULT_CAR_CRAWLOUTRHS_0 = 108, + ANIM_DEFAULT_CAR_CRAWLOUTRHS_1 = 109, + ANIM_DEFAULT_CAR_ROLLOUT_LHS = 110, + ANIM_DEFAULT_CAR_ROLLOUT_RHS = 111, + ANIM_DEFAULT_GETUP_0 = 112, + ANIM_DEFAULT_GETUP_1 = 113, + ANIM_DEFAULT_GETUP_2 = 114, + ANIM_DEFAULT_GETUP_FRONT = 115, + ANIM_DEFAULT_JUMP_LAUNCH = 116, + ANIM_DEFAULT_JUMP_LAUNCH_R = 117, + ANIM_DEFAULT_JUMP_GLIDE = 118, + ANIM_DEFAULT_JUMP_LAND = 119, + ANIM_DEFAULT_FALL_FALL = 120, + ANIM_DEFAULT_FALL_GLIDE = 121, + ANIM_DEFAULT_FALL_LAND = 122, + ANIM_DEFAULT_FALL_COLLAPSE = 123, + ANIM_DEFAULT_FALL_BACK = 124, + ANIM_DEFAULT_FALL_FRONT = 125, + ANIM_DEFAULT_EV_STEP = 126, + ANIM_DEFAULT_EV_DIVE = 127, + ANIM_DEFAULT_CLIMB_JUMP = 128, + ANIM_DEFAULT_CLIMB_IDLE = 129, + ANIM_DEFAULT_CLIMB_PULL = 130, + ANIM_DEFAULT_CLIMB_STAND = 131, + ANIM_DEFAULT_CLIMB_STAND_FINISH = 132, + ANIM_DEFAULT_CLIMB_JUMP_B = 133, + ANIM_DEFAULT_CLIMB_JUMP2FALL = 134, + ANIM_DEFAULT_XPRESSSCRATCH = 135, + ANIM_DEFAULT_TURN_180 = 136, + ANIM_DEFAULT_TURN_L = 137, + ANIM_DEFAULT_TURN_R = 138, + ANIM_DEFAULT_ARRESTGUN = 139, + ANIM_DEFAULT_DROWN = 140, + ANIM_DEFAULT_DUCK_COWER = 141, + ANIM_DEFAULT_HANDSUP = 142, + ANIM_DEFAULT_HANDSCOWER = 143, + ANIM_DEFAULT_FUCKU = 144, + ANIM_DEFAULT_PHONE_IN = 145, + ANIM_DEFAULT_PHONE_OUT = 146, + ANIM_DEFAULT_PHONE_TALK = 147, + ANIM_DEFAULT_SEAT_DOWN = 148, + ANIM_DEFAULT_SEAT_UP = 149, + ANIM_DEFAULT_SEAT_IDLE = 150, + ANIM_DEFAULT_ATM = 151, + ANIM_DEFAULT_ABSEIL = 152, + ANIM_DEFAULT_WALK_DOORPARTIAL = 153, + ANIM_DEFAULT_FACSURP = 154, + ANIM_DEFAULT_FACSURPM = 155, + ANIM_DEFAULT_FACURIOS = 156, + ANIM_DEFAULT_FACANGER_0 = 157, + ANIM_DEFAULT_FACANGER_1 = 158, + ANIM_DEFAULT_FACANGER_2 = 159, + ANIM_DEFAULT_FACTALK = 160, + ANIM_DEFAULT_FACGUM = 161, + ANIM_DEFAULT_TAP_HAND = 162, + ANIM_DEFAULT_TAP_HANDP = 163, + ANIM_DEFAULT_SHOVE_PARTIAL = 164, + ANIM_DEFAULT_FLEE_LKAROUND_01 = 165, + ANIM_DEFAULT_ENDCHAT_01 = 166, + ANIM_DEFAULT_ENDCHAT_02 = 167, + ANIM_DEFAULT_ENDCHAT_03 = 168, + ANIM_DEFAULT_SMOKE_IN_CAR = 169, + ANIM_DEFAULT_PASS_SMOKE_IN_CAR = 170, + ANIM_DEFAULT_DAM_ARML_FRMBK = 171, + ANIM_DEFAULT_DAM_ARML_FRMFT = 172, + ANIM_DEFAULT_DAM_ARML_FRMLT = 173, + ANIM_DEFAULT_DAM_ARMR_FRMBK = 174, + ANIM_DEFAULT_DAM_ARMR_FRMFT = 175, + ANIM_DEFAULT_DAM_ARMR_FRMRT = 176, + ANIM_DEFAULT_DAM_LEGL_FRMBK = 177, + ANIM_DEFAULT_DAM_LEGL_FRMFT = 178, + ANIM_DEFAULT_DAM_LEGL_FRMLT = 179, + ANIM_DEFAULT_DAM_LEGR_FRMBK = 180, + ANIM_DEFAULT_DAM_LEGR_FRMFT = 181, + ANIM_DEFAULT_DAM_LEGR_FRMRT = 182, + ANIM_DEFAULT_DAM_STOMACH_FRMBK = 183, + ANIM_DEFAULT_DAM_STOMACH_FRMFT = 184, + ANIM_DEFAULT_DAM_STOMACH_FRMLT = 185, + ANIM_DEFAULT_DAM_STOMACH_FRMRT = 186, + ANIM_DEFAULT_CAR_DEAD_LHS = 187, + ANIM_DEFAULT_CAR_DEAD_RHS = 188, + ANIM_DEFAULT_CAR_TUNE_RADIO = 189, + ANIM_DEFAULT_GANG_GUNSTAND = 190, +}; +// [GROUP] i = 1 | GroupName : door | Group ID: 1 | Total Animations: 2 +enum edoorAnimGroup +{ + ANIM_DOOR_DOOR_LHINGE_O = 192, + ANIM_DOOR_DOOR_RHINGE_O = 193, +}; +// [GROUP] i = 2 | GroupName : bikes | Group ID: 2 | Total Animations: 12 +enum ebikesAnimGroup +{ + ANIM_BIKES_BIKES_RIDE = 194, + ANIM_BIKES_BIKES_STILL = 195, + ANIM_BIKES_BIKES_LEFT = 196, + ANIM_BIKES_BIKES_RIGHT = 197, + ANIM_BIKES_BIKES_BACK = 198, + ANIM_BIKES_BIKES_FWD = 199, + ANIM_BIKES_BIKES_PUSHES = 200, + ANIM_BIKES_BIKES_HIT = 201, + ANIM_BIKES_BIKES_DRIVEBYLHS = 202, + ANIM_BIKES_BIKES_DRIVEBYRHS = 203, + ANIM_BIKES_BIKES_DRIVEBYFT = 204, + ANIM_BIKES_BIKES_PASSENGER = 205, +}; +// [GROUP] i = 3 | GroupName : bikev | Group ID: 3 | Total Animations: 12 +enum ebikevAnimGroup +{ + ANIM_BIKEV_BIKEV_RIDE = 194, + ANIM_BIKEV_BIKEV_STILL = 195, + ANIM_BIKEV_BIKEV_LEFT = 196, + ANIM_BIKEV_BIKEV_RIGHT = 197, + ANIM_BIKEV_BIKEV_BACK = 198, + ANIM_BIKEV_BIKEV_FWD = 199, + ANIM_BIKEV_BIKEV_PUSHES = 200, + ANIM_BIKEV_BIKEV_HIT = 201, + ANIM_BIKEV_BIKEV_DRIVEBYLHS = 202, + ANIM_BIKEV_BIKEV_DRIVEBYRHS = 203, + ANIM_BIKEV_BIKEV_DRIVEBYFT = 204, + ANIM_BIKEV_BIKEV_PASSENGER = 205, +}; +// [GROUP] i = 4 | GroupName : bikeh | Group ID: 4 | Total Animations: 12 +enum ebikehAnimGroup +{ + ANIM_BIKEH_BIKEH_RIDE = 194, + ANIM_BIKEH_BIKEH_STILL = 195, + ANIM_BIKEH_BIKEH_LEFT = 196, + ANIM_BIKEH_BIKEH_RIGHT = 197, + ANIM_BIKEH_BIKEH_BACK = 198, + ANIM_BIKEH_BIKEH_FWD = 199, + ANIM_BIKEH_BIKEH_PUSHES = 200, + ANIM_BIKEH_BIKEH_HIT = 201, + ANIM_BIKEH_BIKEH_DRIVEBYLHS = 202, + ANIM_BIKEH_BIKEH_DRIVEBYRHS = 203, + ANIM_BIKEH_BIKEH_DRIVEBYFT = 204, + ANIM_BIKEH_BIKEH_PASSENGER = 205, +}; +// [GROUP] i = 5 | GroupName : biked | Group ID: 5 | Total Animations: 12 +enum ebikedAnimGroup +{ + ANIM_BIKED_BIKED_RIDE = 194, + ANIM_BIKED_BIKED_STILL = 195, + ANIM_BIKED_BIKED_LEFT = 196, + ANIM_BIKED_BIKED_RIGHT = 197, + ANIM_BIKED_BIKED_BACK = 198, + ANIM_BIKED_BIKED_FWD = 199, + ANIM_BIKED_BIKED_PUSHES = 200, + ANIM_BIKED_BIKED_HIT = 201, + ANIM_BIKED_BIKED_DRIVEBYLHS = 202, + ANIM_BIKED_BIKED_DRIVEBYRHS = 203, + ANIM_BIKED_BIKED_DRIVEBYFT = 204, + ANIM_BIKED_BIKED_PASSENGER = 205, +}; +// [GROUP] i = 6 | GroupName : wayfarer | Group ID: 6 | Total Animations: 12 +enum ewayfarerAnimGroup +{ + ANIM_WAYFARER_WF_RIDE = 194, + ANIM_WAYFARER_WF_STILL = 195, + ANIM_WAYFARER_WF_LEFT = 196, + ANIM_WAYFARER_WF_RIGHT = 197, + ANIM_WAYFARER_WF_BACK = 198, + ANIM_WAYFARER_WF_FWD = 199, + ANIM_WAYFARER_WF_PUSHES = 200, + ANIM_WAYFARER_WF_HIT = 201, + ANIM_WAYFARER_WF_DRIVEBYLHS = 202, + ANIM_WAYFARER_WF_DRIVEBYRHS = 203, + ANIM_WAYFARER_WF_DRIVEBYFT = 204, + ANIM_WAYFARER_WF_PASSENGER = 205, +}; +// [GROUP] i = 7 | GroupName : bmx | Group ID: 7 | Total Animations: 15 +enum ebmxAnimGroup +{ + ANIM_BMX_BMX_RIDE_0 = 194, + ANIM_BMX_BMX_STILL_0 = 195, + ANIM_BMX_BMX_LEFT = 196, + ANIM_BMX_BMX_RIGHT = 197, + ANIM_BMX_BMX_BACK = 198, + ANIM_BMX_BMX_FWD = 199, + ANIM_BMX_BMX_PUSHES = 200, + ANIM_BMX_BMX_STILL_1 = 201, + ANIM_BMX_BMX_DRIVEBY_LHS = 202, + ANIM_BMX_BMX_DRIVEBY_RHS = 203, + ANIM_BMX_BMX_DRIVEBYFT = 204, + ANIM_BMX_BMX_RIDE_1 = 205, + ANIM_BMX_BMX_BUNNYHOP = 206, + ANIM_BMX_BMX_PEDAL = 207, + ANIM_BMX_BMX_SPRINT = 208, +}; +// [GROUP] i = 8 | GroupName : mtb | Group ID: 8 | Total Animations: 15 +enum emtbAnimGroup +{ + ANIM_MTB_MTB_RIDE_0 = 194, + ANIM_MTB_MTB_STILL_0 = 195, + ANIM_MTB_MTB_LEFT = 196, + ANIM_MTB_MTB_RIGHT = 197, + ANIM_MTB_MTB_BACK = 198, + ANIM_MTB_MTB_FWD = 199, + ANIM_MTB_MTB_PUSHES = 200, + ANIM_MTB_MTB_STILL_1 = 201, + ANIM_MTB_MTB_DRIVEBY_LHS = 202, + ANIM_MTB_MTB_DRIVEBY_RHS = 203, + ANIM_MTB_MTB_DRIVEBYFT = 204, + ANIM_MTB_MTB_RIDE_1 = 205, + ANIM_MTB_MTB_BUNNYHOP = 206, + ANIM_MTB_MTB_PEDAL = 207, + ANIM_MTB_MTB_SPRINT = 208, +}; +// [GROUP] i = 9 | GroupName : choppa | Group ID: 9 | Total Animations: 15 +enum echoppaAnimGroup +{ + ANIM_CHOPPA_CHOPPA_RIDE_0 = 194, + ANIM_CHOPPA_CHOPPA_STILL_0 = 195, + ANIM_CHOPPA_CHOPPA_LEFT = 196, + ANIM_CHOPPA_CHOPPA_RIGHT = 197, + ANIM_CHOPPA_CHOPPA_BACK = 198, + ANIM_CHOPPA_CHOPPA_FWD = 199, + ANIM_CHOPPA_CHOPPA_PUSHES = 200, + ANIM_CHOPPA_CHOPPA_STILL_1 = 201, + ANIM_CHOPPA_CHOPPA_DRIVEBY_LHS = 202, + ANIM_CHOPPA_CHOPPA_DRIVEBY_RHS = 203, + ANIM_CHOPPA_CHOPPA_DRIVEBYFT = 204, + ANIM_CHOPPA_CHOPPA_RIDE_1 = 205, + ANIM_CHOPPA_CHOPPA_BUNNYHOP = 206, + ANIM_CHOPPA_CHOPPA_PEDAL = 207, + ANIM_CHOPPA_CHOPPA_SPRINT = 208, +}; +// [GROUP] i = 10 | GroupName : quad | Group ID: 10 | Total Animations: 12 +enum equadAnimGroup +{ + ANIM_QUAD_QUAD_RIDE_0 = 194, + ANIM_QUAD_QUAD_RIDE_1 = 195, + ANIM_QUAD_QUAD_LEFT = 196, + ANIM_QUAD_QUAD_RIGHT = 197, + ANIM_QUAD_QUAD_BACK = 198, + ANIM_QUAD_QUAD_FWD = 199, + ANIM_QUAD_QUAD_REVERSE = 200, + ANIM_QUAD_QUAD_RIDE_2 = 201, + ANIM_QUAD_QUAD_DRIVEBY_LHS = 202, + ANIM_QUAD_QUAD_DRIVEBY_RHS = 203, + ANIM_QUAD_QUAD_DRIVEBY_FT = 204, + ANIM_QUAD_QUAD_PASSENGER = 205, +}; +// [GROUP] i = 11 | GroupName : python | Group ID: 11 | Total Animations: 4 +enum epythonAnimGroup +{ + ANIM_PYTHON_PYTHON_FIRE = 224, + ANIM_PYTHON_PYTHON_CROUCHFIRE = 225, + ANIM_PYTHON_PYTHON_RELOAD = 226, + ANIM_PYTHON_PYTHON_CROUCHRELOAD = 227, +}; +// [GROUP] i = 12 | GroupName : pythonbad | Group ID: 12 | Total Animations: 4 +enum epythonbadAnimGroup +{ + ANIM_PYTHONBAD_PYTHON_FIRE_POOR = 224, + ANIM_PYTHONBAD_PYTHON_CROUCHFIRE = 225, + ANIM_PYTHONBAD_PYTHON_RELOAD = 226, + ANIM_PYTHONBAD_PYTHON_CROUCHRELOAD = 227, +}; +// [GROUP] i = 13 | GroupName : colt45 | Group ID: 13 | Total Animations: 4 +enum ecolt45AnimGroup +{ + ANIM_COLT45_COLT45_FIRE = 224, + ANIM_COLT45_COLT45_CROUCHFIRE = 225, + ANIM_COLT45_COLT45_RELOAD = 226, + ANIM_COLT45_COLT45_CROUCHRELOAD = 227, +}; +// [GROUP] i = 14 | GroupName : colt_cop | Group ID: 14 | Total Animations: 4 +enum ecolt_copAnimGroup +{ + ANIM_COLT_COP_COLT45_FIRE_2HANDS = 224, + ANIM_COLT_COP_COLT45_CROUCHFIRE = 225, + ANIM_COLT_COP_COLT45_RELOAD = 226, + ANIM_COLT_COP_COLT45_CROUCHRELOAD = 227, +}; +// [GROUP] i = 15 | GroupName : colt45pro | Group ID: 15 | Total Animations: 4 +enum ecolt45proAnimGroup +{ + ANIM_COLT45PRO_COLT45_FIRE = 224, + ANIM_COLT45PRO_2GUNS_CROUCHFIRE = 225, + ANIM_COLT45PRO_COLT45_RELOAD = 226, + ANIM_COLT45PRO_COLT45_CROUCHRELOAD = 227, +}; +// [GROUP] i = 16 | GroupName : sawnoff | Group ID: 16 | Total Animations: 4 +enum esawnoffAnimGroup +{ + ANIM_SAWNOFF_COLT45_FIRE = 224, + ANIM_SAWNOFF_COLT45_CROUCHFIRE = 225, + ANIM_SAWNOFF_SAWNOFF_RELOAD = 226, + ANIM_SAWNOFF_COLT45_CROUCHRELOAD = 227, +}; +// [GROUP] i = 17 | GroupName : sawnoffpro | Group ID: 17 | Total Animations: 4 +enum esawnoffproAnimGroup +{ + ANIM_SAWNOFFPRO_COLT45_FIRE = 224, + ANIM_SAWNOFFPRO_2GUNS_CROUCHFIRE = 225, + ANIM_SAWNOFFPRO_SAWNOFF_RELOAD = 226, + ANIM_SAWNOFFPRO_COLT45_CROUCHRELOAD = 227, +}; +// [GROUP] i = 18 | GroupName : silenced | Group ID: 18 | Total Animations: 4 +enum esilencedAnimGroup +{ + ANIM_SILENCED_SILENCE_FIRE = 224, + ANIM_SILENCED_SILENCECROUCHFIRE = 225, + ANIM_SILENCED_SILENCE_RELOAD = 226, + ANIM_SILENCED_CROUCHRELOAD = 227, +}; +// [GROUP] i = 19 | GroupName : shotgun | Group ID: 19 | Total Animations: 2 +enum eshotgunAnimGroup +{ + ANIM_SHOTGUN_SHOTGUN_FIRE = 224, + ANIM_SHOTGUN_SHOTGUN_CROUCHFIRE = 225, +}; +// [GROUP] i = 20 | GroupName : shotgunbad | Group ID: 20 | Total Animations: 2 +enum eshotgunbadAnimGroup +{ + ANIM_SHOTGUNBAD_SHOTGUN_FIRE_POOR = 224, + ANIM_SHOTGUNBAD_SHOTGUN_CROUCHFIRE = 225, +}; +// [GROUP] i = 21 | GroupName : buddy | Group ID: 21 | Total Animations: 4 +enum ebuddyAnimGroup +{ + ANIM_BUDDY_BUDDY_FIRE = 224, + ANIM_BUDDY_BUDDY_CROUCHFIRE = 225, + ANIM_BUDDY_BUDDY_RELOAD = 226, + ANIM_BUDDY_BUDDY_CROUCHRELOAD = 227, +}; +// [GROUP] i = 22 | GroupName : buddybad | Group ID: 22 | Total Animations: 4 +enum ebuddybadAnimGroup +{ + ANIM_BUDDYBAD_BUDDY_FIRE_POOR = 224, + ANIM_BUDDYBAD_BUDDY_CROUCHFIRE = 225, + ANIM_BUDDYBAD_BUDDY_RELOAD = 226, + ANIM_BUDDYBAD_BUDDY_CROUCHRELOAD = 227, +}; +// [GROUP] i = 23 | GroupName : uzi | Group ID: 23 | Total Animations: 4 +enum euziAnimGroup +{ + ANIM_UZI_UZI_FIRE = 224, + ANIM_UZI_UZI_CROUCHFIRE = 225, + ANIM_UZI_UZI_RELOAD = 226, + ANIM_UZI_UZI_CROUCHRELOAD = 227, +}; +// [GROUP] i = 24 | GroupName : uzibad | Group ID: 24 | Total Animations: 4 +enum euzibadAnimGroup +{ + ANIM_UZIBAD_UZI_FIRE_POOR = 224, + ANIM_UZIBAD_UZI_CROUCHFIRE = 225, + ANIM_UZIBAD_UZI_RELOAD = 226, + ANIM_UZIBAD_UZI_CROUCHRELOAD = 227, +}; +// [GROUP] i = 25 | GroupName : rifle | Group ID: 25 | Total Animations: 4 +enum erifleAnimGroup +{ + ANIM_RIFLE_RIFLE_FIRE = 224, + ANIM_RIFLE_RIFLE_CROUCHFIRE = 225, + ANIM_RIFLE_RIFLE_LOAD = 226, + ANIM_RIFLE_RIFLE_CROUCHLOAD = 227, +}; +// [GROUP] i = 26 | GroupName : riflebad | Group ID: 26 | Total Animations: 4 +enum eriflebadAnimGroup +{ + ANIM_RIFLEBAD_RIFLE_FIRE_POOR = 224, + ANIM_RIFLEBAD_RIFLE_CROUCHFIRE = 225, + ANIM_RIFLEBAD_RIFLE_LOAD = 226, + ANIM_RIFLEBAD_RIFLE_CROUCHLOAD = 227, +}; +// [GROUP] i = 27 | GroupName : sniper | Group ID: 27 | Total Animations: 4 +enum esniperAnimGroup +{ + ANIM_SNIPER_RIFLE_FIRE = 224, + ANIM_SNIPER_RIFLE_CROUCHFIRE = 225, + ANIM_SNIPER_RIFLE_LOAD = 226, + ANIM_SNIPER_RIFLE_CROUCHLOAD = 227, +}; +// [GROUP] i = 28 | GroupName : grenade | Group ID: 28 | Total Animations: 3 +enum egrenadeAnimGroup +{ + ANIM_GRENADE_WEAPON_START_THROW = 228, + ANIM_GRENADE_WEAPON_THROWU = 229, + ANIM_GRENADE_WEAPON_THROW = 230, +}; +// [GROUP] i = 29 | GroupName : flame | Group ID: 29 | Total Animations: 1 +enum eflameAnimGroup +{ + ANIM_FLAME_FLAME_FIRE = 224, +}; +// [GROUP] i = 30 | GroupName : rocket | Group ID: 30 | Total Animations: 1 +enum erocketAnimGroup +{ + ANIM_ROCKET_ROCKETFIRE = 224, +}; +// [GROUP] i = 31 | GroupName : spraycan | Group ID: 31 | Total Animations: 1 +enum espraycanAnimGroup +{ + ANIM_SPRAYCAN_SPRAYCAN_FIRE = 224, +}; +// [GROUP] i = 32 | GroupName : goggles | Group ID: 32 | Total Animations: 1 +enum egogglesAnimGroup +{ + ANIM_GOGGLES_GOGGLES_PUT_ON = 224, +}; +// [GROUP] i = 33 | GroupName : melee_1 | Group ID: 33 | Total Animations: 10 +enum emelee_1AnimGroup +{ + ANIM_MELEE_1_FIGHTA_1 = 214, + ANIM_MELEE_1_FIGHTA_2 = 215, + ANIM_MELEE_1_FIGHTA_3 = 216, + ANIM_MELEE_1_FIGHTA_G = 217, + ANIM_MELEE_1_FIGHTA_M = 218, + ANIM_MELEE_1_HITA_1 = 219, + ANIM_MELEE_1_HITA_2 = 220, + ANIM_MELEE_1_HITA_3 = 221, + ANIM_MELEE_1_FIGHTA_BLOCK = 222, + ANIM_MELEE_1_FIGHTIDLE = 223, +}; +// [GROUP] i = 34 | GroupName : melee_2 | Group ID: 34 | Total Animations: 10 +enum emelee_2AnimGroup +{ + ANIM_MELEE_2_FIGHTB_1 = 214, + ANIM_MELEE_2_FIGHTB_2 = 215, + ANIM_MELEE_2_FIGHTB_3 = 216, + ANIM_MELEE_2_FIGHTB_G = 217, + ANIM_MELEE_2_FIGHTB_M = 218, + ANIM_MELEE_2_HITB_1 = 219, + ANIM_MELEE_2_HITB_2 = 220, + ANIM_MELEE_2_HITB_3 = 221, + ANIM_MELEE_2_FIGHTB_BLOCK = 222, + ANIM_MELEE_2_FIGHTB_IDLE = 223, +}; +// [GROUP] i = 35 | GroupName : melee_3 | Group ID: 35 | Total Animations: 10 +enum emelee_3AnimGroup +{ + ANIM_MELEE_3_FIGHTC_1 = 214, + ANIM_MELEE_3_FIGHTC_2 = 215, + ANIM_MELEE_3_FIGHTC_3 = 216, + ANIM_MELEE_3_FIGHTC_G = 217, + ANIM_MELEE_3_FIGHTC_M = 218, + ANIM_MELEE_3_HITC_1 = 219, + ANIM_MELEE_3_HITC_2 = 220, + ANIM_MELEE_3_HITC_3 = 221, + ANIM_MELEE_3_FIGHTC_BLOCK = 222, + ANIM_MELEE_3_FIGHTC_IDLE = 223, +}; +// [GROUP] i = 36 | GroupName : melee_4 | Group ID: 36 | Total Animations: 10 +enum emelee_4AnimGroup +{ + ANIM_MELEE_4_FIGHTD_1 = 214, + ANIM_MELEE_4_FIGHTD_2 = 215, + ANIM_MELEE_4_FIGHTD_3 = 216, + ANIM_MELEE_4_FIGHTD_G = 217, + ANIM_MELEE_4_FIGHTD_M = 218, + ANIM_MELEE_4_HITD_1 = 219, + ANIM_MELEE_4_HITD_2 = 220, + ANIM_MELEE_4_HITD_3 = 221, + ANIM_MELEE_4_FIGHTD_BLOCK = 222, + ANIM_MELEE_4_FIGHTD_IDLE = 223, +}; +// [GROUP] i = 37 | GroupName : bbbat_1 | Group ID: 37 | Total Animations: 10 +enum ebbbat_1AnimGroup +{ + ANIM_BBBAT_1_BAT_1 = 214, + ANIM_BBBAT_1_BAT_2 = 215, + ANIM_BBBAT_1_BAT_3 = 216, + ANIM_BBBAT_1_BAT_4 = 217, + ANIM_BBBAT_1_BAT_PART = 218, + ANIM_BBBAT_1_BAT_HIT_1 = 219, + ANIM_BBBAT_1_BAT_HIT_2 = 220, + ANIM_BBBAT_1_BAT_HIT_3 = 221, + ANIM_BBBAT_1_BAT_BLOCK = 222, + ANIM_BBBAT_1_BAT_IDLE = 223, +}; +// [GROUP] i = 38 | GroupName : gclub_1 | Group ID: 38 | Total Animations: 10 +enum egclub_1AnimGroup +{ + ANIM_GCLUB_1_BAT_1 = 214, + ANIM_GCLUB_1_BAT_2 = 215, + ANIM_GCLUB_1_BAT_3 = 216, + ANIM_GCLUB_1_BAT_4 = 217, + ANIM_GCLUB_1_BAT_PART = 218, + ANIM_GCLUB_1_BAT_HIT_1 = 219, + ANIM_GCLUB_1_BAT_HIT_2 = 220, + ANIM_GCLUB_1_BAT_HIT_3 = 221, + ANIM_GCLUB_1_BAT_BLOCK = 222, + ANIM_GCLUB_1_BAT_IDLE = 223, +}; +// [GROUP] i = 39 | GroupName : knife_1 | Group ID: 39 | Total Animations: 10 +enum eknife_1AnimGroup +{ + ANIM_KNIFE_1_KNIFE_1 = 214, + ANIM_KNIFE_1_KNIFE_2 = 215, + ANIM_KNIFE_1_KNIFE_3 = 216, + ANIM_KNIFE_1_KNIFE_G = 217, + ANIM_KNIFE_1_KNIFE_PART = 218, + ANIM_KNIFE_1_KNIFE_HIT_1 = 219, + ANIM_KNIFE_1_KNIFE_HIT_2 = 220, + ANIM_KNIFE_1_KNIFE_HIT_3 = 221, + ANIM_KNIFE_1_KNIFE_BLOCK = 222, + ANIM_KNIFE_1_WEAPON_KNIFEIDLE = 223, +}; +// [GROUP] i = 40 | GroupName : sword_1 | Group ID: 40 | Total Animations: 10 +enum esword_1AnimGroup +{ + ANIM_SWORD_1_SWORD_1 = 214, + ANIM_SWORD_1_SWORD_2 = 215, + ANIM_SWORD_1_SWORD_3 = 216, + ANIM_SWORD_1_SWORD_4 = 217, + ANIM_SWORD_1_SWORD_PART = 218, + ANIM_SWORD_1_SWORD_HIT_1 = 219, + ANIM_SWORD_1_SWORD_HIT_2 = 220, + ANIM_SWORD_1_SWORD_HIT_3 = 221, + ANIM_SWORD_1_SWORD_BLOCK = 222, + ANIM_SWORD_1_SWORD_IDLE = 223, +}; +// [GROUP] i = 41 | GroupName : dildo_1 | Group ID: 41 | Total Animations: 10 +enum edildo_1AnimGroup +{ + ANIM_DILDO_1_DILDO_1_0 = 214, + ANIM_DILDO_1_DILDO_2 = 215, + ANIM_DILDO_1_DILDO_3 = 216, + ANIM_DILDO_1_DILDO_G = 217, + ANIM_DILDO_1_DILDO_1_2 = 218, + ANIM_DILDO_1_DILDO_HIT_1 = 219, + ANIM_DILDO_1_DILDO_HIT_2 = 220, + ANIM_DILDO_1_DILDO_HIT_3 = 221, + ANIM_DILDO_1_DILDO_BLOCK = 222, + ANIM_DILDO_1_DILDO_IDLE = 223, +}; +// [GROUP] i = 42 | GroupName : flowers_1 | Group ID: 42 | Total Animations: 8 +enum eflowers_1AnimGroup +{ + ANIM_FLOWERS_1_FLOWER_ATTACK_0 = 214, + ANIM_FLOWERS_1_FLOWER_ATTACK_1 = 215, + ANIM_FLOWERS_1_FLOWER_ATTACK_2 = 216, + ANIM_FLOWERS_1_FLOWER_ATTACK_3 = 217, + ANIM_FLOWERS_1_FLOWER_ATTACK_4 = 218, + ANIM_FLOWERS_1_FLOWER_HIT_0 = 219, + ANIM_FLOWERS_1_FLOWER_HIT_1 = 220, + ANIM_FLOWERS_1_FLOWER_HIT_2 = 221, +}; +// [GROUP] i = 43 | GroupName : csaw_1 | Group ID: 43 | Total Animations: 10 +enum ecsaw_1AnimGroup +{ + ANIM_CSAW_1_CSAW_1 = 214, + ANIM_CSAW_1_CSAW_2 = 215, + ANIM_CSAW_1_CSAW_3 = 216, + ANIM_CSAW_1_CSAW_G = 217, + ANIM_CSAW_1_CSAW_PART_0 = 218, + ANIM_CSAW_1_CSAW_HIT_1 = 219, + ANIM_CSAW_1_CSAW_HIT_2 = 220, + ANIM_CSAW_1_CSAW_HIT_3 = 221, + ANIM_CSAW_1_CSAW_PART_1 = 222, + ANIM_CSAW_1_IDLE_CSAW = 223, +}; +// [GROUP] i = 44 | GroupName : kick_std | Group ID: 44 | Total Animations: 7 +enum ekick_stdAnimGroup +{ + ANIM_KICK_STD_FIGHTKICK_0 = 214, + ANIM_KICK_STD_FIGHTKICK_B = 215, + ANIM_KICK_STD_FIGHTKICK_1 = 216, + ANIM_KICK_STD_FIGHTKICK_2 = 217, + ANIM_KICK_STD_FIGHTKICK_3 = 218, + ANIM_KICK_STD_HIT_FIGHTKICK = 219, + ANIM_KICK_STD_HIT_FIGHTKICK_B = 220, +}; +// [GROUP] i = 45 | GroupName : pistlwhp | Group ID: 45 | Total Animations: 7 +enum epistlwhpAnimGroup +{ + ANIM_PISTLWHP_GUN_BUTT_0 = 214, + ANIM_PISTLWHP_GUN_BUTT_CROUCH = 215, + ANIM_PISTLWHP_GUN_BUTT_1 = 216, + ANIM_PISTLWHP_GUN_BUTT_2 = 217, + ANIM_PISTLWHP_GUN_BUTT_3 = 218, + ANIM_PISTLWHP_HIT_GUN_BUTT_0 = 219, + ANIM_PISTLWHP_HIT_GUN_BUTT_1 = 220, +}; +// [GROUP] i = 46 | GroupName : medic | Group ID: 46 | Total Animations: 1 +enum emedicAnimGroup +{ + ANIM_MEDIC_CPR = 260, +}; +// [GROUP] i = 47 | GroupName : beach | Group ID: 47 | Total Animations: 5 +enum ebeachAnimGroup +{ + ANIM_BEACH_PARKSIT_M_LOOP = 239, + ANIM_BEACH_LAY_BAC_LOOP = 240, + ANIM_BEACH_PARKSIT_W_LOOP = 241, + ANIM_BEACH_BATHER = 242, + ANIM_BEACH_SITNWAIT_LOOP_W = 243, +}; +// [GROUP] i = 48 | GroupName : sunbathe | Group ID: 48 | Total Animations: 16 +enum esunbatheAnimGroup +{ + ANIM_SUNBATHE_PARKSIT_M_IN = 244, + ANIM_SUNBATHE_LAY_BAC_IN = 245, + ANIM_SUNBATHE_PARKSIT_W_IN = 246, + ANIM_SUNBATHE_BATHERDOWN = 247, + ANIM_SUNBATHE_SITNWAIT_IN_W = 248, + ANIM_SUNBATHE_PARKSIT_M_OUT = 249, + ANIM_SUNBATHE_LAY_BAC_OUT = 250, + ANIM_SUNBATHE_PARKSIT_W_OUT = 251, + ANIM_SUNBATHE_BATHERUP = 252, + ANIM_SUNBATHE_SITNWAIT_OUT_W = 253, + ANIM_SUNBATHE_PARKSIT_M_IDLEA = 254, + ANIM_SUNBATHE_PARKSIT_M_IDLEB = 255, + ANIM_SUNBATHE_PARKSIT_M_IDLEC = 256, + ANIM_SUNBATHE_PARKSIT_W_IDLEA = 257, + ANIM_SUNBATHE_PARKSIT_W_IDLEB = 258, + ANIM_SUNBATHE_PARKSIT_W_IDLEC = 259, +}; +// [GROUP] i = 49 | GroupName : playidles | Group ID: 49 | Total Animations: 4 +enum eplayidlesAnimGroup +{ + ANIM_PLAYIDLES_STRETCH = 261, + ANIM_PLAYIDLES_TIME = 262, + ANIM_PLAYIDLES_SHLDR = 263, + ANIM_PLAYIDLES_STRLEG = 264, +}; +// [GROUP] i = 50 | GroupName : riot | Group ID: 50 | Total Animations: 7 +enum eriotAnimGroup +{ + ANIM_RIOT_RIOT_ANGRY = 265, + ANIM_RIOT_RIOT_ANGRY_B = 266, + ANIM_RIOT_RIOT_CHANT = 267, + ANIM_RIOT_RIOT_PUNCHES = 268, + ANIM_RIOT_RIOT_SHOUT = 269, + ANIM_RIOT_RIOT_CHALLENGE = 270, + ANIM_RIOT_RIOT_FUKU = 271, +}; +// [GROUP] i = 51 | GroupName : strip | Group ID: 51 | Total Animations: 7 +enum estripAnimGroup +{ + ANIM_STRIP_STRIP_A = 272, + ANIM_STRIP_STRIP_B = 273, + ANIM_STRIP_STRIP_C = 274, + ANIM_STRIP_STRIP_D = 275, + ANIM_STRIP_STRIP_E = 276, + ANIM_STRIP_STRIP_F = 277, + ANIM_STRIP_STRIP_G = 278, +}; +// [GROUP] i = 52 | GroupName : gangs | Group ID: 52 | Total Animations: 29 +enum egangsAnimGroup +{ + ANIM_GANGS_PRTIAL_GNGTLKA = 279, + ANIM_GANGS_PRTIAL_GNGTLKB = 280, + ANIM_GANGS_PRTIAL_GNGTLKC = 281, + ANIM_GANGS_PRTIAL_GNGTLKD = 282, + ANIM_GANGS_PRTIAL_GNGTLKE = 283, + ANIM_GANGS_PRTIAL_GNGTLKF = 284, + ANIM_GANGS_PRTIAL_GNGTLKG = 285, + ANIM_GANGS_PRTIAL_GNGTLKH = 286, + ANIM_GANGS_DEALER_DEAL = 287, + ANIM_GANGS_DRUGS_BUY = 288, + ANIM_GANGS_HNDSHKAA = 289, + ANIM_GANGS_HNDSHKBA = 290, + ANIM_GANGS_HNDSHKCA = 291, + ANIM_GANGS_HNDSHKCB = 292, + ANIM_GANGS_HNDSHKDA = 293, + ANIM_GANGS_HNDSHKEA = 294, + ANIM_GANGS_HNDSHKFA = 295, + ANIM_GANGS_SHAKE_CARA = 296, + ANIM_GANGS_SHAKE_CARSH = 297, + ANIM_GANGS_SHAKE_CARK = 298, + ANIM_GANGS_DRNKBR_PRTL = 299, + ANIM_GANGS_SMKCIG_PRTL = 300, + ANIM_GANGS_DRNKBR_PRTL_F = 301, + ANIM_GANGS_SMKCIG_PRTL_F = 302, + ANIM_GANGS_LEANIN = 303, + ANIM_GANGS_LEANIDLE = 304, + ANIM_GANGS_LEANOUT = 305, + ANIM_GANGS_INVITE_YES = 306, + ANIM_GANGS_INVITE_NO = 307, +}; +// [GROUP] i = 53 | GroupName : attractors | Group ID: 53 | Total Animations: 3 +enum eattractorsAnimGroup +{ + ANIM_ATTRACTORS_STEPSIT_IN = 308, + ANIM_ATTRACTORS_STEPSIT_OUT = 309, + ANIM_ATTRACTORS_STEPSIT_LOOP = 310, +}; +// [GROUP] i = 54 | GroupName : player | Group ID: 54 | Total Animations: 6 +enum eplayerAnimGroup +{ + ANIM_PLAYER_WALK_PLAYER = 0, + ANIM_PLAYER_RUN_PLAYER = 1, + ANIM_PLAYER_SPRINT_CIVI = 2, + ANIM_PLAYER_IDLE_STANCE = 3, + ANIM_PLAYER_ROADCROSS = 4, + ANIM_PLAYER_WALK_START = 5, +}; +// [GROUP] i = 55 | GroupName : fat | Group ID: 55 | Total Animations: 6 +enum efatAnimGroup +{ + ANIM_FAT_FATWALK = 0, + ANIM_FAT_FATRUN = 1, + ANIM_FAT_FATSPRINT = 2, + ANIM_FAT_FATIDLE_0 = 3, + ANIM_FAT_FATIDLE_1 = 4, + ANIM_FAT_FATWALKSTART = 5, +}; +// [GROUP] i = 56 | GroupName : muscular | Group ID: 56 | Total Animations: 6 +enum emuscularAnimGroup +{ + ANIM_MUSCULAR_MUSCLEWALK = 0, + ANIM_MUSCULAR_MUSCLERUN = 1, + ANIM_MUSCULAR_MUSCLESPRINT = 2, + ANIM_MUSCULAR_MUSCLEIDLE_0 = 3, + ANIM_MUSCULAR_MUSCLEIDLE_1 = 4, + ANIM_MUSCULAR_MUSCLEWALKSTART = 5, +}; +// [GROUP] i = 57 | GroupName : playerrocket | Group ID: 57 | Total Animations: 6 +enum eplayerrocketAnimGroup +{ + ANIM_PLAYERROCKET_WALK_ROCKET = 0, + ANIM_PLAYERROCKET_RUN_ROCKET_0 = 1, + ANIM_PLAYERROCKET_RUN_ROCKET_1 = 2, + ANIM_PLAYERROCKET_IDLE_ROCKET = 3, + ANIM_PLAYERROCKET_ROADCROSS = 4, + ANIM_PLAYERROCKET_WALK_START_ROCKET = 5, +}; +// [GROUP] i = 58 | GroupName : playerrocketf | Group ID: 58 | Total Animations: 6 +enum eplayerrocketfAnimGroup +{ + ANIM_PLAYERROCKETF_FATWALK_ROCKET = 0, + ANIM_PLAYERROCKETF_FATRUN_ROCKET_0 = 1, + ANIM_PLAYERROCKETF_FATRUN_ROCKET_1 = 2, + ANIM_PLAYERROCKETF_FATIDLE_ROCKET_0 = 3, + ANIM_PLAYERROCKETF_FATIDLE_ROCKET_1 = 4, + ANIM_PLAYERROCKETF_FATWALKST_ROCKET = 5, +}; +// [GROUP] i = 59 | GroupName : playerrocketm | Group ID: 59 | Total Animations: 6 +enum eplayerrocketmAnimGroup +{ + ANIM_PLAYERROCKETM_MUSCLEWALK_ROCKET = 0, + ANIM_PLAYERROCKETM_MSCLE_RCKT_RUN_0 = 1, + ANIM_PLAYERROCKETM_MSCLE_RCKT_RUN_1 = 2, + ANIM_PLAYERROCKETM_MUSCLEIDLE_ROCKET_0 = 3, + ANIM_PLAYERROCKETM_MUSCLEIDLE_ROCKET_1 = 4, + ANIM_PLAYERROCKETM_MSCLE_RCKT_WALKST = 5, +}; +// [GROUP] i = 60 | GroupName : player2armed | Group ID: 60 | Total Animations: 6 +enum eplayer2armedAnimGroup +{ + ANIM_PLAYER2ARMED_WALK_ARMED = 0, + ANIM_PLAYER2ARMED_RUN_ARMED_0 = 1, + ANIM_PLAYER2ARMED_RUN_ARMED_1 = 2, + ANIM_PLAYER2ARMED_IDLE_ARMED = 3, + ANIM_PLAYER2ARMED_ROADCROSS = 4, + ANIM_PLAYER2ARMED_WALK_START_ARMED = 5, +}; +// [GROUP] i = 61 | GroupName : player2armedf | Group ID: 61 | Total Animations: 6 +enum eplayer2armedfAnimGroup +{ + ANIM_PLAYER2ARMEDF_FATWALK_ARMED = 0, + ANIM_PLAYER2ARMEDF_FATRUN_ARMED_0 = 1, + ANIM_PLAYER2ARMEDF_FATRUN_ARMED_1 = 2, + ANIM_PLAYER2ARMEDF_FATIDLE_ARMED_0 = 3, + ANIM_PLAYER2ARMEDF_FATIDLE_ARMED_1 = 4, + ANIM_PLAYER2ARMEDF_FATWALKST_ARMED = 5, +}; +// [GROUP] i = 62 | GroupName : player2armedm | Group ID: 62 | Total Animations: 6 +enum eplayer2armedmAnimGroup +{ + ANIM_PLAYER2ARMEDM_MUSCLEWALK_ARMED = 0, + ANIM_PLAYER2ARMEDM_MUSCLERUN_ARMED_0 = 1, + ANIM_PLAYER2ARMEDM_MUSCLERUN_ARMED_1 = 2, + ANIM_PLAYER2ARMEDM_MUSCLEIDLE_ARMED_0 = 3, + ANIM_PLAYER2ARMEDM_MUSCLEIDLE_ARMED_1 = 4, + ANIM_PLAYER2ARMEDM_MSCLEWALKST_ARMED = 5, +}; +// [GROUP] i = 63 | GroupName : playerBBBat | Group ID: 63 | Total Animations: 6 +enum eplayerBBBatAnimGroup +{ + ANIM_PLAYERBBBAT_WALK_PLAYER = 0, + ANIM_PLAYERBBBAT_RUN_PLAYER_0 = 1, + ANIM_PLAYERBBBAT_RUN_PLAYER_1 = 2, + ANIM_PLAYERBBBAT_IDLE_STANCE = 3, + ANIM_PLAYERBBBAT_ROADCROSS = 4, + ANIM_PLAYERBBBAT_WALK_START = 5, +}; +// [GROUP] i = 64 | GroupName : playerBBBatf | Group ID: 64 | Total Animations: 6 +enum eplayerBBBatfAnimGroup +{ + ANIM_PLAYERBBBATF_FATWALK = 0, + ANIM_PLAYERBBBATF_FATRUN_0 = 1, + ANIM_PLAYERBBBATF_FATRUN_1 = 2, + ANIM_PLAYERBBBATF_FATIDLE_0 = 3, + ANIM_PLAYERBBBATF_FATIDLE_1 = 4, + ANIM_PLAYERBBBATF_FATWALKSTART = 5, +}; +// [GROUP] i = 65 | GroupName : playerBBBatm | Group ID: 65 | Total Animations: 6 +enum eplayerBBBatmAnimGroup +{ + ANIM_PLAYERBBBATM_MUSCLEWALK = 0, + ANIM_PLAYERBBBATM_MUSCLERUN_0 = 1, + ANIM_PLAYERBBBATM_MUSCLERUN_1 = 2, + ANIM_PLAYERBBBATM_MUSCLEIDLE_0 = 3, + ANIM_PLAYERBBBATM_MUSCLEIDLE_1 = 4, + ANIM_PLAYERBBBATM_MUSCLEWALKSTART = 5, +}; +// [GROUP] i = 66 | GroupName : playercsaw | Group ID: 66 | Total Animations: 6 +enum eplayercsawAnimGroup +{ + ANIM_PLAYERCSAW_WALK_CSAW = 0, + ANIM_PLAYERCSAW_RUN_CSAW_0 = 1, + ANIM_PLAYERCSAW_RUN_CSAW_1 = 2, + ANIM_PLAYERCSAW_IDLE_CSAW = 3, + ANIM_PLAYERCSAW_ROADCROSS = 4, + ANIM_PLAYERCSAW_WALK_START_CSAW = 5, +}; +// [GROUP] i = 67 | GroupName : playercsawf | Group ID: 67 | Total Animations: 6 +enum eplayercsawfAnimGroup +{ + ANIM_PLAYERCSAWF_FATWALK_CSAW = 0, + ANIM_PLAYERCSAWF_FATRUN_CSAW_0 = 1, + ANIM_PLAYERCSAWF_FATRUN_CSAW_1 = 2, + ANIM_PLAYERCSAWF_FATIDLE_CSAW_0 = 3, + ANIM_PLAYERCSAWF_FATIDLE_CSAW_1 = 4, + ANIM_PLAYERCSAWF_FATWALKSTART_CSAW = 5, +}; +// [GROUP] i = 68 | GroupName : playercsawm | Group ID: 68 | Total Animations: 6 +enum eplayercsawmAnimGroup +{ + ANIM_PLAYERCSAWM_MUSCLEWALK_CSAW = 0, + ANIM_PLAYERCSAWM_MSCLE_RUN_CSAW_0 = 1, + ANIM_PLAYERCSAWM_MSCLE_RUN_CSAW_1 = 2, + ANIM_PLAYERCSAWM_MUSCLEIDLE_CSAW_0 = 3, + ANIM_PLAYERCSAWM_MUSCLEIDLE_CSAW_1 = 4, + ANIM_PLAYERCSAWM_MSCLEWALKST_CSAW = 5, +}; +// [GROUP] i = 69 | GroupName : playersneak | Group ID: 69 | Total Animations: 6 +enum eplayersneakAnimGroup +{ + ANIM_PLAYERSNEAK_PLAYER_SNEAK = 0, + ANIM_PLAYERSNEAK_RUN_PLAYER = 1, + ANIM_PLAYERSNEAK_SPRINT_CIVI = 2, + ANIM_PLAYERSNEAK_IDLE_STANCE = 3, + ANIM_PLAYERSNEAK_ROADCROSS = 4, + ANIM_PLAYERSNEAK_PLAYER_SNEAK_WALKSTART = 5, +}; +// [GROUP] i = 70 | GroupName : playerjetpack | Group ID: 70 | Total Animations: 6 +enum eplayerjetpackAnimGroup +{ + ANIM_PLAYERJETPACK_WALK_PLAYER = 0, + ANIM_PLAYERJETPACK_RUN_PLAYER = 1, + ANIM_PLAYERJETPACK_SPRINT_CIVI = 2, + ANIM_PLAYERJETPACK_JETPACK_IDLE = 3, + ANIM_PLAYERJETPACK_ROADCROSS = 4, + ANIM_PLAYERJETPACK_WALK_START = 5, +}; +// [GROUP] i = 71 | GroupName : swim | Group ID: 71 | Total Animations: 6 +enum eswimAnimGroup +{ + ANIM_SWIM_SWIM_BREAST = 311, + ANIM_SWIM_SWIM_CRAWL = 312, + ANIM_SWIM_SWIM_DIVE_UNDER = 313, + ANIM_SWIM_SWIM_UNDER = 314, + ANIM_SWIM_SWIM_GLIDE = 315, + ANIM_SWIM_SWIM_JUMPOUT = 316, +}; +// [GROUP] i = 72 | GroupName : drivebys | Group ID: 72 | Total Animations: 8 +enum edrivebysAnimGroup +{ + ANIM_DRIVEBYS_GANG_DRIVEBYLHS = 231, + ANIM_DRIVEBYS_GANG_DRIVEBYTOP_LHS = 232, + ANIM_DRIVEBYS_GANG_DRIVEBYLHS_FWD = 233, + ANIM_DRIVEBYS_GANG_DRIVEBYLHS_BWD = 234, + ANIM_DRIVEBYS_GANG_DRIVEBYRHS = 235, + ANIM_DRIVEBYS_GANG_DRIVEBYTOP_RHS = 236, + ANIM_DRIVEBYS_GANG_DRIVEBYRHS_FWD = 237, + ANIM_DRIVEBYS_GANG_DRIVEBYRHS_BWD = 238, +}; +// [GROUP] i = 73 | GroupName : bike_dbz | Group ID: 73 | Total Animations: 4 +enum ebike_dbzAnimGroup +{ + ANIM_BIKE_DBZ_PASS_DRIVEBY_LHS = 231, + ANIM_BIKE_DBZ_PASS_DRIVEBY_RHS = 232, + ANIM_BIKE_DBZ_PASS_DRIVEBY_FWD = 233, + ANIM_BIKE_DBZ_PASS_DRIVEBY_BWD = 234, +}; +// [GROUP] i = 74 | GroupName : cop_dbz | Group ID: 74 | Total Animations: 4 +enum ecop_dbzAnimGroup +{ + ANIM_COP_DBZ_COP_DVBY_L = 231, + ANIM_COP_DBZ_COP_DVBY_R = 232, + ANIM_COP_DBZ_COP_DVBY_FT = 233, + ANIM_COP_DBZ_COP_DVBY_B = 234, +}; +// [GROUP] i = 75 | GroupName : quad_dbz | Group ID: 75 | Total Animations: 4 +enum equad_dbzAnimGroup +{ + ANIM_QUAD_DBZ_PASS_DRIVEBY_LHS = 231, + ANIM_QUAD_DBZ_PASS_DRIVEBY_RHS = 232, + ANIM_QUAD_DBZ_PASS_DRIVEBY_FWD = 233, + ANIM_QUAD_DBZ_PASS_DRIVEBY_BWD = 234, +}; +// [GROUP] i = 76 | GroupName : fat_tired | Group ID: 76 | Total Animations: 1 +enum efat_tiredAnimGroup +{ + ANIM_FAT_TIRED_IDLE_TIRED = 10, +}; +// [GROUP] i = 77 | GroupName : handsignal | Group ID: 77 | Total Animations: 5 +enum ehandsignalAnimGroup +{ + ANIM_HANDSIGNAL_GSIGN1 = 320, + ANIM_HANDSIGNAL_GSIGN2 = 321, + ANIM_HANDSIGNAL_GSIGN3 = 322, + ANIM_HANDSIGNAL_GSIGN4 = 323, + ANIM_HANDSIGNAL_GSIGN5 = 324, +}; +// [GROUP] i = 78 | GroupName : handsignalL | Group ID: 78 | Total Animations: 5 +enum ehandsignalLAnimGroup +{ + ANIM_HANDSIGNALL_GSIGN1LH = 320, + ANIM_HANDSIGNALL_GSIGN2LH = 321, + ANIM_HANDSIGNALL_GSIGN3LH = 322, + ANIM_HANDSIGNALL_GSIGN4LH = 323, + ANIM_HANDSIGNALL_GSIGN5LH = 324, +}; +// [GROUP] i = 79 | GroupName : lhand | Group ID: 79 | Total Animations: 5 +enum elhandAnimGroup +{ + ANIM_LHAND_LHGSIGN1 = 320, + ANIM_LHAND_LHGSIGN2 = 321, + ANIM_LHAND_LHGSIGN3 = 322, + ANIM_LHAND_LHGSIGN4 = 323, + ANIM_LHAND_LHGSIGN5 = 324, +}; +// [GROUP] i = 80 | GroupName : rhand | Group ID: 80 | Total Animations: 5 +enum erhandAnimGroup +{ + ANIM_RHAND_RHGSIGN1 = 320, + ANIM_RHAND_RHGSIGN2 = 321, + ANIM_RHAND_RHGSIGN3 = 322, + ANIM_RHAND_RHGSIGN4 = 323, + ANIM_RHAND_RHGSIGN5 = 324, +}; +// [GROUP] i = 81 | GroupName : carry | Group ID: 81 | Total Animations: 3 +enum ecarryAnimGroup +{ + ANIM_CARRY_LIFTUP = 317, + ANIM_CARRY_CRRY_PRTIAL = 318, + ANIM_CARRY_PUTDWN = 319, +}; +// [GROUP] i = 82 | GroupName : carry05 | Group ID: 82 | Total Animations: 3 +enum ecarry05AnimGroup +{ + ANIM_CARRY05_LIFTUP05 = 317, + ANIM_CARRY05_CRRY_PRTIAL = 318, + ANIM_CARRY05_PUTDWN05 = 319, +}; +// [GROUP] i = 83 | GroupName : carry105 | Group ID: 83 | Total Animations: 3 +enum ecarry105AnimGroup +{ + ANIM_CARRY105_LIFTUP105 = 317, + ANIM_CARRY105_CRRY_PRTIAL = 318, + ANIM_CARRY105_PUTDWN105 = 319, +}; +// [GROUP] i = 84 | GroupName : int_house | Group ID: 84 | Total Animations: 10 +enum eint_houseAnimGroup +{ + ANIM_INT_HOUSE_BED_IN_L = 337, + ANIM_INT_HOUSE_BED_LOOP_L = 338, + ANIM_INT_HOUSE_BED_OUT_L = 339, + ANIM_INT_HOUSE_BED_IN_R = 340, + ANIM_INT_HOUSE_BED_LOOP_R = 341, + ANIM_INT_HOUSE_BED_OUT_R = 342, + ANIM_INT_HOUSE_LOU_IN = 343, + ANIM_INT_HOUSE_LOU_OUT = 344, + ANIM_INT_HOUSE_LOU_LOOP = 345, + ANIM_INT_HOUSE_WASH_UP = 346, +}; +// [GROUP] i = 85 | GroupName : int_office | Group ID: 85 | Total Animations: 9 +enum eint_officeAnimGroup +{ + ANIM_INT_OFFICE_OFF_SIT_IN = 328, + ANIM_INT_OFFICE_OFF_SIT_2IDLE_180 = 329, + ANIM_INT_OFFICE_OFF_SIT_IDLE_LOOP = 330, + ANIM_INT_OFFICE_OFF_SIT_TYPE_LOOP = 331, + ANIM_INT_OFFICE_OFF_SIT_BORED_LOOP = 332, + ANIM_INT_OFFICE_OFF_SIT_CRASH = 333, + ANIM_INT_OFFICE_OFF_SIT_DRINK = 334, + ANIM_INT_OFFICE_OFF_SIT_READ = 335, + ANIM_INT_OFFICE_OFF_SIT_WATCH = 336, +}; +// [GROUP] i = 86 | GroupName : int_shop | Group ID: 86 | Total Animations: 3 +enum eint_shopAnimGroup +{ + ANIM_INT_SHOP_SHOP_SHELF = 325, + ANIM_INT_SHOP_SHOP_PAY = 326, + ANIM_INT_SHOP_SHOP_CASHIER = 327, +}; +// [GROUP] i = 87 | GroupName : stealth_kn | Group ID: 87 | Total Animations: 4 +enum estealth_knAnimGroup +{ + ANIM_STEALTH_KN_KILL_PARTIAL = 347, + ANIM_STEALTH_KN_KILL_KNIFE_PLAYER = 348, + ANIM_STEALTH_KN_KILL_KNIFE_PED_DAMAGE = 349, + ANIM_STEALTH_KN_KILL_KNIFE_PED_DIE = 350, +}; +// [GROUP] i = 88 | GroupName : stdcaramims | Group ID: 88 | Total Animations: 40 +enum estdcaramimsAnimGroup +{ + ANIM_STDCARAMIMS_CAR_ALIGN_LHS = 351, + ANIM_STDCARAMIMS_CAR_ALIGN_RHS = 352, + ANIM_STDCARAMIMS_CAR_ALIGNHI_LHS = 353, + ANIM_STDCARAMIMS_CAR_ALIGNHI_RHS = 354, + ANIM_STDCARAMIMS_CAR_OPEN_LHS_0 = 355, + ANIM_STDCARAMIMS_CAR_OPEN_RHS_0 = 356, + ANIM_STDCARAMIMS_CAR_OPEN_LHS_1 = 357, + ANIM_STDCARAMIMS_CAR_OPEN_RHS_1 = 358, + ANIM_STDCARAMIMS_CAR_GETIN_LHS_0 = 359, + ANIM_STDCARAMIMS_CAR_GETIN_RHS_0 = 360, + ANIM_STDCARAMIMS_CAR_GETIN_LHS_1 = 361, + ANIM_STDCARAMIMS_CAR_GETIN_RHS_1 = 362, + ANIM_STDCARAMIMS_UNKNOWN_12 = 363, + ANIM_STDCARAMIMS_CAR_PULLOUT_LHS = 364, + ANIM_STDCARAMIMS_CAR_PULLOUT_RHS = 365, + ANIM_STDCARAMIMS_UNKNOWN_15 = 366, + ANIM_STDCARAMIMS_CAR_CLOSEDOOR_LHS_0 = 367, + ANIM_STDCARAMIMS_CAR_CLOSEDOOR_RHS_0 = 368, + ANIM_STDCARAMIMS_CAR_CLOSEDOOR_LHS_1 = 369, + ANIM_STDCARAMIMS_CAR_CLOSEDOOR_RHS_1 = 370, + ANIM_STDCARAMIMS_CAR_SHUFFLE_RHS_0 = 371, + ANIM_STDCARAMIMS_CAR_SHUFFLE_RHS_1 = 372, + ANIM_STDCARAMIMS_CAR_GETOUT_LHS_0 = 373, + ANIM_STDCARAMIMS_CAR_GETOUT_RHS_0 = 374, + ANIM_STDCARAMIMS_CAR_GETOUT_LHS_1 = 375, + ANIM_STDCARAMIMS_CAR_GETOUT_RHS_1 = 376, + ANIM_STDCARAMIMS_UNKNOWN_26 = 377, + ANIM_STDCARAMIMS_CAR_JACKEDLHS = 378, + ANIM_STDCARAMIMS_CAR_JACKEDRHS = 379, + ANIM_STDCARAMIMS_CAR_CLOSE_LHS_0 = 380, + ANIM_STDCARAMIMS_CAR_CLOSE_RHS_0 = 381, + ANIM_STDCARAMIMS_CAR_CLOSE_LHS_1 = 382, + ANIM_STDCARAMIMS_CAR_CLOSE_RHS_1 = 383, + ANIM_STDCARAMIMS_CAR_ROLLOUT_LHS = 384, + ANIM_STDCARAMIMS_CAR_ROLLOUT_RHS = 385, + ANIM_STDCARAMIMS_CAR_ROLLDOOR = 386, + ANIM_STDCARAMIMS_CAR_FALLOUT_LHS = 387, + ANIM_STDCARAMIMS_CAR_FALLOUT_RHS = 388, + ANIM_STDCARAMIMS_CAR_DOORLOCKED_LHS = 389, + ANIM_STDCARAMIMS_CAR_DOORLOCKED_RHS = 390, +}; +// [GROUP] i = 89 | GroupName : lowcaramims | Group ID: 89 | Total Animations: 40 +enum elowcaramimsAnimGroup +{ + ANIM_LOWCARAMIMS_CAR_ALIGN_LHS = 351, + ANIM_LOWCARAMIMS_CAR_ALIGN_RHS = 352, + ANIM_LOWCARAMIMS_CAR_ALIGNHI_LHS = 353, + ANIM_LOWCARAMIMS_CAR_ALIGNHI_RHS = 354, + ANIM_LOWCARAMIMS_CAR_OPEN_LHS_0 = 355, + ANIM_LOWCARAMIMS_CAR_OPEN_RHS_0 = 356, + ANIM_LOWCARAMIMS_CAR_OPEN_LHS_1 = 357, + ANIM_LOWCARAMIMS_CAR_OPEN_RHS_1 = 358, + ANIM_LOWCARAMIMS_CAR_GETINL_LHS_0 = 359, + ANIM_LOWCARAMIMS_CAR_GETINL_RHS_0 = 360, + ANIM_LOWCARAMIMS_CAR_GETINL_LHS_1 = 361, + ANIM_LOWCARAMIMS_CAR_GETINL_RHS_1 = 362, + ANIM_LOWCARAMIMS_UNKNOWN_12 = 363, + ANIM_LOWCARAMIMS_CAR_PULLOUTL_LHS = 364, + ANIM_LOWCARAMIMS_CAR_PULLOUTL_RHS = 365, + ANIM_LOWCARAMIMS_UNKNOWN_15 = 366, + ANIM_LOWCARAMIMS_CAR_CLOSEDOORL_LHS_0 = 367, + ANIM_LOWCARAMIMS_CAR_CLOSEDOORL_RHS_0 = 368, + ANIM_LOWCARAMIMS_CAR_CLOSEDOORL_LHS_1 = 369, + ANIM_LOWCARAMIMS_CAR_CLOSEDOORL_RHS_1 = 370, + ANIM_LOWCARAMIMS_CAR_LSHUFFLE_RHS_0 = 371, + ANIM_LOWCARAMIMS_CAR_LSHUFFLE_RHS_1 = 372, + ANIM_LOWCARAMIMS_CAR_GETOUTL_LHS_0 = 373, + ANIM_LOWCARAMIMS_CAR_GETOUTL_RHS_0 = 374, + ANIM_LOWCARAMIMS_CAR_GETOUTL_LHS_1 = 375, + ANIM_LOWCARAMIMS_CAR_GETOUTL_RHS_1 = 376, + ANIM_LOWCARAMIMS_UNKNOWN_26 = 377, + ANIM_LOWCARAMIMS_CAR_LJACKEDLHS = 378, + ANIM_LOWCARAMIMS_CAR_LJACKEDRHS = 379, + ANIM_LOWCARAMIMS_CAR_CLOSE_LHS_0 = 380, + ANIM_LOWCARAMIMS_CAR_CLOSE_RHS_0 = 381, + ANIM_LOWCARAMIMS_CAR_CLOSE_LHS_1 = 382, + ANIM_LOWCARAMIMS_CAR_CLOSE_RHS_1 = 383, + ANIM_LOWCARAMIMS_CAR_ROLLOUT_LHS = 384, + ANIM_LOWCARAMIMS_CAR_ROLLOUT_RHS = 385, + ANIM_LOWCARAMIMS_CAR_ROLLDOORLO = 386, + ANIM_LOWCARAMIMS_CAR_FALLOUT_LHS = 387, + ANIM_LOWCARAMIMS_CAR_FALLOUT_RHS = 388, + ANIM_LOWCARAMIMS_CAR_DOORLOCKED_LHS = 389, + ANIM_LOWCARAMIMS_CAR_DOORLOCKED_RHS = 390, +}; +// [GROUP] i = 90 | GroupName : trkcaranims | Group ID: 90 | Total Animations: 40 +enum etrkcaranimsAnimGroup +{ + ANIM_TRKCARANIMS_TRUCK_ALIGN_LHS_0 = 351, + ANIM_TRKCARANIMS_TRUCK_ALIGN_RHS = 352, + ANIM_TRKCARANIMS_TRUCK_ALIGN_LHS_1 = 353, + ANIM_TRKCARANIMS_TRUCK_ALIGN_LHS_2 = 354, + ANIM_TRKCARANIMS_TRUCK_OPEN_LHS_0 = 355, + ANIM_TRKCARANIMS_TRUCK_OPEN_RHS_0 = 356, + ANIM_TRKCARANIMS_TRUCK_OPEN_LHS_1 = 357, + ANIM_TRKCARANIMS_TRUCK_OPEN_RHS_1 = 358, + ANIM_TRKCARANIMS_TRUCK_GETIN_LHS_0 = 359, + ANIM_TRKCARANIMS_TRUCK_GETIN_RHS_0 = 360, + ANIM_TRKCARANIMS_TRUCK_GETIN_LHS_1 = 361, + ANIM_TRKCARANIMS_TRUCK_GETIN_RHS_1 = 362, + ANIM_TRKCARANIMS_UNKNOWN_12 = 363, + ANIM_TRKCARANIMS_TRUCK_PULLOUT_LHS = 364, + ANIM_TRKCARANIMS_TRUCK_PULLOUT_RHS = 365, + ANIM_TRKCARANIMS_UNKNOWN_15 = 366, + ANIM_TRKCARANIMS_TRUCK_CLOSEDOOR_LHS_0 = 367, + ANIM_TRKCARANIMS_TRUCK_CLOSEDOOR_RHS_0 = 368, + ANIM_TRKCARANIMS_TRUCK_CLOSEDOOR_LHS_1 = 369, + ANIM_TRKCARANIMS_TRUCK_CLOSEDOOR_RHS_1 = 370, + ANIM_TRKCARANIMS_TRUCK_SHUFFLE_0 = 371, + ANIM_TRKCARANIMS_TRUCK_SHUFFLE_1 = 372, + ANIM_TRKCARANIMS_TRUCK_GETOUT_LHS_0 = 373, + ANIM_TRKCARANIMS_TRUCK_GETOUT_RHS_0 = 374, + ANIM_TRKCARANIMS_TRUCK_GETOUT_LHS_1 = 375, + ANIM_TRKCARANIMS_TRUCK_GETOUT_RHS_1 = 376, + ANIM_TRKCARANIMS_UNKNOWN_26 = 377, + ANIM_TRKCARANIMS_TRUCK_JACKEDLHS = 378, + ANIM_TRKCARANIMS_TRUCK_JACKEDRHS = 379, + ANIM_TRKCARANIMS_TRUCK_CLOSE_LHS_0 = 380, + ANIM_TRKCARANIMS_TRUCK_CLOSE_RHS_0 = 381, + ANIM_TRKCARANIMS_TRUCK_CLOSE_LHS_1 = 382, + ANIM_TRKCARANIMS_TRUCK_CLOSE_RHS_1 = 383, + ANIM_TRKCARANIMS_UNKNOWN_33 = 384, + ANIM_TRKCARANIMS_UNKNOWN_34 = 385, + ANIM_TRKCARANIMS_UNKNOWN_35 = 386, + ANIM_TRKCARANIMS_UNKNOWN_36 = 387, + ANIM_TRKCARANIMS_UNKNOWN_37 = 388, + ANIM_TRKCARANIMS_UNKNOWN_38 = 389, + ANIM_TRKCARANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 91 | GroupName : stdbikeanims | Group ID: 91 | Total Animations: 40 +enum estdbikeanimsAnimGroup +{ + ANIM_STDBIKEANIMS_BIKE_PICKUPR = 351, + ANIM_STDBIKEANIMS_BIKE_PICKUPL = 352, + ANIM_STDBIKEANIMS_BIKE_PULLUPR = 353, + ANIM_STDBIKEANIMS_BIKE_PULLUPL = 354, + ANIM_STDBIKEANIMS_UNKNOWN_4 = 355, + ANIM_STDBIKEANIMS_UNKNOWN_5 = 356, + ANIM_STDBIKEANIMS_UNKNOWN_6 = 357, + ANIM_STDBIKEANIMS_UNKNOWN_7 = 358, + ANIM_STDBIKEANIMS_UNKNOWN_8 = 359, + ANIM_STDBIKEANIMS_UNKNOWN_9 = 360, + ANIM_STDBIKEANIMS_UNKNOWN_10 = 361, + ANIM_STDBIKEANIMS_UNKNOWN_11 = 362, + ANIM_STDBIKEANIMS_UNKNOWN_12 = 363, + ANIM_STDBIKEANIMS_BIKE_ELBOWL_0 = 364, + ANIM_STDBIKEANIMS_BIKE_ELBOWR = 365, + ANIM_STDBIKEANIMS_BIKE_ELBOWL_1 = 366, + ANIM_STDBIKEANIMS_UNKNOWN_16 = 367, + ANIM_STDBIKEANIMS_UNKNOWN_17 = 368, + ANIM_STDBIKEANIMS_UNKNOWN_18 = 369, + ANIM_STDBIKEANIMS_UNKNOWN_19 = 370, + ANIM_STDBIKEANIMS_UNKNOWN_20 = 371, + ANIM_STDBIKEANIMS_UNKNOWN_21 = 372, + ANIM_STDBIKEANIMS_UNKNOWN_22 = 373, + ANIM_STDBIKEANIMS_UNKNOWN_23 = 374, + ANIM_STDBIKEANIMS_UNKNOWN_24 = 375, + ANIM_STDBIKEANIMS_UNKNOWN_25 = 376, + ANIM_STDBIKEANIMS_UNKNOWN_26 = 377, + ANIM_STDBIKEANIMS_UNKNOWN_27 = 378, + ANIM_STDBIKEANIMS_UNKNOWN_28 = 379, + ANIM_STDBIKEANIMS_UNKNOWN_29 = 380, + ANIM_STDBIKEANIMS_UNKNOWN_30 = 381, + ANIM_STDBIKEANIMS_UNKNOWN_31 = 382, + ANIM_STDBIKEANIMS_UNKNOWN_32 = 383, + ANIM_STDBIKEANIMS_UNKNOWN_33 = 384, + ANIM_STDBIKEANIMS_UNKNOWN_34 = 385, + ANIM_STDBIKEANIMS_UNKNOWN_35 = 386, + ANIM_STDBIKEANIMS_BIKE_FALL_OFF_0 = 387, + ANIM_STDBIKEANIMS_BIKE_FALL_OFF_1 = 388, + ANIM_STDBIKEANIMS_UNKNOWN_38 = 389, + ANIM_STDBIKEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 92 | GroupName : sportbikeanims | Group ID: 92 | Total Animations: 40 +enum esportbikeanimsAnimGroup +{ + ANIM_SPORTBIKEANIMS_UNKNOWN_0 = 351, + ANIM_SPORTBIKEANIMS_UNKNOWN_1 = 352, + ANIM_SPORTBIKEANIMS_UNKNOWN_2 = 353, + ANIM_SPORTBIKEANIMS_UNKNOWN_3 = 354, + ANIM_SPORTBIKEANIMS_UNKNOWN_4 = 355, + ANIM_SPORTBIKEANIMS_UNKNOWN_5 = 356, + ANIM_SPORTBIKEANIMS_UNKNOWN_6 = 357, + ANIM_SPORTBIKEANIMS_UNKNOWN_7 = 358, + ANIM_SPORTBIKEANIMS_BIKES_JUMPONR_0 = 359, + ANIM_SPORTBIKEANIMS_BIKES_JUMPONL_0 = 360, + ANIM_SPORTBIKEANIMS_BIKES_JUMPONR_1 = 361, + ANIM_SPORTBIKEANIMS_BIKES_JUMPONL_1 = 362, + ANIM_SPORTBIKEANIMS_BIKES_KICK = 363, + ANIM_SPORTBIKEANIMS_UNKNOWN_13 = 364, + ANIM_SPORTBIKEANIMS_UNKNOWN_14 = 365, + ANIM_SPORTBIKEANIMS_UNKNOWN_15 = 366, + ANIM_SPORTBIKEANIMS_UNKNOWN_16 = 367, + ANIM_SPORTBIKEANIMS_UNKNOWN_17 = 368, + ANIM_SPORTBIKEANIMS_UNKNOWN_18 = 369, + ANIM_SPORTBIKEANIMS_UNKNOWN_19 = 370, + ANIM_SPORTBIKEANIMS_UNKNOWN_20 = 371, + ANIM_SPORTBIKEANIMS_UNKNOWN_21 = 372, + ANIM_SPORTBIKEANIMS_BIKES_GETOFFRHS_0 = 373, + ANIM_SPORTBIKEANIMS_BIKES_GETOFFLHS_0 = 374, + ANIM_SPORTBIKEANIMS_BIKES_GETOFFRHS_1 = 375, + ANIM_SPORTBIKEANIMS_BIKES_GETOFFLHS_1 = 376, + ANIM_SPORTBIKEANIMS_BIKES_GETOFFBACK_0 = 377, + ANIM_SPORTBIKEANIMS_UNKNOWN_27 = 378, + ANIM_SPORTBIKEANIMS_UNKNOWN_28 = 379, + ANIM_SPORTBIKEANIMS_UNKNOWN_29 = 380, + ANIM_SPORTBIKEANIMS_UNKNOWN_30 = 381, + ANIM_SPORTBIKEANIMS_UNKNOWN_31 = 382, + ANIM_SPORTBIKEANIMS_UNKNOWN_32 = 383, + ANIM_SPORTBIKEANIMS_BIKES_GETOFFBACK_1 = 384, + ANIM_SPORTBIKEANIMS_BIKES_GETOFFBACK = 385, + ANIM_SPORTBIKEANIMS_UNKNOWN_35 = 386, + ANIM_SPORTBIKEANIMS_UNKNOWN_36 = 387, + ANIM_SPORTBIKEANIMS_UNKNOWN_37 = 388, + ANIM_SPORTBIKEANIMS_UNKNOWN_38 = 389, + ANIM_SPORTBIKEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 93 | GroupName : vespabikeanims | Group ID: 93 | Total Animations: 40 +enum evespabikeanimsAnimGroup +{ + ANIM_VESPABIKEANIMS_UNKNOWN_0 = 351, + ANIM_VESPABIKEANIMS_UNKNOWN_1 = 352, + ANIM_VESPABIKEANIMS_UNKNOWN_2 = 353, + ANIM_VESPABIKEANIMS_UNKNOWN_3 = 354, + ANIM_VESPABIKEANIMS_UNKNOWN_4 = 355, + ANIM_VESPABIKEANIMS_UNKNOWN_5 = 356, + ANIM_VESPABIKEANIMS_UNKNOWN_6 = 357, + ANIM_VESPABIKEANIMS_UNKNOWN_7 = 358, + ANIM_VESPABIKEANIMS_BIKEV_JUMPONR_0 = 359, + ANIM_VESPABIKEANIMS_BIKEV_JUMPONL_0 = 360, + ANIM_VESPABIKEANIMS_BIKEV_JUMPONR_1 = 361, + ANIM_VESPABIKEANIMS_BIKEV_JUMPONL_1 = 362, + ANIM_VESPABIKEANIMS_BIKEV_KICK = 363, + ANIM_VESPABIKEANIMS_UNKNOWN_13 = 364, + ANIM_VESPABIKEANIMS_UNKNOWN_14 = 365, + ANIM_VESPABIKEANIMS_UNKNOWN_15 = 366, + ANIM_VESPABIKEANIMS_UNKNOWN_16 = 367, + ANIM_VESPABIKEANIMS_UNKNOWN_17 = 368, + ANIM_VESPABIKEANIMS_UNKNOWN_18 = 369, + ANIM_VESPABIKEANIMS_UNKNOWN_19 = 370, + ANIM_VESPABIKEANIMS_UNKNOWN_20 = 371, + ANIM_VESPABIKEANIMS_UNKNOWN_21 = 372, + ANIM_VESPABIKEANIMS_BIKEV_GETOFFRHS_0 = 373, + ANIM_VESPABIKEANIMS_BIKEV_GETOFFLHS_0 = 374, + ANIM_VESPABIKEANIMS_BIKEV_GETOFFRHS_1 = 375, + ANIM_VESPABIKEANIMS_BIKEV_GETOFFLHS_1 = 376, + ANIM_VESPABIKEANIMS_BIKEV_GETOFFBACK_0 = 377, + ANIM_VESPABIKEANIMS_UNKNOWN_27 = 378, + ANIM_VESPABIKEANIMS_UNKNOWN_28 = 379, + ANIM_VESPABIKEANIMS_UNKNOWN_29 = 380, + ANIM_VESPABIKEANIMS_UNKNOWN_30 = 381, + ANIM_VESPABIKEANIMS_UNKNOWN_31 = 382, + ANIM_VESPABIKEANIMS_UNKNOWN_32 = 383, + ANIM_VESPABIKEANIMS_BIKEV_GETOFFBACK_1 = 384, + ANIM_VESPABIKEANIMS_BIKEV_GETOFFBACK_2 = 385, + ANIM_VESPABIKEANIMS_UNKNOWN_35 = 386, + ANIM_VESPABIKEANIMS_UNKNOWN_36 = 387, + ANIM_VESPABIKEANIMS_UNKNOWN_37 = 388, + ANIM_VESPABIKEANIMS_UNKNOWN_38 = 389, + ANIM_VESPABIKEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 94 | GroupName : harleybikeanims | Group ID: 94 | Total Animations: 40 +enum eharleybikeanimsAnimGroup +{ + ANIM_HARLEYBIKEANIMS_UNKNOWN_0 = 351, + ANIM_HARLEYBIKEANIMS_UNKNOWN_1 = 352, + ANIM_HARLEYBIKEANIMS_UNKNOWN_2 = 353, + ANIM_HARLEYBIKEANIMS_UNKNOWN_3 = 354, + ANIM_HARLEYBIKEANIMS_UNKNOWN_4 = 355, + ANIM_HARLEYBIKEANIMS_UNKNOWN_5 = 356, + ANIM_HARLEYBIKEANIMS_UNKNOWN_6 = 357, + ANIM_HARLEYBIKEANIMS_UNKNOWN_7 = 358, + ANIM_HARLEYBIKEANIMS_BIKEH_JUMPONL_0 = 359, + ANIM_HARLEYBIKEANIMS_BIKEH_JUMPONR_0 = 360, + ANIM_HARLEYBIKEANIMS_BIKEH_JUMPONL_1 = 361, + ANIM_HARLEYBIKEANIMS_BIKEH_JUMPONR_1 = 362, + ANIM_HARLEYBIKEANIMS_BIKEH_KICK = 363, + ANIM_HARLEYBIKEANIMS_UNKNOWN_13 = 364, + ANIM_HARLEYBIKEANIMS_UNKNOWN_14 = 365, + ANIM_HARLEYBIKEANIMS_UNKNOWN_15 = 366, + ANIM_HARLEYBIKEANIMS_UNKNOWN_16 = 367, + ANIM_HARLEYBIKEANIMS_UNKNOWN_17 = 368, + ANIM_HARLEYBIKEANIMS_UNKNOWN_18 = 369, + ANIM_HARLEYBIKEANIMS_UNKNOWN_19 = 370, + ANIM_HARLEYBIKEANIMS_UNKNOWN_20 = 371, + ANIM_HARLEYBIKEANIMS_UNKNOWN_21 = 372, + ANIM_HARLEYBIKEANIMS_BIKEH_GETOFFRHS_0 = 373, + ANIM_HARLEYBIKEANIMS_BIKEH_GETOFFLHS_0 = 374, + ANIM_HARLEYBIKEANIMS_BIKEH_GETOFFRHS_1 = 375, + ANIM_HARLEYBIKEANIMS_BIKEH_GETOFFLHS_1 = 376, + ANIM_HARLEYBIKEANIMS_BIKEH_GETOFFBACK_0 = 377, + ANIM_HARLEYBIKEANIMS_UNKNOWN_27 = 378, + ANIM_HARLEYBIKEANIMS_UNKNOWN_28 = 379, + ANIM_HARLEYBIKEANIMS_UNKNOWN_29 = 380, + ANIM_HARLEYBIKEANIMS_UNKNOWN_30 = 381, + ANIM_HARLEYBIKEANIMS_UNKNOWN_31 = 382, + ANIM_HARLEYBIKEANIMS_UNKNOWN_32 = 383, + ANIM_HARLEYBIKEANIMS_BIKEH_GETOFFBACK_1 = 384, + ANIM_HARLEYBIKEANIMS_BIKEH_GETOFFBACK = 385, + ANIM_HARLEYBIKEANIMS_UNKNOWN_35 = 386, + ANIM_HARLEYBIKEANIMS_UNKNOWN_36 = 387, + ANIM_HARLEYBIKEANIMS_UNKNOWN_37 = 388, + ANIM_HARLEYBIKEANIMS_UNKNOWN_38 = 389, + ANIM_HARLEYBIKEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 95 | GroupName : dirtbikeanims | Group ID: 95 | Total Animations: 40 +enum edirtbikeanimsAnimGroup +{ + ANIM_DIRTBIKEANIMS_UNKNOWN_0 = 351, + ANIM_DIRTBIKEANIMS_UNKNOWN_1 = 352, + ANIM_DIRTBIKEANIMS_UNKNOWN_2 = 353, + ANIM_DIRTBIKEANIMS_UNKNOWN_3 = 354, + ANIM_DIRTBIKEANIMS_UNKNOWN_4 = 355, + ANIM_DIRTBIKEANIMS_UNKNOWN_5 = 356, + ANIM_DIRTBIKEANIMS_UNKNOWN_6 = 357, + ANIM_DIRTBIKEANIMS_UNKNOWN_7 = 358, + ANIM_DIRTBIKEANIMS_BIKED_JUMPONR_0 = 359, + ANIM_DIRTBIKEANIMS_BIKED_JUMPONL_0 = 360, + ANIM_DIRTBIKEANIMS_BIKED_JUMPONR_1 = 361, + ANIM_DIRTBIKEANIMS_BIKED_JUMPONL_1 = 362, + ANIM_DIRTBIKEANIMS_BIKED_KICK = 363, + ANIM_DIRTBIKEANIMS_UNKNOWN_13 = 364, + ANIM_DIRTBIKEANIMS_UNKNOWN_14 = 365, + ANIM_DIRTBIKEANIMS_UNKNOWN_15 = 366, + ANIM_DIRTBIKEANIMS_UNKNOWN_16 = 367, + ANIM_DIRTBIKEANIMS_UNKNOWN_17 = 368, + ANIM_DIRTBIKEANIMS_UNKNOWN_18 = 369, + ANIM_DIRTBIKEANIMS_UNKNOWN_19 = 370, + ANIM_DIRTBIKEANIMS_UNKNOWN_20 = 371, + ANIM_DIRTBIKEANIMS_UNKNOWN_21 = 372, + ANIM_DIRTBIKEANIMS_BIKED_GETOFFRHS_0 = 373, + ANIM_DIRTBIKEANIMS_BIKED_GETOFFLHS_0 = 374, + ANIM_DIRTBIKEANIMS_BIKED_GETOFFRHS_1 = 375, + ANIM_DIRTBIKEANIMS_BIKED_GETOFFLHS_1 = 376, + ANIM_DIRTBIKEANIMS_BIKED_GETOFFBACK_0 = 377, + ANIM_DIRTBIKEANIMS_UNKNOWN_27 = 378, + ANIM_DIRTBIKEANIMS_UNKNOWN_28 = 379, + ANIM_DIRTBIKEANIMS_UNKNOWN_29 = 380, + ANIM_DIRTBIKEANIMS_UNKNOWN_30 = 381, + ANIM_DIRTBIKEANIMS_UNKNOWN_31 = 382, + ANIM_DIRTBIKEANIMS_UNKNOWN_32 = 383, + ANIM_DIRTBIKEANIMS_BIKED_GETOFFBACK_1 = 384, + ANIM_DIRTBIKEANIMS_BIKED_GETOFFBACK_2 = 385, + ANIM_DIRTBIKEANIMS_UNKNOWN_35 = 386, + ANIM_DIRTBIKEANIMS_UNKNOWN_36 = 387, + ANIM_DIRTBIKEANIMS_UNKNOWN_37 = 388, + ANIM_DIRTBIKEANIMS_UNKNOWN_38 = 389, + ANIM_DIRTBIKEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 96 | GroupName : wayfbikeanims | Group ID: 96 | Total Animations: 40 +enum ewayfbikeanimsAnimGroup +{ + ANIM_WAYFBIKEANIMS_UNKNOWN_0 = 351, + ANIM_WAYFBIKEANIMS_UNKNOWN_1 = 352, + ANIM_WAYFBIKEANIMS_UNKNOWN_2 = 353, + ANIM_WAYFBIKEANIMS_UNKNOWN_3 = 354, + ANIM_WAYFBIKEANIMS_UNKNOWN_4 = 355, + ANIM_WAYFBIKEANIMS_UNKNOWN_5 = 356, + ANIM_WAYFBIKEANIMS_UNKNOWN_6 = 357, + ANIM_WAYFBIKEANIMS_UNKNOWN_7 = 358, + ANIM_WAYFBIKEANIMS_WF_JUMPONL_0 = 359, + ANIM_WAYFBIKEANIMS_WF_JUMPONR_0 = 360, + ANIM_WAYFBIKEANIMS_WF_JUMPONL_1 = 361, + ANIM_WAYFBIKEANIMS_WF_JUMPONR_1 = 362, + ANIM_WAYFBIKEANIMS_WF_KICK = 363, + ANIM_WAYFBIKEANIMS_UNKNOWN_13 = 364, + ANIM_WAYFBIKEANIMS_UNKNOWN_14 = 365, + ANIM_WAYFBIKEANIMS_UNKNOWN_15 = 366, + ANIM_WAYFBIKEANIMS_UNKNOWN_16 = 367, + ANIM_WAYFBIKEANIMS_UNKNOWN_17 = 368, + ANIM_WAYFBIKEANIMS_UNKNOWN_18 = 369, + ANIM_WAYFBIKEANIMS_UNKNOWN_19 = 370, + ANIM_WAYFBIKEANIMS_UNKNOWN_20 = 371, + ANIM_WAYFBIKEANIMS_UNKNOWN_21 = 372, + ANIM_WAYFBIKEANIMS_WF_GETOFFLHS_0 = 373, + ANIM_WAYFBIKEANIMS_WF_GETOFFRHS_0 = 374, + ANIM_WAYFBIKEANIMS_WF_GETOFFLHS_1 = 375, + ANIM_WAYFBIKEANIMS_WF_GETOFFRHS_1 = 376, + ANIM_WAYFBIKEANIMS_WF_GETOFFBACK_0 = 377, + ANIM_WAYFBIKEANIMS_UNKNOWN_27 = 378, + ANIM_WAYFBIKEANIMS_UNKNOWN_28 = 379, + ANIM_WAYFBIKEANIMS_UNKNOWN_29 = 380, + ANIM_WAYFBIKEANIMS_UNKNOWN_30 = 381, + ANIM_WAYFBIKEANIMS_UNKNOWN_31 = 382, + ANIM_WAYFBIKEANIMS_UNKNOWN_32 = 383, + ANIM_WAYFBIKEANIMS_WF_GETOFFBACK_1 = 384, + ANIM_WAYFBIKEANIMS_WF_GETOFFBACK_2 = 385, + ANIM_WAYFBIKEANIMS_UNKNOWN_35 = 386, + ANIM_WAYFBIKEANIMS_UNKNOWN_36 = 387, + ANIM_WAYFBIKEANIMS_UNKNOWN_37 = 388, + ANIM_WAYFBIKEANIMS_UNKNOWN_38 = 389, + ANIM_WAYFBIKEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 97 | GroupName : bmxbikeanims | Group ID: 97 | Total Animations: 40 +enum ebmxbikeanimsAnimGroup +{ + ANIM_BMXBIKEANIMS_UNKNOWN_0 = 351, + ANIM_BMXBIKEANIMS_UNKNOWN_1 = 352, + ANIM_BMXBIKEANIMS_UNKNOWN_2 = 353, + ANIM_BMXBIKEANIMS_UNKNOWN_3 = 354, + ANIM_BMXBIKEANIMS_UNKNOWN_4 = 355, + ANIM_BMXBIKEANIMS_UNKNOWN_5 = 356, + ANIM_BMXBIKEANIMS_UNKNOWN_6 = 357, + ANIM_BMXBIKEANIMS_UNKNOWN_7 = 358, + ANIM_BMXBIKEANIMS_BMX_JUMPONL_0 = 359, + ANIM_BMXBIKEANIMS_BMX_JUMPONR_0 = 360, + ANIM_BMXBIKEANIMS_BMX_JUMPONL_1 = 361, + ANIM_BMXBIKEANIMS_BMX_JUMPONR_1 = 362, + ANIM_BMXBIKEANIMS_UNKNOWN_12 = 363, + ANIM_BMXBIKEANIMS_UNKNOWN_13 = 364, + ANIM_BMXBIKEANIMS_UNKNOWN_14 = 365, + ANIM_BMXBIKEANIMS_UNKNOWN_15 = 366, + ANIM_BMXBIKEANIMS_UNKNOWN_16 = 367, + ANIM_BMXBIKEANIMS_UNKNOWN_17 = 368, + ANIM_BMXBIKEANIMS_UNKNOWN_18 = 369, + ANIM_BMXBIKEANIMS_UNKNOWN_19 = 370, + ANIM_BMXBIKEANIMS_UNKNOWN_20 = 371, + ANIM_BMXBIKEANIMS_UNKNOWN_21 = 372, + ANIM_BMXBIKEANIMS_BMX_GETOFFLHS_0 = 373, + ANIM_BMXBIKEANIMS_BMX_GETOFFRHS_0 = 374, + ANIM_BMXBIKEANIMS_BMX_GETOFFLHS_1 = 375, + ANIM_BMXBIKEANIMS_BMX_GETOFFRHS_1 = 376, + ANIM_BMXBIKEANIMS_BMX_GETOFFBACK_0 = 377, + ANIM_BMXBIKEANIMS_UNKNOWN_27 = 378, + ANIM_BMXBIKEANIMS_UNKNOWN_28 = 379, + ANIM_BMXBIKEANIMS_UNKNOWN_29 = 380, + ANIM_BMXBIKEANIMS_UNKNOWN_30 = 381, + ANIM_BMXBIKEANIMS_UNKNOWN_31 = 382, + ANIM_BMXBIKEANIMS_UNKNOWN_32 = 383, + ANIM_BMXBIKEANIMS_BMX_GETOFFBACK_1 = 384, + ANIM_BMXBIKEANIMS_BMX_GETOFFBACK_2 = 385, + ANIM_BMXBIKEANIMS_UNKNOWN_35 = 386, + ANIM_BMXBIKEANIMS_UNKNOWN_36 = 387, + ANIM_BMXBIKEANIMS_UNKNOWN_37 = 388, + ANIM_BMXBIKEANIMS_UNKNOWN_38 = 389, + ANIM_BMXBIKEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 98 | GroupName : mtbbikeanims | Group ID: 98 | Total Animations: 40 +enum emtbbikeanimsAnimGroup +{ + ANIM_MTBBIKEANIMS_UNKNOWN_0 = 351, + ANIM_MTBBIKEANIMS_UNKNOWN_1 = 352, + ANIM_MTBBIKEANIMS_UNKNOWN_2 = 353, + ANIM_MTBBIKEANIMS_UNKNOWN_3 = 354, + ANIM_MTBBIKEANIMS_UNKNOWN_4 = 355, + ANIM_MTBBIKEANIMS_UNKNOWN_5 = 356, + ANIM_MTBBIKEANIMS_UNKNOWN_6 = 357, + ANIM_MTBBIKEANIMS_UNKNOWN_7 = 358, + ANIM_MTBBIKEANIMS_MTB_JUMPONL_0 = 359, + ANIM_MTBBIKEANIMS_MTB_JUMPONR_0 = 360, + ANIM_MTBBIKEANIMS_MTB_JUMPONL_1 = 361, + ANIM_MTBBIKEANIMS_MTB_JUMPONR_1 = 362, + ANIM_MTBBIKEANIMS_UNKNOWN_12 = 363, + ANIM_MTBBIKEANIMS_UNKNOWN_13 = 364, + ANIM_MTBBIKEANIMS_UNKNOWN_14 = 365, + ANIM_MTBBIKEANIMS_UNKNOWN_15 = 366, + ANIM_MTBBIKEANIMS_UNKNOWN_16 = 367, + ANIM_MTBBIKEANIMS_UNKNOWN_17 = 368, + ANIM_MTBBIKEANIMS_UNKNOWN_18 = 369, + ANIM_MTBBIKEANIMS_UNKNOWN_19 = 370, + ANIM_MTBBIKEANIMS_UNKNOWN_20 = 371, + ANIM_MTBBIKEANIMS_UNKNOWN_21 = 372, + ANIM_MTBBIKEANIMS_MTB_GETOFFLHS_0 = 373, + ANIM_MTBBIKEANIMS_MTB_GETOFFRHS_0 = 374, + ANIM_MTBBIKEANIMS_MTB_GETOFFLHS_1 = 375, + ANIM_MTBBIKEANIMS_MTB_GETOFFRHS_1 = 376, + ANIM_MTBBIKEANIMS_MTB_GETOFFBACK_0 = 377, + ANIM_MTBBIKEANIMS_UNKNOWN_27 = 378, + ANIM_MTBBIKEANIMS_UNKNOWN_28 = 379, + ANIM_MTBBIKEANIMS_UNKNOWN_29 = 380, + ANIM_MTBBIKEANIMS_UNKNOWN_30 = 381, + ANIM_MTBBIKEANIMS_UNKNOWN_31 = 382, + ANIM_MTBBIKEANIMS_UNKNOWN_32 = 383, + ANIM_MTBBIKEANIMS_MTB_GETOFFBACK_1 = 384, + ANIM_MTBBIKEANIMS_MTB_GETOFFBACK_2 = 385, + ANIM_MTBBIKEANIMS_UNKNOWN_35 = 386, + ANIM_MTBBIKEANIMS_UNKNOWN_36 = 387, + ANIM_MTBBIKEANIMS_UNKNOWN_37 = 388, + ANIM_MTBBIKEANIMS_UNKNOWN_38 = 389, + ANIM_MTBBIKEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 99 | GroupName : choppabikeanims | Group ID: 99 | Total Animations: 40 +enum echoppabikeanimsAnimGroup +{ + ANIM_CHOPPABIKEANIMS_UNKNOWN_0 = 351, + ANIM_CHOPPABIKEANIMS_UNKNOWN_1 = 352, + ANIM_CHOPPABIKEANIMS_UNKNOWN_2 = 353, + ANIM_CHOPPABIKEANIMS_UNKNOWN_3 = 354, + ANIM_CHOPPABIKEANIMS_UNKNOWN_4 = 355, + ANIM_CHOPPABIKEANIMS_UNKNOWN_5 = 356, + ANIM_CHOPPABIKEANIMS_UNKNOWN_6 = 357, + ANIM_CHOPPABIKEANIMS_UNKNOWN_7 = 358, + ANIM_CHOPPABIKEANIMS_CHOPPA_JUMPONL_0 = 359, + ANIM_CHOPPABIKEANIMS_CHOPPA_JUMPONR_0= 360, + ANIM_CHOPPABIKEANIMS_CHOPPA_JUMPONL_1 = 361, + ANIM_CHOPPABIKEANIMS_CHOPPA_JUMPONR_1 = 362, + ANIM_CHOPPABIKEANIMS_UNKNOWN_12 = 363, + ANIM_CHOPPABIKEANIMS_UNKNOWN_13 = 364, + ANIM_CHOPPABIKEANIMS_UNKNOWN_14 = 365, + ANIM_CHOPPABIKEANIMS_UNKNOWN_15 = 366, + ANIM_CHOPPABIKEANIMS_UNKNOWN_16 = 367, + ANIM_CHOPPABIKEANIMS_UNKNOWN_17 = 368, + ANIM_CHOPPABIKEANIMS_UNKNOWN_18 = 369, + ANIM_CHOPPABIKEANIMS_UNKNOWN_19 = 370, + ANIM_CHOPPABIKEANIMS_UNKNOWN_20 = 371, + ANIM_CHOPPABIKEANIMS_UNKNOWN_21 = 372, + ANIM_CHOPPABIKEANIMS_CHOPPA_GETOFFLHS_0 = 373, + ANIM_CHOPPABIKEANIMS_CHOPPA_GETOFFRHS_0 = 374, + ANIM_CHOPPABIKEANIMS_CHOPPA_GETOFFLHS_1 = 375, + ANIM_CHOPPABIKEANIMS_CHOPPA_GETOFFRHS_1 = 376, + ANIM_CHOPPABIKEANIMS_CHOPPA_GETOFFBACK_0 = 377, + ANIM_CHOPPABIKEANIMS_UNKNOWN_27 = 378, + ANIM_CHOPPABIKEANIMS_UNKNOWN_28 = 379, + ANIM_CHOPPABIKEANIMS_UNKNOWN_29 = 380, + ANIM_CHOPPABIKEANIMS_UNKNOWN_30 = 381, + ANIM_CHOPPABIKEANIMS_UNKNOWN_31 = 382, + ANIM_CHOPPABIKEANIMS_UNKNOWN_32 = 383, + ANIM_CHOPPABIKEANIMS_CHOPPA_GETOFFBACK_1 = 384, + ANIM_CHOPPABIKEANIMS_CHOPPA_GETOFFBACK_2 = 385, + ANIM_CHOPPABIKEANIMS_UNKNOWN_35 = 386, + ANIM_CHOPPABIKEANIMS_UNKNOWN_36 = 387, + ANIM_CHOPPABIKEANIMS_UNKNOWN_37 = 388, + ANIM_CHOPPABIKEANIMS_UNKNOWN_38 = 389, + ANIM_CHOPPABIKEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 100 | GroupName : quadbikeanims | Group ID: 100 | Total Animations: 40 +enum equadbikeanimsAnimGroup +{ + ANIM_QUADBIKEANIMS_UNKNOWN_0 = 351, + ANIM_QUADBIKEANIMS_UNKNOWN_1 = 352, + ANIM_QUADBIKEANIMS_UNKNOWN_2 = 353, + ANIM_QUADBIKEANIMS_UNKNOWN_3 = 354, + ANIM_QUADBIKEANIMS_UNKNOWN_4 = 355, + ANIM_QUADBIKEANIMS_UNKNOWN_5 = 356, + ANIM_QUADBIKEANIMS_UNKNOWN_6 = 357, + ANIM_QUADBIKEANIMS_UNKNOWN_7 = 358, + ANIM_QUADBIKEANIMS_QUAD_GETON_LHS_0 = 359, + ANIM_QUADBIKEANIMS_QUAD_GETON_RHS_0 = 360, + ANIM_QUADBIKEANIMS_QUAD_GETON_LHS_1 = 361, + ANIM_QUADBIKEANIMS_QUAD_GETON_RHS_1 = 362, + ANIM_QUADBIKEANIMS_QUAD_KICK = 363, + ANIM_QUADBIKEANIMS_UNKNOWN_13 = 364, + ANIM_QUADBIKEANIMS_UNKNOWN_14 = 365, + ANIM_QUADBIKEANIMS_UNKNOWN_15 = 366, + ANIM_QUADBIKEANIMS_UNKNOWN_16 = 367, + ANIM_QUADBIKEANIMS_UNKNOWN_17 = 368, + ANIM_QUADBIKEANIMS_UNKNOWN_18 = 369, + ANIM_QUADBIKEANIMS_UNKNOWN_19 = 370, + ANIM_QUADBIKEANIMS_UNKNOWN_20 = 371, + ANIM_QUADBIKEANIMS_UNKNOWN_21 = 372, + ANIM_QUADBIKEANIMS_QUAD_GETOFF_LHS_0 = 373, + ANIM_QUADBIKEANIMS_QUAD_GETOFF_RHS_0 = 374, + ANIM_QUADBIKEANIMS_QUAD_GETOFF_LHS_1 = 375, + ANIM_QUADBIKEANIMS_QUAD_GETOFF_RHS_1 = 376, + ANIM_QUADBIKEANIMS_QUAD_GETOFF_B_0 = 377, + ANIM_QUADBIKEANIMS_UNKNOWN_27 = 378, + ANIM_QUADBIKEANIMS_UNKNOWN_28 = 379, + ANIM_QUADBIKEANIMS_UNKNOWN_29 = 380, + ANIM_QUADBIKEANIMS_UNKNOWN_30 = 381, + ANIM_QUADBIKEANIMS_UNKNOWN_31 = 382, + ANIM_QUADBIKEANIMS_UNKNOWN_32 = 383, + ANIM_QUADBIKEANIMS_QUAD_GETOFF_B_1 = 384, + ANIM_QUADBIKEANIMS_QUAD_GETOFF_B_2 = 385, + ANIM_QUADBIKEANIMS_UNKNOWN_35 = 386, + ANIM_QUADBIKEANIMS_UNKNOWN_36 = 387, + ANIM_QUADBIKEANIMS_UNKNOWN_37 = 388, + ANIM_QUADBIKEANIMS_UNKNOWN_38 = 389, + ANIM_QUADBIKEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 101 | GroupName : vancaranims | Group ID: 101 | Total Animations: 40 +enum evancaranimsAnimGroup +{ + ANIM_VANCARANIMS_UNKNOWN_0 = 351, + ANIM_VANCARANIMS_UNKNOWN_1 = 352, + ANIM_VANCARANIMS_UNKNOWN_2 = 353, + ANIM_VANCARANIMS_UNKNOWN_3 = 354, + ANIM_VANCARANIMS_UNKNOWN_4 = 355, + ANIM_VANCARANIMS_UNKNOWN_5 = 356, + ANIM_VANCARANIMS_VAN_OPEN_BACK_LHS = 357, + ANIM_VANCARANIMS_VAN_OPEN_BACK_RHS = 358, + ANIM_VANCARANIMS_UNKNOWN_8 = 359, + ANIM_VANCARANIMS_UNKNOWN_9 = 360, + ANIM_VANCARANIMS_VAN_GETIN_BACK_LHS = 361, + ANIM_VANCARANIMS_VAN_GETIN_BACK_RHS = 362, + ANIM_VANCARANIMS_UNKNOWN_12 = 363, + ANIM_VANCARANIMS_UNKNOWN_13 = 364, + ANIM_VANCARANIMS_UNKNOWN_14 = 365, + ANIM_VANCARANIMS_UNKNOWN_15 = 366, + ANIM_VANCARANIMS_UNKNOWN_16 = 367, + ANIM_VANCARANIMS_UNKNOWN_17 = 368, + ANIM_VANCARANIMS_VAN_CLOSE_BACK_LHS = 369, + ANIM_VANCARANIMS_VAN_CLOSE_BACK_RHS = 370, + ANIM_VANCARANIMS_UNKNOWN_20 = 371, + ANIM_VANCARANIMS_UNKNOWN_21 = 372, + ANIM_VANCARANIMS_UNKNOWN_22 = 373, + ANIM_VANCARANIMS_UNKNOWN_23 = 374, + ANIM_VANCARANIMS_VAN_GETOUT_BACK_LHS = 375, + ANIM_VANCARANIMS_VAN_GETOUT_BACK_RHS = 376, + ANIM_VANCARANIMS_UNKNOWN_26 = 377, + ANIM_VANCARANIMS_UNKNOWN_27 = 378, + ANIM_VANCARANIMS_UNKNOWN_28 = 379, + ANIM_VANCARANIMS_UNKNOWN_29 = 380, + ANIM_VANCARANIMS_UNKNOWN_30 = 381, + ANIM_VANCARANIMS_UNKNOWN_31 = 382, + ANIM_VANCARANIMS_UNKNOWN_32 = 383, + ANIM_VANCARANIMS_UNKNOWN_33 = 384, + ANIM_VANCARANIMS_UNKNOWN_34 = 385, + ANIM_VANCARANIMS_UNKNOWN_35 = 386, + ANIM_VANCARANIMS_UNKNOWN_36 = 387, + ANIM_VANCARANIMS_UNKNOWN_37 = 388, + ANIM_VANCARANIMS_UNKNOWN_38 = 389, + ANIM_VANCARANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 102 | GroupName : rustplaneanims | Group ID: 102 | Total Animations: 40 +enum erustplaneanimsAnimGroup +{ + ANIM_RUSTPLANEANIMS_PLANE_ALIGN_LHS = 351, + ANIM_RUSTPLANEANIMS_UNKNOWN_1 = 352, + ANIM_RUSTPLANEANIMS_UNKNOWN_2 = 353, + ANIM_RUSTPLANEANIMS_UNKNOWN_3 = 354, + ANIM_RUSTPLANEANIMS_PLANE_OPEN = 355, + ANIM_RUSTPLANEANIMS_UNKNOWN_5 = 356, + ANIM_RUSTPLANEANIMS_UNKNOWN_6 = 357, + ANIM_RUSTPLANEANIMS_UNKNOWN_7 = 358, + ANIM_RUSTPLANEANIMS_PLANE_GETIN = 359, + ANIM_RUSTPLANEANIMS_UNKNOWN_9 = 360, + ANIM_RUSTPLANEANIMS_UNKNOWN_10 = 361, + ANIM_RUSTPLANEANIMS_UNKNOWN_11 = 362, + ANIM_RUSTPLANEANIMS_UNKNOWN_12 = 363, + ANIM_RUSTPLANEANIMS_UNKNOWN_13 = 364, + ANIM_RUSTPLANEANIMS_UNKNOWN_14 = 365, + ANIM_RUSTPLANEANIMS_UNKNOWN_15 = 366, + ANIM_RUSTPLANEANIMS_PLANE_CLOSE_0 = 367, + ANIM_RUSTPLANEANIMS_UNKNOWN_17 = 368, + ANIM_RUSTPLANEANIMS_UNKNOWN_18 = 369, + ANIM_RUSTPLANEANIMS_UNKNOWN_19 = 370, + ANIM_RUSTPLANEANIMS_UNKNOWN_20 = 371, + ANIM_RUSTPLANEANIMS_UNKNOWN_21 = 372, + ANIM_RUSTPLANEANIMS_PLANE_GETOUT = 373, + ANIM_RUSTPLANEANIMS_UNKNOWN_23 = 374, + ANIM_RUSTPLANEANIMS_UNKNOWN_24 = 375, + ANIM_RUSTPLANEANIMS_UNKNOWN_25 = 376, + ANIM_RUSTPLANEANIMS_UNKNOWN_26 = 377, + ANIM_RUSTPLANEANIMS_UNKNOWN_27 = 378, + ANIM_RUSTPLANEANIMS_UNKNOWN_28 = 379, + ANIM_RUSTPLANEANIMS_UNKNOWN_29 = 380, + ANIM_RUSTPLANEANIMS_UNKNOWN_30 = 381, + ANIM_RUSTPLANEANIMS_UNKNOWN_31 = 382, + ANIM_RUSTPLANEANIMS_UNKNOWN_32 = 383, + ANIM_RUSTPLANEANIMS_UNKNOWN_33 = 384, + ANIM_RUSTPLANEANIMS_UNKNOWN_34 = 385, + ANIM_RUSTPLANEANIMS_PLANE_CLOSE_1 = 386, + ANIM_RUSTPLANEANIMS_UNKNOWN_36 = 387, + ANIM_RUSTPLANEANIMS_UNKNOWN_37 = 388, + ANIM_RUSTPLANEANIMS_UNKNOWN_38 = 389, + ANIM_RUSTPLANEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 103 | GroupName : coachcaranims | Group ID: 103 | Total Animations: 40 +enum ecoachcaranimsAnimGroup +{ + ANIM_COACHCARANIMS_UNKNOWN_0 = 351, + ANIM_COACHCARANIMS_UNKNOWN_1 = 352, + ANIM_COACHCARANIMS_UNKNOWN_2 = 353, + ANIM_COACHCARANIMS_UNKNOWN_3 = 354, + ANIM_COACHCARANIMS_COACH_OPNL_0 = 355, + ANIM_COACHCARANIMS_COACH_OPNR_0 = 356, + ANIM_COACHCARANIMS_COACH_OPNL_1 = 357, + ANIM_COACHCARANIMS_COACH_OPNR_1 = 358, + ANIM_COACHCARANIMS_COACH_INL_0 = 359, + ANIM_COACHCARANIMS_COACH_INR_0 = 360, + ANIM_COACHCARANIMS_COACH_INL_1 = 361, + ANIM_COACHCARANIMS_COACH_INR_1 = 362, + ANIM_COACHCARANIMS_UNKNOWN_12 = 363, + ANIM_COACHCARANIMS_UNKNOWN_13 = 364, + ANIM_COACHCARANIMS_UNKNOWN_14 = 365, + ANIM_COACHCARANIMS_UNKNOWN_15 = 366, + ANIM_COACHCARANIMS_UNKNOWN_16 = 367, + ANIM_COACHCARANIMS_UNKNOWN_17 = 368, + ANIM_COACHCARANIMS_UNKNOWN_18 = 369, + ANIM_COACHCARANIMS_UNKNOWN_19 = 370, + ANIM_COACHCARANIMS_UNKNOWN_20 = 371, + ANIM_COACHCARANIMS_UNKNOWN_21 = 372, + ANIM_COACHCARANIMS_COACH_OUTL_0 = 373, + ANIM_COACHCARANIMS_COACH_OUTR_0 = 374, + ANIM_COACHCARANIMS_COACH_OUTL_1 = 375, + ANIM_COACHCARANIMS_COACH_OUTR_1 = 376, + ANIM_COACHCARANIMS_UNKNOWN_26 = 377, + ANIM_COACHCARANIMS_UNKNOWN_27 = 378, + ANIM_COACHCARANIMS_UNKNOWN_28 = 379, + ANIM_COACHCARANIMS_UNKNOWN_29 = 380, + ANIM_COACHCARANIMS_UNKNOWN_30 = 381, + ANIM_COACHCARANIMS_UNKNOWN_31 = 382, + ANIM_COACHCARANIMS_UNKNOWN_32 = 383, + ANIM_COACHCARANIMS_UNKNOWN_33 = 384, + ANIM_COACHCARANIMS_UNKNOWN_34 = 385, + ANIM_COACHCARANIMS_UNKNOWN_35 = 386, + ANIM_COACHCARANIMS_UNKNOWN_36 = 387, + ANIM_COACHCARANIMS_UNKNOWN_37 = 388, + ANIM_COACHCARANIMS_UNKNOWN_38 = 389, + ANIM_COACHCARANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 104 | GroupName : buscaranims | Group ID: 104 | Total Animations: 40 +enum ebuscaranimsAnimGroup +{ + ANIM_BUSCARANIMS_UNKNOWN_0 = 351, + ANIM_BUSCARANIMS_UNKNOWN_1 = 352, + ANIM_BUSCARANIMS_UNKNOWN_2 = 353, + ANIM_BUSCARANIMS_UNKNOWN_3 = 354, + ANIM_BUSCARANIMS_BUS_OPEN_0 = 355, + ANIM_BUSCARANIMS_BUS_OPEN_RHS = 356, + ANIM_BUSCARANIMS_BUS_OPEN_1 = 357, + ANIM_BUSCARANIMS_UNKNOWN_7 = 358, + ANIM_BUSCARANIMS_BUS_GETIN_LHS_0 = 359, + ANIM_BUSCARANIMS_BUS_GETIN_RHS = 360, + ANIM_BUSCARANIMS_BUS_GETIN_LHS_1 = 361, + ANIM_BUSCARANIMS_UNKNOWN_11 = 362, + ANIM_BUSCARANIMS_UNKNOWN_12 = 363, + ANIM_BUSCARANIMS_BUS_PULLOUT_LHS_0 = 364, + ANIM_BUSCARANIMS_BUS_PULLOUT_LHS_1 = 365, + ANIM_BUSCARANIMS_UNKNOWN_15 = 366, + ANIM_BUSCARANIMS_BUS_CLOSE_0 = 367, + ANIM_BUSCARANIMS_UNKNOWN_17 = 368, + ANIM_BUSCARANIMS_BUS_CLOSE_1 = 369, + ANIM_BUSCARANIMS_UNKNOWN_19 = 370, + ANIM_BUSCARANIMS_UNKNOWN_20 = 371, + ANIM_BUSCARANIMS_UNKNOWN_21 = 372, + ANIM_BUSCARANIMS_BUS_GETOUT_LHS_0 = 373, + ANIM_BUSCARANIMS_BUS_GETOUT_RHS = 374, + ANIM_BUSCARANIMS_BUS_GETOUT_LHS_1 = 375, + ANIM_BUSCARANIMS_UNKNOWN_25 = 376, + ANIM_BUSCARANIMS_UNKNOWN_26 = 377, + ANIM_BUSCARANIMS_BUS_JACKED_LHS_0 = 378, + ANIM_BUSCARANIMS_BUS_JACKED_LHS_1 = 379, + ANIM_BUSCARANIMS_BUS_CLOSE_2 = 380, + ANIM_BUSCARANIMS_UNKNOWN_30 = 381, + ANIM_BUSCARANIMS_BUS_CLOSE_3 = 382, + ANIM_BUSCARANIMS_UNKNOWN_32 = 383, + ANIM_BUSCARANIMS_UNKNOWN_33 = 384, + ANIM_BUSCARANIMS_UNKNOWN_34 = 385, + ANIM_BUSCARANIMS_UNKNOWN_35 = 386, + ANIM_BUSCARANIMS_UNKNOWN_36 = 387, + ANIM_BUSCARANIMS_UNKNOWN_37 = 388, + ANIM_BUSCARANIMS_UNKNOWN_38 = 389, + ANIM_BUSCARANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 105 | GroupName : dozercaranims | Group ID: 105 | Total Animations: 40 +enum edozercaranimsAnimGroup +{ + ANIM_DOZERCARANIMS_DOZER_ALIGN_LHS_0 = 351, + ANIM_DOZERCARANIMS_DOZER_ALIGN_RHS = 352, + ANIM_DOZERCARANIMS_DOZER_ALIGN_LHS_1 = 353, + ANIM_DOZERCARANIMS_DOZER_ALIGN_LHS_2 = 354, + ANIM_DOZERCARANIMS_UNKNOWN_4 = 355, + ANIM_DOZERCARANIMS_UNKNOWN_5 = 356, + ANIM_DOZERCARANIMS_UNKNOWN_6 = 357, + ANIM_DOZERCARANIMS_UNKNOWN_7 = 358, + ANIM_DOZERCARANIMS_DOZER_GETIN_LHS_0 = 359, + ANIM_DOZERCARANIMS_DOZER_GETIN_RHS_0 = 360, + ANIM_DOZERCARANIMS_DOZER_GETIN_LHS_1 = 361, + ANIM_DOZERCARANIMS_DOZER_GETIN_RHS_1 = 362, + ANIM_DOZERCARANIMS_UNKNOWN_12 = 363, + ANIM_DOZERCARANIMS_DOZER_PULLOUT_LHS = 364, + ANIM_DOZERCARANIMS_DOZER_PULLOUT_RHS = 365, + ANIM_DOZERCARANIMS_UNKNOWN_15 = 366, + ANIM_DOZERCARANIMS_UNKNOWN_16 = 367, + ANIM_DOZERCARANIMS_UNKNOWN_17 = 368, + ANIM_DOZERCARANIMS_UNKNOWN_18 = 369, + ANIM_DOZERCARANIMS_UNKNOWN_19 = 370, + ANIM_DOZERCARANIMS_UNKNOWN_20 = 371, + ANIM_DOZERCARANIMS_UNKNOWN_21 = 372, + ANIM_DOZERCARANIMS_DOZER_GETOUT_LHS_0 = 373, + ANIM_DOZERCARANIMS_DOZER_GETOUT_RHS_0 = 374, + ANIM_DOZERCARANIMS_DOZER_GETOUT_LHS_1 = 375, + ANIM_DOZERCARANIMS_DOZER_GETOUT_RHS_1 = 376, + ANIM_DOZERCARANIMS_UNKNOWN_26 = 377, + ANIM_DOZERCARANIMS_DOZER_JACKED_LHS = 378, + ANIM_DOZERCARANIMS_DOZER_JACKED_RHS = 379, + ANIM_DOZERCARANIMS_UNKNOWN_29 = 380, + ANIM_DOZERCARANIMS_UNKNOWN_30 = 381, + ANIM_DOZERCARANIMS_UNKNOWN_31 = 382, + ANIM_DOZERCARANIMS_UNKNOWN_32 = 383, + ANIM_DOZERCARANIMS_UNKNOWN_33 = 384, + ANIM_DOZERCARANIMS_UNKNOWN_34 = 385, + ANIM_DOZERCARANIMS_UNKNOWN_35 = 386, + ANIM_DOZERCARANIMS_UNKNOWN_36 = 387, + ANIM_DOZERCARANIMS_UNKNOWN_37 = 388, + ANIM_DOZERCARANIMS_UNKNOWN_38 = 389, + ANIM_DOZERCARANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 106 | GroupName : kartcaranims | Group ID: 106 | Total Animations: 40 +enum ekartcaranimsAnimGroup +{ + ANIM_KARTCARANIMS_UNKNOWN_0 = 351, + ANIM_KARTCARANIMS_UNKNOWN_1 = 352, + ANIM_KARTCARANIMS_UNKNOWN_2 = 353, + ANIM_KARTCARANIMS_UNKNOWN_3 = 354, + ANIM_KARTCARANIMS_UNKNOWN_4 = 355, + ANIM_KARTCARANIMS_UNKNOWN_5 = 356, + ANIM_KARTCARANIMS_UNKNOWN_6 = 357, + ANIM_KARTCARANIMS_UNKNOWN_7 = 358, + ANIM_KARTCARANIMS_KART_GETIN_LHS = 359, + ANIM_KARTCARANIMS_KART_GETIN_RHS = 360, + ANIM_KARTCARANIMS_UNKNOWN_10 = 361, + ANIM_KARTCARANIMS_UNKNOWN_11 = 362, + ANIM_KARTCARANIMS_UNKNOWN_12 = 363, + ANIM_KARTCARANIMS_UNKNOWN_13 = 364, + ANIM_KARTCARANIMS_UNKNOWN_14 = 365, + ANIM_KARTCARANIMS_UNKNOWN_15 = 366, + ANIM_KARTCARANIMS_UNKNOWN_16 = 367, + ANIM_KARTCARANIMS_UNKNOWN_17 = 368, + ANIM_KARTCARANIMS_UNKNOWN_18 = 369, + ANIM_KARTCARANIMS_UNKNOWN_19 = 370, + ANIM_KARTCARANIMS_UNKNOWN_20 = 371, + ANIM_KARTCARANIMS_UNKNOWN_21 = 372, + ANIM_KARTCARANIMS_KART_GETOUT_LHS = 373, + ANIM_KARTCARANIMS_KART_GETOUT_RHS = 374, + ANIM_KARTCARANIMS_UNKNOWN_24 = 375, + ANIM_KARTCARANIMS_UNKNOWN_25 = 376, + ANIM_KARTCARANIMS_UNKNOWN_26 = 377, + ANIM_KARTCARANIMS_UNKNOWN_27 = 378, + ANIM_KARTCARANIMS_UNKNOWN_28 = 379, + ANIM_KARTCARANIMS_UNKNOWN_29 = 380, + ANIM_KARTCARANIMS_UNKNOWN_30 = 381, + ANIM_KARTCARANIMS_UNKNOWN_31 = 382, + ANIM_KARTCARANIMS_UNKNOWN_32 = 383, + ANIM_KARTCARANIMS_UNKNOWN_33 = 384, + ANIM_KARTCARANIMS_UNKNOWN_34 = 385, + ANIM_KARTCARANIMS_UNKNOWN_35 = 386, + ANIM_KARTCARANIMS_UNKNOWN_36 = 387, + ANIM_KARTCARANIMS_UNKNOWN_37 = 388, + ANIM_KARTCARANIMS_UNKNOWN_38 = 389, + ANIM_KARTCARANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 107 | GroupName : convcaranims | Group ID: 107 | Total Animations: 40 +enum econvcaranimsAnimGroup +{ + ANIM_CONVCARANIMS_CAR_ALIGN_LHS = 351, + ANIM_CONVCARANIMS_CAR_ALIGN_RHS = 352, + ANIM_CONVCARANIMS_CAR_ALIGNHI_LHS = 353, + ANIM_CONVCARANIMS_CAR_ALIGNHI_RHS = 354, + ANIM_CONVCARANIMS_CAR_OPEN_LHS_0 = 355, + ANIM_CONVCARANIMS_CAR_OPEN_RHS_0 = 356, + ANIM_CONVCARANIMS_CAR_OPEN_LHS_1 = 357, + ANIM_CONVCARANIMS_CAR_OPEN_RHS_1 = 358, + ANIM_CONVCARANIMS_CAR_JUMPIN_LHS_0 = 359, + ANIM_CONVCARANIMS_CAR_GETIN_RHS_0 = 360, + ANIM_CONVCARANIMS_CAR_JUMPIN_LHS_1 = 361, + ANIM_CONVCARANIMS_CAR_GETIN_RHS_1 = 362, + ANIM_CONVCARANIMS_UNKNOWN_12 = 363, + ANIM_CONVCARANIMS_CAR_PULLOUT_LHS = 364, + ANIM_CONVCARANIMS_CAR_PULLOUT_RHS = 365, + ANIM_CONVCARANIMS_UNKNOWN_15 = 366, + ANIM_CONVCARANIMS_CAR_CLOSEDOOR_LHS_0 = 367, + ANIM_CONVCARANIMS_CAR_CLOSEDOOR_RHS_0 = 368, + ANIM_CONVCARANIMS_CAR_CLOSEDOOR_LHS_1 = 369, + ANIM_CONVCARANIMS_CAR_CLOSEDOOR_RHS_1 = 370, + ANIM_CONVCARANIMS_CAR_SHUFFLE_RHS_0 = 371, + ANIM_CONVCARANIMS_CAR_SHUFFLE_RHS_1 = 372, + ANIM_CONVCARANIMS_CAR_GETOUT_LHS_0 = 373, + ANIM_CONVCARANIMS_CAR_GETOUT_RHS_0 = 374, + ANIM_CONVCARANIMS_CAR_GETOUT_LHS_1 = 375, + ANIM_CONVCARANIMS_CAR_GETOUT_RHS_1 = 376, + ANIM_CONVCARANIMS_UNKNOWN_26 = 377, + ANIM_CONVCARANIMS_CAR_JACKEDLHS = 378, + ANIM_CONVCARANIMS_CAR_JACKEDRHS = 379, + ANIM_CONVCARANIMS_CAR_CLOSE_LHS_0 = 380, + ANIM_CONVCARANIMS_CAR_CLOSE_RHS_0 = 381, + ANIM_CONVCARANIMS_CAR_CLOSE_LHS_1 = 382, + ANIM_CONVCARANIMS_CAR_CLOSE_RHS_1 = 383, + ANIM_CONVCARANIMS_CAR_ROLLOUT_LHS = 384, + ANIM_CONVCARANIMS_CAR_ROLLOUT_RHS = 385, + ANIM_CONVCARANIMS_CAR_ROLLDOOR = 386, + ANIM_CONVCARANIMS_CAR_FALLOUT_LHS = 387, + ANIM_CONVCARANIMS_CAR_FALLOUT_RHS = 388, + ANIM_CONVCARANIMS_CAR_DOORLOCKED_LHS = 389, + ANIM_CONVCARANIMS_CAR_DOORLOCKED_RHS = 390, +}; +// [GROUP] i = 108 | GroupName : mtrkcaranims | Group ID: 108 | Total Animations: 40 +enum emtrkcaranimsAnimGroup +{ + ANIM_MTRKCARANIMS_TRUCK_ALIGN_LHS_0 = 351, + ANIM_MTRKCARANIMS_TRUCK_ALIGN_RHS = 352, + ANIM_MTRKCARANIMS_TRUCK_ALIGN_LHS_1 = 353, + ANIM_MTRKCARANIMS_TRUCK_ALIGN_LHS_2 = 354, + ANIM_MTRKCARANIMS_TRUCK_OPEN_LHS_0 = 355, + ANIM_MTRKCARANIMS_TRUCK_OPEN_RHS_0 = 356, + ANIM_MTRKCARANIMS_TRUCK_OPEN_LHS_1 = 357, + ANIM_MTRKCARANIMS_TRUCK_OPEN_RHS_1 = 358, + ANIM_MTRKCARANIMS_TRUCK_GETIN_LHS_0 = 359, + ANIM_MTRKCARANIMS_TRUCK_GETIN_RHS_0 = 360, + ANIM_MTRKCARANIMS_TRUCK_GETIN_LHS_1 = 361, + ANIM_MTRKCARANIMS_TRUCK_GETIN_RHS_1 = 362, + ANIM_MTRKCARANIMS_UNKNOWN_12 = 363, + ANIM_MTRKCARANIMS_TRUCK_PULLOUT_LHS = 364, + ANIM_MTRKCARANIMS_TRUCK_PULLOUT_RHS = 365, + ANIM_MTRKCARANIMS_UNKNOWN_15 = 366, + ANIM_MTRKCARANIMS_TRUCK_CLOSEDOOR_LHS_0 = 367, + ANIM_MTRKCARANIMS_TRUCK_CLOSEDOOR_RHS_0 = 368, + ANIM_MTRKCARANIMS_TRUCK_CLOSEDOOR_LHS_1 = 369, + ANIM_MTRKCARANIMS_TRUCK_CLOSEDOOR_RHS_1 = 370, + ANIM_MTRKCARANIMS_TRUCK_SHUFFLE_0 = 371, + ANIM_MTRKCARANIMS_TRUCK_SHUFFLE_1 = 372, + ANIM_MTRKCARANIMS_TRUCK_GETOUT_LHS_0 = 373, + ANIM_MTRKCARANIMS_TRUCK_GETOUT_RHS_0 = 374, + ANIM_MTRKCARANIMS_TRUCK_GETOUT_LHS_1 = 375, + ANIM_MTRKCARANIMS_TRUCK_GETOUT_RHS_1 = 376, + ANIM_MTRKCARANIMS_UNKNOWN_26 = 377, + ANIM_MTRKCARANIMS_TRUCK_JACKEDLHS = 378, + ANIM_MTRKCARANIMS_TRUCK_JACKEDRHS = 379, + ANIM_MTRKCARANIMS_TRUCK_CLOSE_LHS_0 = 380, + ANIM_MTRKCARANIMS_TRUCK_CLOSE_RHS_0 = 381, + ANIM_MTRKCARANIMS_TRUCK_CLOSE_LHS_1 = 382, + ANIM_MTRKCARANIMS_TRUCK_CLOSE_RHS_1 = 383, + ANIM_MTRKCARANIMS_UNKNOWN_33 = 384, + ANIM_MTRKCARANIMS_UNKNOWN_34 = 385, + ANIM_MTRKCARANIMS_UNKNOWN_35 = 386, + ANIM_MTRKCARANIMS_UNKNOWN_36 = 387, + ANIM_MTRKCARANIMS_UNKNOWN_37 = 388, + ANIM_MTRKCARANIMS_UNKNOWN_38 = 389, + ANIM_MTRKCARANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 109 | GroupName : traincarranims | Group ID: 109 | Total Animations: 40 +enum etraincarranimsAnimGroup +{ + ANIM_TRAINCARRANIMS_UNKNOWN_0 = 351, + ANIM_TRAINCARRANIMS_UNKNOWN_1 = 352, + ANIM_TRAINCARRANIMS_UNKNOWN_2 = 353, + ANIM_TRAINCARRANIMS_UNKNOWN_3 = 354, + ANIM_TRAINCARRANIMS_COACH_OPNL_0 = 355, + ANIM_TRAINCARRANIMS_COACH_OPNR_0 = 356, + ANIM_TRAINCARRANIMS_COACH_OPNL_1 = 357, + ANIM_TRAINCARRANIMS_COACH_OPNR_1 = 358, + ANIM_TRAINCARRANIMS_COACH_INL_0 = 359, + ANIM_TRAINCARRANIMS_COACH_INR_0 = 360, + ANIM_TRAINCARRANIMS_COACH_INL_1 = 361, + ANIM_TRAINCARRANIMS_COACH_INR_1 = 362, + ANIM_TRAINCARRANIMS_UNKNOWN_12 = 363, + ANIM_TRAINCARRANIMS_UNKNOWN_13 = 364, + ANIM_TRAINCARRANIMS_UNKNOWN_14 = 365, + ANIM_TRAINCARRANIMS_UNKNOWN_15 = 366, + ANIM_TRAINCARRANIMS_UNKNOWN_16 = 367, + ANIM_TRAINCARRANIMS_UNKNOWN_17 = 368, + ANIM_TRAINCARRANIMS_UNKNOWN_18 = 369, + ANIM_TRAINCARRANIMS_UNKNOWN_19 = 370, + ANIM_TRAINCARRANIMS_UNKNOWN_20 = 371, + ANIM_TRAINCARRANIMS_UNKNOWN_21 = 372, + ANIM_TRAINCARRANIMS_COACH_OUTL_0 = 373, + ANIM_TRAINCARRANIMS_COACH_OUTR_0 = 374, + ANIM_TRAINCARRANIMS_COACH_OUTL_1 = 375, + ANIM_TRAINCARRANIMS_COACH_OUTR_1 = 376, + ANIM_TRAINCARRANIMS_UNKNOWN_26 = 377, + ANIM_TRAINCARRANIMS_UNKNOWN_27 = 378, + ANIM_TRAINCARRANIMS_UNKNOWN_28 = 379, + ANIM_TRAINCARRANIMS_UNKNOWN_29 = 380, + ANIM_TRAINCARRANIMS_UNKNOWN_30 = 381, + ANIM_TRAINCARRANIMS_UNKNOWN_31 = 382, + ANIM_TRAINCARRANIMS_UNKNOWN_32 = 383, + ANIM_TRAINCARRANIMS_UNKNOWN_33 = 384, + ANIM_TRAINCARRANIMS_UNKNOWN_34 = 385, + ANIM_TRAINCARRANIMS_UNKNOWN_35 = 386, + ANIM_TRAINCARRANIMS_UNKNOWN_36 = 387, + ANIM_TRAINCARRANIMS_UNKNOWN_37 = 388, + ANIM_TRAINCARRANIMS_UNKNOWN_38 = 389, + ANIM_TRAINCARRANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 110 | GroupName : stdtallcaramims | Group ID: 110 | Total Animations: 40 +enum estdtallcaramimsAnimGroup +{ + ANIM_STDTALLCARAMIMS_CAR_ALIGN_LHS = 351, + ANIM_STDTALLCARAMIMS_CAR_ALIGN_RHS = 352, + ANIM_STDTALLCARAMIMS_CAR_ALIGNHI_LHS = 353, + ANIM_STDTALLCARAMIMS_CAR_ALIGNHI_RHS = 354, + ANIM_STDTALLCARAMIMS_CAR_OPEN_LHS_0 = 355, + ANIM_STDTALLCARAMIMS_CAR_OPEN_RHS_0 = 356, + ANIM_STDTALLCARAMIMS_CAR_OPEN_LHS_1 = 357, + ANIM_STDTALLCARAMIMS_CAR_OPEN_RHS_1 = 358, + ANIM_STDTALLCARAMIMS_CAR_GETIN_LHS_0 = 359, + ANIM_STDTALLCARAMIMS_CAR_GETIN_RHS_0 = 360, + ANIM_STDTALLCARAMIMS_CAR_GETIN_LHS_1 = 361, + ANIM_STDTALLCARAMIMS_CAR_GETIN_RHS_1 = 362, + ANIM_STDTALLCARAMIMS_UNKNOWN_12 = 363, + ANIM_STDTALLCARAMIMS_CAR_PULLOUT_LHS = 364, + ANIM_STDTALLCARAMIMS_CAR_PULLOUT_RHS = 365, + ANIM_STDTALLCARAMIMS_UNKNOWN_15 = 366, + ANIM_STDTALLCARAMIMS_CAR_CLOSEDOOR_LHS_0 = 367, + ANIM_STDTALLCARAMIMS_CAR_CLOSEDOOR_RHS_0 = 368, + ANIM_STDTALLCARAMIMS_CAR_CLOSEDOOR_LHS_1 = 369, + ANIM_STDTALLCARAMIMS_CAR_CLOSEDOOR_RHS_1 = 370, + ANIM_STDTALLCARAMIMS_CAR_SHUFFLE_RHS_0 = 371, + ANIM_STDTALLCARAMIMS_CAR_SHUFFLE_RHS_1 = 372, + ANIM_STDTALLCARAMIMS_CAR_GETOUT_LHS_0 = 373, + ANIM_STDTALLCARAMIMS_CAR_GETOUT_RHS_0 = 374, + ANIM_STDTALLCARAMIMS_CAR_GETOUT_LHS_1 = 375, + ANIM_STDTALLCARAMIMS_CAR_GETOUT_RHS_1 = 376, + ANIM_STDTALLCARAMIMS_UNKNOWN_26 = 377, + ANIM_STDTALLCARAMIMS_CAR_JACKEDLHS = 378, + ANIM_STDTALLCARAMIMS_CAR_JACKEDRHS = 379, + ANIM_STDTALLCARAMIMS_CAR_CLOSE_LHS_0 = 380, + ANIM_STDTALLCARAMIMS_CAR_CLOSE_RHS_0 = 381, + ANIM_STDTALLCARAMIMS_CAR_CLOSE_LHS_1 = 382, + ANIM_STDTALLCARAMIMS_CAR_CLOSE_RHS_1 = 383, + ANIM_STDTALLCARAMIMS_CAR_ROLLOUT_LHS = 384, + ANIM_STDTALLCARAMIMS_CAR_ROLLOUT_RHS = 385, + ANIM_STDTALLCARAMIMS_CAR_ROLLDOOR = 386, + ANIM_STDTALLCARAMIMS_CAR_FALLOUT_LHS = 387, + ANIM_STDTALLCARAMIMS_CAR_FALLOUT_RHS = 388, + ANIM_STDTALLCARAMIMS_CAR_DOORLOCKED_LHS = 389, + ANIM_STDTALLCARAMIMS_CAR_DOORLOCKED_RHS = 390, +}; +// [GROUP] i = 111 | GroupName : hovercaranims | Group ID: 111 | Total Animations: 40 +enum ehovercaranimsAnimGroup +{ + ANIM_HOVERCARANIMS_UNKNOWN_0 = 351, + ANIM_HOVERCARANIMS_UNKNOWN_1 = 352, + ANIM_HOVERCARANIMS_UNKNOWN_2 = 353, + ANIM_HOVERCARANIMS_UNKNOWN_3 = 354, + ANIM_HOVERCARANIMS_UNKNOWN_4 = 355, + ANIM_HOVERCARANIMS_UNKNOWN_5 = 356, + ANIM_HOVERCARANIMS_UNKNOWN_6 = 357, + ANIM_HOVERCARANIMS_UNKNOWN_7 = 358, + ANIM_HOVERCARANIMS_CAR_JUMPIN_LHS = 359, + ANIM_HOVERCARANIMS_CAR_JUMPIN_RHS = 360, + ANIM_HOVERCARANIMS_UNKNOWN_10 = 361, + ANIM_HOVERCARANIMS_UNKNOWN_11 = 362, + ANIM_HOVERCARANIMS_UNKNOWN_12 = 363, + ANIM_HOVERCARANIMS_UNKNOWN_13 = 364, + ANIM_HOVERCARANIMS_UNKNOWN_14 = 365, + ANIM_HOVERCARANIMS_UNKNOWN_15 = 366, + ANIM_HOVERCARANIMS_UNKNOWN_16 = 367, + ANIM_HOVERCARANIMS_UNKNOWN_17 = 368, + ANIM_HOVERCARANIMS_UNKNOWN_18 = 369, + ANIM_HOVERCARANIMS_UNKNOWN_19 = 370, + ANIM_HOVERCARANIMS_UNKNOWN_20 = 371, + ANIM_HOVERCARANIMS_UNKNOWN_21 = 372, + ANIM_HOVERCARANIMS_VORTEX_GETOUT_LHS = 373, + ANIM_HOVERCARANIMS_VORTEX_GETOUT_RHS = 374, + ANIM_HOVERCARANIMS_UNKNOWN_24 = 375, + ANIM_HOVERCARANIMS_UNKNOWN_25 = 376, + ANIM_HOVERCARANIMS_UNKNOWN_26 = 377, + ANIM_HOVERCARANIMS_UNKNOWN_27 = 378, + ANIM_HOVERCARANIMS_UNKNOWN_28 = 379, + ANIM_HOVERCARANIMS_UNKNOWN_29 = 380, + ANIM_HOVERCARANIMS_UNKNOWN_30 = 381, + ANIM_HOVERCARANIMS_UNKNOWN_31 = 382, + ANIM_HOVERCARANIMS_UNKNOWN_32 = 383, + ANIM_HOVERCARANIMS_UNKNOWN_33 = 384, + ANIM_HOVERCARANIMS_UNKNOWN_34 = 385, + ANIM_HOVERCARANIMS_UNKNOWN_35 = 386, + ANIM_HOVERCARANIMS_UNKNOWN_36 = 387, + ANIM_HOVERCARANIMS_UNKNOWN_37 = 388, + ANIM_HOVERCARANIMS_UNKNOWN_38 = 389, + ANIM_HOVERCARANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 112 | GroupName : tankcaranims | Group ID: 112 | Total Animations: 40 +enum etankcaranimsAnimGroup +{ + ANIM_TANKCARANIMS_TANK_ALIGN_LHS = 351, + ANIM_TANKCARANIMS_UNKNOWN_1 = 352, + ANIM_TANKCARANIMS_UNKNOWN_2 = 353, + ANIM_TANKCARANIMS_UNKNOWN_3 = 354, + ANIM_TANKCARANIMS_TANK_OPEN_LHS = 355, + ANIM_TANKCARANIMS_UNKNOWN_5 = 356, + ANIM_TANKCARANIMS_UNKNOWN_6 = 357, + ANIM_TANKCARANIMS_UNKNOWN_7 = 358, + ANIM_TANKCARANIMS_TANK_GETIN_LHS = 359, + ANIM_TANKCARANIMS_UNKNOWN_9 = 360, + ANIM_TANKCARANIMS_UNKNOWN_10 = 361, + ANIM_TANKCARANIMS_UNKNOWN_11 = 362, + ANIM_TANKCARANIMS_UNKNOWN_12 = 363, + ANIM_TANKCARANIMS_UNKNOWN_13 = 364, + ANIM_TANKCARANIMS_UNKNOWN_14 = 365, + ANIM_TANKCARANIMS_UNKNOWN_15 = 366, + ANIM_TANKCARANIMS_TANK_CLOSE_LHS = 367, + ANIM_TANKCARANIMS_UNKNOWN_17 = 368, + ANIM_TANKCARANIMS_UNKNOWN_18 = 369, + ANIM_TANKCARANIMS_UNKNOWN_19 = 370, + ANIM_TANKCARANIMS_UNKNOWN_20 = 371, + ANIM_TANKCARANIMS_UNKNOWN_21 = 372, + ANIM_TANKCARANIMS_TANK_GETOUT_LHS = 373, + ANIM_TANKCARANIMS_UNKNOWN_23 = 374, + ANIM_TANKCARANIMS_UNKNOWN_24 = 375, + ANIM_TANKCARANIMS_UNKNOWN_25 = 376, + ANIM_TANKCARANIMS_UNKNOWN_26 = 377, + ANIM_TANKCARANIMS_UNKNOWN_27 = 378, + ANIM_TANKCARANIMS_UNKNOWN_28 = 379, + ANIM_TANKCARANIMS_UNKNOWN_29 = 380, + ANIM_TANKCARANIMS_UNKNOWN_30 = 381, + ANIM_TANKCARANIMS_UNKNOWN_31 = 382, + ANIM_TANKCARANIMS_UNKNOWN_32 = 383, + ANIM_TANKCARANIMS_UNKNOWN_33 = 384, + ANIM_TANKCARANIMS_UNKNOWN_34 = 385, + ANIM_TANKCARANIMS_UNKNOWN_35 = 386, + ANIM_TANKCARANIMS_UNKNOWN_36 = 387, + ANIM_TANKCARANIMS_UNKNOWN_37 = 388, + ANIM_TANKCARANIMS_TANK_DOORLOCKED = 389, + ANIM_TANKCARANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 113 | GroupName : bfinjcaramims | Group ID: 113 | Total Animations: 40 +enum ebfinjcaramimsAnimGroup +{ + ANIM_BFINJCARAMIMS_UNKNOWN_0 = 351, + ANIM_BFINJCARAMIMS_UNKNOWN_1 = 352, + ANIM_BFINJCARAMIMS_UNKNOWN_2 = 353, + ANIM_BFINJCARAMIMS_UNKNOWN_3 = 354, + ANIM_BFINJCARAMIMS_UNKNOWN_4 = 355, + ANIM_BFINJCARAMIMS_UNKNOWN_5 = 356, + ANIM_BFINJCARAMIMS_UNKNOWN_6 = 357, + ANIM_BFINJCARAMIMS_UNKNOWN_7 = 358, + ANIM_BFINJCARAMIMS_BF_GETIN_LHS = 359, + ANIM_BFINJCARAMIMS_BF_GETIN_RHS = 360, + ANIM_BFINJCARAMIMS_UNKNOWN_10 = 361, + ANIM_BFINJCARAMIMS_UNKNOWN_11 = 362, + ANIM_BFINJCARAMIMS_UNKNOWN_12 = 363, + ANIM_BFINJCARAMIMS_UNKNOWN_13 = 364, + ANIM_BFINJCARAMIMS_UNKNOWN_14 = 365, + ANIM_BFINJCARAMIMS_UNKNOWN_15 = 366, + ANIM_BFINJCARAMIMS_UNKNOWN_16 = 367, + ANIM_BFINJCARAMIMS_UNKNOWN_17 = 368, + ANIM_BFINJCARAMIMS_UNKNOWN_18 = 369, + ANIM_BFINJCARAMIMS_UNKNOWN_19 = 370, + ANIM_BFINJCARAMIMS_UNKNOWN_20 = 371, + ANIM_BFINJCARAMIMS_UNKNOWN_21 = 372, + ANIM_BFINJCARAMIMS_BF_GETOUT_LHS = 373, + ANIM_BFINJCARAMIMS_BF_GETOUT_RHS = 374, + ANIM_BFINJCARAMIMS_UNKNOWN_24 = 375, + ANIM_BFINJCARAMIMS_UNKNOWN_25 = 376, + ANIM_BFINJCARAMIMS_UNKNOWN_26 = 377, + ANIM_BFINJCARAMIMS_UNKNOWN_27 = 378, + ANIM_BFINJCARAMIMS_UNKNOWN_28 = 379, + ANIM_BFINJCARAMIMS_UNKNOWN_29 = 380, + ANIM_BFINJCARAMIMS_UNKNOWN_30 = 381, + ANIM_BFINJCARAMIMS_UNKNOWN_31 = 382, + ANIM_BFINJCARAMIMS_UNKNOWN_32 = 383, + ANIM_BFINJCARAMIMS_UNKNOWN_33 = 384, + ANIM_BFINJCARAMIMS_UNKNOWN_34 = 385, + ANIM_BFINJCARAMIMS_UNKNOWN_35 = 386, + ANIM_BFINJCARAMIMS_UNKNOWN_36 = 387, + ANIM_BFINJCARAMIMS_UNKNOWN_37 = 388, + ANIM_BFINJCARAMIMS_UNKNOWN_38 = 389, + ANIM_BFINJCARAMIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 114 | GroupName : learplaneanims | Group ID: 114 | Total Animations: 40 +enum elearplaneanimsAnimGroup +{ + ANIM_LEARPLANEANIMS_SHAMAL_ALIGN = 351, + ANIM_LEARPLANEANIMS_UNKNOWN_1 = 352, + ANIM_LEARPLANEANIMS_UNKNOWN_2 = 353, + ANIM_LEARPLANEANIMS_UNKNOWN_3 = 354, + ANIM_LEARPLANEANIMS_SHAMAL_OPEN = 355, + ANIM_LEARPLANEANIMS_UNKNOWN_5 = 356, + ANIM_LEARPLANEANIMS_UNKNOWN_6 = 357, + ANIM_LEARPLANEANIMS_UNKNOWN_7 = 358, + ANIM_LEARPLANEANIMS_SHAMAL_GETIN_LHS = 359, + ANIM_LEARPLANEANIMS_UNKNOWN_9 = 360, + ANIM_LEARPLANEANIMS_UNKNOWN_10 = 361, + ANIM_LEARPLANEANIMS_UNKNOWN_11 = 362, + ANIM_LEARPLANEANIMS_UNKNOWN_12 = 363, + ANIM_LEARPLANEANIMS_UNKNOWN_13 = 364, + ANIM_LEARPLANEANIMS_UNKNOWN_14 = 365, + ANIM_LEARPLANEANIMS_UNKNOWN_15 = 366, + ANIM_LEARPLANEANIMS_UNKNOWN_16 = 367, + ANIM_LEARPLANEANIMS_UNKNOWN_17 = 368, + ANIM_LEARPLANEANIMS_UNKNOWN_18 = 369, + ANIM_LEARPLANEANIMS_UNKNOWN_19 = 370, + ANIM_LEARPLANEANIMS_UNKNOWN_20 = 371, + ANIM_LEARPLANEANIMS_UNKNOWN_21 = 372, + ANIM_LEARPLANEANIMS_SHAMAL_GETOUT_LHS = 373, + ANIM_LEARPLANEANIMS_UNKNOWN_23 = 374, + ANIM_LEARPLANEANIMS_UNKNOWN_24 = 375, + ANIM_LEARPLANEANIMS_UNKNOWN_25 = 376, + ANIM_LEARPLANEANIMS_UNKNOWN_26 = 377, + ANIM_LEARPLANEANIMS_UNKNOWN_27 = 378, + ANIM_LEARPLANEANIMS_UNKNOWN_28 = 379, + ANIM_LEARPLANEANIMS_UNKNOWN_29 = 380, + ANIM_LEARPLANEANIMS_UNKNOWN_30 = 381, + ANIM_LEARPLANEANIMS_UNKNOWN_31 = 382, + ANIM_LEARPLANEANIMS_UNKNOWN_32 = 383, + ANIM_LEARPLANEANIMS_UNKNOWN_33 = 384, + ANIM_LEARPLANEANIMS_UNKNOWN_34 = 385, + ANIM_LEARPLANEANIMS_UNKNOWN_35 = 386, + ANIM_LEARPLANEANIMS_UNKNOWN_36 = 387, + ANIM_LEARPLANEANIMS_UNKNOWN_37 = 388, + ANIM_LEARPLANEANIMS_UNKNOWN_38 = 389, + ANIM_LEARPLANEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 115 | GroupName : harrplaneanims | Group ID: 115 | Total Animations: 40 +enum eharrplaneanimsAnimGroup +{ + ANIM_HARRPLANEANIMS_UNKNOWN_0 = 351, + ANIM_HARRPLANEANIMS_UNKNOWN_1 = 352, + ANIM_HARRPLANEANIMS_UNKNOWN_2 = 353, + ANIM_HARRPLANEANIMS_UNKNOWN_3 = 354, + ANIM_HARRPLANEANIMS_PLANE_OPEN = 355, + ANIM_HARRPLANEANIMS_UNKNOWN_5 = 356, + ANIM_HARRPLANEANIMS_UNKNOWN_6 = 357, + ANIM_HARRPLANEANIMS_UNKNOWN_7 = 358, + ANIM_HARRPLANEANIMS_PLANE_GETIN = 359, + ANIM_HARRPLANEANIMS_UNKNOWN_9 = 360, + ANIM_HARRPLANEANIMS_UNKNOWN_10 = 361, + ANIM_HARRPLANEANIMS_UNKNOWN_11 = 362, + ANIM_HARRPLANEANIMS_UNKNOWN_12 = 363, + ANIM_HARRPLANEANIMS_UNKNOWN_13 = 364, + ANIM_HARRPLANEANIMS_UNKNOWN_14 = 365, + ANIM_HARRPLANEANIMS_UNKNOWN_15 = 366, + ANIM_HARRPLANEANIMS_PLANE_CLOSE_0 = 367, + ANIM_HARRPLANEANIMS_UNKNOWN_17 = 368, + ANIM_HARRPLANEANIMS_UNKNOWN_18 = 369, + ANIM_HARRPLANEANIMS_UNKNOWN_19 = 370, + ANIM_HARRPLANEANIMS_UNKNOWN_20 = 371, + ANIM_HARRPLANEANIMS_UNKNOWN_21 = 372, + ANIM_HARRPLANEANIMS_PLANE_GETOUT = 373, + ANIM_HARRPLANEANIMS_UNKNOWN_23 = 374, + ANIM_HARRPLANEANIMS_UNKNOWN_24 = 375, + ANIM_HARRPLANEANIMS_UNKNOWN_25 = 376, + ANIM_HARRPLANEANIMS_UNKNOWN_26 = 377, + ANIM_HARRPLANEANIMS_UNKNOWN_27 = 378, + ANIM_HARRPLANEANIMS_UNKNOWN_28 = 379, + ANIM_HARRPLANEANIMS_UNKNOWN_29 = 380, + ANIM_HARRPLANEANIMS_UNKNOWN_30 = 381, + ANIM_HARRPLANEANIMS_UNKNOWN_31 = 382, + ANIM_HARRPLANEANIMS_UNKNOWN_32 = 383, + ANIM_HARRPLANEANIMS_UNKNOWN_33 = 384, + ANIM_HARRPLANEANIMS_UNKNOWN_34 = 385, + ANIM_HARRPLANEANIMS_PLANE_CLOSE_1 = 386, + ANIM_HARRPLANEANIMS_UNKNOWN_36 = 387, + ANIM_HARRPLANEANIMS_UNKNOWN_37 = 388, + ANIM_HARRPLANEANIMS_UNKNOWN_38 = 389, + ANIM_HARRPLANEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 116 | GroupName : stdcarupright | Group ID: 116 | Total Animations: 40 +enum estdcaruprightAnimGroup +{ + ANIM_STDCARUPRIGHT_CAR_ALIGN_LHS = 351, + ANIM_STDCARUPRIGHT_CAR_ALIGN_RHS = 352, + ANIM_STDCARUPRIGHT_CAR_ALIGNHI_LHS = 353, + ANIM_STDCARUPRIGHT_CAR_ALIGNHI_RHS = 354, + ANIM_STDCARUPRIGHT_CAR_OPEN_LHS_0 = 355, + ANIM_STDCARUPRIGHT_CAR_OPEN_RHS_0 = 356, + ANIM_STDCARUPRIGHT_CAR_OPEN_LHS_1 = 357, + ANIM_STDCARUPRIGHT_CAR_OPEN_RHS_1 = 358, + ANIM_STDCARUPRIGHT_CAR_GETIN_LHS_0 = 359, + ANIM_STDCARUPRIGHT_CAR_GETIN_RHS_0 = 360, + ANIM_STDCARUPRIGHT_CAR_GETIN_LHS_1 = 361, + ANIM_STDCARUPRIGHT_CAR_GETIN_RHS_1 = 362, + ANIM_STDCARUPRIGHT_UNKNOWN_12 = 363, + ANIM_STDCARUPRIGHT_CAR_PULLOUT_LHS = 364, + ANIM_STDCARUPRIGHT_CAR_PULLOUT_RHS = 365, + ANIM_STDCARUPRIGHT_UNKNOWN_15 = 366, + ANIM_STDCARUPRIGHT_CAR_CLOSEDOOR_LHS_0 = 367, + ANIM_STDCARUPRIGHT_CAR_CLOSEDOOR_RHS_0 = 368, + ANIM_STDCARUPRIGHT_CAR_CLOSEDOOR_LHS_1 = 369, + ANIM_STDCARUPRIGHT_CAR_CLOSEDOOR_RHS_1 = 370, + ANIM_STDCARUPRIGHT_CAR_SHUFFLE_RHS_0 = 371, + ANIM_STDCARUPRIGHT_CAR_SHUFFLE_RHS_1 = 372, + ANIM_STDCARUPRIGHT_CAR_GETOUT_LHS_0 = 373, + ANIM_STDCARUPRIGHT_CAR_GETOUT_RHS_0 = 374, + ANIM_STDCARUPRIGHT_CAR_GETOUT_LHS_1 = 375, + ANIM_STDCARUPRIGHT_CAR_GETOUT_RHS_1 = 376, + ANIM_STDCARUPRIGHT_UNKNOWN_26 = 377, + ANIM_STDCARUPRIGHT_CAR_JACKEDLHS = 378, + ANIM_STDCARUPRIGHT_CAR_JACKEDRHS = 379, + ANIM_STDCARUPRIGHT_CAR_CLOSE_LHS_0 = 380, + ANIM_STDCARUPRIGHT_CAR_CLOSE_RHS_0 = 381, + ANIM_STDCARUPRIGHT_CAR_CLOSE_LHS_1 = 382, + ANIM_STDCARUPRIGHT_CAR_CLOSE_RHS_1 = 383, + ANIM_STDCARUPRIGHT_CAR_ROLLOUT_LHS = 384, + ANIM_STDCARUPRIGHT_CAR_ROLLOUT_RHS = 385, + ANIM_STDCARUPRIGHT_CAR_ROLLDOOR = 386, + ANIM_STDCARUPRIGHT_CAR_FALLOUT_LHS = 387, + ANIM_STDCARUPRIGHT_CAR_FALLOUT_RHS = 388, + ANIM_STDCARUPRIGHT_CAR_DOORLOCKED_LHS = 389, + ANIM_STDCARUPRIGHT_CAR_DOORLOCKED_RHS = 390, +}; +// [GROUP] i = 117 | GroupName : nvadaplaneanims | Group ID: 117 | Total Animations: 40 +enum envadaplaneanimsAnimGroup +{ + ANIM_NVADAPLANEANIMS_UNKNOWN_0 = 351, + ANIM_NVADAPLANEANIMS_UNKNOWN_1 = 352, + ANIM_NVADAPLANEANIMS_UNKNOWN_2 = 353, + ANIM_NVADAPLANEANIMS_UNKNOWN_3 = 354, + ANIM_NVADAPLANEANIMS_UNKNOWN_4 = 355, + ANIM_NVADAPLANEANIMS_UNKNOWN_5 = 356, + ANIM_NVADAPLANEANIMS_UNKNOWN_6 = 357, + ANIM_NVADAPLANEANIMS_UNKNOWN_7 = 358, + ANIM_NVADAPLANEANIMS_NEVADA_GETIN = 359, + ANIM_NVADAPLANEANIMS_UNKNOWN_9 = 360, + ANIM_NVADAPLANEANIMS_UNKNOWN_10 = 361, + ANIM_NVADAPLANEANIMS_UNKNOWN_11 = 362, + ANIM_NVADAPLANEANIMS_UNKNOWN_12 = 363, + ANIM_NVADAPLANEANIMS_UNKNOWN_13 = 364, + ANIM_NVADAPLANEANIMS_UNKNOWN_14 = 365, + ANIM_NVADAPLANEANIMS_UNKNOWN_15 = 366, + ANIM_NVADAPLANEANIMS_UNKNOWN_16 = 367, + ANIM_NVADAPLANEANIMS_UNKNOWN_17 = 368, + ANIM_NVADAPLANEANIMS_UNKNOWN_18 = 369, + ANIM_NVADAPLANEANIMS_UNKNOWN_19 = 370, + ANIM_NVADAPLANEANIMS_UNKNOWN_20 = 371, + ANIM_NVADAPLANEANIMS_UNKNOWN_21 = 372, + ANIM_NVADAPLANEANIMS_NEVADA_GETOUT = 373, + ANIM_NVADAPLANEANIMS_UNKNOWN_23 = 374, + ANIM_NVADAPLANEANIMS_UNKNOWN_24 = 375, + ANIM_NVADAPLANEANIMS_UNKNOWN_25 = 376, + ANIM_NVADAPLANEANIMS_UNKNOWN_26 = 377, + ANIM_NVADAPLANEANIMS_UNKNOWN_27 = 378, + ANIM_NVADAPLANEANIMS_UNKNOWN_28 = 379, + ANIM_NVADAPLANEANIMS_UNKNOWN_29 = 380, + ANIM_NVADAPLANEANIMS_UNKNOWN_30 = 381, + ANIM_NVADAPLANEANIMS_UNKNOWN_31 = 382, + ANIM_NVADAPLANEANIMS_UNKNOWN_32 = 383, + ANIM_NVADAPLANEANIMS_UNKNOWN_33 = 384, + ANIM_NVADAPLANEANIMS_UNKNOWN_34 = 385, + ANIM_NVADAPLANEANIMS_UNKNOWN_35 = 386, + ANIM_NVADAPLANEANIMS_UNKNOWN_36 = 387, + ANIM_NVADAPLANEANIMS_UNKNOWN_37 = 388, + ANIM_NVADAPLANEANIMS_UNKNOWN_38 = 389, + ANIM_NVADAPLANEANIMS_UNKNOWN_39 = 390, +}; +// [GROUP] i = 118 | GroupName : man | Group ID: 118 | Total Animations: 6 +enum emanAnimGroup +{ + ANIM_MAN_WALK_CIVI = 0, + ANIM_MAN_RUN_CIVI = 1, + ANIM_MAN_SPRINT_PANIC = 2, + ANIM_MAN_IDLE_STANCE = 3, + ANIM_MAN_ROADCROSS = 4, + ANIM_MAN_WALK_START = 5, +}; +// [GROUP] i = 119 | GroupName : shuffle | Group ID: 119 | Total Animations: 6 +enum eshuffleAnimGroup +{ + ANIM_SHUFFLE_WALK_SHUFFLE = 0, + ANIM_SHUFFLE_RUN_CIVI = 1, + ANIM_SHUFFLE_SPRINT_PANIC = 2, + ANIM_SHUFFLE_IDLE_STANCE = 3, + ANIM_SHUFFLE_ROADCROSS = 4, + ANIM_SHUFFLE_WALK_START = 5, +}; +// [GROUP] i = 120 | GroupName : oldman | Group ID: 120 | Total Animations: 6 +enum eoldmanAnimGroup +{ + ANIM_OLDMAN_WALK_OLD = 0, + ANIM_OLDMAN_RUN_OLD = 1, + ANIM_OLDMAN_SPRINT_PANIC = 2, + ANIM_OLDMAN_IDLESTANCE_OLD = 3, + ANIM_OLDMAN_ROADCROSS_OLD = 4, + ANIM_OLDMAN_WALK_START = 5, +}; +// [GROUP] i = 121 | GroupName : gang1 | Group ID: 121 | Total Animations: 6 +enum egang1AnimGroup +{ + ANIM_GANG1_WALK_GANG1 = 0, + ANIM_GANG1_RUN_GANG1 = 1, + ANIM_GANG1_SPRINT_PANIC = 2, + ANIM_GANG1_IDLE_GANG1 = 3, + ANIM_GANG1_ROADCROSS_GANG = 4, + ANIM_GANG1_WALK_START = 5, +}; +// [GROUP] i = 122 | GroupName : gang2 | Group ID: 122 | Total Animations: 6 +enum egang2AnimGroup +{ + ANIM_GANG2_WALK_GANG2 = 0, + ANIM_GANG2_RUN_GANG1 = 1, + ANIM_GANG2_SPRINT_PANIC = 2, + ANIM_GANG2_IDLE_GANG1 = 3, + ANIM_GANG2_ROADCROSS_GANG = 4, + ANIM_GANG2_WALK_START = 5, +}; +// [GROUP] i = 123 | GroupName : oldfatman | Group ID: 123 | Total Animations: 6 +enum eoldfatmanAnimGroup +{ + ANIM_OLDFATMAN_WALK_FATOLD = 0, + ANIM_OLDFATMAN_RUN_FATOLD = 1, + ANIM_OLDFATMAN_WOMAN_RUNPANIC = 2, + ANIM_OLDFATMAN_IDLE_STANCE = 3, + ANIM_OLDFATMAN_ROADCROSS = 4, + ANIM_OLDFATMAN_WALK_START = 5, +}; +// [GROUP] i = 124 | GroupName : fatman | Group ID: 124 | Total Animations: 6 +enum efatmanAnimGroup +{ + ANIM_FATMAN_WALK_FAT = 0, + ANIM_FATMAN_RUN_FAT = 1, + ANIM_FATMAN_WOMAN_RUNPANIC = 2, + ANIM_FATMAN_IDLESTANCE_FAT = 3, + ANIM_FATMAN_ROADCROSS = 4, + ANIM_FATMAN_WALK_START = 5, +}; +// [GROUP] i = 125 | GroupName : jogger | Group ID: 125 | Total Animations: 6 +enum ejoggerAnimGroup +{ + ANIM_JOGGER_JOG_MALEA = 0, + ANIM_JOGGER_RUN_CIVI = 1, + ANIM_JOGGER_SPRINT_PANIC = 2, + ANIM_JOGGER_IDLE_STANCE = 3, + ANIM_JOGGER_ROADCROSS = 4, + ANIM_JOGGER_WALK_START = 5, +}; +// [GROUP] i = 126 | GroupName : drunkman | Group ID: 126 | Total Animations: 6 +enum edrunkmanAnimGroup +{ + ANIM_DRUNKMAN_WALK_DRUNK = 0, + ANIM_DRUNKMAN_RUN_CIVI = 1, + ANIM_DRUNKMAN_SPRINT_PANIC = 2, + ANIM_DRUNKMAN_IDLE_STANCE = 3, + ANIM_DRUNKMAN_ROADCROSS = 4, + ANIM_DRUNKMAN_WALK_START = 5, +}; +// [GROUP] i = 127 | GroupName : blindman | Group ID: 127 | Total Animations: 6 +enum eblindmanAnimGroup +{ + ANIM_BLINDMAN_WALK_WUZI = 0, + ANIM_BLINDMAN_RUN_WUZI = 1, + ANIM_BLINDMAN_SPRINT_WUZI = 2, + ANIM_BLINDMAN_IDLE_STANCE = 3, + ANIM_BLINDMAN_ROADCROSS = 4, + ANIM_BLINDMAN_WALK_START = 5, +}; +// [GROUP] i = 128 | GroupName : swat | Group ID: 128 | Total Animations: 6 +enum eswatAnimGroup +{ + ANIM_SWAT_WALK_CIVI = 0, + ANIM_SWAT_SWAT_RUN = 1, + ANIM_SWAT_SPRINT_PANIC = 2, + ANIM_SWAT_IDLE_STANCE = 3, + ANIM_SWAT_ROADCROSS = 4, + ANIM_SWAT_WALK_START = 5, +}; +// [GROUP] i = 129 | GroupName : woman | Group ID: 129 | Total Animations: 6 +enum ewomanAnimGroup +{ + ANIM_WOMAN_WOMAN_WALKNORM = 0, + ANIM_WOMAN_WOMAN_RUN = 1, + ANIM_WOMAN_WOMAN_RUNPANIC = 2, + ANIM_WOMAN_WOMAN_IDLESTANCE = 3, + ANIM_WOMAN_ROADCROSS_FEMALE = 4, + ANIM_WOMAN_WALK_START = 5, +}; +// [GROUP] i = 130 | GroupName : shopping | Group ID: 130 | Total Animations: 6 +enum eshoppingAnimGroup +{ + ANIM_SHOPPING_WOMAN_WALKSHOP = 0, + ANIM_SHOPPING_WOMAN_RUN_0 = 1, + ANIM_SHOPPING_WOMAN_RUN_1 = 2, + ANIM_SHOPPING_WOMAN_IDLESTANCE = 3, + ANIM_SHOPPING_ROADCROSS_FEMALE = 4, + ANIM_SHOPPING_WALK_START = 5, +}; +// [GROUP] i = 131 | GroupName : busywoman | Group ID: 131 | Total Animations: 6 +enum ebusywomanAnimGroup +{ + ANIM_BUSYWOMAN_WOMAN_WALKBUSY = 0, + ANIM_BUSYWOMAN_WOMAN_RUNBUSY = 1, + ANIM_BUSYWOMAN_WOMAN_RUNPANIC = 2, + ANIM_BUSYWOMAN_WOMAN_IDLESTANCE = 3, + ANIM_BUSYWOMAN_ROADCROSS_FEMALE = 4, + ANIM_BUSYWOMAN_WALK_START = 5, +}; +// [GROUP] i = 132 | GroupName : sexywoman | Group ID: 132 | Total Animations: 6 +enum esexywomanAnimGroup +{ + ANIM_SEXYWOMAN_WOMAN_WALKSEXY = 0, + ANIM_SEXYWOMAN_WOMAN_RUNSEXY = 1, + ANIM_SEXYWOMAN_WOMAN_RUNPANIC = 2, + ANIM_SEXYWOMAN_WOMAN_IDLESTANCE = 3, + ANIM_SEXYWOMAN_ROADCROSS_FEMALE = 4, + ANIM_SEXYWOMAN_WALK_START = 5, +}; +// [GROUP] i = 133 | GroupName : pro | Group ID: 133 | Total Animations: 6 +enum eproAnimGroup +{ + ANIM_PRO_WOMAN_WALKPRO = 0, + ANIM_PRO_WOMAN_RUNSEXY = 1, + ANIM_PRO_WOMAN_RUNPANIC = 2, + ANIM_PRO_WOMAN_IDLESTANCE = 3, + ANIM_PRO_ROADCROSS_FEMALE = 4, + ANIM_PRO_WALK_START = 5, +}; +// [GROUP] i = 134 | GroupName : oldwoman | Group ID: 134 | Total Animations: 6 +enum eoldwomanAnimGroup +{ + ANIM_OLDWOMAN_WOMAN_WALKOLD = 0, + ANIM_OLDWOMAN_WOMAN_RUN = 1, + ANIM_OLDWOMAN_WOMAN_RUNPANIC = 2, + ANIM_OLDWOMAN_WOMAN_IDLESTANCE = 3, + ANIM_OLDWOMAN_ROADCROSS_FEMALE = 4, + ANIM_OLDWOMAN_WALK_START = 5, +}; +// [GROUP] i = 135 | GroupName : fatwoman | Group ID: 135 | Total Animations: 6 +enum efatwomanAnimGroup +{ + ANIM_FATWOMAN_WALK_FAT = 0, + ANIM_FATWOMAN_WOMAN_RUN = 1, + ANIM_FATWOMAN_WOMAN_RUNPANIC = 2, + ANIM_FATWOMAN_WOMAN_IDLESTANCE = 3, + ANIM_FATWOMAN_ROADCROSS_FEMALE = 4, + ANIM_FATWOMAN_WALK_START = 5, +}; +// [GROUP] i = 136 | GroupName : jogwoman | Group ID: 136 | Total Animations: 6 +enum ejogwomanAnimGroup +{ + ANIM_JOGWOMAN_JOG_FEMALEA = 0, + ANIM_JOGWOMAN_WOMAN_RUN = 1, + ANIM_JOGWOMAN_WOMAN_RUNPANIC = 2, + ANIM_JOGWOMAN_WOMAN_IDLESTANCE = 3, + ANIM_JOGWOMAN_ROADCROSS_FEMALE = 4, + ANIM_JOGWOMAN_WALK_START = 5, +}; +// [GROUP] i = 137 | GroupName : oldfatwoman | Group ID: 137 | Total Animations: 6 +enum eoldfatwomanAnimGroup +{ + ANIM_OLDFATWOMAN_WOMAN_WALKFATOLD = 0, + ANIM_OLDFATWOMAN_WOMAN_RUNFATOLD = 1, + ANIM_OLDFATWOMAN_WOMAN_RUNPANIC = 2, + ANIM_OLDFATWOMAN_WOMAN_IDLESTANCE = 3, + ANIM_OLDFATWOMAN_ROADCROSS_FEMALE = 4, + ANIM_OLDFATWOMAN_WALK_START = 5, +}; +// [GROUP] i = 138 | GroupName : skate | Group ID: 138 | Total Animations: 6 +enum eskateAnimGroup +{ + ANIM_SKATE_SKATE_RUN = 0, + ANIM_SKATE_SKATE_SPRINT_0 = 1, + ANIM_SKATE_SKATE_SPRINT_1 = 2, + ANIM_SKATE_SKATE_IDLE_0 = 3, + ANIM_SKATE_SKATE_IDLE_1 = 4, + ANIM_SKATE_SKATE_IDLE_2 = 5, +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eAudioEvents.h b/third-party/plugin-sdk/plugin_sa/game_sa/eAudioEvents.h new file mode 100644 index 00000000..a96cfcc5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eAudioEvents.h @@ -0,0 +1,7250 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +enum PLUGIN_API eAudioEvents : uint16_t +{ + AE_FRONTEND_START = 0x0, + AE_FRONTEND_SELECT = 0x1, + AE_FRONTEND_BACK = 0x2, + AE_FRONTEND_HIGHLIGHT = 0x3, + AE_FRONTEND_ERROR = 0x4, + AE_FRONTEND_NOISE_TEST = 0x5, + AE_FRONTEND_PICKUP_WEAPON = 0x6, + AE_FRONTEND_PICKUP_MONEY = 0x7, + AE_FRONTEND_PICKUP_HEALTH = 0x8, + AE_FRONTEND_PICKUP_ADRENALINE = 0x9, + AE_FRONTEND_PICKUP_BODY_ARMOUR = 0xA, + AE_FRONTEND_PICKUP_INFO = 0xB, + AE_FRONTEND_PICKUP_DRUGS = 0xC, + AE_FRONTEND_PICKUP_COLLECTABLE1 = 0xD, + AE_FRONTEND_CAR_NO_CASH = 0xE, + AE_FRONTEND_CAR_IS_HOT = 0xF, + AE_FRONTEND_CAR_RESPRAY = 0x10, + AE_FRONTEND_CAR_ALREADY_RIGGED = 0x11, + AE_FRONTEND_CAR_FIT_BOMB_TIMED = 0x12, + AE_FRONTEND_CAR_FIT_BOMB_BOOBY_TRAPPED = 0x13, + AE_FRONTEND_CAR_FIT_BOMB_REMOTE_CONTROLLED = 0x14, + AE_FRONTEND_FRENZY_STARTED = 0x15, + AE_FRONTEND_FRENZY_ONGOING = 0x16, + AE_FRONTEND_FRENZY_PASSED = 0x17, + AE_FRONTEND_FRENZY_FAILED = 0x18, + AE_FRONTEND_FRENZY_REGISTER_KILL_PED = 0x19, + AE_FRONTEND_FRENZY_REGISTER_KILL_CAR = 0x1A, + AE_FRONTEND_BULLET_PASS_LEFT_REAR = 0x1B, + AE_FRONTEND_BULLET_PASS_LEFT_FRONT = 0x1C, + AE_FRONTEND_BULLET_PASS_RIGHT_REAR = 0x1D, + AE_FRONTEND_BULLET_PASS_RIGHT_FRONT = 0x1E, + AE_FRONTEND_WAKEUP_AMPLIFIER = 0x1F, + AE_FRONTEND_DISPLAY_INFO = 0x20, + AE_FRONTEND_TIMER_COUNT = 0x21, + AE_FRONTEND_RADIO_RETUNE_START = 0x22, + AE_FRONTEND_RADIO_RETUNE_STOP = 0x23, + AE_FRONTEND_RADIO_RETUNE_STOP_PAUSED = 0x24, + AE_FRONTEND_RADIO_CLICK_ON = 0x25, + AE_FRONTEND_RADIO_CLICK_OFF = 0x26, + AE_FRONTEND_PAGER = 0x27, + AE_FRONTEND_PURCHASE_WEAPON = 0x28, + AE_FRONTEND_FIRE_FAIL_SNIPERRIFFLE = 0x29, + AE_FRONTEND_FIRE_FAIL_ROCKET = 0x2A, + AE_FRONTEND_PART_MISSION_COMPLETE = 0x2B, + AE_FRONTEND_RACE_321 = 0x2C, + AE_FRONTEND_RACE_GO = 0x2D, + AE_FRONTEND_BUY_CAR_MOD = 0x2E, + AE_FRONTEND_SCANNER_NOISE_START = 0x2F, + AE_FRONTEND_SCANNER_NOISE_STOP = 0x30, + AE_FRONTEND_SCANNER_CLICK = 0x31, + AE_FRONTEND_LOADING_TUNE_START = 0x32, + AE_FRONTEND_LOADING_TUNE_STOP = 0x33, + AE_SPEECH_PED = 0x34, + AE_SCRIPT_SPEECH_PED = 0x35, + AE_PED_FOOTSTEP_LEFT = 0x36, + AE_PED_FOOTSTEP_RIGHT = 0x37, + AE_PED_SKATE_LEFT = 0x38, + AE_PED_SKATE_RIGHT = 0x39, + AE_PED_LAND_ON_FEET_AFTER_FALL = 0x3A, + AE_PED_COLLAPSE_AFTER_FALL = 0x3B, + AE_PED_SWING = 0x3C, + AE_PED_HIT_HIGH = 0x3D, + AE_PED_HIT_LOW = 0x3E, + AE_PED_HIT_GROUND = 0x3F, + AE_PED_HIT_GROUND_KICK = 0x40, + AE_PED_HIT_HIGH_UNARMED = 0x41, + AE_PED_HIT_LOW_UNARMED = 0x42, + AE_PED_HIT_MARTIAL_PUNCH = 0x43, + AE_PED_HIT_MARTIAL_KICK = 0x44, + AE_PED_JACKED_CAR_PUNCH = 0x45, + AE_PED_JACKED_CAR_HEAD_BANG = 0x46, + AE_PED_JACKED_CAR_KICK = 0x47, + AE_PED_JACKED_BIKE = 0x48, + AE_PED_JACKED_DOZER = 0x49, + AE_PED_SWIM_STROKE_SPLASH = 0x4A, + AE_PED_SWIM_DIVE_SPLASH = 0x4B, + AE_PED_SWIM_WAKE = 0x4C, + AE_GENERAL_VEHICLE_SOUND = 0x4D, + AE_CAR_BONNET_OPEN = 0x4E, + AE_CAR_BOOT_OPEN = 0x4F, + AE_CAR_FRONT_LEFT_DOOR_OPEN = 0x50, + AE_CAR_FRONT_RIGHT_DOOR_OPEN = 0x51, + AE_CAR_REAR_LEFT_DOOR_OPEN = 0x52, + AE_CAR_REAR_RIGHT_DOOR_OPEN = 0x53, + AE_CAR_BONNET_CLOSE = 0x54, + AE_CAR_BOOT_CLOSE = 0x55, + AE_CAR_FRONT_LEFT_DOOR_CLOSE = 0x56, + AE_CAR_FRONT_RIGHT_DOOR_CLOSE = 0x57, + AE_CAR_REAR_LEFT_DOOR_CLOSE = 0x58, + AE_CAR_REAR_RIGHT_DOOR_CLOSE = 0x59, + AE_TYRE_BURST = 0x5A, + AE_WINDSCREEN_SHATTER = 0x5B, + AE_LIGHT_SMASH = 0x5C, + AE_BONNET_FLUBBER_FLUBBER = 0x5D, + AE_HELI_BLADE = 0x5E, + AE_CAR_HORN = 0x5F, + AE_BIKE_BELL = 0x60, + AE_SIREN = 0x61, + AE_FOG_HORN = 0x62, + AE_BOAT_HIT_WAVE = 0x63, + AE_TRAIN_CLACK = 0x64, + AE_MISSILE_LOCK = 0x65, + AE_NITRO_IGNITION = 0x66, + AE_START_ENGINE = 0x67, + AE_CRANE_WINCH_MOVE = 0x68, + AE_SHIRT_FLAP = 0x69, + AE_WIND_RUSH = 0x6A, + AE_SUSPENSION_HYDRAULIC = 0x6B, + AE_SUSPENSION_BOUNCE = 0x6C, + AE_SUSPENSION_TRIGGER = 0x6D, + AE_SUSPENSION_ON = 0x6E, + AE_SUSPENSION_OFF = 0x6F, + AE_LANDING_GEAR = 0x70, + AE_TRAILER_ATTACH = 0x71, + AE_TRAILER_DETACH = 0x72, + AE_BODY_HARVEST = 0x73, + AE_GENERAL_COLLISION = 0x74, + AE_BULLET_HIT = 0x75, + AE_WATER_SPLASH = 0x76, + AE_PED_CRUNCH = 0x77, + AE_PED_DRIVE_OVER = 0x78, + AE_PED_KNOCK_DOWN = 0x79, + AE_PED_BOUNCE = 0x7A, + AE_GLASS_HIT = 0x7B, + AE_GLASS_CRACK = 0x7C, + AE_GLASS_BREAK_SLOW = 0x7D, + AE_GLASS_BREAK_FAST = 0x7E, + AE_GLASS_HIT_GROUND = 0x7F, + AE_GLASS_HIT_GROUND_SLOW = 0x80, + AE_EXPLOSION = 0x81, + AE_FIRE = 0x82, + AE_FIRE_MEDIUM = 0x83, + AE_FIRE_LARGE = 0x84, + AE_FIRE_CAR = 0x85, + AE_FIRE_BIKE = 0x86, + AE_FIRE_FLAME = 0x87, + AE_FIRE_MOLOTOV_FLAME = 0x88, + AE_FIRE_HYDRANT = 0x89, + AE_SMOKE_FLARE = 0x8A, + AE_TEARGAS = 0x8B, + AE_HELI_DUST = 0x8C, + AE_THUNDER = 0x8D, + AE_RAIN_COLLISION = 0x8E, + AE_RAIN = 0x8F, + AE_CITY_NOISE = 0x90, + AE_WEAPON_FIRE = 0x91, + AE_WEAPON_RELOAD_A = 0x92, + AE_WEAPON_RELOAD_B = 0x93, + AE_PROJECTILE_FIRE = 0x94, + AE_WEAPON_FIRE_PLANE = 0x95, + AE_WEAPON_FIRE_MINIGUN_AMMO = 0x96, + AE_WEAPON_FIRE_MINIGUN_NO_AMMO = 0x97, + AE_WEAPON_FIRE_MINIGUN_PLANE = 0x98, + AE_WEAPON_CHAINSAW_IDLE = 0x99, + AE_WEAPON_CHAINSAW_ACTIVE = 0x9A, + AE_WEAPON_CHAINSAW_CUTTING = 0x9B, + AE_WEAPON_STEALTH_KILL = 0x9C, + AE_WEAPON_FIRE_MINIGUN_STOP = 0x9D, + AE_FLAMETHROWER_IDLE = 0x9E, + AE_GARAGE_DOOR_OPENING = 0x9F, + AE_GARAGE_DOOR_OPENED = 0xA0, + AE_GARAGE_DOOR_CLOSING = 0xA1, + AE_GARAGE_DOOR_CLOSED = 0xA2, + AE_ENTRY_EXIT_DOOR_MOVING = 0xA3, + AE_CRIME_COMMITTED = 0xA4, + AE_DISABLE_HELI_AUDIO = 0xA5, + AE_ENABLE_HELI_AUDIO = 0xA6, + AE_CEILING_VENT_LAND = 0xA7, + AE_WAREHOUSE_DOOR_SLIDE_START = 0xA8, + AE_WAREHOUSE_DOOR_SLIDE_STOP = 0xA9, + AE_CLAXON_START = 0xAA, + AE_CLAXON_STOP = 0xAB, + AE_BLAST_DOOR_SLIDE_START = 0xAC, + AE_BLAST_DOOR_SLIDE_STOP = 0xAD, + AE_BONNET_DENT = 0xAE, + AE_BASKETBALL_BOUNCE = 0xAF, + AE_BASKETBALL_HIT_HOOP = 0xB0, + AE_BASKETBALL_SCORE = 0xB1, + AE_POOL_BREAK = 0xB2, + AE_POOL_HIT_WHITE = 0xB3, + AE_POOL_BALL_HIT_BALL = 0xB4, + AE_POOL_HIT_CUSHION = 0xB5, + AE_POOL_BALL_POT = 0xB6, + AE_POOL_CHALK_CUE = 0xB7, + AE_CRANE_ENTER = 0xB8, + AE_CRANE_MOVE_START = 0xB9, + AE_CRANE_MOVE_STOP = 0xBA, + AE_CRANE_EXIT = 0xBB, + AE_CRANE_SMASH_PORTACABIN = 0xBC, + AE_CONTAINER_COLLISION = 0xBD, + AE_VIDEO_POKER_PAYOUT = 0xBE, + AE_VIDEO_POKER_BUTTON = 0xBF, + AE_WHEEL_OF_FORTUNE_CLACKER = 0xC0, + AE_KEYPAD_BEEP = 0xC1, + AE_KEYPAD_PASS = 0xC2, + AE_KEYPAD_FAIL = 0xC3, + AE_SHOOTING_RANGE_TARGET_SHATTER = 0xC4, + AE_SHOOTING_RANGE_TARGET_DROP = 0xC5, + AE_SHOOTING_RANGE_TARGET_MOVE_START = 0xC6, + AE_SHOOTING_RANGE_TARGET_MOVE_STOP = 0xC7, + AE_SHUTTER_DOOR_START = 0xC8, + AE_SHUTTER_DOOR_STOP = 0xC9, + AE_FREEFALL_START = 0xCA, + AE_FREEFALL_STOP = 0xCB, + AE_PARACHUTE_OPEN = 0xCC, + AE_PARACHUTE_COLLAPSE = 0xCD, + AE_DUAL_SHOOT = 0xCE, + AE_DUAL_THRUST = 0xCF, + AE_DUAL_EXPLOSION_SHORT = 0xD0, + AE_DUAL_EXPLOSION_LONG = 0xD1, + AE_DUAL_MENU_SELECT = 0xD2, + AE_DUAL_MENU_DESELECT = 0xD3, + AE_DUAL_GAME_OVER = 0xD4, + AE_DUAL_PICKUP_LIGHT = 0xD5, + AE_DUAL_PICKUP_DARK = 0xD6, + AE_DUAL_TOUCH_DARK = 0xD7, + AE_DUAL_TOUCH_LIGHT = 0xD8, + AE_AMMUNATION_BUY_WEAPON = 0xD9, + AE_AMMUNATION_BUY_WEAPON_DENIED = 0xDA, + AE_SHOP_BUY = 0xDB, + AE_SHOP_BUY_DENIED = 0xDC, + AE_RACE_321 = 0xDD, + AE_RACE_GO = 0xDE, + AE_PART_MISSION_COMPLETE = 0xDF, + AE_GOGO_PLAYER_FIRE = 0xE0, + AE_GOGO_ENEMY_FIRE = 0xE1, + AE_GOGO_EXPLOSION = 0xE2, + AE_GOGO_TRACK_START = 0xE3, + AE_GOGO_TRACK_STOP = 0xE4, + AE_GOGO_SELECT = 0xE5, + AE_GOGO_ACCEPT = 0xE6, + AE_GOGO_DECLINE = 0xE7, + AE_GOGO_GAME_OVER = 0xE8, + AE_DUAL_TRACK_START = 0xE9, + AE_DUAL_TRACK_STOP = 0xEA, + AE_BEE_ZAP = 0xEB, + AE_BEE_PICKUP = 0xEC, + AE_BEE_DROP = 0xED, + AE_BEE_SELECT = 0xEE, + AE_BEE_ACCEPT = 0xEF, + AE_BEE_DECLINE = 0xF0, + AE_BEE_TRACK_START = 0xF1, + AE_BEE_TRACK_STOP = 0xF2, + AE_BEE_GAME_OVER = 0xF3, + AE_FREEZER_OPEN = 0xF4, + AE_FREEZER_CLOSE = 0xF5, + AE_MEAT_TRACK_START = 0xF6, + AE_MEAT_TRACK_STOP = 0xF7, + AE_ROULETTE_ADD_CASH = 0xF8, + AE_ROULETTE_REMOVE_CASH = 0xF9, + AE_ROULETTE_NO_CASH = 0xFA, + AE_ROULETTE_SPIN = 0xFB, + AE_BANDIT_INSERT_COIN = 0xFC, + AE_BANDIT_WHEEL_STOP = 0xFD, + AE_BANDIT_WHEEL_START = 0xFE, + AE_BANDIT_PAYOUT = 0xFF, + AE_OFFICE_FIRE_ALARM_START = 0x100, + AE_OFFICE_FIRE_ALARM_STOP = 0x101, + AE_OFFICE_FIRE_COUGHING_START = 0x102, + AE_OFFICE_FIRE_COUGHING_STOP = 0x103, + AE_BIKE_PACKER_CLUNK = 0x104, + AE_BIKE_GANG_WHEEL_SPIN = 0x105, + AE_AWARD_TRACK_START = 0x106, + AE_AWARD_TRACK_STOP = 0x107, + AE_MOLOTOV = 0x108, + AE_MESH_GATE_OPEN_START = 0x109, + AE_MESH_GATE_OPEN_STOP = 0x10A, + AE_OGLOC_DOORBELL = 0x10B, + AE_OGLOC_WINDOW_RATTLE_BANG = 0x10C, + AE_STINGER_RELOAD = 0x10D, + AE_HEAVY_DOOR_START = 0x10E, + AE_HEAVY_DOOR_STOP = 0x10F, + AE_SHOOT_CONTROLS = 0x110, + AE_CARGO_PLANE_DOOR_START = 0x111, + AE_CARGO_PLANE_DOOR_STOP = 0x112, + AE_DA_NANG_CONTAINER_OPEN = 0x113, + AE_DA_NANG_HEAVY_DOOR_OPEN = 0x114, + AE_DA_NANG_MUFFLED_REFUGEES = 0x115, + AE_GYM_BIKE_START = 0x116, + AE_GYM_BIKE_STOP = 0x117, + AE_GYM_BOXING_BELL = 0x118, + AE_GYM_INCREASE_DIFFICULTY = 0x119, + AE_GYM_REST_WEIGHTS = 0x11A, + AE_GYM_RUNNING_MACHINE_START = 0x11B, + AE_GYM_RUNNING_MACHINE_STOP = 0x11C, + AE_OTB_BET_ZERO = 0x11D, + AE_OTB_INCREASE_BET = 0x11E, + AE_OTB_LOSE = 0x11F, + AE_OTB_PLACE_BET = 0x120, + AE_OTB_WIN = 0x121, + AE_STINGER_FIRE = 0x122, + AE_HEAVY_GATE_START = 0x123, + AE_HEAVY_GATE_STOP = 0x124, + AE_VERTICAL_BIRD_LIFT_START = 0x125, + AE_VERTICAL_BIRD_LIFT_STOP = 0x126, + AE_PUNCH_PED = 0x127, + AE_AMMUNATION_GUN_COLLISION = 0x128, + AE_CAMERA_SHOT = 0x129, + AE_BUY_CAR_MOD = 0x12A, + AE_BUY_CAR_RESPRAY = 0x12B, + AE_BASEBALL_BAT_HIT_PED = 0x12C, + AE_STAMP_PED = 0x12D, + AE_CHECKPOINT_AMBER = 0x12E, + AE_CHECKPOINT_GREEN = 0x12F, + AE_CHECKPOINT_RED = 0x130, + AE_CAR_SMASH_CAR = 0x131, + AE_CAR_SMASH_GATE = 0x132, + AE_OTB_TRACK_START = 0x133, + AE_OTB_TRACK_STOP = 0x134, + AE_PED_HIT_WATER_SPLASH = 0x135, + AE_RESTAURANT_TRAY_COLLISION = 0x136, + AE_PICKUP_CRATE = 0x137, + AE_SWEETS_HORN = 0x138, + AE_MAGNET_VEHICLE_COLLISION = 0x139, + AE_PROPERTY_PURCHASED = 0x13A, + AE_PICKUP_STANDARD = 0x13B, + AE_MECHANIC_SLIDE_OUT = 0x13C, + AE_MECHANIC_ATTACH_CAR_BOMB = 0x13D, + AE_GARAGE_DOOR_START = 0x13E, + AE_GARAGE_DOOR_STOP = 0x13F, + AE_CAT2_SECURITY_ALARM = 0x140, + AE_CAT2_WOODEN_DOOR_BREACH = 0x141, + AE_MINITANK_FIRE = 0x142, + AE_OTB_NO_CASH = 0x143, + AE_EXPLOSION_2 = 0x144, + AE_ROULETTE_BALL_BOUNCING = 0x145, + AE_VERTICAL_BIRD_ALARM_START = 0x146, + AE_VERTICAL_BIRD_ALARM_STOP = 0x147, + AE_PED_COLLAPSE = 0x148, + AE_AIR_HORN = 0x149, + AE_SHUTTER_DOOR_SLOW_START = 0x14A, + AE_SHUTTER_DOOR_SLOW_STOP = 0x14B, + AE_BEE_BUZZ = 0x14C, + AE_RESTAURANT_CJ_EAT = 0x14D, + AE_RESTAURANT_CJ_PUKE = 0x14E, + AE_TEMPEST_PLAYER_SHOOT = 0x14F, + AE_TEMPEST_ENEMY_SHOOT = 0x150, + AE_TEMPEST_EXPLOSION = 0x151, + AE_TEMPEST_PICKUP1 = 0x152, + AE_TEMPEST_PICKUP2 = 0x153, + AE_TEMPEST_PICKUP3 = 0x154, + AE_TEMPEST_WARP = 0x155, + AE_TEMPEST_SHIELD_GLOW = 0x156, + AE_TEMPEST_GAME_OVER = 0x157, + AE_TEMPEST_HIGHLIGHT = 0x158, + AE_TEMPEST_SELECT = 0x159, + AE_TEMPEST_TRACK_START = 0x15A, + AE_TEMPEST_TRACK_STOP = 0x15B, + AE_DRIVING_AWARD_TRACK_START = 0x15C, + AE_DRIVING_AWARD_TRACK_STOP = 0x15D, + AE_BIKE_AWARD_TRACK_START = 0x15E, + AE_BIKE_AWARD_TRACK_STOP = 0x15F, + AE_PILOT_AWARD_TRACK_START = 0x160, + AE_PILOT_AWARD_TRACK_STOP = 0x161, + AE_PED_DEATH_CRUNCH = 0x162, + AE_SPANK = 0x163, + AE_BANK_VIDEO_POKER = 0x164, + AE_BANK_SHOOTING_RANGE = 0x165, + AE_BANK_POOL = 0x166, + AE_BANK_PARACHUTE = 0x167, + AE_BANK_KEYPAD = 0x168, + AE_BANK_WAREHOUSE_DOOR = 0x169, + AE_BANK_GOGO = 0x16A, + AE_BANK_DUAL = 0x16B, + AE_BANK_CRANE = 0x16C, + AE_BANK_BLACK_PROJECT = 0x16D, + AE_BANK_BEE = 0x16E, + AE_BANK_BASKETBALL = 0x16F, + AE_BANK_MEAT_BUSINESS = 0x170, + AE_BANK_ROULETTE = 0x171, + AE_BANK_BANDIT = 0x172, + AE_BANK_OFFICE_FIRE = 0x173, + AE_BANK_MESH_GATE = 0x174, + AE_BANK_OGLOC = 0x175, + AE_BANK_CARGO_PLANE = 0x176, + AE_BANK_DA_NANG = 0x177, + AE_BANK_GYM = 0x178, + AE_BANK_OTB = 0x179, + AE_BANK_STINGER = 0x17A, + AE_BANK_UNCLE_SAM = 0x17B, + AE_BANK_VERTICAL_BIRD = 0x17C, + AE_BANK_MECHANIC = 0x17D, + AE_BANK_CAT2_BANK = 0x17E, + AE_BANK_AIR_HORN = 0x17F, + AE_BANK_RESTAURANT = 0x180, + AE_BANK_TEMPEST = 0x181, + AE_ALDEAMALVADA = 0x182, + AE_ANGELPINE = 0x183, + AE_ARCODELOESTE = 0x184, + AE_AVISPACOUNTRYCLUB = 0x185, + AE_BACKOBEYOND = 0x186, + AE_BATTERYPOINT = 0x187, + AE_BAYSIDE = 0x188, + AE_BAYSIDEMARINA = 0x189, + AE_BAYSIDETUNNEL = 0x18A, + AE_BEACONHILL = 0x18B, + AE_BLACKFIELD = 0x18C, + AE_BLACKFIELDCHAPEL = 0x18D, + AE_BLACKFIELDINTERSECTION = 0x18E, + AE_BLUBERRYACRES = 0x18F, + AE_BLUEBERRY = 0x190, + AE_BONECOUNTY = 0x191, + AE_CALIGULASPALACE = 0x192, + AE_CALTONHEIGHTS = 0x193, + AE_CHINATOWN = 0x194, + AE_CITYHALL = 0x195, + AE_COME_A_LOT = 0x196, + AE_COMMERCE = 0x197, + AE_CONFERENCECENTRE = 0x198, + AE_CRANBERRYSTATION = 0x199, + AE_DILLIMORE = 0x19A, + AE_DOHERTY = 0x19B, + AE_DOWNTOWN = 0x19C, + AE_DOWNTOWNLOSSANTOS = 0x19D, + AE_EASRLOSSANTOS = 0x19E, + AE_EASTBEACH = 0x19F, + AE_EASTERBASIN = 0x1A0, + AE_EASTERBAYAIRPORT = 0x1A1, + AE_EASTERBAYBLUFFSCHEMICALPLANT = 0x1A2, + AE_EASTERTUNNEL = 0x1A3, + AE_ELCASTILLODELDIABLO = 0x1A4, + AE_ELCORONA = 0x1A5, + AE_ELQUEBRADOS = 0x1A6, + AE_ESPLANADEEAST = 0x1A7, + AE_ESPLANADENORTH = 0x1A8, + AE_FALLENTREE = 0x1A9, + AE_FALLOWBRIDGE = 0x1AA, + AE_FERNRIDGE = 0x1AB, + AE_FINANCIAL = 0x1AC, + AE_FISHERSLAGOON = 0x1AD, + AE_FLINTCOUNTY = 0x1AE, + AE_FLINTINTERSECTION = 0x1AF, + AE_FLINTRANGE = 0x1B0, + AE_FLINTWATER = 0x1B1, + AE_FORTCARSON = 0x1B2, + AE_FOSTERVALLEY = 0x1B3, + AE_FREDERICKBRIDGE = 0x1B4, + AE_GANTON = 0x1B5, + AE_GANTRBRIDGE = 0x1B6, + AE_GARCIA = 0x1B7, + AE_GARVERBRIDGE = 0x1B8, + AE_GLENPARK = 0x1B9, + AE_GREENGLASSCOLLEGE = 0x1BA, + AE_GREENPALMS = 0x1BB, + AE_HAMPTONBARNS = 0x1BC, + AE_HANKYPANKYPOINT = 0x1BD, + AE_HARRYGOLDPARKWAY = 0x1BE, + AE_HASHBERRY = 0x1BF, + AE_HILLTOPFARM = 0x1C0, + AE_HUNTERQUARRY = 0x1C1, + AE_IDLEWOOD = 0x1C2, + AE_JULIUSTHRUWAYEAST = 0x1C3, + AE_JULIUSTHRUWAYNORTH = 0x1C4, + AE_JULIUSTHRUWAYSOUTH = 0x1C5, + AE_JULIUSTHRUWAYWEST = 0x1C6, + AE_JUNIPERHILL = 0x1C7, + AE_JUNIPERHOLLOW = 0x1C8, + AE_KACCMILITARYFUELS = 0x1C9, + AE_KINCAIDBRIDEG = 0x1CA, + AE_KINGS = 0x1CB, + AE_LASBARRANCAS = 0x1CC, + AE_LASBRUJAS = 0x1CD, + AE_LASPAYASADAS = 0x1CE, + AE_LASTDIMEMOTEL = 0x1CF, + AE_LASVENTURAS = 0x1D0, + AE_LEAFYHOLLOW = 0x1D1, + AE_LILPROBEINN = 0x1D2, + AE_LINDENSIDE = 0x1D3, + AE_LINDENSTATION = 0x1D4, + AE_LITTLEMEXICO = 0x1D5, + AE_LOSCOLINAS = 0x1D6, + AE_LOSFLORES = 0x1D7, + AE_LOSSANTOS = 0x1D8, + AE_LOSSANTOSINLET = 0x1D9, + AE_LOSSANTOSINTERNATIONAL = 0x1DA, + AE_LOSSEPULCROS = 0x1DB, + AE_LOSVENTURASAIRPORT = 0x1DC, + AE_LVAFREIGHTDEPOT = 0x1DD, + AE_MARINA = 0x1DE, + AE_MARKET = 0x1DF, + AE_MARKETSTATION = 0x1E0, + AE_MARTINBRIDGE = 0x1E1, + AE_MISSIONARYHILL = 0x1E2, + AE_MONTGOMERY = 0x1E3, + AE_MONTGOMERYINTERSECTION = 0x1E4, + AE_MOUNTCHILLIAD = 0x1E5, + AE_MULHOLLAND = 0x1E6, + AE_MULLHOLLANDINTERSECTION = 0x1E7, + AE_NORTHSTARROCK = 0x1E8, + AE_OCEANDOCKS = 0x1E9, + AE_OCEANFLATS = 0x1EA, + AE_OCTANESPRINGS = 0x1EB, + AE_OLDVENTURASSTRIP = 0x1EC, + AE_OPENOCEAN = 0x1ED, + AE_PALLISADES = 0x1EE, + AE_PALOMINOCREEK = 0x1EF, + AE_PARADISO = 0x1F0, + AE_PILGRAMSCREEK = 0x1F1, + AE_PILSONINTERSECTIION = 0x1F2, + AE_PLAYADELSEVILLE = 0x1F3, + AE_PRICKLEPINE = 0x1F4, + AE_QUEENS = 0x1F5, + AE_RANDOLPHINDUSTRIALESTATE = 0x1F6, + AE_REDCOUNTY = 0x1F7, + AE_REDSANDSEAST = 0x1F8, + AE_REDSANDSWEST = 0x1F9, + AE_REGULARTOM = 0x1FA, + AE_RICHMAN = 0x1FB, + AE_ROCAESCALANTE = 0x1FC, + AE_ROCKSHOREEAST = 0x1FD, + AE_ROCKSHOREWEST = 0x1FE, + AE_RODEO = 0x1FF, + AE_ROYALECASINO = 0x200, + AE_SANANDREASSOUND = 0x201, + AE_SANFIERRO = 0x202, + AE_SANFIERROBAY = 0x203, + AE_SANTAFLORA = 0x204, + AE_SANTAMARIABEACH = 0x205, + AE_SHADYCREEKS = 0x206, + AE_SHERMANRESERVOIR = 0x207, + AE_SOBELLRAILYARDS = 0x208, + AE_SPINYBED = 0x209, + AE_STARFISHCASINO = 0x20A, + AE_SUNNYSIDE = 0x20B, + AE_TEMPLE = 0x20C, + AE_THEBIGEARRADIOTELESCOPE = 0x20D, + AE_THECAMELSTOE = 0x20E, + AE_THECLOWNSPOCKET = 0x20F, + AE_THEEMERALDISLE = 0x210, + AE_THEFARM = 0x211, + AE_THEFOURDRAGONSCASINO = 0x212, + AE_THEHIGHROLLER = 0x213, + AE_THEMAKOSPAN = 0x214, + AE_THEPANOPTICON = 0x215, + AE_THEPINKSWAN = 0x216, + AE_THEPIRATESINMENSPANTS = 0x217, + AE_THESHERMANDAM = 0x218, + AE_THEVISAGE = 0x219, + AE_TIERRA_ROBADA = 0x21A, + AE_UNITYSTATION = 0x21B, + AE_VALLEOCULTADO = 0x21C, + AE_VERDANTBLUFFS = 0x21D, + AE_VERDANTMEDOW = 0x21E, + AE_VERONABEACH = 0x21F, + AE_VINEWOOD = 0x220, + AE_WHETSTONE = 0x221, + AE_WHITEWOODESTATES = 0x222, + AE_WILLOWFIELD = 0x223, + AE_YELLOWBELLGOLFCOURSE = 0x224, + AE_YELLOWBELLSTATION = 0x225, + AE_BLACK = 0x226, + AE_BLUE = 0x227, + AE_BROWN = 0x228, + AE_COPPER = 0x229, + AE_CUSTOM = 0x22A, + AE_CUSTOMISED = 0x22B, + AE_DARK = 0x22C, + AE_GOLD = 0x22D, + AE_GREEN = 0x22E, + AE_GREY = 0x22F, + AE_LIGHT = 0x230, + AE_PINK = 0x231, + AE_RED = 0x232, + AE_SILVER = 0x233, + AE_WHITE = 0x234, + AE_CENTRAL = 0x235, + AE_EAST = 0x236, + AE_NORTH = 0x237, + AE_SOUTH = 0x238, + AE_WEST = 0x239, + AE_HEAD_TO_A_10 = 0x23A, + AE_IN_A_ = 0x23B, + AE_IN_WATER = 0x23C, + AE_ON_A = 0x23D, + AE_ON_FOOT = 0x23E, + AE_RESPOND_TO_A_10 = 0x23F, + AE_SUSPECTINWATER = 0x240, + AE_SUSPECT_LAST_SEEN = 0x241, + AE_WEVE_GOT_A_10_ = 0x242, + AE_17 = 0x243, + AE_21 = 0x244, + AE_24 = 0x245, + AE_28 = 0x246, + AE_34 = 0x247, + AE_37 = 0x248, + AE_7 = 0x249, + AE_71 = 0x24A, + AE_81 = 0x24B, + AE_90 = 0x24C, + AE_91 = 0x24D, + AE_A10 = 0x24E, + AE_A10_2 = 0x24F, + AE_A10_3 = 0x250, + AE_2DOOR = 0x251, + AE_4DOOR = 0x252, + AE_AMBULANCE = 0x253, + AE_ARTIC_CAB = 0x254, + AE_BEACH_BUGGY = 0x255, + AE_BIKE = 0x256, + AE_BOAT = 0x257, + AE_BUGGY = 0x258, + AE_BULL_DOZER = 0x259, + AE_BUS = 0x25A, + AE_CAMPER_VAN = 0x25B, + AE_COACH = 0x25C, + AE_COMBINE_HARVESTER = 0x25D, + AE_COMPACT = 0x25E, + AE_CONVERTABLE = 0x25F, + AE_COUPE = 0x260, + AE_CRUISER = 0x261, + AE_FIRE_TRUCK = 0x262, + AE_FORKLIFT = 0x263, + AE_FREIGHT_TRAIN = 0x264, + AE_GARBAGE_TRUCK = 0x265, + AE_GAS_TANKER = 0x266, + AE_GOLF_CART = 0x267, + AE_GO_KART = 0x268, + AE_HEARSE = 0x269, + AE_HELICOPTER = 0x26A, + AE_HOVERCRAFT = 0x26B, + AE_ICE_CREAM_VAN = 0x26C, + AE_JEEP = 0x26D, + AE_LAWNMOWER = 0x26E, + AE_LIMO = 0x26F, + AE_LOW_RIDER = 0x270, + AE_MOPED = 0x271, + AE_MOTORBIKE = 0x272, + AE_OFF_ROAD = 0x273, + AE_PEOPLE_CARRIER = 0x274, + AE_PICK_UP = 0x275, + AE_PLANE = 0x276, + AE_POLICE_CAR = 0x277, + AE_POLICE_VAN = 0x278, + AE_QUAD_BIKE = 0x279, + AE_RUBBER_DINGY = 0x27A, + AE_SAND_BUGGY = 0x27B, + AE_SEA_PLANE = 0x27C, + AE_SNOWCAT = 0x27D, + AE_SPEED_BOAT = 0x27E, + AE_SPORT = 0x27F, + AE_SPORTSCAR = 0x280, + AE_SPORTS_BIKE = 0x281, + AE_STATION_WAGON = 0x282, + AE_SUV = 0x283, + AE_TANK = 0x284, + AE_TAXI = 0x285, + AE_TRACTOR = 0x286, + AE_TRAIN = 0x287, + AE_TRAM = 0x288, + AE_TRUCK = 0x289, + AE_VAN = 0x28A, + AE__AIR_HORN_L = 0x28B, + AE__AIR_HORN_R = 0x28C, + AE_AIRCONDITIONER = 0x28D, + AE_OFFICE_FIRE_ALARM = 0x28E, + AE_MOBILE_DIALING = 0x28F, + AE_VIDEOTAPE_NOISE = 0x290, + AE_BALLA_1 = 0x291, + AE_BALLA_2 = 0x292, + AE__BANDIT_WHEEL_START = 0x293, + AE__BANDIT_PAYOUT = 0x294, + AE__BANDIT_WHEEL_STOP = 0x295, + AE__INSERT_COIN = 0x296, + AE_HAIRCUT = 0x297, + AE__BASKETBALL_BOUNCE_1 = 0x298, + AE__BASKETBALL_BOUNCE_2 = 0x299, + AE__BASKETBALL_BOUNCE_3 = 0x29A, + AE__BASKETBALL_HIT_HOOP = 0x29B, + AE__BASKETBALL_SCORE = 0x29C, + AE_BBOX_1 = 0x29D, + AE_BBOX_2 = 0x29E, + AE_BBOX_3 = 0x29F, + AE_BBOX_4 = 0x2A0, + AE_BBOX_5 = 0x2A1, + AE_BBOX_6 = 0x2A2, + AE_BBOX_7 = 0x2A3, + AE_BBOX_8 = 0x2A4, + AE_BCS5_AA = 0x2A5, + AE_BCS5_AB = 0x2A6, + AE_BCS5_AC = 0x2A7, + AE_BCS5_AD = 0x2A8, + AE_BCS5_AE = 0x2A9, + AE_BCS5_AF = 0x2AA, + AE_BCS5_AG = 0x2AB, + AE_BCS5_AH = 0x2AC, + AE_BCS5_BA = 0x2AD, + AE_BCS5_BB = 0x2AE, + AE_BCS5_BC = 0x2AF, + AE_BCS5_BD = 0x2B0, + AE_BCS5_BE = 0x2B1, + AE_BCS5_BF = 0x2B2, + AE_BCS5_BG = 0x2B3, + AE_BB_GONE_BUZZ = 0x2B4, + AE_BB_GONE_ACCEPT = 0x2B5, + AE_BB_GONE_DROP = 0x2B6, + AE_BB_GONE_GAMEOVER = 0x2B7, + AE_BB_GONE_PICKUP = 0x2B8, + AE_BB_GONE_SELECT = 0x2B9, + AE_BB_GONE_ZAP = 0x2BA, + AE_B_BET_1 = 0x2BB, + AE_B_BET_2 = 0x2BC, + AE_B_LEND1 = 0x2BD, + AE_B_LEND2 = 0x2BE, + AE_B_LEND3 = 0x2BF, + AE_B_NEM_1 = 0x2C0, + AE_B_NEM_2 = 0x2C1, + AE_B_NEM_3 = 0x2C2, + AE_B_NMB_1 = 0x2C3, + AE_B_NMB_2 = 0x2C4, + AE_B_NMB_3 = 0x2C5, + AE_B_NUM10 = 0x2C6, + AE_B_NUM11 = 0x2C7, + AE_B_NUM12 = 0x2C8, + AE_B_NUM13 = 0x2C9, + AE_B_NUM14 = 0x2CA, + AE_B_NUM15 = 0x2CB, + AE_B_NUM16 = 0x2CC, + AE_B_NUM17 = 0x2CD, + AE_B_NUM18 = 0x2CE, + AE_B_NUM19 = 0x2CF, + AE_B_NUM20 = 0x2D0, + AE_B_NUM21 = 0x2D1, + AE_B_NUM22 = 0x2D2, + AE_B_NUM23 = 0x2D3, + AE_B_NUM24 = 0x2D4, + AE_B_NUM25 = 0x2D5, + AE_B_NUM26 = 0x2D6, + AE_B_NUM27 = 0x2D7, + AE_B_NUM28 = 0x2D8, + AE_B_NUM29 = 0x2D9, + AE_B_NUM30 = 0x2DA, + AE_B_NUM31 = 0x2DB, + AE_B_NUM32 = 0x2DC, + AE_B_NUM33 = 0x2DD, + AE_B_NUM34 = 0x2DE, + AE_B_NUM35 = 0x2DF, + AE_B_NUM36 = 0x2E0, + AE_B_NUM_0 = 0x2E1, + AE_B_NUM_1 = 0x2E2, + AE_B_NUM_2 = 0x2E3, + AE_B_NUM_3 = 0x2E4, + AE_B_NUM_4 = 0x2E5, + AE_B_NUM_5 = 0x2E6, + AE_B_NUM_6 = 0x2E7, + AE_B_NUM_7 = 0x2E8, + AE_B_NUM_8 = 0x2E9, + AE_B_NUM_9 = 0x2EA, + AE_B_PWIN1 = 0x2EB, + AE_B_PWIN2 = 0x2EC, + AE_B_PWIN3 = 0x2ED, + AE_B_REG_1 = 0x2EE, + AE_B_REG_2 = 0x2EF, + AE_B_THX_1 = 0x2F0, + AE_B_THX_2 = 0x2F1, + AE_B_WEEL1 = 0x2F2, + AE_B_WEEL2 = 0x2F3, + AE_B_WEEL3 = 0x2F4, + AE_B_WEEL4 = 0x2F5, + AE_B_WEEL5 = 0x2F6, + AE_B_WEEL6 = 0x2F7, + AE_B_WEEL7 = 0x2F8, + AE_B_WINS1 = 0x2F9, + AE_B_WINS2 = 0x2FA, + AE_B_WINS3 = 0x2FB, + AE_BIKE_PACKAGE_THROW = 0x2FC, + AE_BIKE_PACKAGE_THROW2 = 0x2FD, + AE_BIKE_PACKAGE_THROW3 = 0x2FE, + AE_10_OR_20 = 0x2FF, + AE_2_OR_12 = 0x300, + AE_3_OR_13 = 0x301, + AE_4_OR_14 = 0x302, + AE_5_OR_15 = 0x303, + AE_6_OR_16 = 0x304, + AE_7_OR_17 = 0x305, + AE_8_OR_18 = 0x306, + AE_9_OR_19 = 0x307, + AE_J_BET_1 = 0x308, + AE_J_BET_2 = 0x309, + AE_J_BJ_1 = 0x30A, + AE_J_BJ_2 = 0x30B, + AE_J_BUST1 = 0x30C, + AE_J_BUST2 = 0x30D, + AE_J_DRW_1 = 0x30E, + AE_J_DRW_2 = 0x30F, + AE_J_DW_1 = 0x310, + AE_J_DW_2 = 0x311, + AE_J_DW_3 = 0x312, + AE_J_LEND1 = 0x313, + AE_J_LEND2 = 0x314, + AE_J_LEND3 = 0x315, + AE_J_NEM_1 = 0x316, + AE_J_NEM_2 = 0x317, + AE_J_NEM_3 = 0x318, + AE_J_NMB_1 = 0x319, + AE_J_NMB_2 = 0x31A, + AE_J_NMB_3 = 0x31B, + AE_J_NUM10 = 0x31C, + AE_J_NUM11 = 0x31D, + AE_J_NUM12 = 0x31E, + AE_J_NUM13 = 0x31F, + AE_J_NUM14 = 0x320, + AE_J_NUM15 = 0x321, + AE_J_NUM16 = 0x322, + AE_J_NUM17 = 0x323, + AE_J_NUM18 = 0x324, + AE_J_NUM19 = 0x325, + AE_J_NUM20 = 0x326, + AE_J_NUM21 = 0x327, + AE_J_NUM_4 = 0x328, + AE_J_NUM_5 = 0x329, + AE_J_NUM_6 = 0x32A, + AE_J_NUM_7 = 0x32B, + AE_J_NUM_8 = 0x32C, + AE_J_NUM_9 = 0x32D, + AE_J_PWIN1 = 0x32E, + AE_J_PWIN2 = 0x32F, + AE_J_PWIN3 = 0x330, + AE_J_REG_1 = 0x331, + AE_J_REG_2 = 0x332, + AE_J_THX_1 = 0x333, + AE_J_THX_2 = 0x334, + AE_J_WINS1 = 0x335, + AE_J_WINS2 = 0x336, + AE_J_WINS3 = 0x337, + AE__BLAST_DOOR_SLIDE_LOOP_2 = 0x338, + AE__CLAXON_LOOP = 0x339, + AE__HEAVY_DOOR = 0x33A, + AE__SHOOT_CONTROLS = 0x33B, + AE_GULL_SCREECH = 0x33C, + AE_OMO_1 = 0x33D, + AE_OMO_2 = 0x33E, + AE_OMO_3 = 0x33F, + AE_OMO_4 = 0x340, + AE_OMO_5 = 0x341, + AE_DOOR_BUZZER = 0x342, + AE_LIFT_PING = 0x343, + AE_LIGHTS_POWER_DOWN = 0x344, + AE_ROOF_COLLAPSE = 0x345, + AE_WALL_COLLAPSE_BELOW = 0x346, + AE_WALL_COLLAPSE_NEARBY = 0x347, + AE_WOODEN_DOOR_BREACH = 0x348, + AE__CARGO_PLANE_DOOR_LOOP = 0x349, + AE__CARGO_PLANE_DOOR_START = 0x34A, + AE__CARGO_PLANE_DOOR_STOP = 0x34B, + AE_CAS1B00 = 0x34C, + AE_CAS1B01 = 0x34D, + AE_CAS1B02 = 0x34E, + AE_CAS1B03 = 0x34F, + AE_CAS1B04 = 0x350, + AE_CAS1B05 = 0x351, + AE_CAS1B06 = 0x352, + AE_CAS1_AA = 0x353, + AE_CAS1_AB = 0x354, + AE_CAS1_AC = 0x355, + AE_CAS1_AD = 0x356, + AE_CAS1_AE = 0x357, + AE_CAS1_BA = 0x358, + AE_CAS1_BB = 0x359, + AE_CAS1_BC = 0x35A, + AE_CAS1_BD = 0x35B, + AE_CAS1_BE = 0x35C, + AE_CAS1_CA = 0x35D, + AE_CAS1_CB = 0x35E, + AE_CAS1_CC = 0x35F, + AE_CAS1_CD = 0x360, + AE_CAS1_CE = 0x361, + AE_CAS1_DA = 0x362, + AE_CAS1_DB = 0x363, + AE_CAS1_DC = 0x364, + AE_CAS1_DD = 0x365, + AE_CAS1_DE = 0x366, + AE_CAS1_EA = 0x367, + AE_CAS1_EB = 0x368, + AE_CAS1_EC = 0x369, + AE_CAS1_ED = 0x36A, + AE_CAS1_EE = 0x36B, + AE_CAS1_EF = 0x36C, + AE_CAS1_EG = 0x36D, + AE_CAS1_EH = 0x36E, + AE_CAS1_EI = 0x36F, + AE_CAS1_EJ = 0x370, + AE_CAS1_EK = 0x371, + AE_CAS1_EL = 0x372, + AE_CAS1_EM = 0x373, + AE_CAS1_EN = 0x374, + AE_CAS1_EO = 0x375, + AE_CAS1_EP = 0x376, + AE_CAS1_EQ = 0x377, + AE_CAS1_ES = 0x378, + AE_CAS1_ET = 0x379, + AE_CAS1_EU = 0x37A, + AE_CAS1_EV = 0x37B, + AE_CAS1_EW = 0x37C, + AE_CAS1_EX = 0x37D, + AE_CAS1_EY = 0x37E, + AE_CAS1_EZ = 0x37F, + AE_CAS1_FA = 0x380, + AE_CAS1_FB = 0x381, + AE_CAS1_FC = 0x382, + AE_CAS1_GA = 0x383, + AE_CAS1_GB = 0x384, + AE_CAS1_GC = 0x385, + AE_CAS1_GD = 0x386, + AE_CAS1_GE = 0x387, + AE_CAS1_HA = 0x388, + AE_CAS1_HB = 0x389, + AE_CAS1_HC = 0x38A, + AE_CAS1_HD = 0x38B, + AE_CAS1_HE = 0x38C, + AE_CAS1_JA = 0x38D, + AE_CAS1_JB = 0x38E, + AE_CAS11AA = 0x38F, + AE_CAS11AB = 0x390, + AE_CAS11AC = 0x391, + AE_CAS11AD = 0x392, + AE_CAS11BA = 0x393, + AE_CAS11BB = 0x394, + AE_CAS11BC = 0x395, + AE_CAS11CA = 0x396, + AE_CAS11DA = 0x397, + AE_CAS11DB = 0x398, + AE_CAS11EA = 0x399, + AE_CAS11EB = 0x39A, + AE_CAS11EC = 0x39B, + AE_CAS11ED = 0x39C, + AE_CAS11EE = 0x39D, + AE_CAS11EF = 0x39E, + AE_CAS11EG = 0x39F, + AE_CAS11FA = 0x3A0, + AE_CAS11GA = 0x3A1, + AE_CAS11GB = 0x3A2, + AE_CAS11GC = 0x3A3, + AE_CAS11HA = 0x3A4, + AE_CAS11HB = 0x3A5, + AE_CAS11HC = 0x3A6, + AE_CAS11HD = 0x3A7, + AE_CAS11HE = 0x3A8, + AE_CAS11HF = 0x3A9, + AE_CAS11_AA = 0x3AA, + AE_CAS11_AB = 0x3AB, + AE_CAS11_BA = 0x3AC, + AE_CAS11_DB = 0x3AD, + AE_CAS11_EA = 0x3AE, + AE_CAS11_EB = 0x3AF, + AE_CAS11_EC = 0x3B0, + AE_CAS11_ED = 0x3B1, + AE_CAS11_EE = 0x3B2, + AE_CAS11_EF = 0x3B3, + AE_CAS11_EG = 0x3B4, + AE_CAS11_GA = 0x3B5, + AE_CAS11_GB = 0x3B6, + AE_CAS2_AA = 0x3B7, + AE_CAS2_AB = 0x3B8, + AE_CAS2_AC = 0x3B9, + AE_CAS2_AD = 0x3BA, + AE_CAS2_AE = 0x3BB, + AE_CAS2_AF = 0x3BC, + AE_CAS2_AG = 0x3BD, + AE_CAS2_AH = 0x3BE, + AE_CAS2_AI = 0x3BF, + AE_CAS2_AJ = 0x3C0, + AE_CAS2_AK = 0x3C1, + AE_CAS2_AL = 0x3C2, + AE_CAS2_AM = 0x3C3, + AE_CAS2_AN = 0x3C4, + AE_CAS2_AO = 0x3C5, + AE_CAS2_BA = 0x3C6, + AE_CAS2_BB = 0x3C7, + AE_CAS2_BC = 0x3C8, + AE_CAS2_BD = 0x3C9, + AE_CAS2_BE = 0x3CA, + AE_CAS2_CA = 0x3CB, + AE_CAS2_CB = 0x3CC, + AE_CAS3_AA = 0x3CD, + AE_CAS3_AB = 0x3CE, + AE_CAS3_AC = 0x3CF, + AE_CAS3_AD = 0x3D0, + AE_CAS3_BA = 0x3D1, + AE_CAS3_BB = 0x3D2, + AE_CAS3_BC = 0x3D3, + AE_CAS3_BD = 0x3D4, + AE_CAS3_BE = 0x3D5, + AE_CAS3_CA = 0x3D6, + AE_CAS3_CB = 0x3D7, + AE_CAS3_CC = 0x3D8, + AE_CAS3_DA = 0x3D9, + AE_CAS4_BA = 0x3DA, + AE_CAS4_BB = 0x3DB, + AE_CAS4_CA = 0x3DC, + AE_CAS4_CB = 0x3DD, + AE_CAS4_CC = 0x3DE, + AE_CAS4_CD = 0x3DF, + AE_CAS4_CE = 0x3E0, + AE_CAS4_CF = 0x3E1, + AE_CAS4_CG = 0x3E2, + AE_CAS4_CH = 0x3E3, + AE_CAS4_CJ = 0x3E4, + AE_CAS4_CK = 0x3E5, + AE_CAS4_CL = 0x3E6, + AE_CAS4_DA = 0x3E7, + AE_CAS4_DB = 0x3E8, + AE_CAS4_DC = 0x3E9, + AE_CAS4_DD = 0x3EA, + AE_CAS4_DE = 0x3EB, + AE_CAS4_EA = 0x3EC, + AE_CAS4_EB = 0x3ED, + AE_CAS4_EC = 0x3EE, + AE_CAS4_ED = 0x3EF, + AE_CAS4_EE = 0x3F0, + AE_CAS4_EF = 0x3F1, + AE_CAS4_EG = 0x3F2, + AE_CAS4_EH = 0x3F3, + AE_CAS4_FA = 0x3F4, + AE_CAS4_FB = 0x3F5, + AE_CAS4_FC = 0x3F6, + AE_CAS4_FD = 0x3F7, + AE_CAS4_FE = 0x3F8, + AE_CAS4_FF = 0x3F9, + AE_CAS4_FG = 0x3FA, + AE_CAS4_FH = 0x3FB, + AE_CAS4_FJ = 0x3FC, + AE_CAS4_FK = 0x3FD, + AE_CAS4_FL = 0x3FE, + AE_CAS4_GA = 0x3FF, + AE_CAS4_GB = 0x400, + AE_CAS4_HA = 0x401, + AE_CAS4_HB = 0x402, + AE_CAS4_HC = 0x403, + AE_CAS4_HD = 0x404, + AE_CAS4_JA = 0x405, + AE_CAS4_JB = 0x406, + AE_CAS4_JC = 0x407, + AE_CAS4_JD = 0x408, + AE_CAS4_KA = 0x409, + AE_CAS4_KB = 0x40A, + AE_CAS4_KC = 0x40B, + AE_CAS4_KD = 0x40C, + AE_CAS4_KE = 0x40D, + AE_CAS4_KF = 0x40E, + AE_CAS4_KG = 0x40F, + AE_CAS4_KH = 0x410, + AE_CAS4_KJ = 0x411, + AE_CAS4_LA = 0x412, + AE_CAS4_LB = 0x413, + AE_CAS4_LC = 0x414, + AE_CAS4_LD = 0x415, + AE_CAS4_LE = 0x416, + AE_CAS4_MA = 0x417, + AE_CAS4_NA = 0x418, + AE_CAS4_NB = 0x419, + AE_CAS4_NC = 0x41A, + AE_CAS4_ND = 0x41B, + AE_CAS4_NE = 0x41C, + AE_CAS4_NF = 0x41D, + AE_CAS4_NG = 0x41E, + AE_CAS4_NH = 0x41F, + AE_CAS4_NJ = 0x420, + AE_CAS4_OA = 0x421, + AE_CAS4_OB = 0x422, + AE_CAS4_OC = 0x423, + AE_CAS4_OD = 0x424, + AE_CAS4_OE = 0x425, + AE_CAS4_OF = 0x426, + AE_CAS4_OG = 0x427, + AE_CAS4_OH = 0x428, + AE_CAS4_OJ = 0x429, + AE_CAS4_OK = 0x42A, + AE_CAS4_OL = 0x42B, + AE_CAS4_OM = 0x42C, + AE_CAS4_PA = 0x42D, + AE_CAS4_PB = 0x42E, + AE_CAS4_PD = 0x42F, + AE_CAS4_PE = 0x430, + AE_CAS4_PF = 0x431, + AE_CAS4_PG = 0x432, + AE_CAS4_PH = 0x433, + AE_CAS4_PJ = 0x434, + AE_CAS4_PK = 0x435, + AE_CAS4_QA = 0x436, + AE_CAS4_QB = 0x437, + AE_CAS4_RA = 0x438, + AE_CAS4_RB = 0x439, + AE_CAS4_RD = 0x43A, + AE_CAS4_RE = 0x43B, + AE_CAS4_SA = 0x43C, + AE_CAS4_SB = 0x43D, + AE_CAS4_TA = 0x43E, + AE_CAS4_TB = 0x43F, + AE_CAS4_TC = 0x440, + AE_CAS5_AA = 0x441, + AE_CAS5_AB = 0x442, + AE_CAS5_BA = 0x443, + AE_CAS5_BB = 0x444, + AE_CAS5_BC = 0x445, + AE_CAS5_BD = 0x446, + AE_CAS5_BE = 0x447, + AE_CAS5_CA = 0x448, + AE_CAS5_CB = 0x449, + AE_CAS5_CC = 0x44A, + AE_CAS5_CD = 0x44B, + AE_CAS5_CE = 0x44C, + AE_CAS5_CF = 0x44D, + AE_CAS5_CG = 0x44E, + AE_CAS5_DA = 0x44F, + AE_CAS5_DB = 0x450, + AE_CAS5_EA = 0x451, + AE_CAS5_EB = 0x452, + AE_CAS6_AA = 0x453, + AE_CAS6_AB = 0x454, + AE_CAS6_AC = 0x455, + AE_CAS6_AD = 0x456, + AE_CAS6_AE = 0x457, + AE_CAS6_AF = 0x458, + AE_CAS6_BA = 0x459, + AE_CAS6_BB = 0x45A, + AE_CAS6_BC = 0x45B, + AE_CAS6_BD = 0x45C, + AE_CAS6_BE = 0x45D, + AE_CAS6_BF = 0x45E, + AE_CAS6_BH = 0x45F, + AE_CAS6_BK = 0x460, + AE_CAS6_BL = 0x461, + AE_CAS6_BM = 0x462, + AE_CAS6_BN = 0x463, + AE_CAS6_CA = 0x464, + AE_CAS6_CB = 0x465, + AE_CAS6_DA = 0x466, + AE_CAS6_DB = 0x467, + AE_CAS6_EA = 0x468, + AE_CAS6_EB = 0x469, + AE_CAS6_EC = 0x46A, + AE_CAS6_ED = 0x46B, + AE_CAS6_EE = 0x46C, + AE_CAS6_EF = 0x46D, + AE_CAS6_EG = 0x46E, + AE_CAS6_EH = 0x46F, + AE_CAS6_EJ = 0x470, + AE_CAS6_EK = 0x471, + AE_CAS6_EL = 0x472, + AE_CAS6_EM = 0x473, + AE_CAS6_EN = 0x474, + AE_CAS6_EO = 0x475, + AE_CAS6_EP = 0x476, + AE_CAS6_EQ = 0x477, + AE_CAS6_ER = 0x478, + AE_CAS6_ES = 0x479, + AE_CAS6_ET = 0x47A, + AE_CAS6_EU = 0x47B, + AE_CAS6_FA = 0x47C, + AE_CAS6_FC = 0x47D, + AE_CAS6_FF = 0x47E, + AE_CAS6_FK = 0x47F, + AE_CAS6_FM = 0x480, + AE_CAS6_FN = 0x481, + AE_CAS6_FO = 0x482, + AE_CAS6_FP = 0x483, + AE_CAS6_GB = 0x484, + AE_CAS6_GH = 0x485, + AE_CAS6_GJ = 0x486, + AE_CAS6_GK = 0x487, + AE_CAS6_HA = 0x488, + AE_CAS6_HB = 0x489, + AE_CAS6_HC = 0x48A, + AE_CAS6_HD = 0x48B, + AE_CAS6_JA = 0x48C, + AE_CAS6_JB = 0x48D, + AE_CAS6_JC = 0x48E, + AE_CAS6_JD = 0x48F, + AE_CAS6_JE = 0x490, + AE_CAS6_JF = 0x491, + AE_CAS6_JG = 0x492, + AE_CAS6_JJ = 0x493, + AE_CAS6_JK = 0x494, + AE_CAS6_JL = 0x495, + AE_CAS6_JM = 0x496, + AE_CAS6_JN = 0x497, + AE_CAS6_JO = 0x498, + AE_CAS6_KA = 0x499, + AE_CAS6_KB = 0x49A, + AE_CAS6_KC = 0x49B, + AE_CAS6_KD = 0x49C, + AE_CAS6_KE = 0x49D, + AE_CAS6_LA = 0x49E, + AE_CAS6_LB = 0x49F, + AE_CAS6_LC = 0x4A0, + AE_CAS6_LD = 0x4A1, + AE_CAS9_AA = 0x4A2, + AE_CAS9_AB = 0x4A3, + AE_CAS9_AC = 0x4A4, + AE_CAS9_AD = 0x4A5, + AE_CAS9_BA = 0x4A6, + AE_CAS9_BB = 0x4A7, + AE_CAS9_BC = 0x4A8, + AE_CAS9_BD = 0x4A9, + AE_CAS9_CA = 0x4AA, + AE_CAS9_CB = 0x4AB, + AE_CAS9_CC = 0x4AC, + AE_CAS9_CD = 0x4AD, + AE_CAS9_DA = 0x4AE, + AE_CAT_AA = 0x4AF, + AE_CAT_AB = 0x4B0, + AE_CAT_AC = 0x4B1, + AE_CAT_AD = 0x4B2, + AE_CAT_BA = 0x4B3, + AE_CAT_BB = 0x4B4, + AE_CAT_BC = 0x4B5, + AE_CAT_BD = 0x4B6, + AE_CAT_BE = 0x4B7, + AE_CAT_BF = 0x4B8, + AE_CAT_BG = 0x4B9, + AE_CAT_BH = 0x4BA, + AE_CAT_BI = 0x4BB, + AE_CAT_BJ = 0x4BC, + AE_CAT_BK = 0x4BD, + AE_CAT_CA = 0x4BE, + AE_CAT_CB = 0x4BF, + AE_CAT_CC = 0x4C0, + AE_CAT_CD = 0x4C1, + AE_CAT_CE = 0x4C2, + AE_CAT_CF = 0x4C3, + AE_CAT_CG = 0x4C4, + AE_CAT_CH = 0x4C5, + AE_CAT_CI = 0x4C6, + AE_CAT_CJ = 0x4C7, + AE_CAT_CK = 0x4C8, + AE_CAT_DA = 0x4C9, + AE_CAT_DB = 0x4CA, + AE_CAT_DC = 0x4CB, + AE_CAT_DD = 0x4CC, + AE_CAT_DE = 0x4CD, + AE_CAT_DF = 0x4CE, + AE_CAT_DG = 0x4CF, + AE_CAT_DH = 0x4D0, + AE_CAT_DI = 0x4D1, + AE_CAT_DJ = 0x4D2, + AE_CAT_DK = 0x4D3, + AE_CAT_DL = 0x4D4, + AE_CAT_DM = 0x4D5, + AE_CAT_DN = 0x4D6, + AE_CAT_DO = 0x4D7, + AE_CAT_DP = 0x4D8, + AE_CAT_EA = 0x4D9, + AE_CAT_EB = 0x4DA, + AE_CAT_EC = 0x4DB, + AE_CAT_ED = 0x4DC, + AE_CAT_EE = 0x4DD, + AE_CAT_EF = 0x4DE, + AE_CAT_EG = 0x4DF, + AE_CAT_EH = 0x4E0, + AE_CAT_EI = 0x4E1, + AE_CAT_EJ = 0x4E2, + AE_CAT_EK = 0x4E3, + AE_CAT_EL = 0x4E4, + AE_CAT_EM = 0x4E5, + AE_CAT_EN = 0x4E6, + AE_CAT_EO = 0x4E7, + AE_CAT_FA = 0x4E8, + AE_CAT_FB = 0x4E9, + AE_CAT_FC = 0x4EA, + AE_CAT_FD = 0x4EB, + AE_CAT_FE = 0x4EC, + AE_CAT_FF = 0x4ED, + AE_CAT_FG = 0x4EE, + AE_CAT_FH = 0x4EF, + AE_CAT_FI = 0x4F0, + AE_CAT_FJ = 0x4F1, + AE_CAT_FK = 0x4F2, + AE_CAT_FL = 0x4F3, + AE_CAT_FM = 0x4F4, + AE_CAT_FN = 0x4F5, + AE_CAT_FO = 0x4F6, + AE_CAT_GA = 0x4F7, + AE_CAT_GB = 0x4F8, + AE_CAT_GC = 0x4F9, + AE_CAT_GD = 0x4FA, + AE_CAT_GE = 0x4FB, + AE_CAT_GF = 0x4FC, + AE_CAT_GG = 0x4FD, + AE_CAT_GH = 0x4FE, + AE_CAT_GI = 0x4FF, + AE_CAT_GJ = 0x500, + AE_CAT_GK = 0x501, + AE_CAT_GL = 0x502, + AE_CAT_GM = 0x503, + AE_CAT_GN = 0x504, + AE_CAT_HA = 0x505, + AE_CAT_HB = 0x506, + AE_CAT_HC = 0x507, + AE_CAT_HD = 0x508, + AE_CAT_HE = 0x509, + AE_CAT_HF = 0x50A, + AE_CAT_KA = 0x50B, + AE_CAT_KB = 0x50C, + AE_CAT_KC = 0x50D, + AE_CAT_KD = 0x50E, + AE_CAT_KE = 0x50F, + AE_CAT_KF = 0x510, + AE_CAT_KG = 0x511, + AE_CAT_KH = 0x512, + AE_CAT_KI = 0x513, + AE_CAT_KJ = 0x514, + AE_CAT_KK = 0x515, + AE_CAT_KL = 0x516, + AE_CAT_KM = 0x517, + AE_CAT_KN = 0x518, + AE_CAT_KO = 0x519, + AE_CAT_KP = 0x51A, + AE_CAT_KQ = 0x51B, + AE_CAT_KR = 0x51C, + AE_CAT_KS = 0x51D, + AE_CAT_KT = 0x51E, + AE_CAT_LA = 0x51F, + AE_CAT_LB = 0x520, + AE_CAT_MA = 0x521, + AE_CAT_MB = 0x522, + AE_CAT_MC = 0x523, + AE_CAT_NA = 0x524, + AE_CAT_NB = 0x525, + AE_CAT_NC = 0x526, + AE_CAT_ND = 0x527, + AE_CAT_NE = 0x528, + AE_CAT_NF = 0x529, + AE_CAT_NG = 0x52A, + AE_CAT_NH = 0x52B, + AE_CAT_OA = 0x52C, + AE_CAT_OB = 0x52D, + AE_CAT_OC = 0x52E, + AE_CAT_OD = 0x52F, + AE_CAT_OE = 0x530, + AE_CAT_OF = 0x531, + AE_CAT_OG = 0x532, + AE_CAT_OH = 0x533, + AE_CAT_PA = 0x534, + AE_CAT_PB = 0x535, + AE_CAT_PC = 0x536, + AE_CAT_PD = 0x537, + AE_CAT_PE = 0x538, + AE_CAT_PF = 0x539, + AE_CAT1_AA = 0x53A, + AE_CAT1_AB = 0x53B, + AE_CAT1_AC = 0x53C, + AE_CAT1_AD = 0x53D, + AE_CAT1_AE = 0x53E, + AE_CAT1_AF = 0x53F, + AE_CAT1_AG = 0x540, + AE_CAT1_AH = 0x541, + AE_CAT1_BA = 0x542, + AE_CAT1_BB = 0x543, + AE_CAT1_BC = 0x544, + AE_CAT1_CA = 0x545, + AE_CAT1_CB = 0x546, + AE_CAT1_CC = 0x547, + AE_CAT1_CD = 0x548, + AE_CAT1_CE = 0x549, + AE_CAT1_DA = 0x54A, + AE_CAT1_DB = 0x54B, + AE_CAT1_DC = 0x54C, + AE_CAT1_DD = 0x54D, + AE_CAT1_EA = 0x54E, + AE_CAT1_EB = 0x54F, + AE_CAT1_EC = 0x550, + AE_CAT1_ED = 0x551, + AE_CAT1_FA = 0x552, + AE_CAT1_FB = 0x553, + AE_CAT1_GA = 0x554, + AE_CAT1_GB = 0x555, + AE_CAT1_GC = 0x556, + AE_CAT1_GD = 0x557, + AE_CAT1_HA = 0x558, + AE_CAT1_HB = 0x559, + AE_CAT1_HC = 0x55A, + AE_CAT1_HD = 0x55B, + AE_CAT1_HE = 0x55C, + AE_CAT1_IA = 0x55D, + AE_CAT1_IB = 0x55E, + AE_CAT1_IC = 0x55F, + AE_CAT1_IE = 0x560, + AE_CAT1_IF = 0x561, + AE_CAT1_IG = 0x562, + AE_CAT2_AA = 0x563, + AE_CAT2_AB = 0x564, + AE_CAT2_AC = 0x565, + AE_CAT2_AF = 0x566, + AE_CAT2_AG = 0x567, + AE_CAT2_AH = 0x568, + AE_CAT2_AI = 0x569, + AE_CAT2_CA = 0x56A, + AE_CAT2_CB = 0x56B, + AE_CAT2_CC = 0x56C, + AE_CAT2_DA = 0x56D, + AE_CAT2_DB = 0x56E, + AE_CAT2_DC = 0x56F, + AE_CAT2_EA = 0x570, + AE_CAT2_EB = 0x571, + AE_CAT2_EC = 0x572, + AE_CAT2_FA = 0x573, + AE_CAT2_FB = 0x574, + AE_CAT2_FC = 0x575, + AE_CAT2_GA = 0x576, + AE_CAT2_GB = 0x577, + AE_CAT2_GC = 0x578, + AE_CAT2_HA = 0x579, + AE_CAT2_HB = 0x57A, + AE_CAT2_HC = 0x57B, + AE_CAT2_HE = 0x57C, + AE_CAT2_HF = 0x57D, + AE_CAT2_HG = 0x57E, + AE_CAT2_HH = 0x57F, + AE_CAT2_HI = 0x580, + AE_CAT2_HJ = 0x581, + AE_CAT2_JA = 0x582, + AE__CAT2_SECURITY_ALARM = 0x583, + AE__CAT2_WOODEN_DOOR_BREACH = 0x584, + AE_CAT3_AA = 0x585, + AE_CAT3_AB = 0x586, + AE_CAT3_AC = 0x587, + AE_CAT3_AD = 0x588, + AE_CAT3_AE = 0x589, + AE_CAT3_AF = 0x58A, + AE_CAT3_AG = 0x58B, + AE_CAT3_BA = 0x58C, + AE_CAT3_BB = 0x58D, + AE_CAT3_BC = 0x58E, + AE_CAT3_BD = 0x58F, + AE_CAT3_CA = 0x590, + AE_CAT3_CB = 0x591, + AE_CAT3_CC = 0x592, + AE_CAT3_CD = 0x593, + AE_CAT3_DA = 0x594, + AE_CAT3_DB = 0x595, + AE_CAT3_DC = 0x596, + AE_CAT3_DD = 0x597, + AE_CAT3_EA = 0x598, + AE_CAT3_EB = 0x599, + AE_CAT3_EC = 0x59A, + AE_CAT3_ED = 0x59B, + AE_CAT3_EE = 0x59C, + AE_CAT3_EF = 0x59D, + AE_CAT3_EG = 0x59E, + AE_CAT3_FA = 0x59F, + AE_CAT3_FB = 0x5A0, + AE_CAT3_FC = 0x5A1, + AE_CAT3_FD = 0x5A2, + AE_CAT3_FE = 0x5A3, + AE_CAT3_FF = 0x5A4, + AE_CAT3_GA = 0x5A5, + AE_CAT3_GB = 0x5A6, + AE_CAT3_GC = 0x5A7, + AE_CAT3_GD = 0x5A8, + AE_CAT3_GE = 0x5A9, + AE_CAT3_GF = 0x5AA, + AE_CAT3_GG = 0x5AB, + AE_CAT3_HA = 0x5AC, + AE_CAT3_HB = 0x5AD, + AE_CAT3_HC = 0x5AE, + AE_CAT3_JA = 0x5AF, + AE_CAT3_JB = 0x5B0, + AE_CAT3_JC = 0x5B1, + AE_CAT3_JD = 0x5B2, + AE_CAT3_JE = 0x5B3, + AE_CAT3_JF = 0x5B4, + AE_CAT3_JG = 0x5B5, + AE_CAT3_JH = 0x5B6, + AE_CAT3_JJ = 0x5B7, + AE_CAT3_JK = 0x5B8, + AE_CAT4_AA = 0x5B9, + AE_CAT4_AB = 0x5BA, + AE_CAT4_AC = 0x5BB, + AE_CAT4_AD = 0x5BC, + AE_CAT4_AE = 0x5BD, + AE_CAT4_AF = 0x5BE, + AE_CAT4_AG = 0x5BF, + AE_CAT4_AH = 0x5C0, + AE_CAT4_AI = 0x5C1, + AE_CAT4_AJ = 0x5C2, + AE_CAT4_BA = 0x5C3, + AE_CAT4_BB = 0x5C4, + AE_CAT4_BC = 0x5C5, + AE_CAT4_BD = 0x5C6, + AE_CAT4_BE = 0x5C7, + AE_CAT4_BF = 0x5C8, + AE_CAT4_BG = 0x5C9, + AE_CAT4_BH = 0x5CA, + AE_CAT4_BI = 0x5CB, + AE_CAT4_BJ = 0x5CC, + AE_CAT4_BK = 0x5CD, + AE_CAT4_CA = 0x5CE, + AE_CAT4_CB = 0x5CF, + AE_CAT4_CC = 0x5D0, + AE_CAT4_CD = 0x5D1, + AE_CAT4_CE = 0x5D2, + AE_CAT4_CF = 0x5D3, + AE_CAT4_CG = 0x5D4, + AE_CAT4_CH = 0x5D5, + AE_CAT4_DA = 0x5D6, + AE_CAT4_DB = 0x5D7, + AE_CAT4_DC = 0x5D8, + AE_CAT4_DD = 0x5D9, + AE_CAT4_DE = 0x5DA, + AE_CAT4_DF = 0x5DB, + AE_CAT4_DG = 0x5DC, + AE_CAT4_DH = 0x5DD, + AE_CAT4_DI = 0x5DE, + AE_CAT4_DJ = 0x5DF, + AE_CAT4_DK = 0x5E0, + AE_CAT4_DL = 0x5E1, + AE_CAT4_DM = 0x5E2, + AE_CAT4_EA = 0x5E3, + AE_CAT4_EB = 0x5E4, + AE_CAT4_EC = 0x5E5, + AE_CAT4_ED = 0x5E6, + AE_CAT4_FA = 0x5E7, + AE_CAT4_FB = 0x5E8, + AE_CAT4_FC = 0x5E9, + AE_CAT4_FD = 0x5EA, + AE_CAT4_GA = 0x5EB, + AE_CAT4_GB = 0x5EC, + AE_CAT4_HA = 0x5ED, + AE_CAT4_HB = 0x5EE, + AE_CAT4_HC = 0x5EF, + AE_CAT4_HD = 0x5F0, + AE_CAT4_HE = 0x5F1, + AE_CAT4_HF = 0x5F2, + AE_CAT4_HG = 0x5F3, + AE_CAT4_HH = 0x5F4, + AE_CAT4_HI = 0x5F5, + AE_CAT4_HJ = 0x5F6, + AE_CAT4_JA = 0x5F7, + AE_CAT4_JB = 0x5F8, + AE_CAT4_KA = 0x5F9, + AE_CAT4_KB = 0x5FA, + AE_CAT4_KC = 0x5FB, + AE_CAT4_KD = 0x5FC, + AE_CAT4_KE = 0x5FD, + AE_CAT4_KF = 0x5FE, + AE_CAT4_KG = 0x5FF, + AE_CAT4_LA = 0x600, + AE_CAT4_LB = 0x601, + AE_CAT4_LC = 0x602, + AE_CAT4_LD = 0x603, + AE_CAT4_LE = 0x604, + AE_CAT4_LF = 0x605, + AE_CATX_AA = 0x606, + AE_CATX_AB = 0x607, + AE_CATX_AC = 0x608, + AE_CATX_AD = 0x609, + AE_CATX_AE = 0x60A, + AE_CATX_AF = 0x60B, + AE_CATX_AG = 0x60C, + AE_CATX_AH = 0x60D, + AE_CATX_BA = 0x60E, + AE_CATX_BB = 0x60F, + AE_CATX_BC = 0x610, + AE_CATX_BD = 0x611, + AE_CATX_BE = 0x612, + AE_CATX_BF = 0x613, + AE_CATX_CA = 0x614, + AE_CATX_CB = 0x615, + AE_CATX_CC = 0x616, + AE_CATX_CD = 0x617, + AE_CATX_CE = 0x618, + AE_CATX_CF = 0x619, + AE_CATX_DA = 0x61A, + AE_CATX_DB = 0x61B, + AE_CATX_DC = 0x61C, + AE_CATX_DD = 0x61D, + AE_CATX_DE = 0x61E, + AE_CATX_DF = 0x61F, + AE_CATX_JA = 0x620, + AE_CATX_JB = 0x621, + AE_CATX_JC = 0x622, + AE_CATX_JD = 0x623, + AE_CATX_JE = 0x624, + AE_CATX_JF = 0x625, + AE_CATX_JG = 0x626, + AE_CATX_JH = 0x627, + AE_CATX_KA = 0x628, + AE_CATX_KB = 0x629, + AE_CATX_KC = 0x62A, + AE_CATX_KD = 0x62B, + AE_CATX_LA = 0x62C, + AE_CATX_LB = 0x62D, + AE_CATX_LC = 0x62E, + AE_CATX_LD = 0x62F, + AE_CATX_MA = 0x630, + AE_CATX_MB = 0x631, + AE_CATX_MC = 0x632, + AE_CATX_MD = 0x633, + AE_CATX_ME = 0x634, + AE_CATX_NA = 0x635, + AE_CATX_NB = 0x636, + AE_CATX_NC = 0x637, + AE_CATX_OA = 0x638, + AE_CATX_OB = 0x639, + AE_CATX_OC = 0x63A, + AE_CATX_OD = 0x63B, + AE_CATX_PA = 0x63C, + AE_CATX_PB = 0x63D, + AE_CATX_QA = 0x63E, + AE_CATX_QB = 0x63F, + AE_CATX_RA = 0x640, + AE_CATX_RB = 0x641, + AE_CATX_RC = 0x642, + AE_CATX_SA = 0x643, + AE_CATX_SB = 0x644, + AE_CATX_SC = 0x645, + AE_CATX_SD = 0x646, + AE_CATX_SE = 0x647, + AE_CATX_SF = 0x648, + AE_CATX_SG = 0x649, + AE_CATX_SH = 0x64A, + AE_CATX_TA = 0x64B, + AE_CATX_TB = 0x64C, + AE_CATX_TC = 0x64D, + AE_CATX_TD = 0x64E, + AE_CATX_TE = 0x64F, + AE_CATX_TF = 0x650, + AE_CATX_TG = 0x651, + AE_CATX_TH = 0x652, + AE_CATX_TJ = 0x653, + AE_CATX_TK = 0x654, + AE_CATX_TL = 0x655, + AE_CATX_TM = 0x656, + AE_CATX_TN = 0x657, + AE_CATX_TO = 0x658, + AE_CATX_TP = 0x659, + AE_CATX_TQ = 0x65A, + AE_CATX_TR = 0x65B, + AE_CATX_TS = 0x65C, + AE_CATX_TT = 0x65D, + AE_CATX_TU = 0x65E, + AE_CATX_UA = 0x65F, + AE_CATX_UB = 0x660, + AE_CATX_UC = 0x661, + AE_CATX_UD = 0x662, + AE_CATX_UE = 0x663, + AE_CATX_UF = 0x664, + AE_CATX_UG = 0x665, + AE_CATX_UH = 0x666, + AE_CATX_UJ = 0x667, + AE_CATX_UK = 0x668, + AE_CATX_VA = 0x669, + AE_CATX_VB = 0x66A, + AE_CATX_VC = 0x66B, + AE_CATX_VD = 0x66C, + AE_CATX_VE = 0x66D, + AE_CATX_VF = 0x66E, + AE_CATX_VG = 0x66F, + AE_CATX_VH = 0x670, + AE_CATX_VJ = 0x671, + AE_CATX_VK = 0x672, + AE_CATX_VL = 0x673, + AE_CATX_VM = 0x674, + AE_CATX_VN = 0x675, + AE_CATX_VO = 0x676, + AE_CATX_VP = 0x677, + AE_CATX_VQ = 0x678, + AE_CES1_AA = 0x679, + AE_CES1_AB = 0x67A, + AE_CES1_AC = 0x67B, + AE_CES1_AD = 0x67C, + AE_CES1_BA = 0x67D, + AE_CES1_BB = 0x67E, + AE_CES1_BC = 0x67F, + AE_CES1_BD = 0x680, + AE_CES1_CA = 0x681, + AE_CES1_CB = 0x682, + AE_CES1_CC = 0x683, + AE_CES1_CD = 0x684, + AE_CES1_CE = 0x685, + AE_CES1_CF = 0x686, + AE_CES1_DA = 0x687, + AE_CES1_DB = 0x688, + AE_CES2_AA = 0x689, + AE_CES2_AB = 0x68A, + AE_CES2_AC = 0x68B, + AE_CES2_AD = 0x68C, + AE_CES2_AE = 0x68D, + AE_CES2_AF = 0x68E, + AE_CES2_AG = 0x68F, + AE_CES2_ZA = 0x690, + AE_CES2_ZB = 0x691, + AE_CES2_ZC = 0x692, + AE_CES2_ZD = 0x693, + AE_CES2_ZE = 0x694, + AE_CES2_ZF = 0x695, + AE_CES2_ZG = 0x696, + AE_CES2_ZH = 0x697, + AE_CESX_AA = 0x698, + AE_CESX_AB = 0x699, + AE_CESX_AC = 0x69A, + AE_CESX_AD = 0x69B, + AE_CESX_AE = 0x69C, + AE_CESX_AF = 0x69D, + AE_CESX_BA = 0x69E, + AE_CESX_BB = 0x69F, + AE_CESX_BC = 0x6A0, + AE_CESX_BD = 0x6A1, + AE_CRA1_AA = 0x6A2, + AE_CRA1_AB = 0x6A3, + AE_CRA1_AC = 0x6A4, + AE_CRA1_AD = 0x6A5, + AE_CRA1_AE = 0x6A6, + AE_CRA1_AF = 0x6A7, + AE_CRA1_AG = 0x6A8, + AE_CRA1_AH = 0x6A9, + AE_CRA1_AI = 0x6AA, + AE_CRA1_AJ = 0x6AB, + AE_CRA1_BA = 0x6AC, + AE_CRA1_BB = 0x6AD, + AE_CRA1_BC = 0x6AE, + AE_CRA1_BD = 0x6AF, + AE_CRA1_BE = 0x6B0, + AE_CRA1_BF = 0x6B1, + AE_CRA1_BG = 0x6B2, + AE_CRA1_BH = 0x6B3, + AE_CRA1_BJ = 0x6B4, + AE_CRA1_BK = 0x6B5, + AE_CRA1_CA = 0x6B6, + AE_CRA1_CB = 0x6B7, + AE_CRA1_DA = 0x6B8, + AE_CRA1_DB = 0x6B9, + AE_CRA1_DC = 0x6BA, + AE_CRA1_DD = 0x6BB, + AE_CRA1_EA = 0x6BC, + AE_CRA1_EB = 0x6BD, + AE_CRA1_EC = 0x6BE, + AE_CRA1_ED = 0x6BF, + AE_CRA1_FA = 0x6C0, + AE_CRA1_FB = 0x6C1, + AE_CRA1_GA = 0x6C2, + AE_CRA1_GB = 0x6C3, + AE_CRA1_GC = 0x6C4, + AE_CRA1_HA = 0x6C5, + AE_CRA1_HB = 0x6C6, + AE_CRA1_HC = 0x6C7, + AE_CRA1_HD = 0x6C8, + AE_CRA1_HE = 0x6C9, + AE_CRA1_HF = 0x6CA, + AE_CRA1_HG = 0x6CB, + AE_CRA1_HH = 0x6CC, + AE_CRA1_HJ = 0x6CD, + AE_CRA1_HK = 0x6CE, + AE_CRA1_HL = 0x6CF, + AE_CRA1_JA = 0x6D0, + AE_CRA1_JB = 0x6D1, + AE_CRA1_JC = 0x6D2, + AE_CRA1_JD = 0x6D3, + AE_CRA1_KA = 0x6D4, + AE_CRA1_KB = 0x6D5, + AE_CRA1_KC = 0x6D6, + AE_CRA1_KD = 0x6D7, + AE_CRA1_KE = 0x6D8, + AE_CRA1_KF = 0x6D9, + AE_CRA1_KG = 0x6DA, + AE_CRA1_KH = 0x6DB, + AE_CRA1_KJ = 0x6DC, + AE_CRA1_LA = 0x6DD, + AE_CRA1_MA = 0x6DE, + AE_CRA1_MB = 0x6DF, + AE_CRA1_MC = 0x6E0, + AE_CRA1_MD = 0x6E1, + AE_CRA2_CA = 0x6E2, + AE_CRA2_CB = 0x6E3, + AE_CRA2_CC = 0x6E4, + AE_CRA2_CD = 0x6E5, + AE_CRA2_CE = 0x6E6, + AE_CRA2_CF = 0x6E7, + AE_CRA2_CG = 0x6E8, + AE_CRA2_CH = 0x6E9, + AE_CRA2_CI = 0x6EA, + AE_CRA2_CJ = 0x6EB, + AE_CRA2_CK = 0x6EC, + AE_CRA2_CL = 0x6ED, + AE_CRA2_CM = 0x6EE, + AE_CRA2_CN = 0x6EF, + AE_CRA2_CO = 0x6F0, + AE_CRA2_DA = 0x6F1, + AE_CRA2_DB = 0x6F2, + AE_CRA2_DC = 0x6F3, + AE_CRA2_DD = 0x6F4, + AE_CRA2_DE = 0x6F5, + AE_CRA2_DF = 0x6F6, + AE_CRA2_DG = 0x6F7, + AE_CRA2_DH = 0x6F8, + AE_CRA2_DI = 0x6F9, + AE_CRA2_DJ = 0x6FA, + AE_CRA2_DK = 0x6FB, + AE_CRA2_DL = 0x6FC, + AE_CRA2_DM = 0x6FD, + AE_CRA2_DN = 0x6FE, + AE_CRA2_DO = 0x6FF, + AE_CRA2_ZA = 0x700, + AE_CRA2_ZB = 0x701, + AE_CRA2_ZC = 0x702, + AE_CRA3_BA = 0x703, + AE_CRA3_CA = 0x704, + AE_CRA3_CB = 0x705, + AE_CRA3_DA = 0x706, + AE_CRA3_DB = 0x707, + AE_CRA3_DC = 0x708, + AE_CRA3_DD = 0x709, + AE_CRA3_DE = 0x70A, + AE_CRA3_EA = 0x70B, + AE_CRA3_EB = 0x70C, + AE_CRA3_EC = 0x70D, + AE_HATCH_LOCK = 0x70E, + AE_DANCE_HIGH_01 = 0x70F, + AE_DANCE_HIGH_02 = 0x710, + AE_DANCE_HIGH_03 = 0x711, + AE_DANCE_HIGH_04 = 0x712, + AE_DANCE_HIGH_05 = 0x713, + AE_DANCE_HIGH_06 = 0x714, + AE_DANCE_HIGH_07 = 0x715, + AE_DANCE_HIGH_08 = 0x716, + AE_DANCE_HIGH_09 = 0x717, + AE_DANCE_HIGH_10 = 0x718, + AE_DANCE_HIGH_11 = 0x719, + AE_DANCE_HIGH_12 = 0x71A, + AE_DANCE_HIGH_13 = 0x71B, + AE_DANCE_HIGH_14 = 0x71C, + AE_DANCE_HIGH_15 = 0x71D, + AE_DANCE_HIGH_16 = 0x71E, + AE_DANCE_HIGH_17 = 0x71F, + AE_DANCE_HIGH_18 = 0x720, + AE_DANCE_HIGH_19 = 0x721, + AE_DANCE_HIGH_20 = 0x722, + AE_DANCE_HIGH_21 = 0x723, + AE_DANCE_HIGH_22 = 0x724, + AE_DANCE_HIGH_23 = 0x725, + AE_DANCE_HIGH_24 = 0x726, + AE_DANCE_HIGH_25 = 0x727, + AE_DANCE_HIGH_26 = 0x728, + AE_DANCE_HIGH_27 = 0x729, + AE_DANCE_HIGH_28 = 0x72A, + AE_DANCE_HIGH_29 = 0x72B, + AE_DANCE_HIGH_30 = 0x72C, + AE_DANCE_HIGH_31 = 0x72D, + AE_DANCE_HIGH_32 = 0x72E, + AE_DANCE_HIGH_33 = 0x72F, + AE_DANCE_HIGH_34 = 0x730, + AE_DANCE_HIGH_35 = 0x731, + AE_DANCE_HIGH_36 = 0x732, + AE_DANCE_HIGH_37 = 0x733, + AE_DANCE_HIGH_38 = 0x734, + AE_DANCE_HIGH_39 = 0x735, + AE_DANCE_HIGH_40 = 0x736, + AE_DANCE_HIGH_41 = 0x737, + AE_DANCE_HIGH_42 = 0x738, + AE_DANCE_HIGH_43 = 0x739, + AE_DANCE_HIGH_44 = 0x73A, + AE_DANCE_HIGH_45 = 0x73B, + AE_DANCE_HIGH_46 = 0x73C, + AE_DANCE_HIGH_47 = 0x73D, + AE_DANCE_HIGH_48 = 0x73E, + AE_DANCE_HIGH_49 = 0x73F, + AE_DANCE_HIGH_50 = 0x740, + AE_DANCE_HIGH_51 = 0x741, + AE_DANCE_HIGH_52 = 0x742, + AE_DANCE_HIGH_53 = 0x743, + AE_DANCE_HIGH_54 = 0x744, + AE_DANCE_HIGH_55 = 0x745, + AE_DANCE_HIGH_56 = 0x746, + AE_DANCE_LOW_01 = 0x747, + AE_DANCE_LOW_02 = 0x748, + AE_DANCE_LOW_03 = 0x749, + AE_DANCE_LOW_04 = 0x74A, + AE_DANCE_LOW_05 = 0x74B, + AE_DANCE_LOW_06 = 0x74C, + AE_DANCE_LOW_07 = 0x74D, + AE_DANCE_LOW_08 = 0x74E, + AE_DANCE_LOW_09 = 0x74F, + AE_DANCE_LOW_10 = 0x750, + AE_DANCE_LOW_11 = 0x751, + AE_DANCE_LOW_12 = 0x752, + AE_DANCE_LOW_13 = 0x753, + AE_DANCE_LOW_14 = 0x754, + AE_DANCE_LOW_15 = 0x755, + AE_DANCE_LOW_16 = 0x756, + AE_DANCE_LOW_17 = 0x757, + AE_DANCE_LOW_18 = 0x758, + AE_DANCE_LOW_19 = 0x759, + AE_DANCE_LOW_20 = 0x75A, + AE_DANCE_LOW_21 = 0x75B, + AE_DANCE_LOW_22 = 0x75C, + AE_DANCE_LOW_23 = 0x75D, + AE_DANCE_LOW_24 = 0x75E, + AE_DANCE_LOW_25 = 0x75F, + AE_DANCE_LOW_26 = 0x760, + AE_DANCE_LOW_27 = 0x761, + AE_DANCE_LOW_28 = 0x762, + AE_DANCE_LOW_29 = 0x763, + AE_DANCE_LOW_30 = 0x764, + AE_DANCE_LOW_31 = 0x765, + AE_DANCE_LOW_32 = 0x766, + AE_DANCE_LOW_33 = 0x767, + AE_DANCE_LOW_34 = 0x768, + AE_DANCE_LOW_35 = 0x769, + AE_DANCE_LOW_36 = 0x76A, + AE_DANCE_LOW_37 = 0x76B, + AE_DANCE_LOW_38 = 0x76C, + AE_DANCE_LOW_39 = 0x76D, + AE_DANCE_LOW_40 = 0x76E, + AE_DANCE_LOW_41 = 0x76F, + AE_DANCE_LOW_42 = 0x770, + AE_DANCE_LOW_43 = 0x771, + AE_DANCE_LOW_44 = 0x772, + AE_DANCE_LOW_45 = 0x773, + AE_DANCE_LOW_46 = 0x774, + AE_DANCE_LOW_47 = 0x775, + AE_DANCE_LOW_48 = 0x776, + AE_DANCE_LOW_49 = 0x777, + AE_DANCE_LOW_50 = 0x778, + AE_DANCE_LOW_51 = 0x779, + AE_DANCE_LOW_52 = 0x77A, + AE_DANCE_LOW_53 = 0x77B, + AE_DANCE_LOW_54 = 0x77C, + AE_DANCE_LOW_55 = 0x77D, + AE_DANCE_LOW_56 = 0x77E, + AE_DANCE_MED_01 = 0x77F, + AE_DANCE_MED_02 = 0x780, + AE_DANCE_MED_03 = 0x781, + AE_DANCE_MED_04 = 0x782, + AE_DANCE_MED_05 = 0x783, + AE_DANCE_MED_06 = 0x784, + AE_DANCE_MED_07 = 0x785, + AE_DANCE_MED_08 = 0x786, + AE_DANCE_MED_09 = 0x787, + AE_DANCE_MED_10 = 0x788, + AE_DANCE_MED_11 = 0x789, + AE_DANCE_MED_12 = 0x78A, + AE_DANCE_MED_13 = 0x78B, + AE_DANCE_MED_14 = 0x78C, + AE_DANCE_MED_15 = 0x78D, + AE_DANCE_MED_16 = 0x78E, + AE_DANCE_MED_17 = 0x78F, + AE_DANCE_MED_18 = 0x790, + AE_DANCE_MED_19 = 0x791, + AE_DANCE_MED_20 = 0x792, + AE_DANCE_MED_21 = 0x793, + AE_DANCE_MED_22 = 0x794, + AE_DANCE_MED_23 = 0x795, + AE_DANCE_MED_24 = 0x796, + AE_DANCE_MED_25 = 0x797, + AE_DANCE_MED_26 = 0x798, + AE_DANCE_MED_27 = 0x799, + AE_DANCE_MED_28 = 0x79A, + AE_DANCE_MED_29 = 0x79B, + AE_DANCE_MED_30 = 0x79C, + AE_DANCE_MED_31 = 0x79D, + AE_DANCE_MED_32 = 0x79E, + AE_DANCE_MED_33 = 0x79F, + AE_DANCE_MED_34 = 0x7A0, + AE_DANCE_MED_35 = 0x7A1, + AE_DANCE_MED_36 = 0x7A2, + AE_DANCE_MED_37 = 0x7A3, + AE_DANCE_MED_38 = 0x7A4, + AE_DANCE_MED_39 = 0x7A5, + AE_DANCE_MED_40 = 0x7A6, + AE_DANCE_MED_41 = 0x7A7, + AE_DANCE_MED_42 = 0x7A8, + AE_DANCE_MED_43 = 0x7A9, + AE_DANCE_MED_44 = 0x7AA, + AE_DANCE_MED_45 = 0x7AB, + AE_DANCE_MED_46 = 0x7AC, + AE_DANCE_MED_47 = 0x7AD, + AE_DANCE_MED_48 = 0x7AE, + AE_DANCE_MED_49 = 0x7AF, + AE_DANCE_MED_50 = 0x7B0, + AE_DANCE_MED_51 = 0x7B1, + AE_DANCE_MED_52 = 0x7B2, + AE_DANCE_MED_53 = 0x7B3, + AE_DANCE_MED_54 = 0x7B4, + AE_DANCE_MED_55 = 0x7B5, + AE_DANCE_MED_56 = 0x7B6, + AE_DANCE_NOT_01 = 0x7B7, + AE_DANCE_NOT_02 = 0x7B8, + AE_DANCE_NOT_03 = 0x7B9, + AE_DANCE_NOT_04 = 0x7BA, + AE_DANCE_NOT_05 = 0x7BB, + AE_DANCE_NOT_06 = 0x7BC, + AE_DANCE_NOT_07 = 0x7BD, + AE_DANCE_NOT_08 = 0x7BE, + AE_DANCE_NOT_09 = 0x7BF, + AE_DANCE_NOT_10 = 0x7C0, + AE_DANCE_NOT_11 = 0x7C1, + AE_DANCE_NOT_12 = 0x7C2, + AE_DANCE_NOT_13 = 0x7C3, + AE_DANCE_NOT_14 = 0x7C4, + AE_DANCE_NOT_15 = 0x7C5, + AE_DANCE_NOT_16 = 0x7C6, + AE_DANCE_NOT_17 = 0x7C7, + AE_DANCE_NOT_18 = 0x7C8, + AE_DANCE_NOT_19 = 0x7C9, + AE_DANCE_NOT_20 = 0x7CA, + AE_DANCE_NOT_21 = 0x7CB, + AE_DANCE_NOT_22 = 0x7CC, + AE_DANCE_NOT_23 = 0x7CD, + AE_DANCE_NOT_24 = 0x7CE, + AE_DANCE_NOT_25 = 0x7CF, + AE_DANCE_NOT_26 = 0x7D0, + AE_DANCE_NOT_27 = 0x7D1, + AE_DANCE_NOT_28 = 0x7D2, + AE_DANCE_NOT_29 = 0x7D3, + AE_DANCE_NOT_30 = 0x7D4, + AE_DANCE_NOT_31 = 0x7D5, + AE_DANCE_NOT_32 = 0x7D6, + AE_DANCE_NOT_33 = 0x7D7, + AE_DANCE_NOT_34 = 0x7D8, + AE_DANCE_NOT_35 = 0x7D9, + AE_DANCE_NOT_36 = 0x7DA, + AE_DANCE_NOT_37 = 0x7DB, + AE_DANCE_NOT_38 = 0x7DC, + AE_DANCE_NOT_39 = 0x7DD, + AE_DANCE_NOT_40 = 0x7DE, + AE_DANCE_NOT_41 = 0x7DF, + AE_DANCE_NOT_42 = 0x7E0, + AE_DANCE_NOT_43 = 0x7E1, + AE_DANCE_NOT_44 = 0x7E2, + AE_DANCE_NOT_45 = 0x7E3, + AE_DANCE_NOT_46 = 0x7E4, + AE_DANCE_NOT_47 = 0x7E5, + AE_DANCE_NOT_48 = 0x7E6, + AE_DANCE_NOT_49 = 0x7E7, + AE_DANCE_NOT_50 = 0x7E8, + AE_DANCE_NOT_51 = 0x7E9, + AE_DANCE_NOT_52 = 0x7EA, + AE_DANCE_NOT_53 = 0x7EB, + AE_DANCE_NOT_54 = 0x7EC, + AE_DANCE_NOT_55 = 0x7ED, + AE_DANCE_NOT_56 = 0x7EE, + AE__DA_NANG_CONTAINER_OPEN = 0x7EF, + AE__DA_NANG_HEAVY_DOOR_OPEN = 0x7F0, + AE_DC2_AA = 0x7F1, + AE_DC2_AB = 0x7F2, + AE_DC2_AC = 0x7F3, + AE_DC2_AD = 0x7F4, + AE_DC2_AE = 0x7F5, + AE_DC2_AF = 0x7F6, + AE_DC2_AG = 0x7F7, + AE_DC2_AH = 0x7F8, + AE_DC2_AI = 0x7F9, + AE_DC2_AJ = 0x7FA, + AE_DC2_AK = 0x7FB, + AE_DC2_AL = 0x7FC, + AE_CEMENT_POUR = 0x7FD, + AE_SMASH_PORTACABIN = 0x7FE, + AE_SMASH_PORTACABIN2 = 0x7FF, + AE_SMASH_PORTACABIN3 = 0x800, + AE_SMASH_PORTACABIN4 = 0x801, + AE_TOILET_FLUSH = 0x802, + AE_DES1_AA = 0x803, + AE_DES1_AB = 0x804, + AE_DES1_AC = 0x805, + AE_DES1_AD = 0x806, + AE_DES1_AE = 0x807, + AE_DES1_AF = 0x808, + AE_DES1_AG = 0x809, + AE_DES1_AH = 0x80A, + AE_DES1_AJ = 0x80B, + AE_DES1_AK = 0x80C, + AE_DES1_AL = 0x80D, + AE_DES1_AM = 0x80E, + AE_DES1_AN = 0x80F, + AE_DES1_AO = 0x810, + AE_DES1_AP = 0x811, + AE_DES1_AQ = 0x812, + AE_DES1_AR = 0x813, + AE_DES1_BA = 0x814, + AE_DES1_BB = 0x815, + AE_DES1_BC = 0x816, + AE_DES1_BD = 0x817, + AE_DES1_BE = 0x818, + AE_DES1_BF = 0x819, + AE_DES1_BG = 0x81A, + AE_DES1_BH = 0x81B, + AE_DES1_BJ = 0x81C, + AE_DES1_CA = 0x81D, + AE_DES1_CB = 0x81E, + AE_DES1_CC = 0x81F, + AE_DES1_CD = 0x820, + AE_DES1_CE = 0x821, + AE_DES1_CF = 0x822, + AE_DES1_CG = 0x823, + AE_DES2_AA = 0x824, + AE_DES2_AB = 0x825, + AE_DES2_AC = 0x826, + AE_DES2_AD = 0x827, + AE_DES2_AE = 0x828, + AE_DES2_AF = 0x829, + AE_DES2_BA = 0x82A, + AE_DES2_BB = 0x82B, + AE_DES2_BC = 0x82C, + AE_DES2_CA = 0x82D, + AE_DES2_CB = 0x82E, + AE_DES2_CC = 0x82F, + AE_DES2_DA = 0x830, + AE_DES2_DB = 0x831, + AE_DES2_DC = 0x832, + AE_DES2_EA = 0x833, + AE_DES2_EB = 0x834, + AE_DES2_EC = 0x835, + AE_DES2_ED = 0x836, + AE_DES2_EE = 0x837, + AE_DES2_EF = 0x838, + AE_DES2_FA = 0x839, + AE_DES2_FB = 0x83A, + AE_DES2_FC = 0x83B, + AE_DES2_GA = 0x83C, + AE_DES2_GB = 0x83D, + AE_DES2_GC = 0x83E, + AE_DES2_HA = 0x83F, + AE_DES2_HB = 0x840, + AE_DES2_HC = 0x841, + AE_DES2_JA = 0x842, + AE_DES2_JB = 0x843, + AE_DES2_JC = 0x844, + AE_DES2_KA = 0x845, + AE_DES2_KB = 0x846, + AE_DES2_KC = 0x847, + AE_DES2_KD = 0x848, + AE_DES2_KE = 0x849, + AE_DES2_LA = 0x84A, + AE_DES3_AA = 0x84B, + AE_DES3_AB = 0x84C, + AE_DES3_AC = 0x84D, + AE_DES3_AD = 0x84E, + AE_DES3_AE = 0x84F, + AE_DES3_BA = 0x850, + AE_DES3_BB = 0x851, + AE_DES3_BC = 0x852, + AE_DES3_BD = 0x853, + AE_DES3_BE = 0x854, + AE_DES3_BF = 0x855, + AE_DES3_BG = 0x856, + AE_DES3_BH = 0x857, + AE_DES3_CA = 0x858, + AE_DES3_CB = 0x859, + AE_DES3_CC = 0x85A, + AE_DES3_CD = 0x85B, + AE_DES6_AA = 0x85C, + AE_DES6_AB = 0x85D, + AE_DES6_AD = 0x85E, + AE_DES6_AE = 0x85F, + AE_DES6_AF = 0x860, + AE_DES6_AG = 0x861, + AE_DES6_AH = 0x862, + AE_DES6_AJ = 0x863, + AE_DES6_AK = 0x864, + AE_DES6_AM = 0x865, + AE_DES6_AN = 0x866, + AE_DES6_BA = 0x867, + AE_DES6_BB = 0x868, + AE_DES6_BC = 0x869, + AE_DES6_BD = 0x86A, + AE_DES6_CA = 0x86B, + AE_DES6_CB = 0x86C, + AE_DES6_CC = 0x86D, + AE_DES6_CD = 0x86E, + AE_DES6_DA = 0x86F, + AE_DES8_AA = 0x870, + AE_DES8_BA = 0x871, + AE_DES8_BB = 0x872, + AE_DES8_BC = 0x873, + AE_DES8_BD = 0x874, + AE_DES8_CA = 0x875, + AE_DES8_CB = 0x876, + AE_DES8_CC = 0x877, + AE_DES8_CD = 0x878, + AE_DES8_DA = 0x879, + AE_DES8_DB = 0x87A, + AE_DES8_DC = 0x87B, + AE_DES8_DD = 0x87C, + AE_DES8_EA = 0x87D, + AE_DES8_EB = 0x87E, + AE_DES8_EC = 0x87F, + AE_DES8_ED = 0x880, + AE_DES8_EE = 0x881, + AE_DES8_EF = 0x882, + AE_DES8_FA = 0x883, + AE_DES8_FB = 0x884, + AE_DES8_FC = 0x885, + AE_DES8_GA = 0x886, + AE_DES8_GB = 0x887, + AE_DES8_GC = 0x888, + AE_DES8_GD = 0x889, + AE_DES8_GE = 0x88A, + AE_DES8_GF = 0x88B, + AE_DES8_GG = 0x88C, + AE_DES8_GH = 0x88D, + AE_DES8_GI = 0x88E, + AE_DES8_GJ = 0x88F, + AE_DES8_GK = 0x890, + AE_DES8_GL = 0x891, + AE_DES8_GM = 0x892, + AE_DES8_GN = 0x893, + AE_DES8_HA = 0x894, + AE_DES8_HB = 0x895, + AE_DES8_JA = 0x896, + AE_DES8_JB = 0x897, + AE_DES8_JC = 0x898, + AE_DES8_KA = 0x899, + AE_DES8_LA = 0x89A, + AE_DES8_LC = 0x89B, + AE_DES8_MB = 0x89C, + AE_DES8_MD = 0x89D, + AE_DES8_ME = 0x89E, + AE_DES9_AA = 0x89F, + AE_DES9_AB = 0x8A0, + AE_DES9_BA = 0x8A1, + AE_DES9_BB = 0x8A2, + AE_DOGG_AA = 0x8A3, + AE_DOGG_AB = 0x8A4, + AE_DOGG_AC = 0x8A5, + AE_DOGG_AD = 0x8A6, + AE_DOGG_AE = 0x8A7, + AE_DOGG_AF = 0x8A8, + AE_DOGG_AG = 0x8A9, + AE_DOGG_AH = 0x8AA, + AE_DOGG_AI = 0x8AB, + AE_DOGG_AJ = 0x8AC, + AE_DOGG_BA = 0x8AD, + AE_DOGG_BB = 0x8AE, + AE_DOGG_BC = 0x8AF, + AE_DOGG_CA = 0x8B0, + AE_DOGG_CB = 0x8B1, + AE_DOGG_CC = 0x8B2, + AE_DOGG_CD = 0x8B3, + AE_DOGG_CE = 0x8B4, + AE_DOGG_CF = 0x8B5, + AE_DOGG_DA = 0x8B6, + AE_DOGG_DB = 0x8B7, + AE_DOGG_DC = 0x8B8, + AE_DOGG_DD = 0x8B9, + AE_DOGG_DE = 0x8BA, + AE_DOGG_DF = 0x8BB, + AE_DOGG_DG = 0x8BC, + AE_DOGG_DH = 0x8BD, + AE_DOGG_DI = 0x8BE, + AE_DOGG_DJ = 0x8BF, + AE_DOGG_EA = 0x8C0, + AE_DOGG_EB = 0x8C1, + AE_DOGG_EC = 0x8C2, + AE_DOGG_FA = 0x8C3, + AE_DOGG_FB = 0x8C4, + AE_DOGG_FC = 0x8C5, + AE_DOGG_FD = 0x8C6, + AE_DOGG_FE = 0x8C7, + AE_DOGG_FF = 0x8C8, + AE_DOGG_FG = 0x8C9, + AE_DOGG_GA = 0x8CA, + AE_DOGG_GB = 0x8CB, + AE_DOGG_GC = 0x8CC, + AE_PISSING = 0x8CD, + AE_THRUST = 0x8CE, + AE_EXPLODE_LONG = 0x8CF, + AE_EXPLODE_SHORT = 0x8D0, + AE_GAME_OVER = 0x8D1, + AE_MENU_DESELECT = 0x8D2, + AE_MENU_SELECT = 0x8D3, + AE_PICKUP_DARK = 0x8D4, + AE_PICKUP_LIGHT = 0x8D5, + AE_SHOOT = 0x8D6, + AE_TOUCH_DARK = 0x8D7, + AE_TOUCH_LIGHT = 0x8D8, + AE_SWAT_WALL_BREAK = 0x8D9, + AE_DETONATION_SIREN = 0x8DA, + AE_FAR2_AA = 0x8DB, + AE_FAR2_AB = 0x8DC, + AE_FAR2_AC = 0x8DD, + AE_FAR2_AD = 0x8DE, + AE_FAR2_AE = 0x8DF, + AE_FAR2_AF = 0x8E0, + AE_FAR2_AG = 0x8E1, + AE_FAR2_AH = 0x8E2, + AE_FAR2_AI = 0x8E3, + AE_FAR2_BA = 0x8E4, + AE_FAR2_BB = 0x8E5, + AE_FAR2_BC = 0x8E6, + AE_FAR2_BD = 0x8E7, + AE_FAR2_BE = 0x8E8, + AE_FAR2_BF = 0x8E9, + AE_FAR2_BG = 0x8EA, + AE_FAR2_BH = 0x8EB, + AE_FAR2_CA = 0x8EC, + AE_FAR2_CB = 0x8ED, + AE_FAR2_CC = 0x8EE, + AE_FAR2_CD = 0x8EF, + AE_FAR2_CE = 0x8F0, + AE_FAR2_CF = 0x8F1, + AE_FAR2_CG = 0x8F2, + AE_FAR2_CH = 0x8F3, + AE_FAR2_CI = 0x8F4, + AE_FAR2_ZA = 0x8F5, + AE_FAR2_ZB = 0x8F6, + AE_FAR2_ZC = 0x8F7, + AE_FAR3_CA = 0x8F8, + AE_FAR3_CB = 0x8F9, + AE_FAR3_CC = 0x8FA, + AE_FAR3_CD = 0x8FB, + AE_FAR3_CE = 0x8FC, + AE_FAR3_CF = 0x8FD, + AE_FAR3_CG = 0x8FE, + AE_FAR3_CH = 0x8FF, + AE_FAR3_CJ = 0x900, + AE_FAR3_CK = 0x901, + AE_FAR3_DA = 0x902, + AE_FAR3_DB = 0x903, + AE_FAR3_DC = 0x904, + AE_FAR3_DD = 0x905, + AE_FAR3_DE = 0x906, + AE_FAR3_EA = 0x907, + AE_FAR3_EB = 0x908, + AE_FAR3_EC = 0x909, + AE_FAR3_FA = 0x90A, + AE_FAR3_FB = 0x90B, + AE_FAR3_FC = 0x90C, + AE_FAR3_FD = 0x90D, + AE_FAR3_GA = 0x90E, + AE_FAR3_GB = 0x90F, + AE_FAR3_GC = 0x910, + AE_FAR3_HA = 0x911, + AE_FAR3_HB = 0x912, + AE_FAR3_HC = 0x913, + AE_FAR3_JA = 0x914, + AE_FAR3_JB = 0x915, + AE_FAR3_JC = 0x916, + AE_FAR3_JD = 0x917, + AE_FAR3_JE = 0x918, + AE_FAR3_JF = 0x919, + AE_FAR3_JG = 0x91A, + AE_FAR3_KA = 0x91B, + AE_FAR3_KB = 0x91C, + AE_FAR3_KC = 0x91D, + AE_FAR3_KD = 0x91E, + AE_FAR3_LA = 0x91F, + AE_FAR3_LB = 0x920, + AE_FAR3_LC = 0x921, + AE_FAR3_MA = 0x922, + AE_FAR3_MB = 0x923, + AE_FAR3_MC = 0x924, + AE_FAR3_MD = 0x925, + AE_FAR3_ME = 0x926, + AE_FAR3_MF = 0x927, + AE_FAR3_MG = 0x928, + AE_FAR3_MH = 0x929, + AE_FAR3_MJ = 0x92A, + AE_FAR3_MK = 0x92B, + AE_FAR3_ML = 0x92C, + AE_FAR3_MM = 0x92D, + AE_FAR3_MN = 0x92E, + AE_FAR3_MO = 0x92F, + AE_FAR3_MP = 0x930, + AE_FAR3_NA = 0x931, + AE_FAR3_NB = 0x932, + AE_FAR4_AA = 0x933, + AE_FAR4_AB = 0x934, + AE_FAR4_AC = 0x935, + AE_FAR4_AD = 0x936, + AE_FAR4_AE = 0x937, + AE_FAR4_AF = 0x938, + AE_FAR4_AG = 0x939, + AE_FAR4_AH = 0x93A, + AE_FAR4_AJ = 0x93B, + AE_FAR5_AA = 0x93C, + AE_FAR5_AB = 0x93D, + AE_FAR5_BA = 0x93E, + AE_FAR5_BB = 0x93F, + AE_FIN1_AA = 0x940, + AE_FIN1_AC = 0x941, + AE_FIN1_AD = 0x942, + AE_FIN1_AE = 0x943, + AE_FIN1_AH = 0x944, + AE_FIN1_AS = 0x945, + AE_FIN1_BC = 0x946, + AE_FIN1_BD = 0x947, + AE_FIN1_BE = 0x948, + AE_FIN1_BK = 0x949, + AE_FIN1_BL = 0x94A, + AE_FIN1_BY = 0x94B, + AE_FIN1_CB = 0x94C, + AE_FIN1_CC = 0x94D, + AE_FIN1_CD = 0x94E, + AE_FIN1_CE = 0x94F, + AE_FIN1_CI = 0x950, + AE_FIN1_CJ = 0x951, + AE_FIN1_CK = 0x952, + AE_FIN1_CL = 0x953, + AE_FIN1_CO = 0x954, + AE_FIN1_DA = 0x955, + AE_FIN1_DB = 0x956, + AE_FIN1_DC = 0x957, + AE_FIN1_EA = 0x958, + AE_FIN1_EB = 0x959, + AE_FIN1_GA = 0x95A, + AE_FIN1_GB = 0x95B, + AE_FIN1_GC = 0x95C, + AE_FIN1_GD = 0x95D, + AE_FIN1_GE = 0x95E, + AE_FIN1_GF = 0x95F, + AE_FIN1_GG = 0x960, + AE_FIN1_GH = 0x961, + AE_FIN1_GI = 0x962, + AE_FIN1_GJ = 0x963, + AE_FIN1_GK = 0x964, + AE_FIN1_GL = 0x965, + AE_FIN1_GM = 0x966, + AE_FIN1_GN = 0x967, + AE_FIN1_GO = 0x968, + AE_FIN1_GP = 0x969, + AE_FIN1_GQ = 0x96A, + AE_FIN1_GR = 0x96B, + AE_FIN1_GS = 0x96C, + AE_FIN1_GT = 0x96D, + AE_FIN1_GV = 0x96E, + AE_FIN1_GW = 0x96F, + AE_FIN1_HA = 0x970, + AE_FIN1_HB = 0x971, + AE_FIN1_HC = 0x972, + AE_FIN1_HD = 0x973, + AE_FIN1_HE = 0x974, + AE_FIN1_HF = 0x975, + AE_FIN1_HG = 0x976, + AE_FIN1_HH = 0x977, + AE_FIN1_HI = 0x978, + AE_FIN1_HJ = 0x979, + AE_FIN1_HK = 0x97A, + AE_FIN1_HL = 0x97B, + AE_FIN1_HM = 0x97C, + AE_FIN1_JA = 0x97D, + AE_FIN1_JB = 0x97E, + AE_FIN1_JC = 0x97F, + AE_FIN1_JD = 0x980, + AE_FIN1_JE = 0x981, + AE_FIN1_JF = 0x982, + AE_FIN1_JG = 0x983, + AE_FIN1_JH = 0x984, + AE_FIN1_JI = 0x985, + AE_FIN1_JJ = 0x986, + AE_FIN1_JK = 0x987, + AE_FIN1_JL = 0x988, + AE_FIN1_JM = 0x989, + AE_FIN1_JN = 0x98A, + AE_FIN1_JO = 0x98B, + AE_FIN1_KA = 0x98C, + AE_FIN1_KB = 0x98D, + AE_FIN1_KC = 0x98E, + AE_FIN1_KE = 0x98F, + AE_FIN1_KF = 0x990, + AE_FIN1_KG = 0x991, + AE_FIN1_KH = 0x992, + AE_FIN1_KI = 0x993, + AE_FIN1_KJ = 0x994, + AE_FIN1_KK = 0x995, + AE_FIN1_KL = 0x996, + AE_FIN1_KM = 0x997, + AE_FIN1_KO = 0x998, + AE_FIN1_KP = 0x999, + AE_FIN1_KQ = 0x99A, + AE_FIN1_KR = 0x99B, + AE_FIN1_KS = 0x99C, + AE_FIN1_KT = 0x99D, + AE_FIN1_KU = 0x99E, + AE_FIN1_KV = 0x99F, + AE_FIN1_KW = 0x9A0, + AE_FIN1_KX = 0x9A1, + AE_FIN1_KY = 0x9A2, + AE_FIN1_LA = 0x9A3, + AE_FIN1_LB = 0x9A4, + AE_FIN1_LC = 0x9A5, + AE_FIN1_LD = 0x9A6, + AE_FIN1_LE = 0x9A7, + AE_FIN1_LF = 0x9A8, + AE_FIN1_LG = 0x9A9, + AE_FIN1_LH = 0x9AA, + AE_FIN1_LI = 0x9AB, + AE_FIN1_LJ = 0x9AC, + AE_FIN1_LK = 0x9AD, + AE_FIN1_LL = 0x9AE, + AE_FIN1_LM = 0x9AF, + AE_FIN1_LN = 0x9B0, + AE_FIN1_LO = 0x9B1, + AE_FIN1_LP = 0x9B2, + AE_FIN1_LQ = 0x9B3, + AE_FIN1_LR = 0x9B4, + AE_FIN1_LS = 0x9B5, + AE_FIN1_LT = 0x9B6, + AE_FIN1_LU = 0x9B7, + AE_FIN1_LV = 0x9B8, + AE_FIN1_LW = 0x9B9, + AE_FIN1_LX = 0x9BA, + AE_FIN1_MA = 0x9BB, + AE_FIN1_MB = 0x9BC, + AE_FIN1_MC = 0x9BD, + AE_FIN1_MD = 0x9BE, + AE_FIN1_ME = 0x9BF, + AE_FIN1_MF = 0x9C0, + AE_FIN1_MG = 0x9C1, + AE_FIN1_MH = 0x9C2, + AE_FIN1_MI = 0x9C3, + AE_FIN1_MJ = 0x9C4, + AE_FIN1_MK = 0x9C5, + AE_FIN1_ML = 0x9C6, + AE_FIN1_MM = 0x9C7, + AE_FIN1_MN = 0x9C8, + AE_FIN1_MO = 0x9C9, + AE_FIN1_MP = 0x9CA, + AE_FIN1_MQ = 0x9CB, + AE_FIN1_MR = 0x9CC, + AE_FIN1_MS = 0x9CD, + AE_FIN1_MT = 0x9CE, + AE_FIN1_MU = 0x9CF, + AE_FIN1_MV = 0x9D0, + AE_FIN1_MW = 0x9D1, + AE_FIN1_MX = 0x9D2, + AE_FIN1_ZA = 0x9D3, + AE_FIN1_ZB = 0x9D4, + AE_FIN1_ZC = 0x9D5, + AE_FIN1_ZD = 0x9D6, + AE_FIN2_AA = 0x9D7, + AE_FIN2_AB = 0x9D8, + AE_FIN2_AC = 0x9D9, + AE_FIN2_AD = 0x9DA, + AE_FIN2_AE = 0x9DB, + AE_FIN2_AF = 0x9DC, + AE_FIN2_BA = 0x9DD, + AE_FIN2_BB = 0x9DE, + AE_FIN2_BC = 0x9DF, + AE_FIN2_BD = 0x9E0, + AE_FIN2_BE = 0x9E1, + AE_FIN2_BF = 0x9E2, + AE_FIN2_BG = 0x9E3, + AE_FIN2_BH = 0x9E4, + AE_FIN2_BJ = 0x9E5, + AE_FIN2_CA = 0x9E6, + AE_FIN2_CB = 0x9E7, + AE_FIN2_CC = 0x9E8, + AE_FIN2_CD = 0x9E9, + AE_PLANE_DOOR_KICK = 0x9EA, + AE_GAR1_AA = 0x9EB, + AE_GAR1_AB = 0x9EC, + AE_GAR1_AC = 0x9ED, + AE_GAR1_AD = 0x9EE, + AE_GAR1_AE = 0x9EF, + AE_GAR1_AF = 0x9F0, + AE_GAR1_AG = 0x9F1, + AE_GAR1_AH = 0x9F2, + AE_GAR1_AJ = 0x9F3, + AE_GAR1_BA = 0x9F4, + AE_GAR1_BB = 0x9F5, + AE_GAR1_BC = 0x9F6, + AE_GAR1_BD = 0x9F7, + AE_GAR1_BE = 0x9F8, + AE_GAR1_BF = 0x9F9, + AE_GAR1_BG = 0x9FA, + AE_GAR1_BH = 0x9FB, + AE_GAR1_CA = 0x9FC, + AE_GAR1_CB = 0x9FD, + AE_GAR1_CC = 0x9FE, + AE_GAR1_DA = 0x9FF, + AE_GAR1_DB = 0xA00, + AE_GAR1_DC = 0xA01, + AE_GAR1_DD = 0xA02, + AE_GAR1_DE = 0xA03, + AE_GAR1_DF = 0xA04, + AE_GAR1_EA = 0xA05, + AE_GAR1_EB = 0xA06, + AE_GAR1_EC = 0xA07, + AE_GAR1_ED = 0xA08, + AE_GAR1_EE = 0xA09, + AE_GAR1_FA = 0xA0A, + AE_GAR1_FB = 0xA0B, + AE_GAR1_FC = 0xA0C, + AE_GAR1_FD = 0xA0D, + AE_GAR1_FE = 0xA0E, + AE_GAR1_FF = 0xA0F, + AE_GAR1_FG = 0xA10, + AE_GAR1_GA = 0xA11, + AE_GAR1_GB = 0xA12, + AE_GAR1_GC = 0xA13, + AE_GAR1_GD = 0xA14, + AE_GAR1_GE = 0xA15, + AE_GAR1_GF = 0xA16, + AE_GAR1_GG = 0xA17, + AE_GAR1_GH = 0xA18, + AE_GAR1_GI = 0xA19, + AE_GAR1_GJ = 0xA1A, + AE_GAR1_HA = 0xA1B, + AE_GAR1_HB = 0xA1C, + AE_GAR1_HC = 0xA1D, + AE_GAR1_HD = 0xA1E, + AE_GAR1_HE = 0xA1F, + AE_GAR1_HF = 0xA20, + AE_GAR1_HG = 0xA21, + AE_GAR1_JA = 0xA22, + AE_GAR1_JB = 0xA23, + AE_GAR1_JC = 0xA24, + AE_GAR1_JD = 0xA25, + AE_GAR1_JE = 0xA26, + AE_GAR1_JF = 0xA27, + AE_GAR1_JG = 0xA28, + AE_GAR1_JH = 0xA29, + AE_GAR1_JJ = 0xA2A, + AE_GAR1_KA = 0xA2B, + AE_GAR1_KB = 0xA2C, + AE_GAR1_KC = 0xA2D, + AE_GAR1_KD = 0xA2E, + AE_GAR1_KE = 0xA2F, + AE_GAR1_LA = 0xA30, + AE_GAR1_LB = 0xA31, + AE_GAR1_LC = 0xA32, + AE_GAR1_LD = 0xA33, + AE_GAR1_MA = 0xA34, + AE_GAR1_MB = 0xA35, + AE_GAR1_MC = 0xA36, + AE_GAR1_MD = 0xA37, + AE_GAR1_ME = 0xA38, + AE_GAR1_MF = 0xA39, + AE_GAR1_MG = 0xA3A, + AE_GAR1_NA = 0xA3B, + AE_GAR1_NB = 0xA3C, + AE_GAR1_NC = 0xA3D, + AE_GAR1_ND = 0xA3E, + AE_GAR1_NE = 0xA3F, + AE_GAR1_NF = 0xA40, + AE_GAR1_NG = 0xA41, + AE_GAR1_NH = 0xA42, + AE_GAR1_NJ = 0xA43, + AE_GAR1_NK = 0xA44, + AE_GAR1_OA = 0xA45, + AE_GAR1_OB = 0xA46, + AE_GAR1_OC = 0xA47, + AE_GAR1_OD = 0xA48, + AE_GAR1_OE = 0xA49, + AE_GAR1_OF = 0xA4A, + AE_GAR1_PA = 0xA4B, + AE_GAR1_PB = 0xA4C, + AE_GAR1_PC = 0xA4D, + AE_GAR1_PD = 0xA4E, + AE_GAR1_PE = 0xA4F, + AE_GAR1_PF = 0xA50, + AE_GAR1_PG = 0xA51, + AE_GAR1_PH = 0xA52, + AE_GAR1_PJ = 0xA53, + AE_GAR2_AA = 0xA54, + AE_GAR2_AB = 0xA55, + AE_GAR2_AC = 0xA56, + AE_GAR2_AD = 0xA57, + AE_GAR2_AE = 0xA58, + AE_GAR2_AF = 0xA59, + AE_GAR2_AG = 0xA5A, + AE_GAR2_AH = 0xA5B, + AE_GAR2_AJ = 0xA5C, + AE_GAR2_AK = 0xA5D, + AE_GAR2_AL = 0xA5E, + AE_GAR2_AM = 0xA5F, + AE_GAR2_BA = 0xA60, + AE_GAR2_BB = 0xA61, + AE_GAR2_BC = 0xA62, + AE_G_CLOS1 = 0xA63, + AE_G_CLOS2 = 0xA64, + AE_G_OPEN1 = 0xA65, + AE_G_OPEN2 = 0xA66, + AE__ACCEPT = 0xA67, + AE__DECLINE = 0xA68, + AE__ENEMYFIRE = 0xA69, + AE__EXPLODE = 0xA6A, + AE__GAMEOVER = 0xA6B, + AE__PLAYERFIRE = 0xA6C, + AE__SELECT = 0xA6D, + AE_HEAVY_CRATE_LAND = 0xA6E, + AE_GRO1_AA = 0xA6F, + AE_GRO1_AB = 0xA70, + AE_GRO1_AC = 0xA71, + AE_GRO1_AD = 0xA72, + AE_GRO1_AE = 0xA73, + AE_GRO1_BA = 0xA74, + AE_GRO1_BB = 0xA75, + AE_GRO1_BC = 0xA76, + AE_GRO1_BD = 0xA77, + AE_GRO1_BE = 0xA78, + AE_GRO1_CA = 0xA79, + AE_GRO1_CB = 0xA7A, + AE_GRO1_CC = 0xA7B, + AE_GRO1_CD = 0xA7C, + AE_GRO1_CE = 0xA7D, + AE_GRO1_CF = 0xA7E, + AE_GRO1_CG = 0xA7F, + AE_GRO1_CH = 0xA80, + AE_GRO1_CJ = 0xA81, + AE_GRO1_CK = 0xA82, + AE_GRO1_CL = 0xA83, + AE_GRO1_CM = 0xA84, + AE_GRO1_CN = 0xA85, + AE_GRO1_CO = 0xA86, + AE_GRO1_CP = 0xA87, + AE_GRO1_CQ = 0xA88, + AE_GRO1_CR = 0xA89, + AE_GRO1_CS = 0xA8A, + AE_GRO1_DA = 0xA8B, + AE_GRO1_DB = 0xA8C, + AE_GRO1_EA = 0xA8D, + AE_GRO1_EB = 0xA8E, + AE_GRO1_FA = 0xA8F, + AE_GRO1_FB = 0xA90, + AE_GRO1_FC = 0xA91, + AE_GRO1_FD = 0xA92, + AE_GRO1_FE = 0xA93, + AE_GRO1_FF = 0xA94, + AE_GRO1_FG = 0xA95, + AE_GRO1_FH = 0xA96, + AE_GRO1_FJ = 0xA97, + AE_GRO1_GA = 0xA98, + AE_GRO1_GB = 0xA99, + AE_GRO1_HA = 0xA9A, + AE_GRO1_HB = 0xA9B, + AE_GRO1_JA = 0xA9C, + AE_GRO1_JB = 0xA9D, + AE_GRO1_JC = 0xA9E, + AE_GRO1_JD = 0xA9F, + AE_GRO1_JE = 0xAA0, + AE_GRO1_KA = 0xAA1, + AE_GRO1_KB = 0xAA2, + AE_GRO1_LA = 0xAA3, + AE_GRO1_LB = 0xAA4, + AE_GRO1_LC = 0xAA5, + AE_GRO1_LD = 0xAA6, + AE_GRO2_AA = 0xAA7, + AE_GRO2_AB = 0xAA8, + AE_GRO2_AC = 0xAA9, + AE_GRO2_AD = 0xAAA, + AE_GRO2_BA = 0xAAB, + AE_GRO2_BB = 0xAAC, + AE_GRO2_BC = 0xAAD, + AE_GRO2_CA = 0xAAE, + AE_GRO2_CB = 0xAAF, + AE_GRO2_CC = 0xAB0, + AE_GRO2_CE = 0xAB1, + AE_GRO2_DA = 0xAB2, + AE_GRO2_DB = 0xAB3, + AE_GRO2_DC = 0xAB4, + AE_GRO2_DD = 0xAB5, + AE_GRO2_EA = 0xAB6, + AE_GRO2_EB = 0xAB7, + AE_GRO2_FA = 0xAB8, + AE_GRO2_GA = 0xAB9, + AE_GRO2_GB = 0xABA, + AE_GRO2_GC = 0xABB, + AE_GRO2_GD = 0xABC, + AE_GRO2_GE = 0xABD, + AE__GYM_BIKE_LOOP = 0xABE, + AE__RUNNING_MACHINE_LOOP = 0xABF, + AE__GYM_BOXING_BELL = 0xAC0, + AE__GYM_INCREASE_DIFFICULTY = 0xAC1, + AE__GYM_PUNCH_BAG_1 = 0xAC2, + AE__GYM_PUNCH_BAG_2 = 0xAC3, + AE__GYM_PUNCH_BAG_3 = 0xAC4, + AE__GYM_REST_WEIGHTS = 0xAC5, + AE_HE1_AA = 0xAC6, + AE_HE1_AB = 0xAC7, + AE_HE1_AC = 0xAC8, + AE_HE1_AD = 0xAC9, + AE_HE1_AE = 0xACA, + AE_HE1_AF = 0xACB, + AE_HE1_AG = 0xACC, + AE_HE1_AH = 0xACD, + AE_HE1_AI = 0xACE, + AE_HE1_AJ = 0xACF, + AE_HE1_AK = 0xAD0, + AE_HE1_AL = 0xAD1, + AE_HE1_XA = 0xAD2, + AE_HE1_XB = 0xAD3, + AE_HE1_ZA = 0xAD4, + AE_HE1_ZB = 0xAD5, + AE_HE1_ZC = 0xAD6, + AE_HE1_ZD = 0xAD7, + AE_HE1_ZE = 0xAD8, + AE_HE1_ZF = 0xAD9, + AE_HE1_ZG = 0xADA, + AE_HE1_ZH = 0xADB, + AE_HE1_ZJ = 0xADC, + AE_HE1_ZK = 0xADD, + AE_HE1_ZL = 0xADE, + AE_HE1_ZM = 0xADF, + AE_HE2_AA = 0xAE0, + AE_HE2_AB = 0xAE1, + AE_HE2_AC = 0xAE2, + AE_HE2_AD = 0xAE3, + AE_HE2_AE = 0xAE4, + AE_HE2_AF = 0xAE5, + AE_HE2_AG = 0xAE6, + AE_HE2_AH = 0xAE7, + AE_HE2_AJ = 0xAE8, + AE_HE2_AK = 0xAE9, + AE_HE2_AL = 0xAEA, + AE_HE2_BA = 0xAEB, + AE_HE2_BB = 0xAEC, + AE_HE2_CA = 0xAED, + AE_HE2_CB = 0xAEE, + AE_HE2_DA = 0xAEF, + AE_HE2_DB = 0xAF0, + AE_HE3_AA = 0xAF1, + AE_HE3_AB = 0xAF2, + AE_HE3_BA = 0xAF3, + AE_HE3_BB = 0xAF4, + AE_HE3_CA = 0xAF5, + AE_HE3_CB = 0xAF6, + AE_HE3_CC = 0xAF7, + AE_HE3_CD = 0xAF8, + AE_HE3_CE = 0xAF9, + AE_HE3_CF = 0xAFA, + AE_HE3_CG = 0xAFB, + AE_HE3_CH = 0xAFC, + AE_HE3_DA = 0xAFD, + AE_HE3_DB = 0xAFE, + AE_HE3_DC = 0xAFF, + AE_HE3_DD = 0xB00, + AE_HE3_DE = 0xB01, + AE_HE3_DF = 0xB02, + AE_HE3_DG = 0xB03, + AE_HE3_EA = 0xB04, + AE_HE3_EB = 0xB05, + AE_HE3_EC = 0xB06, + AE_HE3_FA = 0xB07, + AE_HE3_FB = 0xB08, + AE_HE3_FC = 0xB09, + AE_HE3_FD = 0xB0A, + AE_HE3_FE = 0xB0B, + AE_HE3_FF = 0xB0C, + AE_HE3_FG = 0xB0D, + AE_HE3_GA = 0xB0E, + AE_HE3_GB = 0xB0F, + AE_HE3_GC = 0xB10, + AE_HE3_GD = 0xB11, + AE_HE3_GE = 0xB12, + AE_HE3_HA = 0xB13, + AE_HE4_AA = 0xB14, + AE_HE4_AB = 0xB15, + AE_HE4_AC = 0xB16, + AE_HE4_BA = 0xB17, + AE_HE4_BB = 0xB18, + AE_HE4_BC = 0xB19, + AE_HE4_BD = 0xB1A, + AE_HE4_BE = 0xB1B, + AE_HE4_BF = 0xB1C, + AE_HE4_BG = 0xB1D, + AE_HE4_BH = 0xB1E, + AE_HE4_BJ = 0xB1F, + AE_HE4_BK = 0xB20, + AE_HE4_BL = 0xB21, + AE_HE4_BM = 0xB22, + AE_HE4_CA = 0xB23, + AE_HE4_CB = 0xB24, + AE_HE5_AA = 0xB25, + AE_HE5_AB = 0xB26, + AE_HE5_AC = 0xB27, + AE_HE5_AD = 0xB28, + AE_HE5_BA = 0xB29, + AE_HE5_BB = 0xB2A, + AE_HE5_BC = 0xB2B, + AE_HE5_BD = 0xB2C, + AE_HE8_AA = 0xB2D, + AE_HE8_AB = 0xB2E, + AE_HE8_AC = 0xB2F, + AE_HE8_AD = 0xB30, + AE_HE8_BA = 0xB31, + AE_HE8_BB = 0xB32, + AE_HE8_BC = 0xB33, + AE_HE8_BD = 0xB34, + AE_HE8_BE = 0xB35, + AE_HE8_BF = 0xB36, + AE_HE8_CA = 0xB37, + AE_HE8_CB = 0xB38, + AE_HE8_CC = 0xB39, + AE_HE8_CD = 0xB3A, + AE_HE8_CE = 0xB3B, + AE_HE8_CF = 0xB3C, + AE_HE8_DA = 0xB3D, + AE_HE8_DB = 0xB3E, + AE_HE8_DC = 0xB3F, + AE_HE8_DD = 0xB40, + AE_HE8_EA = 0xB41, + AE_HE8_EB = 0xB42, + AE_HE8_EC = 0xB43, + AE_HE8_ED = 0xB44, + AE_HE8_FA = 0xB45, + AE_HE8_FB = 0xB46, + AE_HE8_FC = 0xB47, + AE_HE8_FD = 0xB48, + AE_HE8_FE = 0xB49, + AE_HE8_GA = 0xB4A, + AE_HE8_GB = 0xB4B, + AE_HE8_GC = 0xB4C, + AE_HE8_GD = 0xB4D, + AE_HE8_GE = 0xB4E, + AE_HE8_GF = 0xB4F, + AE_HE8_GG = 0xB50, + AE_HE8_GH = 0xB51, + AE_HE8_GJ = 0xB52, + AE_HE8_HB = 0xB53, + AE_HE8_JA = 0xB54, + AE_HE8_JB = 0xB55, + AE_HE8_JC = 0xB56, + AE_HE8_KA = 0xB57, + AE_HE8_KB = 0xB58, + AE_HE8_KC = 0xB59, + AE_HE8_KD = 0xB5A, + AE_HE8_KE = 0xB5B, + AE_HE8_KF = 0xB5C, + AE_HE8_KG = 0xB5D, + AE_HE8_KH = 0xB5E, + AE_HE8_LA = 0xB5F, + AE_HE8_LB = 0xB60, + AE_HE8_LC = 0xB61, + AE_HE8_LD = 0xB62, + AE_HE8_LE = 0xB63, + AE_HE8_LF = 0xB64, + AE_HE8_MA = 0xB65, + AE_HE8_MB = 0xB66, + AE_HE8_MC = 0xB67, + AE_HE8_NA = 0xB68, + AE_HE8_NB = 0xB69, + AE_HE8_NC = 0xB6A, + AE_HE8_ND = 0xB6B, + AE_HE8_NE = 0xB6C, + AE_HE8_OA = 0xB6D, + AE_HE8_OB = 0xB6E, + AE_HE8_OC = 0xB6F, + AE_HE8_OD = 0xB70, + AE_HE8_OE = 0xB71, + AE_HE8_OF = 0xB72, + AE_HE8_OG = 0xB73, + AE_HE8_OH = 0xB74, + AE_HE8_OJ = 0xB75, + AE_HE8_OK = 0xB76, + AE_HE8_PA = 0xB77, + AE_HE8_PB = 0xB78, + AE_HE8_PC = 0xB79, + AE_HE8_PD = 0xB7A, + AE_HE8_PE = 0xB7B, + AE_HE8_PF = 0xB7C, + AE_HE8_PG = 0xB7D, + AE_HE8_PH = 0xB7E, + AE_HE8_PJ = 0xB7F, + AE_HE8_QA = 0xB80, + AE_HE8_QB = 0xB81, + AE_HE8_QC = 0xB82, + AE_HE8_RA = 0xB83, + AE_HE8_RB = 0xB84, + AE_HE8_RC = 0xB85, + AE_HE8_RD = 0xB86, + AE_HE8_RE = 0xB87, + AE_HE8_SA = 0xB88, + AE_HE8_SB = 0xB89, + AE_HE8_TA = 0xB8A, + AE_HE8_TB = 0xB8B, + AE_HE8_TC = 0xB8C, + AE_HE8_TE = 0xB8D, + AE_HE8_TF = 0xB8E, + AE_HE8_TG = 0xB8F, + AE_HE8_TH = 0xB90, + AE_HE8_TJ = 0xB91, + AE_HE8_TK = 0xB92, + AE_HE8_TL = 0xB93, + AE_HE8_TM = 0xB94, + AE_HE8_UA = 0xB95, + AE_HE8_UB = 0xB96, + AE_HE8_UC = 0xB97, + AE_HE8_UD = 0xB98, + AE_HE8_UE = 0xB99, + AE_HE8_UF = 0xB9A, + AE_HE8_UG = 0xB9B, + AE_HE8_UH = 0xB9C, + AE_HE8_VA = 0xB9D, + AE_HE8_VB = 0xB9E, + AE_HE8_VC = 0xB9F, + AE_HE8_VD = 0xBA0, + AE_HE8_WA = 0xBA1, + AE_HE8_WB = 0xBA2, + AE_HE8_WC = 0xBA3, + AE_HE8_WD = 0xBA4, + AE_HE8_WE = 0xBA5, + AE_HE8_WF = 0xBA6, + AE_HE8_XA = 0xBA7, + AE_HE8_XB = 0xBA8, + AE_HE8_XC = 0xBA9, + AE_HE8_YA = 0xBAA, + AE_HE8_YB = 0xBAB, + AE_HE8_YC = 0xBAC, + AE_HE8_ZA = 0xBAD, + AE_HE8_ZB = 0xBAE, + AE_HE8_ZD = 0xBAF, + AE_HE8_ZE = 0xBB0, + AE_HE8_ZF = 0xBB1, + AE_HE8_ZG = 0xBB2, + AE_HE8_ZH = 0xBB3, + AE_HE8_ZJ = 0xBB4, + AE_HEIQ1 = 0xBB5, + AE_HEIQ1N = 0xBB6, + AE_HEIQ1Y = 0xBB7, + AE_HEIQ2 = 0xBB8, + AE_HEIQ2N = 0xBB9, + AE_HEIQ2Y = 0xBBA, + AE_HEIQ2YB = 0xBBB, + AE_HEIQ4 = 0xBBC, + AE_HEIQ4B = 0xBBD, + AE_HEIQ4C = 0xBBE, + AE_HEIQ5 = 0xBBF, + AE_HEIQ5B = 0xBC0, + AE_HEIQ5C = 0xBC1, + AE_HEIX1 = 0xBC2, + AE_HEIX1B = 0xBC3, + AE_HEIX2 = 0xBC4, + AE_HEIX2B = 0xBC5, + AE_HEIX2N = 0xBC6, + AE_HEIX2Y = 0xBC7, + AE_HEIX3 = 0xBC8, + AE_TRUCK_SMASH_VEHICLE = 0xBC9, + AE_TRUCK_SMASH_VEHICLE_2 = 0xBCA, + AE_TRUCK_SMASH_VEHICLE_3 = 0xBCB, + AE_TRUCK_SMASH_VEHICLE_4 = 0xBCC, + AE_ALARM_CLOCK = 0xBCD, + AE_SNORE = 0xBCE, + AE_SNORE2 = 0xBCF, + AE_SNORE3 = 0xBD0, + AE_SNORE4 = 0xBD1, + AE_HOUSE_PARTY_BASS_LOOP = 0xBD2, + AE_INT1_AA = 0xBD3, + AE_INT1_AB = 0xBD4, + AE_INT1_AC = 0xBD5, + AE_INT1_AD = 0xBD6, + AE_INT1_AE = 0xBD7, + AE_INT1_AF = 0xBD8, + AE_INT1_AG = 0xBD9, + AE_INT1_AH = 0xBDA, + AE_INT1_AI = 0xBDB, + AE_INT1_AJ = 0xBDC, + AE_INT1_AK = 0xBDD, + AE_INT1_AM = 0xBDE, + AE_INT1_AN = 0xBDF, + AE_INT1_AO = 0xBE0, + AE_INT1_AP = 0xBE1, + AE_INT1_AQ = 0xBE2, + AE_INT1_AR = 0xBE3, + AE_INT1_BA = 0xBE4, + AE_INT1_BB = 0xBE5, + AE_INT1_BC = 0xBE6, + AE_INT1_BD = 0xBE7, + AE_INT1_BE = 0xBE8, + AE_INT1_BF = 0xBE9, + AE_INT1_BG = 0xBEA, + AE_INT1_BH = 0xBEB, + AE_INT1_BI = 0xBEC, + AE_INT1_BJ = 0xBED, + AE_INT1_BK = 0xBEE, + AE_INT1_CA = 0xBEF, + AE_INT1_CB = 0xBF0, + AE_INT1_CC = 0xBF1, + AE_INT1_DA = 0xBF2, + AE_INT1_DB = 0xBF3, + AE_INT1_DC = 0xBF4, + AE_INT1_DD = 0xBF5, + AE_INT1_DE = 0xBF6, + AE_INT1_DF = 0xBF7, + AE_INT1_DG = 0xBF8, + AE_INT1_DH = 0xBF9, + AE_INT1_DI = 0xBFA, + AE_INT1_EA = 0xBFB, + AE_INT1_EB = 0xBFC, + AE_INT1_EC = 0xBFD, + AE_INT1_ED = 0xBFE, + AE_INT1_EE = 0xBFF, + AE_INT1_EF = 0xC00, + AE_INT1_EG = 0xC01, + AE_INT1_EH = 0xC02, + AE_INT1_EI = 0xC03, + AE_INT1_EJ = 0xC04, + AE_INT1_FA = 0xC05, + AE_INT1_FB = 0xC06, + AE_INT1_FC = 0xC07, + AE_INT1_FD = 0xC08, + AE_INT1_FE = 0xC09, + AE_INT1_FF = 0xC0A, + AE_INT1_FG = 0xC0B, + AE_INT1_FH = 0xC0C, + AE_INT1_FI = 0xC0D, + AE_INT1_GA = 0xC0E, + AE_INT1_GB = 0xC0F, + AE_INT1_GC = 0xC10, + AE_INT1_GD = 0xC11, + AE_INT1_GE = 0xC12, + AE_INT1_GF = 0xC13, + AE_INT1_GG = 0xC14, + AE_INT1_GH = 0xC15, + AE_INT1_GI = 0xC16, + AE_INT1_GJ = 0xC17, + AE_INT1_GK = 0xC18, + AE_INT1_GL = 0xC19, + AE_INT1_GM = 0xC1A, + AE_INT1_GN = 0xC1B, + AE_INT2_AA = 0xC1C, + AE_INT2_BA = 0xC1D, + AE_INT2_BB = 0xC1E, + AE_INT2_BC = 0xC1F, + AE_INT2_BD = 0xC20, + AE_INT2_BE = 0xC21, + AE_INT2_BF = 0xC22, + AE_INT2_BG = 0xC23, + AE_INT2_BH = 0xC24, + AE_INT2_BJ = 0xC25, + AE_INT2_BK = 0xC26, + AE_INT2_CA = 0xC27, + AE_INT2_CB = 0xC28, + AE_INT2_CC = 0xC29, + AE_INT2_CD = 0xC2A, + AE_INT2_CE = 0xC2B, + AE_INT2_CF = 0xC2C, + AE_INT2_CG = 0xC2D, + AE_INT2_DA = 0xC2E, + AE_INT2_DB = 0xC2F, + AE_INT2_DC = 0xC30, + AE_INT2_EA = 0xC31, + AE_INT2_FA = 0xC32, + AE_INT2_FB = 0xC33, + AE_INT2_FC = 0xC34, + AE_INT2_FD = 0xC35, + AE_INT2_GA = 0xC36, + AE_INT2_GB = 0xC37, + AE_INT2_GC = 0xC38, + AE_INT2_GD = 0xC39, + AE_INT2_GE = 0xC3A, + AE_INT2_GF = 0xC3B, + AE_INT2_HA = 0xC3C, + AE_INT2_HB = 0xC3D, + AE_INT2_IA = 0xC3E, + AE_INT2_IB = 0xC3F, + AE_INT2_JA = 0xC40, + AE_INT2_JB = 0xC41, + AE_INT2_KA = 0xC42, + AE_INT2_KB = 0xC43, + AE_INT2_LA = 0xC44, + AE_INT2_LB = 0xC45, + AE_INT2_LC = 0xC46, + AE_INT2_MA = 0xC47, + AE_INT2_MB = 0xC48, + AE_INT2_NA = 0xC49, + AE_INT2_NB = 0xC4A, + AE_INT2_NC = 0xC4B, + AE_INT2_ND = 0xC4C, + AE_JIZX_AA = 0xC4D, + AE_JIZX_AB = 0xC4E, + AE_JIZX_AC = 0xC4F, + AE_JIZX_AD = 0xC50, + AE_JIZX_AE = 0xC51, + AE_JIZX_AF = 0xC52, + AE_JIZX_AG = 0xC53, + AE_JIZX_AH = 0xC54, + AE_JIZX_AI = 0xC55, + AE_JIZX_AJ = 0xC56, + AE_JIZX_AK = 0xC57, + AE_JIZX_AL = 0xC58, + AE_JIZX_AM = 0xC59, + AE_JIZX_AN = 0xC5A, + AE_JIZX_AO = 0xC5B, + AE_JIZX_AP = 0xC5C, + AE_JIZX_BA = 0xC5D, + AE_JIZX_BB = 0xC5E, + AE_JIZX_BC = 0xC5F, + AE_JIZX_BD = 0xC60, + AE_JIZX_BE = 0xC61, + AE_JIZX_BF = 0xC62, + AE_JIZX_BG = 0xC63, + AE_JIZX_BH = 0xC64, + AE_JIZX_BI = 0xC65, + AE_CAR_PHONE_RING = 0xC66, + AE_CLOTHES_DRESSING_WARDROBE = 0xC67, + AE_DOORBELL = 0xC68, + AE_DRESSING = 0xC69, + AE_GIMP_SUIT = 0xC6A, + AE_PED_MOBRING = 0xC6B, + AE__KEYPAD_BEEP = 0xC6C, + AE__KEYPAD_FAIL = 0xC6D, + AE__KEYPAD_PASS = 0xC6E, + AE_KUNG_1 = 0xC6F, + AE_KUNG_2 = 0xC70, + AE_KUNG_3 = 0xC71, + AE_KUNG_4 = 0xC72, + AE_KUNG_5 = 0xC73, + AE_KUNG_6 = 0xC74, + AE_KUNG_7 = 0xC75, + AE_KUNG_8 = 0xC76, + AE_BEXIT1 = 0xC77, + AE_BEXIT2 = 0xC78, + AE_DNCEF1 = 0xC79, + AE_DNCEF2 = 0xC7A, + AE_DOFFE1 = 0xC7B, + AE_DOFFE1N = 0xC7C, + AE_DOFFE1Y = 0xC7D, + AE_DOFFE2 = 0xC7E, + AE_DOFFE2N = 0xC7F, + AE_DOFFE2Y = 0xC80, + AE_DOFFE3 = 0xC81, + AE_DOFFE3N = 0xC82, + AE_DOFFE3Y = 0xC83, + AE_DOFFE4 = 0xC84, + AE_DOFFE4N = 0xC85, + AE_DOFFE4Y = 0xC86, + AE_DSTAR1 = 0xC87, + AE_DSTAR2 = 0xC88, + AE_GEXIT1 = 0xC89, + AE_GEXIT2 = 0xC8A, + AE_HI1 = 0xC8B, + AE_HI1N = 0xC8C, + AE_HI1Y = 0xC8D, + AE_HI2 = 0xC8E, + AE_HI2N = 0xC8F, + AE_HI2Y = 0xC90, + AE_HI3 = 0xC91, + AE_HI3N = 0xC92, + AE_HI3Y = 0xC93, + AE_HI4 = 0xC94, + AE_HI4N = 0xC95, + AE_HI4Y = 0xC96, + AE_HI5 = 0xC97, + AE_HI5N = 0xC98, + AE_HI5Y = 0xC99, + AE_HI6 = 0xC9A, + AE_HI6N = 0xC9B, + AE_HI6Y = 0xC9C, + AE_HI7N = 0xC9D, + AE_HI7Y = 0xC9E, + AE_HI8N = 0xC9F, + AE_HI8Y = 0xCA0, + AE_VLATE = 0xCA1, + AE_VOFFE1 = 0xCA2, + AE_VOFFE1N = 0xCA3, + AE_VOFFE1Y = 0xCA4, + AE_VOFFE2 = 0xCA5, + AE_VOFFE2N = 0xCA6, + AE_VOFFE2Y = 0xCA7, + AE_VSURE1 = 0xCA8, + AE_VSURE1N = 0xCA9, + AE_VSURE1Y = 0xCAA, + AE_VSURE2 = 0xCAB, + AE_VSURE2N = 0xCAC, + AE_VSURE2Y = 0xCAD, + AE_VYES1 = 0xCAE, + AE_VYES2 = 0xCAF, + AE_LOC1_BA = 0xCB0, + AE_LOC1_BB = 0xCB1, + AE_LOC1_BC = 0xCB2, + AE_LOC1_BD = 0xCB3, + AE_LOC1_BE = 0xCB4, + AE_LOC1_BF = 0xCB5, + AE_LOC1_BG = 0xCB6, + AE_LOC1_BH = 0xCB7, + AE_LOC1_BJ = 0xCB8, + AE_LOC1_BK = 0xCB9, + AE_LOC1_BL = 0xCBA, + AE_LOC1_BM = 0xCBB, + AE_LOC1_BN = 0xCBC, + AE_LOC1_BO = 0xCBD, + AE_LOC1_BP = 0xCBE, + AE_LOC1_BQ = 0xCBF, + AE_LOC1_BR = 0xCC0, + AE_LOC1_BS = 0xCC1, + AE_LOC1_BT = 0xCC2, + AE_LOC1_BU = 0xCC3, + AE_LOC1_BV = 0xCC4, + AE_LOC1_CA = 0xCC5, + AE_LOC1_CB = 0xCC6, + AE_LOC1_CC = 0xCC7, + AE_LOC1_CD = 0xCC8, + AE_LOC1_CE = 0xCC9, + AE_LOC1_CF = 0xCCA, + AE_LOC1_CG = 0xCCB, + AE_LOC1_CH = 0xCCC, + AE_LOC1_CJ = 0xCCD, + AE_LOC1_CK = 0xCCE, + AE_LOC1_CL = 0xCCF, + AE_LOC1_CM = 0xCD0, + AE_LOC1_CN = 0xCD1, + AE_LOC1_CO = 0xCD2, + AE_LOC1_CP = 0xCD3, + AE_LOC1_CQ = 0xCD4, + AE_LOC1_CR = 0xCD5, + AE_LOC1_CS = 0xCD6, + AE_LOC1_CT = 0xCD7, + AE_LOC1_CU = 0xCD8, + AE_LOC1_CV = 0xCD9, + AE_LOC1_YA = 0xCDA, + AE_LOC1_YB = 0xCDB, + AE_LOC1_YC = 0xCDC, + AE_LOC1_YD = 0xCDD, + AE_LOC1_YE = 0xCDE, + AE_LOC1_YG = 0xCDF, + AE_LOC1_YH = 0xCE0, + AE_LOC1_YJ = 0xCE1, + AE_LOC1_YK = 0xCE2, + AE_LOC1_YO = 0xCE3, + AE_LOC1_YP = 0xCE4, + AE_LOC1_YQ = 0xCE5, + AE_LOC1_YR = 0xCE6, + AE_LOC1_YS = 0xCE7, + AE_LOC1_YT = 0xCE8, + AE_LOC1_ZE = 0xCE9, + AE_LOC1_ZF = 0xCEA, + AE_LOC1_ZG = 0xCEB, + AE_LOC1_ZH = 0xCEC, + AE_LOC1_ZN = 0xCED, + AE_LOC1_ZO = 0xCEE, + AE_LOC1_ZP = 0xCEF, + AE_LOC1_ZQ = 0xCF0, + AE_LOC1_ZT = 0xCF1, + AE_LOC1_ZU = 0xCF2, + AE_LOC2_AA = 0xCF3, + AE_LOC2_AB = 0xCF4, + AE_LOC2_AC = 0xCF5, + AE_LOC2_BA = 0xCF6, + AE_LOC2_BB = 0xCF7, + AE_LOC2_CA = 0xCF8, + AE_LOC2_CB = 0xCF9, + AE_LOC2_CC = 0xCFA, + AE_LOC2_DC = 0xCFB, + AE_LOC3_AA = 0xCFC, + AE_LOC3_BA = 0xCFD, + AE_LOC3_BB = 0xCFE, + AE_LOC3_BC = 0xCFF, + AE_LOC3_BD = 0xD00, + AE_LOC3_BE = 0xD01, + AE_LOC3_CA = 0xD02, + AE_LOC3_CB = 0xD03, + AE_LOC3_DA = 0xD04, + AE_LOC3_DB = 0xD05, + AE_LOC3_DC = 0xD06, + AE_LOC3_DD = 0xD07, + AE_LOC3_EA = 0xD08, + AE_LOC3_EB = 0xD09, + AE_LOC3_EC = 0xD0A, + AE_LOC3_ED = 0xD0B, + AE_LOC3_EE = 0xD0C, + AE_LOC3_EF = 0xD0D, + AE_LOC3_EG = 0xD0E, + AE_LOC3_EH = 0xD0F, + AE_LOC3_EJ = 0xD10, + AE_LOC3_EK = 0xD11, + AE_LOC3_EL = 0xD12, + AE_LOC3_EM = 0xD13, + AE_LOC3_EN = 0xD14, + AE_LOC3_EO = 0xD15, + AE_LOC3_FA = 0xD16, + AE_LOC3_FB = 0xD17, + AE_LOC3_FC = 0xD18, + AE_LOC3_FD = 0xD19, + AE_LOC3_FE = 0xD1A, + AE_LOC3_FF = 0xD1B, + AE_LOC3_GA = 0xD1C, + AE_LOC3_GB = 0xD1D, + AE_LOC3_GC = 0xD1E, + AE_LOC3_GD = 0xD1F, + AE_LOC3_HA = 0xD20, + AE_LOC3_HB = 0xD21, + AE_LOC3_JA = 0xD22, + AE_LOC3_JB = 0xD23, + AE_LOC4_AA = 0xD24, + AE_LOC4_AB = 0xD25, + AE_LOC4_AC = 0xD26, + AE_LOC4_AD = 0xD27, + AE_LOC4_AE = 0xD28, + AE_LOC4_AF = 0xD29, + AE_LOC4_AG = 0xD2A, + AE_LOC4_AH = 0xD2B, + AE_LOC4_BA = 0xD2C, + AE_LOC4_BB = 0xD2D, + AE_LOC4_BC = 0xD2E, + AE_LOC4_BD = 0xD2F, + AE_LOC4_BE = 0xD30, + AE_LOC4_BF = 0xD31, + AE_LOC4_BG = 0xD32, + AE_LOC4_CA = 0xD33, + AE_LOC4_CB = 0xD34, + AE_LOC4_CC = 0xD35, + AE_LOCX_AA = 0xD36, + AE_LOCX_AB = 0xD37, + AE_LOCX_AC = 0xD38, + AE_LOCX_AD = 0xD39, + AE_LOCX_AE = 0xD3A, + AE_LOCX_AF = 0xD3B, + AE_LOCX_AG = 0xD3C, + AE_MOURNERS = 0xD3D, + AE_LOWR_AA = 0xD3E, + AE_LOWR_AB = 0xD3F, + AE_LOWR_AD = 0xD40, + AE_LOWR_AE = 0xD41, + AE_LOWR_AG = 0xD42, + AE_LOWR_AH = 0xD43, + AE_LOWR_AK = 0xD44, + AE_LOWR_AL = 0xD45, + AE_LOWR_BA = 0xD46, + AE_LOWR_BB = 0xD47, + AE_LOWR_BC = 0xD48, + AE_LOWR_CA = 0xD49, + AE_LOWR_CB = 0xD4A, + AE_LOWR_DA = 0xD4B, + AE_LOWR_DB = 0xD4C, + AE_LOWR_EA = 0xD4D, + AE_LOWR_EB = 0xD4E, + AE_LOWR_EC = 0xD4F, + AE_LOWR_ED = 0xD50, + AE_LOWR_EE = 0xD51, + AE_LOWR_EF = 0xD52, + AE_LOWR_FA = 0xD53, + AE_LOWR_FB = 0xD54, + AE_LOWR_FC = 0xD55, + AE_LOWR_FD = 0xD56, + AE_LOWR_FE = 0xD57, + AE_LOWR_FF = 0xD58, + AE_LOWR_GA = 0xD59, + AE_LOWR_GB = 0xD5A, + AE_LOWR_HA = 0xD5B, + AE_LOWR_HB = 0xD5C, + AE_LOWR_HC = 0xD5D, + AE_LOWR_HD = 0xD5E, + AE_LOWR_KA = 0xD5F, + AE_LOWR_KB = 0xD60, + AE_LOWR_KC = 0xD61, + AE_LOWR_KD = 0xD62, + AE_LOWR_KE = 0xD63, + AE_LOWR_KF = 0xD64, + AE_LOWR_KG = 0xD65, + AE_MOBRING = 0xD66, + AE_MACX_AA = 0xD67, + AE_MACX_AB = 0xD68, + AE_MACX_AC = 0xD69, + AE_MACX_AD = 0xD6A, + AE_MACX_AE = 0xD6B, + AE_MACX_AF = 0xD6C, + AE_MACX_AG = 0xD6D, + AE_MACX_AH = 0xD6E, + AE_MACX_AI = 0xD6F, + AE_MACX_AJ = 0xD70, + AE_CRATE_LANDING = 0xD71, + AE_VIDEO_GAME_LOOP = 0xD72, + AE_MAN1_AA = 0xD73, + AE_MAN1_AB = 0xD74, + AE_MAN1_AC = 0xD75, + AE_MAN1_AD = 0xD76, + AE_MAN1_BA = 0xD77, + AE_MAN1_BB = 0xD78, + AE_MAN1_BC = 0xD79, + AE_MAN1_BD = 0xD7A, + AE_MAN1_CA = 0xD7B, + AE_MAN1_CB = 0xD7C, + AE_MAN1_CC = 0xD7D, + AE_MAN1_DA = 0xD7E, + AE_MAN1_DB = 0xD7F, + AE_MAN1_DC = 0xD80, + AE_MAN1_DD = 0xD81, + AE_MAN1_DE = 0xD82, + AE_MAN1_DF = 0xD83, + AE_MAN1_DG = 0xD84, + AE_MAN1_DH = 0xD85, + AE_MAN1_DJ = 0xD86, + AE_MAN1_EA = 0xD87, + AE_MAN1_EB = 0xD88, + AE_MAN1_FA = 0xD89, + AE_MAN1_FB = 0xD8A, + AE_MAN1_FC = 0xD8B, + AE_MAN1_FD = 0xD8C, + AE_MAN1_FE = 0xD8D, + AE_MAN1_FF = 0xD8E, + AE_MAN1_FG = 0xD8F, + AE_MAN1_FH = 0xD90, + AE_MAN1_FJ = 0xD91, + AE_MAN1_FK = 0xD92, + AE_MAN1_FL = 0xD93, + AE_MAN1_FM = 0xD94, + AE_MAN1_FN = 0xD95, + AE_MAN1_FO = 0xD96, + AE_MAN2_AA = 0xD97, + AE_MAN2_AB = 0xD98, + AE_MAN2_AC = 0xD99, + AE_MAN2_AD = 0xD9A, + AE_MAN2_BA = 0xD9B, + AE_MAN2_BB = 0xD9C, + AE_MAN2_BC = 0xD9D, + AE_MAN2_BD = 0xD9E, + AE_MAN2_BE = 0xD9F, + AE_MAN2_BF = 0xDA0, + AE_MAN2_BG = 0xDA1, + AE_MAN2_BH = 0xDA2, + AE_MAN2_BJ = 0xDA3, + AE_MAN2_BK = 0xDA4, + AE_MAN2_BL = 0xDA5, + AE_MAN2_BM = 0xDA6, + AE_MAN2_BN = 0xDA7, + AE_MAN2_CA = 0xDA8, + AE_MAN2_DA = 0xDA9, + AE_MAN2_DB = 0xDAA, + AE_MAN2_DC = 0xDAB, + AE_MAN2_DD = 0xDAC, + AE_MAN2_EA = 0xDAD, + AE_MAN2_EB = 0xDAE, + AE_MAN2_EC = 0xDAF, + AE_MAN2_EE = 0xDB0, + AE_MAN2_EF = 0xDB1, + AE_MAN2_EG = 0xDB2, + AE_MAN2_EH = 0xDB3, + AE_MAN2_EJ = 0xDB4, + AE_MAN2_FA = 0xDB5, + AE_MAN2_FB = 0xDB6, + AE_MAN2_FC = 0xDB7, + AE_MAN2_FD = 0xDB8, + AE_MAN2_FE = 0xDB9, + AE_MAN2_FF = 0xDBA, + AE_MAN2_FG = 0xDBB, + AE_MAN2_FK = 0xDBC, + AE_MAN2_FL = 0xDBD, + AE_MAN2_GA = 0xDBE, + AE_MAN2_GB = 0xDBF, + AE_MAN2_GC = 0xDC0, + AE_MAN2_GD = 0xDC1, + AE_MAN2_GE = 0xDC2, + AE_MAN2_GF = 0xDC3, + AE_MAN2_GG = 0xDC4, + AE_MAN2_GH = 0xDC5, + AE_MAN2_HA = 0xDC6, + AE_MAN2_HB = 0xDC7, + AE_MAN2_HC = 0xDC8, + AE_MAN2_HD = 0xDC9, + AE_MAN2_HE = 0xDCA, + AE_MAN2_HF = 0xDCB, + AE_MAN2_JA = 0xDCC, + AE_MAN2_JC = 0xDCD, + AE_MAN2_JD = 0xDCE, + AE_MAN2_JE = 0xDCF, + AE_MAN2_JF = 0xDD0, + AE_MAN2_KA = 0xDD1, + AE_MAN2_KB = 0xDD2, + AE_MAN2_KC = 0xDD3, + AE_MAN2_KD = 0xDD4, + AE_MAN2_KE = 0xDD5, + AE_MAN2_KF = 0xDD6, + AE_MAN3_AA = 0xDD7, + AE_MAN3_AB = 0xDD8, + AE_MAN3_AC = 0xDD9, + AE_MAN3_AD = 0xDDA, + AE_MAN3_BA = 0xDDB, + AE_MAN3_BB = 0xDDC, + AE_MAN3_BC = 0xDDD, + AE_MAN3_BD = 0xDDE, + AE_MAN3_BE = 0xDDF, + AE_MAN3_CA = 0xDE0, + AE_MAN3_CB = 0xDE1, + AE_MAN3_CC = 0xDE2, + AE_MAN3_CD = 0xDE3, + AE_MAN3_CE = 0xDE4, + AE_MAN3_CF = 0xDE5, + AE_MAN3_CG = 0xDE6, + AE_MAN3_CH = 0xDE7, + AE_MAN3_CI = 0xDE8, + AE_MAN3_CJ = 0xDE9, + AE_MAN3_CK = 0xDEA, + AE_MAN5_AA = 0xDEB, + AE_MAN5_AB = 0xDEC, + AE_MAN5_AC = 0xDED, + AE_MAN5_BA = 0xDEE, + AE_MAN5_BB = 0xDEF, + AE_MAN5_BC = 0xDF0, + AE_MAN5_BD = 0xDF1, + AE_MAN5_BE = 0xDF2, + AE_MAN5_BF = 0xDF3, + AE_MAN5_BG = 0xDF4, + AE_MAN5_BH = 0xDF5, + AE_MAN5_BJ = 0xDF6, + AE_MAN5_BK = 0xDF7, + AE_MAN5_BL = 0xDF8, + AE_MAN5_BM = 0xDF9, + AE_MAN5_BN = 0xDFA, + AE_MAN5_BO = 0xDFB, + AE_MAN5_CA = 0xDFC, + AE_MAN5_CB = 0xDFD, + AE_MAN5_DA = 0xDFE, + AE_MAN5_DB = 0xDFF, + AE_MAN5_DC = 0xE00, + AE_MAN5_DD = 0xE01, + AE_MAN5_EA = 0xE02, + AE_MAN5_EB = 0xE03, + AE_MAN5_FA = 0xE04, + AE_MAN5_FB = 0xE05, + AE_MAN5_FC = 0xE06, + AE_MAN5_FD = 0xE07, + AE_MAN5_FE = 0xE08, + AE_MAN5_FF = 0xE09, + AE_MAN5_FG = 0xE0A, + AE_MAN5_FH = 0xE0B, + AE_MAN5_FJ = 0xE0C, + AE_LOCK_CAR_DOORS = 0xE0D, + AE_MBARB1A = 0xE0E, + AE_MBARB1B = 0xE0F, + AE_MBARB1C = 0xE10, + AE_MBARB1D = 0xE11, + AE_MBARB1E = 0xE12, + AE_MBARB1F = 0xE13, + AE_MBARB1G = 0xE14, + AE_MBARB1H = 0xE15, + AE_MBARB1J = 0xE16, + AE_MBARB1K = 0xE17, + AE_MBARB1L = 0xE18, + AE_MBARB1M = 0xE19, + AE_MBARB1N = 0xE1A, + AE_MBARB1O = 0xE1B, + AE_MBARB1P = 0xE1C, + AE_MBARB1Q = 0xE1D, + AE_MBARB1R = 0xE1E, + AE_MBARB2A = 0xE1F, + AE_MBARB2D = 0xE20, + AE_MBARB3A = 0xE21, + AE_MBARB3B = 0xE22, + AE_MBARB4A = 0xE23, + AE_MBARB4D = 0xE24, + AE_MBARB5A = 0xE25, + AE_MBARB5D = 0xE26, + AE_MBARB6A = 0xE27, + AE_MBARB6B = 0xE28, + AE_MBARB7D = 0xE29, + AE_MBARB8D = 0xE2A, + AE_MBARB9D = 0xE2B, + AE_MCAT01A = 0xE2C, + AE_MCAT01B = 0xE2D, + AE_MCAT01C = 0xE2E, + AE_MCAT01D = 0xE2F, + AE_MCAT01E = 0xE30, + AE_MCAT01F = 0xE31, + AE_MCAT01G = 0xE32, + AE_MCAT01H = 0xE33, + AE_MCAT02A = 0xE34, + AE_MCAT02B = 0xE35, + AE_MCAT02C = 0xE36, + AE_MCAT02D = 0xE37, + AE_MCAT02E = 0xE38, + AE_MCAT02F = 0xE39, + AE_MCAT02G = 0xE3A, + AE_MCAT02H = 0xE3B, + AE_MCAT03A = 0xE3C, + AE_MCAT03B = 0xE3D, + AE_MCAT04A = 0xE3E, + AE_MCAT04B = 0xE3F, + AE_MCAT04C = 0xE40, + AE_MCAT04D = 0xE41, + AE_MCAT04E = 0xE42, + AE_MCAT04F = 0xE43, + AE_MCAT05A = 0xE44, + AE_MCAT05B = 0xE45, + AE_MCAT05C = 0xE46, + AE_MCAT05D = 0xE47, + AE_MCAT05E = 0xE48, + AE_MCAT05F = 0xE49, + AE_MCAT05G = 0xE4A, + AE_MCAT06A = 0xE4B, + AE_MCAT06B = 0xE4C, + AE_MCAT06C = 0xE4D, + AE_MCAT06D = 0xE4E, + AE_MCAT06E = 0xE4F, + AE_MCAT06F = 0xE50, + AE_MCAT06G = 0xE51, + AE_MCAT06H = 0xE52, + AE_MCAT06J = 0xE53, + AE_MCAT06K = 0xE54, + AE_MCAT07A = 0xE55, + AE_MCAT07B = 0xE56, + AE_MCAT07C = 0xE57, + AE_MCAT07D = 0xE58, + AE_MCAT07E = 0xE59, + AE_MCAT07F = 0xE5A, + AE_MCAT07G = 0xE5B, + AE_MCES01A = 0xE5C, + AE_MCES01B = 0xE5D, + AE_MCES01C = 0xE5E, + AE_MCES01D = 0xE5F, + AE_MCES01E = 0xE60, + AE_MCES01F = 0xE61, + AE_MCES01G = 0xE62, + AE_MCES01H = 0xE63, + AE_MCES01K = 0xE64, + AE_MCES01L = 0xE65, + AE_MCES01M = 0xE66, + AE_MCES01N = 0xE67, + AE_MCES01O = 0xE68, + AE_MCES01P = 0xE69, + AE_MCES02A = 0xE6A, + AE_MCES02B = 0xE6B, + AE_MCES02C = 0xE6C, + AE_MCES02D = 0xE6D, + AE_MCES02E = 0xE6E, + AE_MCES02F = 0xE6F, + AE_MCES02G = 0xE70, + AE_MCES02H = 0xE71, + AE_MCES02K = 0xE72, + AE_MCES02L = 0xE73, + AE_MCES02M = 0xE74, + AE_MCES02N = 0xE75, + AE_MCES02O = 0xE76, + AE_MCES03A = 0xE77, + AE_MCES03B = 0xE78, + AE_MCES03C = 0xE79, + AE_MCES03D = 0xE7A, + AE_MCES03E = 0xE7B, + AE_MCES03F = 0xE7C, + AE_MCES03G = 0xE7D, + AE_MCES03H = 0xE7E, + AE_MCES03J = 0xE7F, + AE_MCES03K = 0xE80, + AE_MCES03L = 0xE81, + AE_MCES03M = 0xE82, + AE_MCES03N = 0xE83, + AE_MCES04A = 0xE84, + AE_MCES04B = 0xE85, + AE_MCES04C = 0xE86, + AE_MCES04D = 0xE87, + AE_MCES04E = 0xE88, + AE_MCES04F = 0xE89, + AE_MCES04G = 0xE8A, + AE_MCES04H = 0xE8B, + AE_MCES04J = 0xE8C, + AE_MCES04L = 0xE8D, + AE_MCES04M = 0xE8E, + AE_MCES04N = 0xE8F, + AE_MCES04O = 0xE90, + AE_MCES04P = 0xE91, + AE_MCES04Q = 0xE92, + AE_MCES04R = 0xE93, + AE_MCES05A = 0xE94, + AE_MCES05B = 0xE95, + AE_MCES05C = 0xE96, + AE_MCES05D = 0xE97, + AE_MCES05E = 0xE98, + AE_MCES05F = 0xE99, + AE_MCES05G = 0xE9A, + AE_MCES05H = 0xE9B, + AE_MCES05J = 0xE9C, + AE_MCES05K = 0xE9D, + AE_MCES05L = 0xE9E, + AE_MCES05M = 0xE9F, + AE_MCES05N = 0xEA0, + AE_MCES05O = 0xEA1, + AE_MCES05P = 0xEA2, + AE_MCES05Q = 0xEA3, + AE_MCES05R = 0xEA4, + AE_MCES06A = 0xEA5, + AE_MCES06B = 0xEA6, + AE_MCES06C = 0xEA7, + AE_MCES06D = 0xEA8, + AE_MCES06E = 0xEA9, + AE_MCES06F = 0xEAA, + AE_MCES06G = 0xEAB, + AE_MCES07A = 0xEAC, + AE_MCES07B = 0xEAD, + AE_MCES07C = 0xEAE, + AE_MCES07D = 0xEAF, + AE_MCES08 = 0xEB0, + AE_MCES08A = 0xEB1, + AE_MCES08B = 0xEB2, + AE_MCES08C = 0xEB3, + AE_MCES08D = 0xEB4, + AE_MCES08E = 0xEB5, + AE_MCES09A = 0xEB6, + AE_MCES09B = 0xEB7, + AE_MCES09C = 0xEB8, + AE_MCES09D = 0xEB9, + AE_MCES09E = 0xEBA, + AE_MCES09F = 0xEBB, + AE_MCES09G = 0xEBC, + AE_MCES09H = 0xEBD, + AE_MCES09K = 0xEBE, + AE_MCES09L = 0xEBF, + AE_MCES09M = 0xEC0, + AE_MCES09N = 0xEC1, + AE_MCES09O = 0xEC2, + AE_MCES09P = 0xEC3, + AE_MCES10A = 0xEC4, + AE_MCES10B = 0xEC5, + AE_MCES10C = 0xEC6, + AE_MCES10D = 0xEC7, + AE_MCES10E = 0xEC8, + AE_MCES10F = 0xEC9, + AE_MCES10G = 0xECA, + AE_MCES10H = 0xECB, + AE_MCES10J = 0xECC, + AE_MCES10K = 0xECD, + AE_MCES11A = 0xECE, + AE_MCES11B = 0xECF, + AE_MCES11C = 0xED0, + AE_MCES11D = 0xED1, + AE_MCES11E = 0xED2, + AE_MCES11F = 0xED3, + AE_MDEN_1A = 0xED4, + AE_MDEN_1B = 0xED5, + AE_MDEN_1C = 0xED6, + AE_MDEN_1D = 0xED7, + AE_MDEN_1E = 0xED8, + AE_MDEN_1F = 0xED9, + AE_MDEN_1G = 0xEDA, + AE_MDEN_1H = 0xEDB, + AE_MDEN_1J = 0xEDC, + AE_MDEN_1K = 0xEDD, + AE_MDEN_1L = 0xEDE, + AE_MDEN_2A = 0xEDF, + AE_MDEN_2D = 0xEE0, + AE_MDEN_3A = 0xEE1, + AE_MDEN_3B = 0xEE2, + AE_MDEN_4A = 0xEE3, + AE_MDEN_4D = 0xEE4, + AE_MDEN_5A = 0xEE5, + AE_MDEN_5B = 0xEE6, + AE_MDEN_6A = 0xEE7, + AE_MDEN_6D = 0xEE8, + AE_MDEN_7D = 0xEE9, + AE_MDEN_8D = 0xEEA, + AE_MDEN_9D = 0xEEB, + AE__MEAT_TRACK_LOOP = 0xEEC, + AE__FREEZER_CLOSE = 0xEED, + AE__FREEZER_OPEN = 0xEEE, + AE__MEAT_TRACK_START = 0xEEF, + AE__MEAT_TRACK_STOP = 0xEF0, + AE__MECHANIC_ATTACH_CAR_BOMB = 0xEF1, + AE__MECHANIC_SLIDE_OUT = 0xEF2, + AE_MEC_B1 = 0xEF3, + AE_MEC_B2 = 0xEF4, + AE_MEC_D1 = 0xEF5, + AE_MEC_D2 = 0xEF6, + AE_MEC_D3 = 0xEF7, + AE_MEC_D4 = 0xEF8, + AE_MEC_D5 = 0xEF9, + AE_MEC_HI = 0xEFA, + AE_MEC_N = 0xEFB, + AE_MEC_Y = 0xEFC, + AE_MHELD7D = 0xEFD, + AE_MHELD8D = 0xEFE, + AE_MHELD9D = 0xEFF, + AE_MHEL_1A = 0xF00, + AE_MHEL_1B = 0xF01, + AE_MHEL_1C = 0xF02, + AE_MHEL_1D = 0xF03, + AE_MHEL_1E = 0xF04, + AE_MHEL_1F = 0xF05, + AE_MHEL_1G = 0xF06, + AE_MHEL_1H = 0xF07, + AE_MHEL_1J = 0xF08, + AE_MHEL_1K = 0xF09, + AE_MHEL_1L = 0xF0A, + AE_MHEL_2A = 0xF0B, + AE_MHEL_2B = 0xF0C, + AE_MHEL_3A = 0xF0D, + AE_MHEL_3B = 0xF0E, + AE_MHEL_4A = 0xF0F, + AE_MHEL_4B = 0xF10, + AE_MHEL_5A = 0xF11, + AE_MHEL_5B = 0xF12, + AE_MHEL_6A = 0xF13, + AE_MHEL_6B = 0xF14, + AE_MHRZ01A = 0xF15, + AE_MHRZ01B = 0xF16, + AE_MHRZ01C = 0xF17, + AE_MHRZ01D = 0xF18, + AE_MHRZ01E = 0xF19, + AE_MHRZ01F = 0xF1A, + AE_MHRZ01G = 0xF1B, + AE_MHRZ01H = 0xF1C, + AE_MHRZ01J = 0xF1D, + AE_MHRZ01K = 0xF1E, + AE_MHRZ01L = 0xF1F, + AE_MHRZ01M = 0xF20, + AE_MHRZ01N = 0xF21, + AE_MJET_1A = 0xF22, + AE_MJET_1B = 0xF23, + AE_MJET_1C = 0xF24, + AE_MJET_1D = 0xF25, + AE_MJET_1E = 0xF26, + AE_MJET_1F = 0xF27, + AE_MJET_1G = 0xF28, + AE_MJET_1H = 0xF29, + AE_MJET_1J = 0xF2A, + AE_MJET_1K = 0xF2B, + AE_MJET_1L = 0xF2C, + AE_MJET_1M = 0xF2D, + AE_MJET_1N = 0xF2E, + AE_MJET_1O = 0xF2F, + AE_MJET_1P = 0xF30, + AE_MJET_2A = 0xF31, + AE_MJET_2B = 0xF32, + AE_MJET_2C = 0xF33, + AE_MJET_2D = 0xF34, + AE_MJET_2E = 0xF35, + AE_MJET_2F = 0xF36, + AE_MJET_2G = 0xF37, + AE_MJET_2H = 0xF38, + AE_MJET_2J = 0xF39, + AE_MJET_2K = 0xF3A, + AE_MJET_2L = 0xF3B, + AE_MJET_3A = 0xF3C, + AE_MJET_3B = 0xF3D, + AE_MJET_3C = 0xF3E, + AE_MJET_3D = 0xF3F, + AE_MJET_3E = 0xF40, + AE_MJET_3F = 0xF41, + AE_MJET_3G = 0xF42, + AE_MJET_3H = 0xF43, + AE_MJIZ01A = 0xF44, + AE_MJIZ01B = 0xF45, + AE_MJIZ01C = 0xF46, + AE_MJIZ01D = 0xF47, + AE_MJIZ01E = 0xF48, + AE_MJIZ01F = 0xF49, + AE_MJIZ01G = 0xF4A, + AE_MJIZ01H = 0xF4B, + AE_MJIZ02A = 0xF4C, + AE_MJIZ02B = 0xF4D, + AE_MJIZ02C = 0xF4E, + AE_MJIZ02D = 0xF4F, + AE_MKND01A = 0xF50, + AE_MKND01B = 0xF51, + AE_MKND01C = 0xF52, + AE_MKND01D = 0xF53, + AE_MKND01E = 0xF54, + AE_MKND01F = 0xF55, + AE_MKND01G = 0xF56, + AE_MKND01H = 0xF57, + AE_MKND01J = 0xF58, + AE_MKND02A = 0xF59, + AE_MKND02B = 0xF5A, + AE_MKND02C = 0xF5B, + AE_MKND02D = 0xF5C, + AE_MKND02E = 0xF5D, + AE_MKND02F = 0xF5E, + AE_MKND02G = 0xF5F, + AE_MKND02H = 0xF60, + AE_MKND02J = 0xF61, + AE_MKND02K = 0xF62, + AE_MKP01A = 0xF63, + AE_MKP01B = 0xF64, + AE_MKP01C = 0xF65, + AE_MKP01D = 0xF66, + AE_MKP01E = 0xF67, + AE_MKP01F = 0xF68, + AE_MLOC01B = 0xF69, + AE_MLOC01F = 0xF6A, + AE_MLOC02A = 0xF6B, + AE_MLOC02B = 0xF6C, + AE_MLOC02C = 0xF6D, + AE_MLOC02D = 0xF6E, + AE_MLOC02E = 0xF6F, + AE_MLOC02F = 0xF70, + AE_MLOC02G = 0xF71, + AE_MLOC02H = 0xF72, + AE_MLOC02J = 0xF73, + AE_MLOC02K = 0xF74, + AE_MLOC03A = 0xF75, + AE_MLOC03B = 0xF76, + AE_MLOC03C = 0xF77, + AE_MLOC03D = 0xF78, + AE_MLOC03E = 0xF79, + AE_MLOC03F = 0xF7A, + AE_MLOC03H = 0xF7B, + AE_MLOC04A = 0xF7C, + AE_MLOC04B = 0xF7D, + AE_MLOC04C = 0xF7E, + AE_MLOC04D = 0xF7F, + AE_MMICH1A = 0xF80, + AE_MMICH1B = 0xF81, + AE_MMICH1C = 0xF82, + AE_MMICH1D = 0xF83, + AE_MMICH1E = 0xF84, + AE_MMICH1F = 0xF85, + AE_MMICH1G = 0xF86, + AE_MMICH1H = 0xF87, + AE_MMICH1J = 0xF88, + AE_MMICH2A = 0xF89, + AE_MMICH2B = 0xF8A, + AE_MMICH3A = 0xF8B, + AE_MMICH3D = 0xF8C, + AE_MMICH4A = 0xF8D, + AE_MMICH4B = 0xF8E, + AE_MMICH5A = 0xF8F, + AE_MMICH5D = 0xF90, + AE_MMICH6A = 0xF91, + AE_MMICH6D = 0xF92, + AE_MMICH7D = 0xF93, + AE_MMICH8D = 0xF94, + AE_MMICH9D = 0xF95, + AE_MMIL10D = 0xF96, + AE_MMILL1A = 0xF97, + AE_MMILL1B = 0xF98, + AE_MMILL1C = 0xF99, + AE_MMILL1D = 0xF9A, + AE_MMILL1E = 0xF9B, + AE_MMILL1F = 0xF9C, + AE_MMILL1G = 0xF9D, + AE_MMILL1H = 0xF9E, + AE_MMILL1J = 0xF9F, + AE_MMILL1K = 0xFA0, + AE_MMILL2A = 0xFA1, + AE_MMILL2B = 0xFA2, + AE_MMILL2C = 0xFA3, + AE_MMILL2D = 0xFA4, + AE_MMILL2E = 0xFA5, + AE_MMILL2F = 0xFA6, + AE_MMILL2G = 0xFA7, + AE_MMILL2H = 0xFA8, + AE_MMILL2J = 0xFA9, + AE_MMILL2K = 0xFAA, + AE_MMILL2L = 0xFAB, + AE_MMILL3A = 0xFAC, + AE_MMILL3B = 0xFAD, + AE_MMILL4A = 0xFAE, + AE_MMILL4D = 0xFAF, + AE_MMILL5A = 0xFB0, + AE_MMILL5D = 0xFB1, + AE_MMILL6A = 0xFB2, + AE_MMILL6B = 0xFB3, + AE_MMILL7A = 0xFB4, + AE_MMILL7D = 0xFB5, + AE_MMILL8D = 0xFB6, + AE_MMILL9D = 0xFB7, + AE_REVERB_CAR_SCREECH = 0xFB8, + AE_MPUL01B = 0xFB9, + AE_MPUL01G = 0xFBA, + AE_MPUL01H = 0xFBB, + AE_MPUL01M = 0xFBC, + AE_MPUL01O = 0xFBD, + AE_MROS01B = 0xFBE, + AE_MROS01D = 0xFBF, + AE_MROS01E = 0xFC0, + AE_MROS01F = 0xFC1, + AE_MROS01H = 0xFC2, + AE_MROS01L = 0xFC3, + AE_MROS02A = 0xFC4, + AE_MROS02B = 0xFC5, + AE_MROS02C = 0xFC6, + AE_MROS02D = 0xFC7, + AE_MROS02E = 0xFC8, + AE_MROS02F = 0xFC9, + AE_MROS02G = 0xFCA, + AE_MROS03A = 0xFCB, + AE_MROS03B = 0xFCC, + AE_MROS03C = 0xFCD, + AE_MROS03D = 0xFCE, + AE_MROS03E = 0xFCF, + AE_MROS03F = 0xFD0, + AE_MROS03G = 0xFD1, + AE_MROS03H = 0xFD2, + AE_MROS03J = 0xFD3, + AE_MROS03K = 0xFD4, + AE_MROS03L = 0xFD5, + AE_MROS03N = 0xFD6, + AE_MROS03O = 0xFD7, + AE_MROS03P = 0xFD8, + AE_MROS03Q = 0xFD9, + AE_MSAL01A = 0xFDA, + AE_MSAL01B = 0xFDB, + AE_MSAL01C = 0xFDC, + AE_MSAL01D = 0xFDD, + AE_MSAL01E = 0xFDE, + AE_MSAL01F = 0xFDF, + AE_MSAL01G = 0xFE0, + AE_MSAL01H = 0xFE1, + AE_MSAL01J = 0xFE2, + AE_MSAL01K = 0xFE3, + AE_MSAL01M = 0xFE4, + AE_MSAL01N = 0xFE5, + AE_MSAL01O = 0xFE6, + AE_MSAL02A = 0xFE7, + AE_MSAL02B = 0xFE8, + AE_MSAL02C = 0xFE9, + AE_MSAL02D = 0xFEA, + AE_MSAL02E = 0xFEB, + AE_MSAL02F = 0xFEC, + AE_MSAL02G = 0xFED, + AE_MSAL02H = 0xFEE, + AE_MSAL02J = 0xFEF, + AE_MSAL02K = 0xFF0, + AE_MSMK01A = 0xFF1, + AE_MSMK01B = 0xFF2, + AE_MSMK01C = 0xFF3, + AE_MSMK01D = 0xFF4, + AE_MSMK01E = 0xFF5, + AE_MSMK01F = 0xFF6, + AE_MSMK01G = 0xFF7, + AE_MSMK01H = 0xFF8, + AE_MSMK01J = 0xFF9, + AE_MSMK01K = 0xFFA, + AE_MSMK01L = 0xFFB, + AE_MSMK01M = 0xFFC, + AE_MSWE01A = 0xFFD, + AE_MSWE01B = 0xFFE, + AE_MSWE01C = 0xFFF, + AE_MSWE01D = 0x1000, + AE_MSWE01E = 0x1001, + AE_MSWE01F = 0x1002, + AE_MSWE01G = 0x1003, + AE_MSWE01H = 0x1004, + AE_MSWE01J = 0x1005, + AE_MSWE01K = 0x1006, + AE_MSWE01L = 0x1007, + AE_MSWE01M = 0x1008, + AE_MSWE01N = 0x1009, + AE_MSWE02A = 0x100A, + AE_MSWE02B = 0x100B, + AE_MSWE02C = 0x100C, + AE_MSWE02D = 0x100D, + AE_MSWE02E = 0x100E, + AE_MSWE02F = 0x100F, + AE_MSWE02G = 0x1010, + AE_MSWE02H = 0x1011, + AE_MSWE02J = 0x1012, + AE_MSWE02K = 0x1013, + AE_MSWE02L = 0x1014, + AE_MSWE03A = 0x1015, + AE_MSWE03B = 0x1016, + AE_MSWE03C = 0x1017, + AE_MSWE03D = 0x1018, + AE_MSWE03E = 0x1019, + AE_MSWE03F = 0x101A, + AE_MSWE03G = 0x101B, + AE_MSWE03H = 0x101C, + AE_MSWE03J = 0x101D, + AE_MSWE03K = 0x101E, + AE_MSWE04A = 0x101F, + AE_MSWE04B = 0x1020, + AE_MSWE04C = 0x1021, + AE_MSWE04D = 0x1022, + AE_MSWE04E = 0x1023, + AE_MSWE04F = 0x1024, + AE_MSWE04G = 0x1025, + AE_MSWE04H = 0x1026, + AE_MSWE05A = 0x1027, + AE_MSWE05B = 0x1028, + AE_MSWE05C = 0x1029, + AE_MSWE05D = 0x102A, + AE_MSWE05E = 0x102B, + AE_MSWE05F = 0x102C, + AE_MSWE05G = 0x102D, + AE_MSWE05H = 0x102E, + AE_MSWE05J = 0x102F, + AE_MSWE05K = 0x1030, + AE_MSWE06A = 0x1031, + AE_MSWE06B = 0x1032, + AE_MSWE06C = 0x1033, + AE_MSWE06D = 0x1034, + AE_MSWE06E = 0x1035, + AE_MSWE06F = 0x1036, + AE_MSWE06G = 0x1037, + AE_MSWE06H = 0x1038, + AE_MSWE06J = 0x1039, + AE_MSWE06K = 0x103A, + AE_MSWE06L = 0x103B, + AE_MSWE06M = 0x103C, + AE_MSWE06N = 0x103D, + AE_MSWE06O = 0x103E, + AE_MSWE07A = 0x103F, + AE_MSWE07B = 0x1040, + AE_MSWE07C = 0x1041, + AE_MSWE07D = 0x1042, + AE_MSWE07E = 0x1043, + AE_MSWE07F = 0x1044, + AE_MSWE07G = 0x1045, + AE_MSWE07H = 0x1046, + AE_MSWE07J = 0x1047, + AE_MSWE07K = 0x1048, + AE_MSWE08A = 0x1049, + AE_MSWE08B = 0x104A, + AE_MSWE08C = 0x104B, + AE_MSWE08D = 0x104C, + AE_MSWE08E = 0x104D, + AE_MSWE08F = 0x104E, + AE_MSWE08G = 0x104F, + AE_MSWE08H = 0x1050, + AE_MSWE08J = 0x1051, + AE_MSWE08K = 0x1052, + AE_MSWE08L = 0x1053, + AE_MSWE08M = 0x1054, + AE_MSWE08N = 0x1055, + AE_MSWE09A = 0x1056, + AE_MSWE09B = 0x1057, + AE_MSWE09C = 0x1058, + AE_MSWE09E = 0x1059, + AE_MSWE09F = 0x105A, + AE_MSWE09G = 0x105B, + AE_MSWE09H = 0x105C, + AE_MSWE10A = 0x105D, + AE_MSWE10B = 0x105E, + AE_MSWE10C = 0x105F, + AE_MSWE10D = 0x1060, + AE_MSWE10E = 0x1061, + AE_MSWE10F = 0x1062, + AE_MSWE10G = 0x1063, + AE_MSWE10H = 0x1064, + AE_MSWE10J = 0x1065, + AE_MSWE10K = 0x1066, + AE_MSWE10L = 0x1067, + AE_MSWE10N = 0x1068, + AE_MSWE11A = 0x1069, + AE_MSWE11B = 0x106A, + AE_MSWE11C = 0x106B, + AE_MSWE11D = 0x106C, + AE_MSWE11E = 0x106D, + AE_MSWE11F = 0x106E, + AE_MSWE11G = 0x106F, + AE_MSWE11H = 0x1070, + AE_MSWE11J = 0x1071, + AE_MSWE12A = 0x1072, + AE_MSWE12B = 0x1073, + AE_MSWE12C = 0x1074, + AE_MSWE12D = 0x1075, + AE_MSWE12E = 0x1076, + AE_MSWE12F = 0x1077, + AE_MSWE12G = 0x1078, + AE_MSWE12H = 0x1079, + AE_MSWE12J = 0x107A, + AE_MSWE12K = 0x107B, + AE_MSWE12L = 0x107C, + AE_MSWE12M = 0x107D, + AE_MSWE12N = 0x107E, + AE_MSWE12O = 0x107F, + AE_MSWE12P = 0x1080, + AE_MSWE12Q = 0x1081, + AE_MSWE12R = 0x1082, + AE_MSWE12S = 0x1083, + AE_MSWE12T = 0x1084, + AE_MSWE12U = 0x1085, + AE_MSWE13A = 0x1086, + AE_MSWE13B = 0x1087, + AE_MSWE13C = 0x1088, + AE_MSWE13D = 0x1089, + AE_MSWE13E = 0x108A, + AE_MSWE13F = 0x108B, + AE_MSWE13G = 0x108C, + AE_MSWE14A = 0x108D, + AE_MSWE14B = 0x108E, + AE_MSWE14C = 0x108F, + AE_MSWE14D = 0x1090, + AE_MSWE14E = 0x1091, + AE_MSWE14F = 0x1092, + AE_MSWE14G = 0x1093, + AE_MSWE14H = 0x1094, + AE_MSWE14J = 0x1095, + AE_MSWE14K = 0x1096, + AE_MSWE14L = 0x1097, + AE_MSWE14N = 0x1098, + AE_MTEN01A = 0x1099, + AE_MTEN01B = 0x109A, + AE_MTEN01C = 0x109B, + AE_MTEN01D = 0x109C, + AE_MTEN01E = 0x109D, + AE_MTEN01F = 0x109E, + AE_MTEN01G = 0x109F, + AE_MTEN01H = 0x10A0, + AE_MTEN01J = 0x10A1, + AE_MTEN02A = 0x10A2, + AE_MTEN02B = 0x10A3, + AE_MTEN02C = 0x10A4, + AE_MTEN02D = 0x10A5, + AE_MTEN02E = 0x10A6, + AE_MTEN02F = 0x10A7, + AE_MTEN03B = 0x10A8, + AE_MTEN03D = 0x10A9, + AE_MTEN03M = 0x10AA, + AE_MTG01A = 0x10AB, + AE_MTG01B = 0x10AC, + AE_MTG01C = 0x10AD, + AE_MTG01D = 0x10AE, + AE_MTG01E = 0x10AF, + AE_MTG01F = 0x10B0, + AE_MTG01G = 0x10B1, + AE_MTG01H = 0x10B2, + AE_MTG02A = 0x10B3, + AE_MTG02B = 0x10B4, + AE_MTG02C = 0x10B5, + AE_MTG02D = 0x10B6, + AE_MTG02E = 0x10B7, + AE_MTG02F = 0x10B8, + AE_MTOR01A = 0x10B9, + AE_MTOR01B = 0x10BA, + AE_MTOR01C = 0x10BB, + AE_MTOR01D = 0x10BC, + AE_MTOR01E = 0x10BD, + AE_MTOR01F = 0x10BE, + AE_MTOR01G = 0x10BF, + AE_MTOR01H = 0x10C0, + AE_MTOR01J = 0x10C1, + AE_MTOR01K = 0x10C2, + AE_MTOR01L = 0x10C3, + AE_MTOR02A = 0x10C4, + AE_MTOR02B = 0x10C5, + AE_MTOR02C = 0x10C6, + AE_MTOR02D = 0x10C7, + AE_MTOR02E = 0x10C8, + AE_MTOR03A = 0x10C9, + AE_MTOR03B = 0x10CA, + AE_MTOR04A = 0x10CB, + AE_MTOR04B = 0x10CC, + AE_MTOR04C = 0x10CD, + AE_MTOR04D = 0x10CE, + AE_MTOR04E = 0x10CF, + AE_MTOR04F = 0x10D0, + AE_MTOR04G = 0x10D1, + AE_MTOR04H = 0x10D2, + AE_MTOR04J = 0x10D3, + AE_MTOR04K = 0x10D4, + AE_MTOR04L = 0x10D5, + AE_MTOR04M = 0x10D6, + AE_MTOR05A = 0x10D7, + AE_MTOR05B = 0x10D8, + AE_MTOR05C = 0x10D9, + AE_MTOR05D = 0x10DA, + AE_MTOR05E = 0x10DB, + AE_MTOR05F = 0x10DC, + AE_MTOR05G = 0x10DD, + AE_MTOR05H = 0x10DE, + AE_MTOR05J = 0x10DF, + AE_MTOR06A = 0x10E0, + AE_MTOR06B = 0x10E1, + AE_MTOR06C = 0x10E2, + AE_MTOR06D = 0x10E3, + AE_MTOR06E = 0x10E4, + AE_MTOR06F = 0x10E5, + AE_MTOR06G = 0x10E6, + AE_MTOR06H = 0x10E7, + AE_MTOR06J = 0x10E8, + AE_MTOR06K = 0x10E9, + AE_MTOR06L = 0x10EA, + AE_MTOR06M = 0x10EB, + AE_MTOR06N = 0x10EC, + AE_MTOR07A = 0x10ED, + AE_MTOR07B = 0x10EE, + AE_MTOR07C = 0x10EF, + AE_MTOR07D = 0x10F0, + AE_MTOR07E = 0x10F1, + AE_MTOR07F = 0x10F2, + AE_MTOR07G = 0x10F3, + AE_MTOR07H = 0x10F4, + AE_MTOR07J = 0x10F5, + AE_MTOR07K = 0x10F6, + AE_MTOR07L = 0x10F7, + AE_MTOR07M = 0x10F8, + AE_MTOR07N = 0x10F9, + AE_MTOR07O = 0x10FA, + AE_MTRU01A = 0x10FB, + AE_MTRU01B = 0x10FC, + AE_MTRU01C = 0x10FD, + AE_MTRU01D = 0x10FE, + AE_MTRU01E = 0x10FF, + AE_MTRU01F = 0x1100, + AE_MTRU01G = 0x1101, + AE_MTRU01H = 0x1102, + AE_MTRU01J = 0x1103, + AE_MTRU01K = 0x1104, + AE_MTRU01L = 0x1105, + AE_MTRU01M = 0x1106, + AE_MTRU01N = 0x1107, + AE_MTRU01O = 0x1108, + AE_MTRU01P = 0x1109, + AE_MTRU02A = 0x110A, + AE_MTRU02B = 0x110B, + AE_MTRU02C = 0x110C, + AE_MTRU02D = 0x110D, + AE_MTRU02E = 0x110E, + AE_MTRU02F = 0x110F, + AE_MTRU03A = 0x1110, + AE_MTRU03B = 0x1111, + AE_MTRU03C = 0x1112, + AE_MTRU03D = 0x1113, + AE_MTRU03E = 0x1114, + AE_MWUZ00A = 0x1115, + AE_MWUZ00B = 0x1116, + AE_MWUZ00C = 0x1117, + AE_MWUZ00D = 0x1118, + AE_MWUZ00E = 0x1119, + AE_MWUZ00F = 0x111A, + AE_MWUZ00G = 0x111B, + AE_MWUZ00H = 0x111C, + AE_MWUZ00J = 0x111D, + AE_MWUZ01A = 0x111E, + AE_MWUZ01B = 0x111F, + AE_MWUZ01C = 0x1120, + AE_MWUZ01D = 0x1121, + AE_MWUZ01E = 0x1122, + AE_MWUZ01F = 0x1123, + AE_MWUZ01G = 0x1124, + AE_MWUZ01H = 0x1125, + AE_MWUZ01J = 0x1126, + AE_MWUZ01K = 0x1127, + AE_MWUZ02A = 0x1128, + AE_MWUZ02B = 0x1129, + AE_MWUZ02C = 0x112A, + AE_MWUZ02D = 0x112B, + AE_MWUZ02E = 0x112C, + AE_MWUZ02F = 0x112D, + AE_MWUZ02G = 0x112E, + AE_MWUZ02H = 0x112F, + AE_MWUZ02J = 0x1130, + AE_MWUZ02K = 0x1131, + AE_MWUZ03A = 0x1132, + AE_MWUZ03B = 0x1133, + AE_MWUZ03C = 0x1134, + AE_MWUZ03D = 0x1135, + AE_MWUZ03E = 0x1136, + AE_MWUZ03F = 0x1137, + AE_MWUZ03G = 0x1138, + AE_MWUZ03H = 0x1139, + AE_MWUZ03J = 0x113A, + AE_MWUZ03K = 0x113B, + AE_MWUZ03L = 0x113C, + AE_MWUZ04A = 0x113D, + AE_MWUZ04B = 0x113E, + AE_MWUZ04C = 0x113F, + AE_MWUZ04D = 0x1140, + AE_MWUZ04E = 0x1141, + AE_MWUZ04F = 0x1142, + AE_MWUZ04G = 0x1143, + AE_MWUZ04H = 0x1144, + AE_MWUZ05A = 0x1145, + AE_MWUZ05B = 0x1146, + AE_MWUZ05C = 0x1147, + AE_MWUZ05D = 0x1148, + AE_MWUZ05E = 0x1149, + AE_MWUZ05F = 0x114A, + AE_MWUZ05G = 0x114B, + AE_MWUZ05H = 0x114C, + AE_MWUZ05J = 0x114D, + AE_MWUZ06A = 0x114E, + AE_MWUZ06B = 0x114F, + AE_MWUZ06C = 0x1150, + AE_MWUZ06D = 0x1151, + AE_MWUZ06E = 0x1152, + AE_MWUZ06F = 0x1153, + AE_MWUZ06G = 0x1154, + AE_MWUZ06H = 0x1155, + AE_MWUZ06J = 0x1156, + AE_MWUZ06K = 0x1157, + AE_MWUZ06L = 0x1158, + AE_MWUZ06M = 0x1159, + AE_MWUZ06N = 0x115A, + AE_MWUZ07A = 0x115B, + AE_MWUZ07B = 0x115C, + AE_MWUZ07C = 0x115D, + AE_MWUZ07D = 0x115E, + AE_MWUZ07E = 0x115F, + AE_MWUZ08B = 0x1160, + AE_MWUZ08C = 0x1161, + AE_MWUZ08D = 0x1162, + AE_MWUZ08F = 0x1163, + AE_MWUZ09E = 0x1164, + AE_MWUZ09F = 0x1165, + AE_MWUZ09H = 0x1166, + AE_MWUZ09J = 0x1167, + AE_MZAHN1A = 0x1168, + AE_MZAHN1B = 0x1169, + AE_MZAHN1C = 0x116A, + AE_MZAHN1D = 0x116B, + AE_MZAHN1E = 0x116C, + AE_MZAHN1F = 0x116D, + AE_MZAHN1G = 0x116E, + AE_MZAHN1H = 0x116F, + AE_MZAHN1J = 0x1170, + AE_MZAHN2A = 0x1171, + AE_MZAHN2D = 0x1172, + AE_MZAHN3A = 0x1173, + AE_MZAHN3B = 0x1174, + AE_MZAHN4A = 0x1175, + AE_MZAHN4D = 0x1176, + AE_MZAHN5A = 0x1177, + AE_MZAHN5B = 0x1178, + AE_MZAHN6A = 0x1179, + AE_MZAHN6D = 0x117A, + AE_MZAHN7D = 0x117B, + AE_MZAHN8D = 0x117C, + AE_MZAHN9D = 0x117D, + AE_MZER01A = 0x117E, + AE_MZER01B = 0x117F, + AE_MZER01C = 0x1180, + AE_MZER01D = 0x1181, + AE_MZER01E = 0x1182, + AE_MZER01F = 0x1183, + AE_MZER01G = 0x1184, + AE_MZER02A = 0x1185, + AE_MZER02B = 0x1186, + AE_MZER02C = 0x1187, + AE_MZER02D = 0x1188, + AE_MZER02E = 0x1189, + AE_MZER02F = 0x118A, + AE_MZER02G = 0x118B, + AE_MZER02H = 0x118C, + AE_MZER02J = 0x118D, + AE_MZER02K = 0x118E, + AE_RADAR_LEVEL_WARNING = 0x118F, + AE_NULL_1A = 0x1190, + AE_NULL_1B = 0x1191, + AE_NULL_2A = 0x1192, + AE_NULL_2B = 0x1193, + AE__OGLOC_DOORBELL = 0x1194, + AE__OGLOC_WINDOW_RATTLE_BANG = 0x1195, + AE__BET_ZERO = 0x1196, + AE__INCREASE_BET = 0x1197, + AE__LOSE = 0x1198, + AE__NO_CASH = 0x1199, + AE__PLACEBET = 0x119A, + AE__WIN = 0x119B, + AE_PIMP_CUSTOMER_SEX = 0x119C, + AE_POOL_B1 = 0x119D, + AE_POOL_B2 = 0x119E, + AE_POOL_B3 = 0x119F, + AE_POOL_B4 = 0x11A0, + AE_POOL_B5 = 0x11A1, + AE_POOL_B6 = 0x11A2, + AE__POOL_BALL_HIT_BALL_1 = 0x11A3, + AE__POOL_BALL_HIT_BALL_2 = 0x11A4, + AE__POOL_BALL_HIT_BALL_3 = 0x11A5, + AE__POOL_BALL_POT_1 = 0x11A6, + AE__POOL_BALL_POT_2 = 0x11A7, + AE__POOL_BALL_POT_3 = 0x11A8, + AE__POOL_BREAK = 0x11A9, + AE__POOL_CHALK_CUE = 0x11AA, + AE__POOL_HIT_CUSHION_1 = 0x11AB, + AE__POOL_HIT_CUSHION_2 = 0x11AC, + AE__POOL_HIT_WHITE = 0x11AD, + AE_FIT_TYRE = 0x11AE, + AE__CJ_EAT = 0x11AF, + AE__CJ_PUKE = 0x11B0, + AE_CAR_SMASH_SIGN = 0x11B1, + AE_CEILING_VENT_OPEN = 0x11B2, + AE_HELI_SLASH_PED = 0x11B3, + AE_TRAILER_HOOKUP = 0x11B4, + AE_ROT1_AA = 0x11B5, + AE_ROT1_AB = 0x11B6, + AE_ROT1_BA = 0x11B7, + AE_ROT1_BB = 0x11B8, + AE_ROT1_BC = 0x11B9, + AE_ROT1_BD = 0x11BA, + AE_ROT1_BE = 0x11BB, + AE_ROT1_DA = 0x11BC, + AE_ROT1_DB = 0x11BD, + AE_ROT1_DC = 0x11BE, + AE_ROT1_EA = 0x11BF, + AE_ROT1_EB = 0x11C0, + AE_ROT1_EC = 0x11C1, + AE_ROT1_ED = 0x11C2, + AE_ROT1_EE = 0x11C3, + AE_ROT1_EF = 0x11C4, + AE_ROT1_EG = 0x11C5, + AE_ROT1_EH = 0x11C6, + AE_ROT1_EJ = 0x11C7, + AE_ROT1_EK = 0x11C8, + AE_ROT1_EL = 0x11C9, + AE_ROT1_EM = 0x11CA, + AE_ROT1_EN = 0x11CB, + AE_ROT1_FA = 0x11CC, + AE_ROT1_FB = 0x11CD, + AE_ROT1_FC = 0x11CE, + AE_ROT1_FD = 0x11CF, + AE_ROT1_FE = 0x11D0, + AE_ROT1_FF = 0x11D1, + AE_ROT1_FG = 0x11D2, + AE_ROT1_FH = 0x11D3, + AE_ROT1_GA = 0x11D4, + AE_ROT1_GB = 0x11D5, + AE_ROT1_GC = 0x11D6, + AE_ROT1_GD = 0x11D7, + AE_ROT1_GE = 0x11D8, + AE_ROT1_GG = 0x11D9, + AE_ROT1_GH = 0x11DA, + AE_ROT1_GJ = 0x11DB, + AE_ROT1_GK = 0x11DC, + AE_ROT1_GL = 0x11DD, + AE_ROT1_GM = 0x11DE, + AE_ROT1_HA = 0x11DF, + AE_ROT1_HB = 0x11E0, + AE_ROT1_HC = 0x11E1, + AE_ROT1_HD = 0x11E2, + AE_ROT1_HE = 0x11E3, + AE_ROT1_HF = 0x11E4, + AE_ROT2_AA = 0x11E5, + AE_ROT2_AB = 0x11E6, + AE_ROT2_AD = 0x11E7, + AE_ROT2_AE = 0x11E8, + AE_ROT2_BA = 0x11E9, + AE_ROT2_BB = 0x11EA, + AE_ROT2_BC = 0x11EB, + AE_ROT2_BD = 0x11EC, + AE_ROT2_CA = 0x11ED, + AE_ROT2_CB = 0x11EE, + AE_ROT2_CC = 0x11EF, + AE_ROT2_CD = 0x11F0, + AE_ROT2_CE = 0x11F1, + AE_ROT2_CF = 0x11F2, + AE_ROT2_CG = 0x11F3, + AE_ROT2_CH = 0x11F4, + AE_ROT2_CJ = 0x11F5, + AE_ROT2_CK = 0x11F6, + AE_ROT2_CL = 0x11F7, + AE_ROT2_CM = 0x11F8, + AE_ROT2_CN = 0x11F9, + AE_ROT2_CO = 0x11FA, + AE_ROT2_CP = 0x11FB, + AE_ROT2_CQ = 0x11FC, + AE_ROT2_DA = 0x11FD, + AE_ROT2_DB = 0x11FE, + AE_ROT2_DC = 0x11FF, + AE_ROT2_DD = 0x1200, + AE_ROT2_DE = 0x1201, + AE_ROT2_DF = 0x1202, + AE_ROT2_DH = 0x1203, + AE_ROT2_DJ = 0x1204, + AE_ROT2_DK = 0x1205, + AE_ROT2_DL = 0x1206, + AE_ROT2_DM = 0x1207, + AE_ROT2_EA = 0x1208, + AE_ROT2_EB = 0x1209, + AE_ROT2_EC = 0x120A, + AE_ROT2_ED = 0x120B, + AE_ROT2_EE = 0x120C, + AE_ROT2_EF = 0x120D, + AE_ROT2_EG = 0x120E, + AE_ROT2_EH = 0x120F, + AE_ROT2_EJ = 0x1210, + AE_ROT2_EK = 0x1211, + AE_ROT2_EL = 0x1212, + AE_ROT2_EM = 0x1213, + AE_ROT2_EN = 0x1214, + AE_ROT2_EO = 0x1215, + AE_ROT2_EP = 0x1216, + AE_ROT2_EQ = 0x1217, + AE_ROT2_ER = 0x1218, + AE_ROT2_ES = 0x1219, + AE_ROT2_ET = 0x121A, + AE_ROT2_EU = 0x121B, + AE_ROT2_EV = 0x121C, + AE_ROT2_EW = 0x121D, + AE_ROT2_EX = 0x121E, + AE_ROT2_EY = 0x121F, + AE_ROT2_FA = 0x1220, + AE_ROT2_FB = 0x1221, + AE_ROT2_FC = 0x1222, + AE_ROT2_FD = 0x1223, + AE_ROT2_FE = 0x1224, + AE_ROT2_FG = 0x1225, + AE_ROT2_FH = 0x1226, + AE_ROT2_GA = 0x1227, + AE_ROT2_GB = 0x1228, + AE_ROT2_GC = 0x1229, + AE_ROT2_GD = 0x122A, + AE_ROT2_HA = 0x122B, + AE_ROT2_HB = 0x122C, + AE_ROT2_HC = 0x122D, + AE_ROT2_JA = 0x122E, + AE_ROT2_JB = 0x122F, + AE_ROT2_KA = 0x1230, + AE_ROT2_KB = 0x1231, + AE_ROT2_KC = 0x1232, + AE_ROT2_LA = 0x1233, + AE_ROT2_LB = 0x1234, + AE_ROT2_LC = 0x1235, + AE_ROT2_MA = 0x1236, + AE_ROT2_MB = 0x1237, + AE_ROT2_MC = 0x1238, + AE_ROT2_MD = 0x1239, + AE_ROT2_ME = 0x123A, + AE_ROT2_MF = 0x123B, + AE_ROT2_MG = 0x123C, + AE_ROT2_MH = 0x123D, + AE_ROT4_AA = 0x123E, + AE_ROT4_AB = 0x123F, + AE_ROT4_AC = 0x1240, + AE_ROT4_BA = 0x1241, + AE_ROT4_BB = 0x1242, + AE_ROT4_BC = 0x1243, + AE_ROT4_BD = 0x1244, + AE_ROT4_BE = 0x1245, + AE_ROT4_BF = 0x1246, + AE_ROT4_BG = 0x1247, + AE_ROT4_BH = 0x1248, + AE_ROT4_BJ = 0x1249, + AE_ROT4_CA = 0x124A, + AE_ROT4_CB = 0x124B, + AE_ROT4_CC = 0x124C, + AE_ROT4_DA = 0x124D, + AE_ROT4_DB = 0x124E, + AE_ROT4_EA = 0x124F, + AE_ROT4_EB = 0x1250, + AE_ROT4_EC = 0x1251, + AE_ROT4_ED = 0x1252, + AE_ROT4_FA = 0x1253, + AE_ROT4_FB = 0x1254, + AE_ROT4_FC = 0x1255, + AE_ROT4_FD = 0x1256, + AE_ROT4_GA = 0x1257, + AE_ROT4_GB = 0x1258, + AE_ROT4_HA = 0x1259, + AE_ROT4_HB = 0x125A, + AE_ROT4_HC = 0x125B, + AE_ROT4_JB = 0x125C, + AE_ROT4_JC = 0x125D, + AE_ROT4_JD = 0x125E, + AE_ROT4_KA = 0x125F, + AE_ROT4_KB = 0x1260, + AE_ROT4_KC = 0x1261, + AE_ROT4_KD = 0x1262, + AE_ROT4_KE = 0x1263, + AE_ROT4_KF = 0x1264, + AE_ROT4_KG = 0x1265, + AE_ROT4_KH = 0x1266, + AE_ROT4_KJ = 0x1267, + AE_ROT4_LA = 0x1268, + AE_ROT4_LB = 0x1269, + AE_ROT4_MA = 0x126A, + AE_ROT4_MB = 0x126B, + AE_ROT4_MC = 0x126C, + AE_ROT4_MD = 0x126D, + AE_ROT4_ME = 0x126E, + AE_ROT4_NA = 0x126F, + AE_ROT4_NB = 0x1270, + AE_ROT4_NC = 0x1271, + AE_ROT4_ND = 0x1272, + AE_ROT4_NE = 0x1273, + AE_ROT4_NF = 0x1274, + AE_ROT4_NG = 0x1275, + AE_ROT4_NH = 0x1276, + AE_ROT4_NJ = 0x1277, + AE_ROT4_NK = 0x1278, + AE_ROT4_NL = 0x1279, + AE_ROT4_NM = 0x127A, + AE_ROT4_NN = 0x127B, + AE_ROT4_NO = 0x127C, + AE_ROT4_NP = 0x127D, + AE_ROT4_NQ = 0x127E, + AE_ROT4_NR = 0x127F, + AE_ROT4_NS = 0x1280, + AE_ROT4_NT = 0x1281, + AE_ROT4_NU = 0x1282, + AE_ROT4_OA = 0x1283, + AE_ROT4_OD = 0x1284, + AE_ROT4_PA = 0x1285, + AE_ROT4_PB = 0x1286, + AE_ROT4_PC = 0x1287, + AE_ROT4_QA = 0x1288, + AE_ROT4_QB = 0x1289, + AE_ROT4_QC = 0x128A, + AE_ROT4_QD = 0x128B, + AE_ROT4_QE = 0x128C, + AE_ROT4_RA = 0x128D, + AE_ROT4_RB = 0x128E, + AE_ROT4_RC = 0x128F, + AE_ROT4_RD = 0x1290, + AE_ROT4_RE = 0x1291, + AE_ROT4_SA = 0x1292, + AE_ROT4_SB = 0x1293, + AE_ROT4_TA = 0x1294, + AE_ROT4_TB = 0x1295, + AE_ROT4_TC = 0x1296, + AE_ROT4_TD = 0x1297, + AE_ROT4_TE = 0x1298, + AE_ROT4_TF = 0x1299, + AE_ROT4_TG = 0x129A, + AE_ROT4_TH = 0x129B, + AE_ROT4_TJ = 0x129C, + AE_ROT4_TK = 0x129D, + AE_ROT4_TL = 0x129E, + AE_ROT4_TM = 0x129F, + AE_ROT4_UA = 0x12A0, + AE_ROT4_UB = 0x12A1, + AE_ROT4_UC = 0x12A2, + AE_ROT4_UD = 0x12A3, + AE_ROT4_ZA = 0x12A4, + AE_ROT4_ZB = 0x12A5, + AE_ROT4_ZC = 0x12A6, + AE__ROULETTE_SPIN = 0x12A7, + AE__ROULETTE_BALL_BOUNCE1 = 0x12A8, + AE__ROULETTE_BALL_BOUNCE2 = 0x12A9, + AE__ROULETTE_BALL_BOUNCE3 = 0x12AA, + AE_RYD1_AA = 0x12AB, + AE_RYD1_AB = 0x12AC, + AE_RYD1_AC = 0x12AD, + AE_RYD1_AD = 0x12AE, + AE_RYD1_AE = 0x12AF, + AE_RYD1_AF = 0x12B0, + AE_RYD1_AG = 0x12B1, + AE_RYD1_AH = 0x12B2, + AE_RYD1_AJ = 0x12B3, + AE_RYD1_BA = 0x12B4, + AE_RYD1_BB = 0x12B5, + AE_RYD1_BC = 0x12B6, + AE_RYD1_BD = 0x12B7, + AE_RYD1_BE = 0x12B8, + AE_RYD1_BF = 0x12B9, + AE_RYD1_CA = 0x12BA, + AE_RYD1_CB = 0x12BB, + AE_RYD1_CC = 0x12BC, + AE_RYD1_CD = 0x12BD, + AE_RYD1_CE = 0x12BE, + AE_RYD1_CF = 0x12BF, + AE_RYD1_DB = 0x12C0, + AE_RYD1_DC = 0x12C1, + AE_RYD1_DD = 0x12C2, + AE_RYD1_DE = 0x12C3, + AE_RYD1_DF = 0x12C4, + AE_RYD1_DG = 0x12C5, + AE_RYD1_DH = 0x12C6, + AE_RYD1_DJ = 0x12C7, + AE_RYD1_DK = 0x12C8, + AE_RYD1_DL = 0x12C9, + AE_RYD1_EA = 0x12CA, + AE_RYD1_EB = 0x12CB, + AE_RYD1_EC = 0x12CC, + AE_RYD1_ED = 0x12CD, + AE_RYD1_FA = 0x12CE, + AE_RYD1_FB = 0x12CF, + AE_RYD1_FC = 0x12D0, + AE_RYD1_GA = 0x12D1, + AE_RYD1_GB = 0x12D2, + AE_RYD1_GC = 0x12D3, + AE_RYD1_GD = 0x12D4, + AE_RYD1_GE = 0x12D5, + AE_RYD1_GF = 0x12D6, + AE_RYD1_GG = 0x12D7, + AE_RYD1_GH = 0x12D8, + AE_RYD1_GJ = 0x12D9, + AE_RYD1_GK = 0x12DA, + AE_RYD1_GL = 0x12DB, + AE_RYD1_HA = 0x12DC, + AE_RYD1_HB = 0x12DD, + AE_RYD1_JA = 0x12DE, + AE_RYD1_JB = 0x12DF, + AE_RYD1_KA = 0x12E0, + AE_RYD1_KB = 0x12E1, + AE_RYD1_KC = 0x12E2, + AE_RYD1_KD = 0x12E3, + AE_RYD1_KE = 0x12E4, + AE_RYD1_KF = 0x12E5, + AE_RYD1_KG = 0x12E6, + AE_RYD1_KH = 0x12E7, + AE_RYD1_LA = 0x12E8, + AE_RYD1_LB = 0x12E9, + AE_RYD1_LC = 0x12EA, + AE_RYD1_ZA = 0x12EB, + AE_RYD1_ZB = 0x12EC, + AE_RYD1_ZC = 0x12ED, + AE_RYD1_ZD = 0x12EE, + AE_RYD1_ZE = 0x12EF, + AE_RYD1_ZF = 0x12F0, + AE_RYD1_ZG = 0x12F1, + AE_RYD1_ZH = 0x12F2, + AE_RYD1_ZJ = 0x12F3, + AE_RYD1_ZK = 0x12F4, + AE_RYD1_ZL = 0x12F5, + AE_RYD1_ZM = 0x12F6, + AE_RYD1_ZN = 0x12F7, + AE_RYD2_AA = 0x12F8, + AE_RYD2_AB = 0x12F9, + AE_RYD2_BA = 0x12FA, + AE_RYD2_BB = 0x12FB, + AE_RYD2_BC = 0x12FC, + AE_RYD2_CA = 0x12FD, + AE_RYD2_CB = 0x12FE, + AE_RYD2_CC = 0x12FF, + AE_RYD2_CD = 0x1300, + AE_RYD2_CE = 0x1301, + AE_RYD2_CF = 0x1302, + AE_RYD2_CG = 0x1303, + AE_RYD2_CH = 0x1304, + AE_RYD2_CJ = 0x1305, + AE_RYD2_DA = 0x1306, + AE_RYD2_DB = 0x1307, + AE_RYD2_DC = 0x1308, + AE_RYD2_DD = 0x1309, + AE_RYD2_DE = 0x130A, + AE_RYD2_DF = 0x130B, + AE_RYD2_EA = 0x130C, + AE_RYD2_EB = 0x130D, + AE_RYD2_FA = 0x130E, + AE_RYD2_GA = 0x130F, + AE_RYD2_GB = 0x1310, + AE_RYD2_HA = 0x1311, + AE_RYD2_HB = 0x1312, + AE_RYD2_JA = 0x1313, + AE_RYD2_JB = 0x1314, + AE_RYD2_JC = 0x1315, + AE_RYD2_KA = 0x1316, + AE_RYD2_KB = 0x1317, + AE_RYD2_KC = 0x1318, + AE_RYD2_LA = 0x1319, + AE_RYD2_LB = 0x131A, + AE_RYD2_LC = 0x131B, + AE_RYD2_LD = 0x131C, + AE_RYD2_LE = 0x131D, + AE_RYD2_LF = 0x131E, + AE_RYD2_LG = 0x131F, + AE_RYD2_LH = 0x1320, + AE_RYD2_LJ = 0x1321, + AE_RYD2_MA = 0x1322, + AE_RYD2_MB = 0x1323, + AE_RYD2_MC = 0x1324, + AE_RYD2_MD = 0x1325, + AE_RYD2_ME = 0x1326, + AE_RYD2_MF = 0x1327, + AE_RYD2_NA = 0x1328, + AE_RYD2_NB = 0x1329, + AE_RYD2_NC = 0x132A, + AE_RYD2_ND = 0x132B, + AE_RYD2_OA = 0x132C, + AE_RYD2_OB = 0x132D, + AE_RYD2_PA = 0x132E, + AE_RYD2_PB = 0x132F, + AE_RYD2_PC = 0x1330, + AE_RYD2_PD = 0x1331, + AE_RYD2_PE = 0x1332, + AE_RYD2_PF = 0x1333, + AE_RYD2_PG = 0x1334, + AE_RYD2_QA = 0x1335, + AE_RYD2_QB = 0x1336, + AE_RYD2_QC = 0x1337, + AE_RYD2_RA = 0x1338, + AE_RYD2_RB = 0x1339, + AE_RYD2_SA = 0x133A, + AE_RYD2_SB = 0x133B, + AE_RYD2_SC = 0x133C, + AE_RYD2_SD = 0x133D, + AE_RYD2_SE = 0x133E, + AE_RYD2_SF = 0x133F, + AE_RYD2_SG = 0x1340, + AE_RYD2_SH = 0x1341, + AE_RYD2_SJ = 0x1342, + AE_RYD2_SK = 0x1343, + AE_RYD2_TA = 0x1344, + AE_RYD2_TB = 0x1345, + AE_RYD2_TC = 0x1346, + AE_RYD2_TD = 0x1347, + AE_RYD2_UA = 0x1348, + AE_RYD2_UB = 0x1349, + AE_RYD2_UC = 0x134A, + AE_RYD2_VA = 0x134B, + AE_RYD2_VB = 0x134C, + AE_RYD2_VC = 0x134D, + AE_RYD2_VD = 0x134E, + AE_RYD2_VE = 0x134F, + AE_RYD2_VF = 0x1350, + AE_RYD2_VG = 0x1351, + AE_RYD3_AA = 0x1352, + AE_RYD3_AB = 0x1353, + AE_RYD3_AC = 0x1354, + AE_RYD3_AD = 0x1355, + AE_RYD3_AE = 0x1356, + AE_RYD3_BA = 0x1357, + AE_RYD3_BB = 0x1358, + AE_RYD3_BC = 0x1359, + AE_RYD3_BD = 0x135A, + AE_RYD3_BE = 0x135B, + AE_RYD3_BF = 0x135C, + AE_RYD3_BG = 0x135D, + AE_RYD3_BH = 0x135E, + AE_RYD3_BJ = 0x135F, + AE_RYD3_CA = 0x1360, + AE_RYD3_CB = 0x1361, + AE_RYD3_CC = 0x1362, + AE_RYD3_CD = 0x1363, + AE_RYD3_DA = 0x1364, + AE_RYD3_DB = 0x1365, + AE_RYD3_DC = 0x1366, + AE_RYD3_EA = 0x1367, + AE_RYD3_FA = 0x1368, + AE_RYD3_FB = 0x1369, + AE_RYD3_GA = 0x136A, + AE_RYD3_GB = 0x136B, + AE_RYD3_GC = 0x136C, + AE_RYD3_HA = 0x136D, + AE_RYD3_HB = 0x136E, + AE_RYD3_HC = 0x136F, + AE_RYD3_HD = 0x1370, + AE_RYD3_HE = 0x1371, + AE_RYD3_HF = 0x1372, + AE_RYD3_HG = 0x1373, + AE_RYD3_HH = 0x1374, + AE_RYD3_HJ = 0x1375, + AE_RYD3_HK = 0x1376, + AE_RYD3_HL = 0x1377, + AE_RYD3_HM = 0x1378, + AE_RYD3_HN = 0x1379, + AE_RYD3_JA = 0x137A, + AE_RYD3_JB = 0x137B, + AE_RYD3_JC = 0x137C, + AE_RYD3_JD = 0x137D, + AE_RYD3_JE = 0x137E, + AE_RYD3_JF = 0x137F, + AE_RYD3_JG = 0x1380, + AE_RYD3_KA = 0x1381, + AE_RYD3_KB = 0x1382, + AE_RYD3_LA = 0x1383, + AE_RYD3_LB = 0x1384, + AE_RYD3_LC = 0x1385, + AE_RYD3_LD = 0x1386, + AE_RYD3_LE = 0x1387, + AE_RYD3_LF = 0x1388, + AE_RYD3_LG = 0x1389, + AE_RYD3_LH = 0x138A, + AE_RYD3_MA = 0x138B, + AE_RYD3_MB = 0x138C, + AE_RYD3_MC = 0x138D, + AE_RYD3_MD = 0x138E, + AE_RYD3_ME = 0x138F, + AE_RYD3_NA = 0x1390, + AE_RYD3_NB = 0x1391, + AE_RYD3_NC = 0x1392, + AE_RYD3_OA = 0x1393, + AE_RYD3_OB = 0x1394, + AE_RYD3_OC = 0x1395, + AE_RYDX_AA = 0x1396, + AE_RYDX_AB = 0x1397, + AE_RYDX_AC = 0x1398, + AE_RYDX_AD = 0x1399, + AE_RYDX_AE = 0x139A, + AE_RYDX_AF = 0x139B, + AE_RYDX_AG = 0x139C, + AE_RYDX_AH = 0x139D, + AE_RYDX_AI = 0x139E, + AE_RYDX_AJ = 0x139F, + AE_RYDX_AK = 0x13A0, + AE_RYDX_AL = 0x13A1, + AE_RYDX_AM = 0x13A2, + AE_RYDX_AN = 0x13A3, + AE_RYDX_AO = 0x13A4, + AE_RYDX_AP = 0x13A5, + AE_RYDX_AQ = 0x13A6, + AE_RYDX_AR = 0x13A7, + AE_RYDX_AS = 0x13A8, + AE_RYDX_AT = 0x13A9, + AE_RYDX_AU = 0x13AA, + AE_RYDX_BA = 0x13AB, + AE_RYDX_BB = 0x13AC, + AE_RYDX_BC = 0x13AD, + AE_RYDX_BD = 0x13AE, + AE_RYDX_BE = 0x13AF, + AE_RYDX_BF = 0x13B0, + AE_RYDX_BG = 0x13B1, + AE_RYDX_BH = 0x13B2, + AE_RYDX_BI = 0x13B3, + AE_RYDX_BJ = 0x13B4, + AE_RYDX_BK = 0x13B5, + AE_RYDX_BL = 0x13B6, + AE_RYDX_BM = 0x13B7, + AE_RYDX_BN = 0x13B8, + AE_RYDX_BO = 0x13B9, + AE_RYDX_BP = 0x13BA, + AE_RYDX_BQ = 0x13BB, + AE_RYDX_BR = 0x13BC, + AE_RYDX_BS = 0x13BD, + AE_RYDX_CA = 0x13BE, + AE_RYDX_CB = 0x13BF, + AE_RYDX_CC = 0x13C0, + AE_RYDX_CD = 0x13C1, + AE_RYDX_CE = 0x13C2, + AE_RYDX_CF = 0x13C3, + AE_RYDX_CG = 0x13C4, + AE_RYDX_CH = 0x13C5, + AE_RYDX_CI = 0x13C6, + AE_RYDX_CJ = 0x13C7, + AE_RYDX_CK = 0x13C8, + AE_RYDX_CL = 0x13C9, + AE_RYDX_CM = 0x13CA, + AE_RYDX_CN = 0x13CB, + AE_RYDX_CO = 0x13CC, + AE_RYDX_CP = 0x13CD, + AE_RYDX_CQ = 0x13CE, + AE_RYDX_CR = 0x13CF, + AE_RYDX_CS = 0x13D0, + AE_RYDX_CT = 0x13D1, + AE_RYDX_DA = 0x13D2, + AE_RYDX_DB = 0x13D3, + AE_RYDX_DC = 0x13D4, + AE_RYDX_DD = 0x13D5, + AE_RYDX_DE = 0x13D6, + AE_RYDX_DF = 0x13D7, + AE_RYDX_DG = 0x13D8, + AE_RYDX_DH = 0x13D9, + AE_RYDX_DI = 0x13DA, + AE_RYDX_DJ = 0x13DB, + AE_RYDX_DK = 0x13DC, + AE_RYDX_DL = 0x13DD, + AE_RYDX_DM = 0x13DE, + AE_RYDX_DN = 0x13DF, + AE_SCR1_AA = 0x13E0, + AE_SCR1_AB = 0x13E1, + AE_SCR1_AC = 0x13E2, + AE_SCR1_AD = 0x13E3, + AE_SCR1_AE = 0x13E4, + AE_SCR1_AF = 0x13E5, + AE_SCR1_AG = 0x13E6, + AE_SCR1_AH = 0x13E7, + AE_SCR1_AJ = 0x13E8, + AE_SCR1_AK = 0x13E9, + AE_SCR1_AL = 0x13EA, + AE_SCR1_AM = 0x13EB, + AE_SCR1_BA = 0x13EC, + AE_SCR1_BB = 0x13ED, + AE_SCR1_BC = 0x13EE, + AE_SCR1_BD = 0x13EF, + AE__SHOOTING_RANGE_TARGET_MOVE_LOOP = 0x13F0, + AE__SHOOTING_RANGE_TARGET_DROP = 0x13F1, + AE__SHOOTING_RANGE_TARGET_SHATTER_1 = 0x13F2, + AE__SHOOTING_RANGE_TARGET_SHATTER_2 = 0x13F3, + AE__SHOOTING_RANGE_TARGET_SHATTER_3 = 0x13F4, + AE__SHOOTING_RANGE_TARGET_SHATTER_4 = 0x13F5, + AE__SHOOTING_RANGE_TARGET_SHATTER_5 = 0x13F6, + AE_SHRK10A = 0x13F7, + AE_SHRK10B = 0x13F8, + AE_SHRK11A = 0x13F9, + AE_SHRK11B = 0x13FA, + AE_SHRK12A = 0x13FB, + AE_SHRK12B = 0x13FC, + AE_SHRK13A = 0x13FD, + AE_SHRK13B = 0x13FE, + AE_SHRK14A = 0x13FF, + AE_SHRK14B = 0x1400, + AE_SHRK15A = 0x1401, + AE_SHRK15B = 0x1402, + AE_SHRK16A = 0x1403, + AE_SHRK16B = 0x1404, + AE_SHRK_1A = 0x1405, + AE_SHRK_1B = 0x1406, + AE_SHRK_2A = 0x1407, + AE_SHRK_2B = 0x1408, + AE_SHRK_3A = 0x1409, + AE_SHRK_3B = 0x140A, + AE_SHRK_4A = 0x140B, + AE_SHRK_4B = 0x140C, + AE_SHRK_5A = 0x140D, + AE_SHRK_5B = 0x140E, + AE_SHRK_6A = 0x140F, + AE_SHRK_6B = 0x1410, + AE_SHRK_7A = 0x1411, + AE_SHRK_7B = 0x1412, + AE_SHRK_8A = 0x1413, + AE_SHRK_8B = 0x1414, + AE_SHRK_9A = 0x1415, + AE_SHRK_9B = 0x1416, + AE_SMO1_AA = 0x1417, + AE_SMO1_AC = 0x1418, + AE_SMO1_AD = 0x1419, + AE_SMO1_AE = 0x141A, + AE_SMO1_AF = 0x141B, + AE_SMO1_AG = 0x141C, + AE_SMO1_AH = 0x141D, + AE_SMO1_AJ = 0x141E, + AE_SMO1_BA = 0x141F, + AE_SMO1_BB = 0x1420, + AE_SMO1_BC = 0x1421, + AE_SMO1_BD = 0x1422, + AE_SMO1_BE = 0x1423, + AE_SMO1_BF = 0x1424, + AE_SMO1_BG = 0x1425, + AE_SMO1_CA = 0x1426, + AE_SMO1_CB = 0x1427, + AE_SMO1_CC = 0x1428, + AE_SMO1_CD = 0x1429, + AE_SMO1_CE = 0x142A, + AE_SMO1_CF = 0x142B, + AE_SMO1_CG = 0x142C, + AE_SMO1_CH = 0x142D, + AE_SMO1_CJ = 0x142E, + AE_SMO1_CK = 0x142F, + AE_SMO1_CL = 0x1430, + AE_SMO1_CM = 0x1431, + AE_SMO1_CN = 0x1432, + AE_SMO1_CO = 0x1433, + AE_SMO1_CP = 0x1434, + AE_SMO1_DA = 0x1435, + AE_SMO1_DB = 0x1436, + AE_SMO1_DC = 0x1437, + AE_SMO1_EA = 0x1438, + AE_SMO1_EB = 0x1439, + AE_SMO1_FA = 0x143A, + AE_SMO1_FB = 0x143B, + AE_SMO1_FC = 0x143C, + AE_SMO1_FD = 0x143D, + AE_SMO1_FE = 0x143E, + AE_SMO1_FF = 0x143F, + AE_SMO1_FG = 0x1440, + AE_SMO1_FH = 0x1441, + AE_SMO1_FJ = 0x1442, + AE_SMO1_FK = 0x1443, + AE_SMO1_FL = 0x1444, + AE_SMO1_FM = 0x1445, + AE_SMO1_GA = 0x1446, + AE_SMO1_GB = 0x1447, + AE_SMO1_GC = 0x1448, + AE_SMO1_GD = 0x1449, + AE_SMO1_GE = 0x144A, + AE_SMO1_GF = 0x144B, + AE_SMO1_HA = 0x144C, + AE_SMO1_HB = 0x144D, + AE_SMO1_HC = 0x144E, + AE_SMO1_HD = 0x144F, + AE_SMO1_HE = 0x1450, + AE_SMO1_HF = 0x1451, + AE_SMO1_HG = 0x1452, + AE_SMO1_HH = 0x1453, + AE_SMO1_JA = 0x1454, + AE_SMO1_JB = 0x1455, + AE_SMO1_JC = 0x1456, + AE_SMO1_JD = 0x1457, + AE_SMO1_JG = 0x1458, + AE_SMO1_JH = 0x1459, + AE_SMO1_JJ = 0x145A, + AE_SMO1_JK = 0x145B, + AE_SMO1_JL = 0x145C, + AE_SMO1_JM = 0x145D, + AE_SMO1_KA = 0x145E, + AE_SMO1_KB = 0x145F, + AE_SMO1_KC = 0x1460, + AE_SMO1_KD = 0x1461, + AE_SMO1_KE = 0x1462, + AE_SMO2B11 = 0x1463, + AE_SMO2_AA = 0x1464, + AE_SMO2_AB = 0x1465, + AE_SMO2_BA = 0x1466, + AE_SMO2_BB = 0x1467, + AE_SMO2_BC = 0x1468, + AE_SMO2_BD = 0x1469, + AE_SMO2_BE = 0x146A, + AE_SMO2_BF = 0x146B, + AE_SMO2_BG = 0x146C, + AE_SMO2_BH = 0x146D, + AE_SMO2_BJ = 0x146E, + AE_SMO2_BK = 0x146F, + AE_SMO2_BL = 0x1470, + AE_SMO2_CA = 0x1471, + AE_SMO2_CB = 0x1472, + AE_SMO2_CC = 0x1473, + AE_SMO2_DA = 0x1474, + AE_SMO2_DB = 0x1475, + AE_SMO2_DC = 0x1476, + AE_SMO2_EA = 0x1477, + AE_SMO2_FA = 0x1478, + AE_SMO2_FB = 0x1479, + AE_SMO2_FC = 0x147A, + AE_SMO2_FD = 0x147B, + AE_SMO2_GA = 0x147C, + AE_SMO2_GB = 0x147D, + AE_SMO2_GC = 0x147E, + AE_SMO2_GD = 0x147F, + AE_SMO2_GE = 0x1480, + AE_SMO2_GF = 0x1481, + AE_SMO2_GG = 0x1482, + AE_SMO2_GH = 0x1483, + AE_SMO2_GJ = 0x1484, + AE_SMO2_GK = 0x1485, + AE_SMO2_GL = 0x1486, + AE_SMO2_HA = 0x1487, + AE_SMO2_HB = 0x1488, + AE_SMO2_HC = 0x1489, + AE_SMO2_HD = 0x148A, + AE_SMO2_HE = 0x148B, + AE_SMO3_AA = 0x148C, + AE_SMO3_AB = 0x148D, + AE_SMO3_AC = 0x148E, + AE_SMO3_AD = 0x148F, + AE_SMO3_AE = 0x1490, + AE_SMO3_AF = 0x1491, + AE_SMO3_AG = 0x1492, + AE_SMO3_AH = 0x1493, + AE_SMO3_AJ = 0x1494, + AE_SMO3_AK = 0x1495, + AE_SMO3_AL = 0x1496, + AE_SMO3_AM = 0x1497, + AE_SMO3_BA = 0x1498, + AE_SMO3_BB = 0x1499, + AE_SMO3_BC = 0x149A, + AE_SMO3_BD = 0x149B, + AE_SMO3_BE = 0x149C, + AE_SMO3_BF = 0x149D, + AE_SMO3_BG = 0x149E, + AE_SMO3_BH = 0x149F, + AE_SMO3_CA = 0x14A0, + AE_SMO3_CB = 0x14A1, + AE_SMO3_CC = 0x14A2, + AE_SMO3_DA = 0x14A3, + AE_SMO3_DB = 0x14A4, + AE_SMO3_DC = 0x14A5, + AE_SMO3_DD = 0x14A6, + AE_SMO3_DE = 0x14A7, + AE_SMO3_EA = 0x14A8, + AE_SMO3_EB = 0x14A9, + AE_SMO3_EC = 0x14AA, + AE_SMO3_FA = 0x14AB, + AE_SMO3_FB = 0x14AC, + AE_SMO3_FC = 0x14AD, + AE_SMO3_GA = 0x14AE, + AE_SMO3_GB = 0x14AF, + AE_SMO3_GC = 0x14B0, + AE_SMO3_HA = 0x14B1, + AE_SMO3_HB = 0x14B2, + AE_SMO3_HC = 0x14B3, + AE_SMO3_JA = 0x14B4, + AE_SMO3_JB = 0x14B5, + AE_SMO3_JC = 0x14B6, + AE_SMO3_KA = 0x14B7, + AE_SMO3_KB = 0x14B8, + AE_SMO3_KC = 0x14B9, + AE_SMO3_LA = 0x14BA, + AE_SMO3_LB = 0x14BB, + AE_SMO3_LC = 0x14BC, + AE_SMO3_MA = 0x14BD, + AE_SMO3_MB = 0x14BE, + AE_SMO3_MC = 0x14BF, + AE_SMO3_NA = 0x14C0, + AE_SMO3_NB = 0x14C1, + AE_SMO3_NC = 0x14C2, + AE_SMO3_OA = 0x14C3, + AE_SMO3_OB = 0x14C4, + AE_SMO3_OC = 0x14C5, + AE_SMO3_PA = 0x14C6, + AE_SMO3_PB = 0x14C7, + AE_SMO3_PC = 0x14C8, + AE_SMO3_QA = 0x14C9, + AE_SMO3_QB = 0x14CA, + AE_SMO3_QC = 0x14CB, + AE_SMO3_QD = 0x14CC, + AE_SMO3_QE = 0x14CD, + AE_SMO3_QF = 0x14CE, + AE_SMO3_QG = 0x14CF, + AE_SMO3_QH = 0x14D0, + AE_SMO3_QJ = 0x14D1, + AE_SMO3_QK = 0x14D2, + AE_SMO3_QL = 0x14D3, + AE_SMO3_QM = 0x14D4, + AE_SMO3_QN = 0x14D5, + AE_SMO3_QO = 0x14D6, + AE_SMO3_QP = 0x14D7, + AE_SMO3_QR = 0x14D8, + AE_SMO3_RA = 0x14D9, + AE_SMO3_RB = 0x14DA, + AE_SMO3_RC = 0x14DB, + AE_SMO3_RD = 0x14DC, + AE_SMO3_RE = 0x14DD, + AE_SMO3_RF = 0x14DE, + AE_SMO3_RG = 0x14DF, + AE_SMO3_RH = 0x14E0, + AE_SMO3_SA = 0x14E1, + AE_SMO3_SB = 0x14E2, + AE_SMO3_SC = 0x14E3, + AE_SMO3_SD = 0x14E4, + AE_SMO4_AA = 0x14E5, + AE_SMO4_AB = 0x14E6, + AE_SMO4_AC = 0x14E7, + AE_SMO4_AD = 0x14E8, + AE_SMO4_AE = 0x14E9, + AE_SMO4_AF = 0x14EA, + AE_SMO4_AG = 0x14EB, + AE_SMO4_AH = 0x14EC, + AE_SMO4_AJ = 0x14ED, + AE_SMO4_AK = 0x14EE, + AE_SMO4_AL = 0x14EF, + AE_SMO4_AM = 0x14F0, + AE_SMO4_AN = 0x14F1, + AE_SMO4_AO = 0x14F2, + AE_SMO4_BA = 0x14F3, + AE_SMO4_BB = 0x14F4, + AE_SMO4_BC = 0x14F5, + AE_SMO4_BD = 0x14F6, + AE_SMO4_BE = 0x14F7, + AE_SMO4_BF = 0x14F8, + AE_SMO4_BG = 0x14F9, + AE_SMO4_BH = 0x14FA, + AE_SMO4_BJ = 0x14FB, + AE_SMO4_BK = 0x14FC, + AE_SMO4_BL = 0x14FD, + AE_SMO4_BM = 0x14FE, + AE_SMO4_BN = 0x14FF, + AE_SMO4_BO = 0x1500, + AE_SMO4_BP = 0x1501, + AE_SMO4_BQ = 0x1502, + AE_SMO4_BR = 0x1503, + AE_SMO4_CA = 0x1504, + AE_SMO4_CB = 0x1505, + AE_SMO4_CC = 0x1506, + AE_SMO4_CD = 0x1507, + AE_SMO4_CE = 0x1508, + AE_SMO4_CF = 0x1509, + AE_SMO4_DA = 0x150A, + AE_SMO4_DB = 0x150B, + AE_SMO4_DC = 0x150C, + AE_SMO4_DE = 0x150D, + AE_SMO4_DF = 0x150E, + AE_SMO4_DG = 0x150F, + AE_SMO4_DH = 0x1510, + AE_SMO4_DJ = 0x1511, + AE_SMO4_EA = 0x1512, + AE_SMO4_EB = 0x1513, + AE_SMO4_EC = 0x1514, + AE_SMO4_ED = 0x1515, + AE_SMO4_EE = 0x1516, + AE_SMO4_EF = 0x1517, + AE_SMO4_EG = 0x1518, + AE_SMO4_EH = 0x1519, + AE_SMO4_EJ = 0x151A, + AE_SMO4_EK = 0x151B, + AE_SMO4_EL = 0x151C, + AE_SMO4_EM = 0x151D, + AE_SMO4_EN = 0x151E, + AE_SMO4_EO = 0x151F, + AE_SMO4_EP = 0x1520, + AE_SMO4_EQ = 0x1521, + AE_SMO4_ER = 0x1522, + AE_SMO4_ES = 0x1523, + AE_SMO4_FA = 0x1524, + AE_SMO4_FB = 0x1525, + AE_SMO4_FC = 0x1526, + AE_SMO4_FD = 0x1527, + AE_SMO4_FE = 0x1528, + AE_SMO4_FF = 0x1529, + AE_SMO4_FG = 0x152A, + AE_SMO4_FH = 0x152B, + AE_SMO4_FJ = 0x152C, + AE_SMO4_FK = 0x152D, + AE_SMO4_FL = 0x152E, + AE_SMO4_FM = 0x152F, + AE_SMO4_GA = 0x1530, + AE_SMO4_GB = 0x1531, + AE_SMO4_GD = 0x1532, + AE_SMO4_GE = 0x1533, + AE_SMO4_GF = 0x1534, + AE_SMO4_GG = 0x1535, + AE_SMO4_GH = 0x1536, + AE_SMO4_GJ = 0x1537, + AE_SMO4_GK = 0x1538, + AE_SMO4_GL = 0x1539, + AE_SMO4_GM = 0x153A, + AE_SMO4_GN = 0x153B, + AE_SMO4_GO = 0x153C, + AE_SMO4_GP = 0x153D, + AE_SMO4_HA = 0x153E, + AE_SMO4_HB = 0x153F, + AE_SMO4_HC = 0x1540, + AE_SMO4_HD = 0x1541, + AE_SMO4_HE = 0x1542, + AE_SMO4_HF = 0x1543, + AE_SMO4_HH = 0x1544, + AE_SMO4_HJ = 0x1545, + AE_SMO4_HK = 0x1546, + AE_SMO4_HL = 0x1547, + AE_SMO4_HM = 0x1548, + AE_SMO4_HN = 0x1549, + AE_SMO4_HO = 0x154A, + AE_SMO4_HP = 0x154B, + AE_SMO4_HQ = 0x154C, + AE_SMO4_HR = 0x154D, + AE_SMO4_HS = 0x154E, + AE_SMO4_HT = 0x154F, + AE_SMO4_HU = 0x1550, + AE_SMO4_HV = 0x1551, + AE_SMO4_JA = 0x1552, + AE_SMO4_JB = 0x1553, + AE_SMO4_JC = 0x1554, + AE_SMO4_JD = 0x1555, + AE_SMO4_JE = 0x1556, + AE_SMO4_JF = 0x1557, + AE_SMO4_JG = 0x1558, + AE_SMO4_JH = 0x1559, + AE_SMO4_JJ = 0x155A, + AE_SMO4_JK = 0x155B, + AE_SMO4_JL = 0x155C, + AE_SMO4_JM = 0x155D, + AE_SMO4_JN = 0x155E, + AE_SMO4_JO = 0x155F, + AE_SMO4_JP = 0x1560, + AE_SMO4_JQ = 0x1561, + AE_SMO4_JR = 0x1562, + AE_SMO4_JS = 0x1563, + AE_SMO4_KA = 0x1564, + AE_SMO4_KB = 0x1565, + AE_SMO4_KC = 0x1566, + AE_SMO4_KD = 0x1567, + AE_SMO4_KE = 0x1568, + AE_SMO4_KF = 0x1569, + AE_SMO4_KG = 0x156A, + AE_SMOX_AA = 0x156B, + AE_SMOX_AB = 0x156C, + AE_SMOX_AC = 0x156D, + AE_SMOX_AD = 0x156E, + AE_SMOX_AE = 0x156F, + AE_SMOX_AF = 0x1570, + AE_SMOX_AG = 0x1571, + AE_SMOX_AH = 0x1572, + AE_SMOX_AI = 0x1573, + AE_SMOX_AJ = 0x1574, + AE_SMOX_AK = 0x1575, + AE_SMOX_AL = 0x1576, + AE_SMOX_AM = 0x1577, + AE_SMOX_AN = 0x1578, + AE_SMOX_AO = 0x1579, + AE_SMOX_AP = 0x157A, + AE_SMOX_AQ = 0x157B, + AE_SMOX_AR = 0x157C, + AE_SMOX_AS = 0x157D, + AE_SMOX_AT = 0x157E, + AE_SMOX_AU = 0x157F, + AE_SMOX_AV = 0x1580, + AE_SMOX_AW = 0x1581, + AE_SMOX_AX = 0x1582, + AE_SMOX_AY = 0x1583, + AE_SMOX_AZ = 0x1584, + AE_SMOX_BA = 0x1585, + AE_SMOX_BB = 0x1586, + AE_SMOX_BC = 0x1587, + AE_SMOX_BD = 0x1588, + AE_SMOX_BE = 0x1589, + AE_SMOX_BF = 0x158A, + AE_SMOX_BG = 0x158B, + AE_SMOX_BH = 0x158C, + AE_SMOX_BI = 0x158D, + AE_SMOX_BJ = 0x158E, + AE_SMOX_BK = 0x158F, + AE_SMOX_BL = 0x1590, + AE_SMOX_BM = 0x1591, + AE_SMOX_BN = 0x1592, + AE_SMOX_BO = 0x1593, + AE_SMOX_BP = 0x1594, + AE_SMOX_BQ = 0x1595, + AE_SMOX_BR = 0x1596, + AE_SMOX_BS = 0x1597, + AE_SMOX_BT = 0x1598, + AE_SMOX_BU = 0x1599, + AE_SMOX_BV = 0x159A, + AE_SMOX_BW = 0x159B, + AE_SMOX_BX = 0x159C, + AE_SMOX_BY = 0x159D, + AE_SMOX_BZ = 0x159E, + AE_SMOX_CA = 0x159F, + AE_SMOX_CB = 0x15A0, + AE_SMOX_CC = 0x15A1, + AE_SMOX_CD = 0x15A2, + AE_SMOX_CE = 0x15A3, + AE_SMOX_CF = 0x15A4, + AE_SMOX_CG = 0x15A5, + AE_SMOX_CH = 0x15A6, + AE_SMOX_CI = 0x15A7, + AE_SMOX_CJ = 0x15A8, + AE_SMOX_CK = 0x15A9, + AE_SMOX_CL = 0x15AA, + AE_SMOX_CM = 0x15AB, + AE_SMOX_CN = 0x15AC, + AE_SMOX_CO = 0x15AD, + AE_SMOX_CP = 0x15AE, + AE_SMOX_CQ = 0x15AF, + AE_SMOX_CR = 0x15B0, + AE_SMOX_CS = 0x15B1, + AE_SMOX_CT = 0x15B2, + AE_SMOX_CU = 0x15B3, + AE_SMOX_CV = 0x15B4, + AE_SMOX_CW = 0x15B5, + AE_SMOX_CX = 0x15B6, + AE_SMOX_CY = 0x15B7, + AE_SMOX_CZ = 0x15B8, + AE_SMOX_DA = 0x15B9, + AE_SMOX_DB = 0x15BA, + AE_SMOX_DC = 0x15BB, + AE_SMOX_DE = 0x15BC, + AE_SMOX_DF = 0x15BD, + AE_SMOX_DG = 0x15BE, + AE_SOLO_AA = 0x15BF, + AE_CROWD_AWWS = 0x15C0, + AE_CROWD_AWWS2 = 0x15C1, + AE_CROWD_CHEERS = 0x15C2, + AE_CROWD_CHEERS2 = 0x15C3, + AE_CROWD_CHEERS3 = 0x15C4, + AE_CROWD_CHEERS_BIG = 0x15C5, + AE__STINGER_FIRE = 0x15C6, + AE__STINGER_RELOAD = 0x15C7, + AE_STL1_AA = 0x15C8, + AE_STL1_AB = 0x15C9, + AE_STL1_AC = 0x15CA, + AE_STL1_AD = 0x15CB, + AE_STL1_AE = 0x15CC, + AE_STL2_AA = 0x15CD, + AE_STL2_BA = 0x15CE, + AE_STL2_BB = 0x15CF, + AE_STL2_BC = 0x15D0, + AE_STL2_BD = 0x15D1, + AE_STL2_BE = 0x15D2, + AE_STL2_BF = 0x15D3, + AE_STL2_BG = 0x15D4, + AE_STL2_BH = 0x15D5, + AE_STL2_BJ = 0x15D6, + AE_STL2_BK = 0x15D7, + AE_STL2_BL = 0x15D8, + AE_STL2_BM = 0x15D9, + AE_STL2_CA = 0x15DA, + AE_STL2_CB = 0x15DB, + AE_STL2_CC = 0x15DC, + AE_STL2_CD = 0x15DD, + AE_STL2_CE = 0x15DE, + AE_STL2_CF = 0x15DF, + AE_STL2_CG = 0x15E0, + AE_STL2_DA = 0x15E1, + AE_STL2_DB = 0x15E2, + AE_STL2_DC = 0x15E3, + AE_STL2_DD = 0x15E4, + AE_STL2_DE = 0x15E5, + AE_STL2_DF = 0x15E6, + AE_STL2_DH = 0x15E7, + AE_STL2_DJ = 0x15E8, + AE_STL2_DK = 0x15E9, + AE_STL2_EA = 0x15EA, + AE_STL2_EB = 0x15EB, + AE_STL2_EC = 0x15EC, + AE_STL2_ED = 0x15ED, + AE_STL2_EE = 0x15EE, + AE_STL2_EF = 0x15EF, + AE_STL2_FA = 0x15F0, + AE_STL2_FB = 0x15F1, + AE_STL2_FC = 0x15F2, + AE_STL2_FD = 0x15F3, + AE_STL2_FE = 0x15F4, + AE_STL2_FF = 0x15F5, + AE_STL2_FG = 0x15F6, + AE_STL2_FH = 0x15F7, + AE_STL2_FJ = 0x15F8, + AE_STL2_FK = 0x15F9, + AE_STL2_FL = 0x15FA, + AE_STL2_FM = 0x15FB, + AE_STL2_FN = 0x15FC, + AE_STL2_FO = 0x15FD, + AE_STL2_FP = 0x15FE, + AE_STL2_FQ = 0x15FF, + AE_STL2_FR = 0x1600, + AE_STL2_GA = 0x1601, + AE_STL2_GB = 0x1602, + AE_STL2_HA = 0x1603, + AE_STL2_HB = 0x1604, + AE_STL2_HC = 0x1605, + AE_STL2_HD = 0x1606, + AE_STL2_HE = 0x1607, + AE_STL2_HF = 0x1608, + AE_STL2_HG = 0x1609, + AE_STL4_AA = 0x160A, + AE_STL4_AB = 0x160B, + AE_STL4_BA = 0x160C, + AE_STL4_BB = 0x160D, + AE_STL4_BC = 0x160E, + AE_STL4_BD = 0x160F, + AE_STL4_CA = 0x1610, + AE_STL4_CB = 0x1611, + AE_STL4_CC = 0x1612, + AE_STL4_DA = 0x1613, + AE_STL4_DB = 0x1614, + AE_STL4_EA = 0x1615, + AE_STL4_FA = 0x1616, + AE_STL4_FB = 0x1617, + AE_STL4_FC = 0x1618, + AE_STL4_GA = 0x1619, + AE_STL4_GB = 0x161A, + AE_STL4_GC = 0x161B, + AE_STL4_HA = 0x161C, + AE_STL4_HB = 0x161D, + AE_STL4_HC = 0x161E, + AE_STL4_JA = 0x161F, + AE_STL4_JB = 0x1620, + AE_STL4_KA = 0x1621, + AE_STL4_KB = 0x1622, + AE_STL4_LA = 0x1623, + AE_STL4_LB = 0x1624, + AE_STL4_LC = 0x1625, + AE_STL4_LD = 0x1626, + AE_STL4_LE = 0x1627, + AE_STL4_MA = 0x1628, + AE_STL4_MB = 0x1629, + AE_STL4_MC = 0x162A, + AE_STL4_MD = 0x162B, + AE_STL4_NA = 0x162C, + AE_STL4_NB = 0x162D, + AE_STL5_AA = 0x162E, + AE_STL5_AB = 0x162F, + AE_STL5_AC = 0x1630, + AE_STL5_AD = 0x1631, + AE_STL5_AE = 0x1632, + AE_STL5_AF = 0x1633, + AE_STL5_AG = 0x1634, + AE_STL5_BA = 0x1635, + AE_STL5_BB = 0x1636, + AE_STL5_BC = 0x1637, + AE_STL5_BD = 0x1638, + AE_STL5_BE = 0x1639, + AE_STL5_BF = 0x163A, + AE_STL5_BG = 0x163B, + AE_STL5_BL = 0x163C, + AE_STL5_CA = 0x163D, + AE_STL5_CF = 0x163E, + AE_STL5_DA = 0x163F, + AE_STL5_DB = 0x1640, + AE_STL5_DC = 0x1641, + AE_STL5_DD = 0x1642, + AE_STL5_DE = 0x1643, + AE_STL5_DF = 0x1644, + AE_STL5_ED = 0x1645, + AE_STL5_EE = 0x1646, + AE_STL5_FA = 0x1647, + AE_STL5_FC = 0x1648, + AE_STL5_FD = 0x1649, + AE_STL5_FE = 0x164A, + AE_STL5_FF = 0x164B, + AE_STL5_FG = 0x164C, + AE_STL5_FH = 0x164D, + AE_STL5_FJ = 0x164E, + AE_STL5_FK = 0x164F, + AE_STL5_FN = 0x1650, + AE_STL5_FO = 0x1651, + AE_STL5_FP = 0x1652, + AE_STL5_FQ = 0x1653, + AE_STL5_FR = 0x1654, + AE_STL5_HA = 0x1655, + AE_STL5_HB = 0x1656, + AE_STL5_HC = 0x1657, + AE_STL5_HD = 0x1658, + AE_STL5_HE = 0x1659, + AE_STL5_HF = 0x165A, + AE_STL5_HG = 0x165B, + AE_SWE1_AA = 0x165C, + AE_SWE1_AB = 0x165D, + AE_SWE1_AC = 0x165E, + AE_SWE1_AD = 0x165F, + AE_SWE1_AE = 0x1660, + AE_SWE1_AF = 0x1661, + AE_SWE1_AG = 0x1662, + AE_SWE1_AH = 0x1663, + AE_SWE1_AJ = 0x1664, + AE_SWE1_AK = 0x1665, + AE_SWE1_AL = 0x1666, + AE_SWE1_AM = 0x1667, + AE_SWE1_AN = 0x1668, + AE_SWE1_AO = 0x1669, + AE_SWE1_AP = 0x166A, + AE_SWE1_AQ = 0x166B, + AE_SWE1_AR = 0x166C, + AE_SWE1_AS = 0x166D, + AE_SWE1_AT = 0x166E, + AE_SWE1_AU = 0x166F, + AE_SWE1_AV = 0x1670, + AE_SWE1_AW = 0x1671, + AE_SWE1_AX = 0x1672, + AE_SWE1_BA = 0x1673, + AE_SWE1_BB = 0x1674, + AE_SWE1_BC = 0x1675, + AE_SWE1_BD = 0x1676, + AE_SWE1_BE = 0x1677, + AE_SWE1_BF = 0x1678, + AE_SWE1_BG = 0x1679, + AE_SWE1_BH = 0x167A, + AE_SWE1_BJ = 0x167B, + AE_SWE1_BK = 0x167C, + AE_SWE1_BL = 0x167D, + AE_SWE1_BM = 0x167E, + AE_SWE1_BN = 0x167F, + AE_SWE1_BO = 0x1680, + AE_SWE1_BP = 0x1681, + AE_SWE1_BQ = 0x1682, + AE_SWE1_BR = 0x1683, + AE_SWE1_BS = 0x1684, + AE_SWE1_BT = 0x1685, + AE_SWE1_BU = 0x1686, + AE_SWE1_BX = 0x1687, + AE_SWE1_CA = 0x1688, + AE_SWE1_CB = 0x1689, + AE_SWE1_SA = 0x168A, + AE_SWE1_SB = 0x168B, + AE_SWE1_TA = 0x168C, + AE_SWE1_TB = 0x168D, + AE_SWE1_TC = 0x168E, + AE_SWE1_TD = 0x168F, + AE_SWE1_TE = 0x1690, + AE_SWE1_TF = 0x1691, + AE_SWE1_UA = 0x1692, + AE_SWE1_UB = 0x1693, + AE_SWE1_UC = 0x1694, + AE_SWE1_VA = 0x1695, + AE_SWE1_VB = 0x1696, + AE_SWE1_VC = 0x1697, + AE_SWE1_WA = 0x1698, + AE_SWE1_WB = 0x1699, + AE_SWE1_WC = 0x169A, + AE_SWE1_XA = 0x169B, + AE_SWE1_XB = 0x169C, + AE_SWE1_YA = 0x169D, + AE_SWE1_YB = 0x169E, + AE_SWE1_YC = 0x169F, + AE_SWE1_YD = 0x16A0, + AE_SWE1_YE = 0x16A1, + AE_SWE1_YF = 0x16A2, + AE_SWE1_YG = 0x16A3, + AE_SWE1_YH = 0x16A4, + AE_SWE1_YJ = 0x16A5, + AE_SWE1_YK = 0x16A6, + AE_SWE1_YL = 0x16A7, + AE_SWE1_YM = 0x16A8, + AE_SWE1_YN = 0x16A9, + AE_SWE1_YO = 0x16AA, + AE_SWE1_YP = 0x16AB, + AE_SWE1_YQ = 0x16AC, + AE_SWE1_YR = 0x16AD, + AE_SWE1_YS = 0x16AE, + AE_SWE1_YT = 0x16AF, + AE_SWE1_YU = 0x16B0, + AE_SWE1_YV = 0x16B1, + AE_SWE1_YW = 0x16B2, + AE_SWE1_YX = 0x16B3, + AE_SWE1_YY = 0x16B4, + AE_SWE1_ZA = 0x16B5, + AE_SWE1_ZB = 0x16B6, + AE_SWE1_ZC = 0x16B7, + AE_SWE1_ZD = 0x16B8, + AE_SWE1_ZE = 0x16B9, + AE_SWE1_ZF = 0x16BA, + AE_SWE2_AA = 0x16BB, + AE_SWE2_BA = 0x16BC, + AE_SWE2_BB = 0x16BD, + AE_SWE2_BC = 0x16BE, + AE_SWE2_BD = 0x16BF, + AE_SWE2_BE = 0x16C0, + AE_SWE2_BF = 0x16C1, + AE_SWE2_BG = 0x16C2, + AE_SWE2_BH = 0x16C3, + AE_SWE2_BJ = 0x16C4, + AE_SWE2_BK = 0x16C5, + AE_SWE2_BL = 0x16C6, + AE_SWE2_BM = 0x16C7, + AE_SWE2_CA = 0x16C8, + AE_SWE2_CB = 0x16C9, + AE_SWE2_CC = 0x16CA, + AE_SWE2_DA = 0x16CB, + AE_SWE2_DB = 0x16CC, + AE_SWE2_DC = 0x16CD, + AE_SWE2_DD = 0x16CE, + AE_SWE2_EA = 0x16CF, + AE_SWE2_EB = 0x16D0, + AE_SWE2_EC = 0x16D1, + AE_SWE2_ED = 0x16D2, + AE_SWE2_EE = 0x16D3, + AE_SWE2_FA = 0x16D4, + AE_SWE2_FB = 0x16D5, + AE_SWE2_FC = 0x16D6, + AE_SWE2_FD = 0x16D7, + AE_SWE2_FE = 0x16D8, + AE_SWE2_GA = 0x16D9, + AE_SWE2_GB = 0x16DA, + AE_SWE2_GC = 0x16DB, + AE_SWE2_GD = 0x16DC, + AE_SWE2_GE = 0x16DD, + AE_SWE2_HA = 0x16DE, + AE_SWE2_HB = 0x16DF, + AE_SWE2_HC = 0x16E0, + AE_SWE2_HD = 0x16E1, + AE_SWE2_HE = 0x16E2, + AE_SWE2_HF = 0x16E3, + AE_SWE2_HG = 0x16E4, + AE_SWE2_JA = 0x16E5, + AE_SWE2_JB = 0x16E6, + AE_SWE2_JC = 0x16E7, + AE_SWE2_KA = 0x16E8, + AE_SWE2_KB = 0x16E9, + AE_SWE2_KC = 0x16EA, + AE_SWE2_LA = 0x16EB, + AE_SWE2_LB = 0x16EC, + AE_SWE2_LC = 0x16ED, + AE_SWE2_MA = 0x16EE, + AE_SWE2_MB = 0x16EF, + AE_SWE2_MC = 0x16F0, + AE_SWE2_MD = 0x16F1, + AE_SWE2_ME = 0x16F2, + AE_SWE2_MF = 0x16F3, + AE_SWE2_MG = 0x16F4, + AE_SWE2_MH = 0x16F5, + AE_SWE2_MJ = 0x16F6, + AE_SWE2_NA = 0x16F7, + AE_SWE2_NB = 0x16F8, + AE_SWE2_NC = 0x16F9, + AE_SWE2_ND = 0x16FA, + AE_SWE2_NE = 0x16FB, + AE_SWE2_NF = 0x16FC, + AE_SWE2_NG = 0x16FD, + AE_SWE2_NH = 0x16FE, + AE_SWE2_OA = 0x16FF, + AE_SWE2_OB = 0x1700, + AE_SWE2_OC = 0x1701, + AE_SWE2_OD = 0x1702, + AE_SWE2_OE = 0x1703, + AE_SWE2_OF = 0x1704, + AE_SWE2_OG = 0x1705, + AE_SWE2_OH = 0x1706, + AE_SWE2_OJ = 0x1707, + AE_SWE2_PA = 0x1708, + AE_SWE2_PB = 0x1709, + AE_SWE2_PC = 0x170A, + AE_SWE2_PD = 0x170B, + AE_SWE2_PE = 0x170C, + AE_SWE3_AA = 0x170D, + AE_SWE3_AB = 0x170E, + AE_SWE3_AC = 0x170F, + AE_SWE3_AD = 0x1710, + AE_SWE3_AE = 0x1711, + AE_SWE3_AF = 0x1712, + AE_SWE3_AH = 0x1713, + AE_SWE3_AJ = 0x1714, + AE_SWE3_AK = 0x1715, + AE_SWE3_BA = 0x1716, + AE_SWE3_BB = 0x1717, + AE_SWE3_BC = 0x1718, + AE_SWE3_BD = 0x1719, + AE_SWE3_BE = 0x171A, + AE_SWE3_BF = 0x171B, + AE_SWE3_BG = 0x171C, + AE_SWE3_BH = 0x171D, + AE_SWE3_BJ = 0x171E, + AE_SWE3_BK = 0x171F, + AE_SWE3_CA = 0x1720, + AE_SWE3_CB = 0x1721, + AE_SWE3_CC = 0x1722, + AE_SWE3_CD = 0x1723, + AE_SWE3_CE = 0x1724, + AE_SWE3_CF = 0x1725, + AE_SWE3_CG = 0x1726, + AE_SWE3_CH = 0x1727, + AE_SWE3_CJ = 0x1728, + AE_SWE3_CK = 0x1729, + AE_SWE3_DA = 0x172A, + AE_SWE3_DB = 0x172B, + AE_SWE3_DC = 0x172C, + AE_SWE3_DD = 0x172D, + AE_SWE3_DE = 0x172E, + AE_SWE3_DF = 0x172F, + AE_SWE3_DG = 0x1730, + AE_SWE3_EA = 0x1731, + AE_SWE3_EB = 0x1732, + AE_SWE3_EC = 0x1733, + AE_SWE3_ED = 0x1734, + AE_SWE3_EE = 0x1735, + AE_SWE3_EF = 0x1736, + AE_SWE3_FA = 0x1737, + AE_SWE3_FB = 0x1738, + AE_SWE3_FC = 0x1739, + AE_SWE3_FD = 0x173A, + AE_SWE3_FE = 0x173B, + AE_SWE3_FF = 0x173C, + AE_SWE3_FG = 0x173D, + AE_SWE3_FH = 0x173E, + AE_SWE3_GA = 0x173F, + AE_SWE3_GB = 0x1740, + AE_SWE3_GC = 0x1741, + AE_SWE3_GD = 0x1742, + AE_SWE3_GE = 0x1743, + AE_SWE3_GF = 0x1744, + AE_SWE3_GG = 0x1745, + AE_SWE3_GH = 0x1746, + AE_SWE3_GJ = 0x1747, + AE_SWE3_GK = 0x1748, + AE_SWE3_GL = 0x1749, + AE_SWE3_GM = 0x174A, + AE_SWE3_GN = 0x174B, + AE_SWE3_GO = 0x174C, + AE_SWE3_HA = 0x174D, + AE_SWE3_HB = 0x174E, + AE_SWE3_HC = 0x174F, + AE_SWE3_HD = 0x1750, + AE_SWE3_HE = 0x1751, + AE_SWE3_HF = 0x1752, + AE_SWE3_HG = 0x1753, + AE_SWE3_JA = 0x1754, + AE_SWE3_JB = 0x1755, + AE_SWE3_ZZ = 0x1756, + AE_SWE4_AA = 0x1757, + AE_SWE4_AB = 0x1758, + AE_SWE4_AC = 0x1759, + AE_SWE4_AD = 0x175A, + AE_SWE4_AE = 0x175B, + AE_SWE4_AF = 0x175C, + AE_SWE4_AG = 0x175D, + AE_SWE4_AH = 0x175E, + AE_SWE4_AI = 0x175F, + AE_SWE4_AJ = 0x1760, + AE_SWE4_AK = 0x1761, + AE_SWE4_BA = 0x1762, + AE_SWE4_BB = 0x1763, + AE_SWE4_BC = 0x1764, + AE_SWE4_BD = 0x1765, + AE_SWE4_BE = 0x1766, + AE_SWE4_CA = 0x1767, + AE_SWE4_CB = 0x1768, + AE_SWE4_CC = 0x1769, + AE_SWE4_DA = 0x176A, + AE_SWE4_DB = 0x176B, + AE_SWE4_DC = 0x176C, + AE_SWE4_DD = 0x176D, + AE_SWE4_DE = 0x176E, + AE_SWE4_DF = 0x176F, + AE_SWE4_EA = 0x1770, + AE_SWE4_EB = 0x1771, + AE_SWE4_EC = 0x1772, + AE_SWE4_FA = 0x1773, + AE_SWE4_FB = 0x1774, + AE_SWE4_FC = 0x1775, + AE_SWE4_FD = 0x1776, + AE_SWE4_GA = 0x1777, + AE_SWE4_GB = 0x1778, + AE_SWE4_HA = 0x1779, + AE_SWE4_HB = 0x177A, + AE_SWE4_KA = 0x177B, + AE_SWE4_KB = 0x177C, + AE_SWE4_KC = 0x177D, + AE_SWE4_KD = 0x177E, + AE_SWE4_KE = 0x177F, + AE_SWE4_KF = 0x1780, + AE_SWE4_KG = 0x1781, + AE_SWE4_KH = 0x1782, + AE_SWE4_KI = 0x1783, + AE_SWE4_LA = 0x1784, + AE_SWE4_LB = 0x1785, + AE_SWE4_LC = 0x1786, + AE_SWE4_MA = 0x1787, + AE_SWE4_MB = 0x1788, + AE_SWE4_MC = 0x1789, + AE_SWE4_MD = 0x178A, + AE_SWE4_NA = 0x178B, + AE_SWE4_NB = 0x178C, + AE_SWE4_NC = 0x178D, + AE_SWE4_OA = 0x178E, + AE_SWE4_OB = 0x178F, + AE_SWE4_OC = 0x1790, + AE_SWE4_PA = 0x1791, + AE_SWE4_PB = 0x1792, + AE_SWE4_PC = 0x1793, + AE_SWE5_AA = 0x1794, + AE_SWE5_AB = 0x1795, + AE_SWE5_AC = 0x1796, + AE_SWE5_AD = 0x1797, + AE_SWE5_AE = 0x1798, + AE_SWE5_AF = 0x1799, + AE_SWE5_BA = 0x179A, + AE_SWE5_BB = 0x179B, + AE_SWE5_BC = 0x179C, + AE_SWE5_BD = 0x179D, + AE_SWE5_BE = 0x179E, + AE_SWE5_BF = 0x179F, + AE_SWE5_BG = 0x17A0, + AE_SWE5_BH = 0x17A1, + AE_SWE5_BI = 0x17A2, + AE_SWE5_BJ = 0x17A3, + AE_SWE5_CA = 0x17A4, + AE_SWE5_CB = 0x17A5, + AE_SWE5_CC = 0x17A6, + AE_SWE5_DA = 0x17A7, + AE_SWE5_DB = 0x17A8, + AE_SWE5_EA = 0x17A9, + AE_SWE5_EB = 0x17AA, + AE_SWE5_EC = 0x17AB, + AE_SWE5_ED = 0x17AC, + AE_SWE5_EE = 0x17AD, + AE_SWE5_FA = 0x17AE, + AE_SWE5_FB = 0x17AF, + AE_SWE5_GA = 0x17B0, + AE_SWE5_GB = 0x17B1, + AE_SWE5_GC = 0x17B2, + AE_SWE5_GD = 0x17B3, + AE_SWE5_GE = 0x17B4, + AE_SWE5_GF = 0x17B5, + AE_SWE5_GG = 0x17B6, + AE_SWE5_GH = 0x17B7, + AE_SWE5_GJ = 0x17B8, + AE_SWE5_GK = 0x17B9, + AE_SWE5_GL = 0x17BA, + AE_SWE7_AA = 0x17BB, + AE_SWE7_AB = 0x17BC, + AE_SWE7_AC = 0x17BD, + AE_SWE7_AD = 0x17BE, + AE_SWE7_AE = 0x17BF, + AE_SWE7_AF = 0x17C0, + AE_SWE7_AG = 0x17C1, + AE_SWE7_AH = 0x17C2, + AE_SWE7_BA = 0x17C3, + AE_SWE7_BB = 0x17C4, + AE_SWE7_BC = 0x17C5, + AE_SWE7_BD = 0x17C6, + AE_SWE7_BE = 0x17C7, + AE_SWE7_CA = 0x17C8, + AE_SWE7_CB = 0x17C9, + AE_SWE7_CC = 0x17CA, + AE_SWE7_DA = 0x17CB, + AE_SWE7_DB = 0x17CC, + AE_SWE7_DC = 0x17CD, + AE_SWE7_DD = 0x17CE, + AE_SWE7_DE = 0x17CF, + AE_SWE7_EA = 0x17D0, + AE_SWE7_EB = 0x17D1, + AE_SWE7_EC = 0x17D2, + AE_SWE7_ED = 0x17D3, + AE_SWE7_EE = 0x17D4, + AE_SWE7_EF = 0x17D5, + AE_SWE7_EG = 0x17D6, + AE_SWE7_EH = 0x17D7, + AE_SWE7_EJ = 0x17D8, + AE_SWE7_EK = 0x17D9, + AE_SWE7_FA = 0x17DA, + AE_SWE7_FB = 0x17DB, + AE_SWE7_GA = 0x17DC, + AE_SWE7_GB = 0x17DD, + AE_SWE7_GC = 0x17DE, + AE_SWE7_HA = 0x17DF, + AE_SWE7_HB = 0x17E0, + AE_SWE7_HC = 0x17E1, + AE_SWE7_JA = 0x17E2, + AE_SWE7_JB = 0x17E3, + AE_SWE7_JC = 0x17E4, + AE_SWE7_KA = 0x17E5, + AE_SWE7_KB = 0x17E6, + AE_SWE7_KC = 0x17E7, + AE_SWE7_LA = 0x17E8, + AE_SWE7_LB = 0x17E9, + AE_SWE7_LC = 0x17EA, + AE_SWE7_MA = 0x17EB, + AE_SWE7_MB = 0x17EC, + AE_SWE7_MC = 0x17ED, + AE_SWE7_MD = 0x17EE, + AE_SWE7_NA = 0x17EF, + AE_SWE7_NB = 0x17F0, + AE_SWE7_OA = 0x17F1, + AE_SWE7_OB = 0x17F2, + AE_SWE7_PA = 0x17F3, + AE_SWE7_PB = 0x17F4, + AE_SWE7_PC = 0x17F5, + AE_SWE7_PD = 0x17F6, + AE_SWE7_QA = 0x17F7, + AE_SWE7_QB = 0x17F8, + AE_SWE7_QC = 0x17F9, + AE_SWE7_RA = 0x17FA, + AE_SWE7_RB = 0x17FB, + AE_SWE7_RC = 0x17FC, + AE_SWE7_SA = 0x17FD, + AE_SWE7_SB = 0x17FE, + AE_SWE7_SC = 0x17FF, + AE_SWE7_TA = 0x1800, + AE_SWE7_TB = 0x1801, + AE_SWE7_TC = 0x1802, + AE_SWEX_AA = 0x1803, + AE_SWEX_AB = 0x1804, + AE_SWEX_AC = 0x1805, + AE_SWEX_AD = 0x1806, + AE_SWEX_AE = 0x1807, + AE_SWEX_AF = 0x1808, + AE_SWEX_AG = 0x1809, + AE_SWEX_AH = 0x180A, + AE_SWEX_AI = 0x180B, + AE_SWEX_AJ = 0x180C, + AE_SWEX_AK = 0x180D, + AE_SWEX_AL = 0x180E, + AE_SWEX_AM = 0x180F, + AE_SWEX_AN = 0x1810, + AE_SWEX_AO = 0x1811, + AE_SWEX_AP = 0x1812, + AE_SWEX_AQ = 0x1813, + AE_SWEX_AR = 0x1814, + AE_SWEX_AS = 0x1815, + AE_SWEX_AT = 0x1816, + AE_SWEX_AU = 0x1817, + AE_SWEX_AV = 0x1818, + AE_SWEX_AW = 0x1819, + AE_SWEX_AX = 0x181A, + AE_SWEX_AY = 0x181B, + AE_SWEX_AZ = 0x181C, + AE_SWEX_BA = 0x181D, + AE_SWEX_BB = 0x181E, + AE_SWEX_BC = 0x181F, + AE_SWEX_BD = 0x1820, + AE_SWEX_BE = 0x1821, + AE_SWEX_BF = 0x1822, + AE_SWEX_BG = 0x1823, + AE_SWEX_BH = 0x1824, + AE_SWEX_BI = 0x1825, + AE_SWEX_BJ = 0x1826, + AE_SWEX_BK = 0x1827, + AE_SWEX_BL = 0x1828, + AE_SWEX_BM = 0x1829, + AE_SWEX_BN = 0x182A, + AE_SWEX_BO = 0x182B, + AE_SWEX_BP = 0x182C, + AE_SWEX_BQ = 0x182D, + AE_SWEX_BR = 0x182E, + AE_SWEX_BS = 0x182F, + AE_SYN1_AB = 0x1830, + AE_SYN1_AC = 0x1831, + AE_SYN1_AE = 0x1832, + AE_SYN1_BA = 0x1833, + AE_SYN1_BD = 0x1834, + AE_SYN1_CB = 0x1835, + AE_SYN1_EB = 0x1836, + AE_SYN1_FB = 0x1837, + AE_SYN1_FC = 0x1838, + AE_SYN1_FD = 0x1839, + AE_SYN1_IA = 0x183A, + AE_SYN1_IB = 0x183B, + AE_SYN1_ID = 0x183C, + AE_SYN1_IF = 0x183D, + AE_SYN1_JA = 0x183E, + AE_SYN1_JB = 0x183F, + AE_SYN1_JD = 0x1840, + AE_SYN1_JE = 0x1841, + AE_SYN1_JJ = 0x1842, + AE_SYN1_JK = 0x1843, + AE_SYN1_JN = 0x1844, + AE_SYN1_JO = 0x1845, + AE_SYN1_JP = 0x1846, + AE_SYN1_JR = 0x1847, + AE_SYN1_JS = 0x1848, + AE_SYN1_JT = 0x1849, + AE_SYN1_JU = 0x184A, + AE_SYN1_JX = 0x184B, + AE_SYN1_KB = 0x184C, + AE_SYN1_LA = 0x184D, + AE_SYN1_LC = 0x184E, + AE_SYN1_YA = 0x184F, + AE_SYN1_YB = 0x1850, + AE_SYN1_YE = 0x1851, + AE_SYN1_YF = 0x1852, + AE_SYN1_YH = 0x1853, + AE_SYN1_YJ = 0x1854, + AE_SYN1_YK = 0x1855, + AE_SYN1_ZC = 0x1856, + AE_SYN1_ZD = 0x1857, + AE_SYN1_ZE = 0x1858, + AE_SYN1_ZG = 0x1859, + AE_SYN1_ZK = 0x185A, + AE_SYN1_ZL = 0x185B, + AE_SYN1_ZM = 0x185C, + AE_SYN1_ZN = 0x185D, + AE_SYN1_ZP = 0x185E, + AE_SYN1_ZQ = 0x185F, + AE_SYN1_ZR = 0x1860, + AE_SYN1_ZT = 0x1861, + AE_SYN1_ZU = 0x1862, + AE_SYN1_ZW = 0x1863, + AE_SYN1_ZX = 0x1864, + AE_SYN1_ZY = 0x1865, + AE_SYN1_ZZ = 0x1866, + AE_SYN2_AA = 0x1867, + AE_SYN2_AB = 0x1868, + AE_SYN2_AC = 0x1869, + AE_SYN2_AD = 0x186A, + AE_SYN2_BA = 0x186B, + AE_SYN2_BB = 0x186C, + AE_SYN2_BC = 0x186D, + AE_SYN2_BD = 0x186E, + AE_SYN2_BE = 0x186F, + AE_SYN2_BF = 0x1870, + AE_SYN2_CA = 0x1871, + AE_SYN2_CB = 0x1872, + AE_SYN2_CC = 0x1873, + AE_SYN2_CD = 0x1874, + AE_SYN2_CE = 0x1875, + AE_SYN2_CF = 0x1876, + AE_SYN2_CG = 0x1877, + AE_SYN2_DA = 0x1878, + AE_SYN2_DB = 0x1879, + AE_SYN2_DC = 0x187A, + AE_SYN2_DD = 0x187B, + AE_SYN2_DE = 0x187C, + AE_SYN2_DF = 0x187D, + AE_SYN2_DG = 0x187E, + AE_SYN2_EA = 0x187F, + AE_SYN2_EB = 0x1880, + AE_SYN2_EC = 0x1881, + AE_SYN2_FA = 0x1882, + AE_SYN2_FB = 0x1883, + AE_SYN2_FC = 0x1884, + AE_SYN2_FD = 0x1885, + AE_SYN2_FE = 0x1886, + AE_SYN2_FF = 0x1887, + AE_SYN2_GA = 0x1888, + AE_SYN2_GB = 0x1889, + AE_SYN2_GC = 0x188A, + AE_SYN2_GD = 0x188B, + AE_SYN2_GE = 0x188C, + AE_SYN2_GF = 0x188D, + AE_SYN2_HA = 0x188E, + AE_SYN2_HB = 0x188F, + AE_SYN2_HC = 0x1890, + AE_SYN2_HD = 0x1891, + AE_SYN2_HE = 0x1892, + AE_SYN2_HF = 0x1893, + AE_SYN2_JA = 0x1894, + AE_SYN2_JB = 0x1895, + AE_SYN2_JC = 0x1896, + AE_SYN2_JD = 0x1897, + AE_SYN2_JE = 0x1898, + AE_SYN2_JF = 0x1899, + AE_SYN2_JG = 0x189A, + AE_SYN2_JH = 0x189B, + AE_SYN2_KA = 0x189C, + AE_SYN2_KB = 0x189D, + AE_SYN2_KC = 0x189E, + AE_SYN2_KD = 0x189F, + AE_SYN2_KE = 0x18A0, + AE_SYN2_LA = 0x18A1, + AE_SYN2_LB = 0x18A2, + AE_SYN2_LC = 0x18A3, + AE_SYN2_LD = 0x18A4, + AE_SYN2_LE = 0x18A5, + AE_SYN2_LF = 0x18A6, + AE_SYN2_LG = 0x18A7, + AE_SYN2_LH = 0x18A8, + AE_SYN2_LI = 0x18A9, + AE_SYN2_LJ = 0x18AA, + AE_SYN2_LK = 0x18AB, + AE_SYN2_LL = 0x18AC, + AE_SYN2_LM = 0x18AD, + AE_SYN2_LN = 0x18AE, + AE_SYN2_LO = 0x18AF, + AE_SYN2_LP = 0x18B0, + AE_SYN2_LQ = 0x18B1, + AE_SYN2_LR = 0x18B2, + AE_SYN2_LS = 0x18B3, + AE_SYN2_LT = 0x18B4, + AE_SYN2_LU = 0x18B5, + AE_SYN3_AA = 0x18B6, + AE_SYN3_AB = 0x18B7, + AE_SYN3_AC = 0x18B8, + AE_SYN3_AD = 0x18B9, + AE_SYN3_BA = 0x18BA, + AE_SYN3_BB = 0x18BB, + AE_SYN3_BC = 0x18BC, + AE_SYN3_BD = 0x18BD, + AE_SYN3_BE = 0x18BE, + AE_SYN3_BF = 0x18BF, + AE_SYN3_BG = 0x18C0, + AE_SYN3_BH = 0x18C1, + AE_SYN3_BI = 0x18C2, + AE_SYN3_CA = 0x18C3, + AE_SYN3_CB = 0x18C4, + AE_SYN3_CC = 0x18C5, + AE_SYN3_CD = 0x18C6, + AE_SYN3_CE = 0x18C7, + AE_SYN3_CF = 0x18C8, + AE_SYN3_CG = 0x18C9, + AE_SYN3_DC = 0x18CA, + AE_SYN3_EA = 0x18CB, + AE_SYN3_EB = 0x18CC, + AE_SYN3_HJ = 0x18CD, + AE_SYN4_AA = 0x18CE, + AE_SYN4_AB = 0x18CF, + AE_SYN4_AC = 0x18D0, + AE_SYN4_AD = 0x18D1, + AE_SYN4_AE = 0x18D2, + AE_SYN4_AF = 0x18D3, + AE_SYN4_AG = 0x18D4, + AE_SYN4_AH = 0x18D5, + AE_SYN4_AJ = 0x18D6, + AE_SYN4_AK = 0x18D7, + AE_SYN4_AL = 0x18D8, + AE_SYN4_BA = 0x18D9, + AE_SYN4_BB = 0x18DA, + AE_SYN4_BC = 0x18DB, + AE_SYN5_AA = 0x18DC, + AE_SYN5_BA = 0x18DD, + AE_SYN5_BB = 0x18DE, + AE_SYN5_BC = 0x18DF, + AE_SYN5_BD = 0x18E0, + AE_SYN5_BE = 0x18E1, + AE_SYN5_BF = 0x18E2, + AE_SYN5_BG = 0x18E3, + AE_SYN5_BH = 0x18E4, + AE_SYN5_BJ = 0x18E5, + AE_SYN5_BK = 0x18E6, + AE_SYN5_BL = 0x18E7, + AE_SYN5_BM = 0x18E8, + AE_SYN5_BN = 0x18E9, + AE_SYN5_CA = 0x18EA, + AE_SYN5_CB = 0x18EB, + AE_SYN5_CC = 0x18EC, + AE_SYN5_CD = 0x18ED, + AE_SYN5_CE = 0x18EE, + AE_SYN5_CF = 0x18EF, + AE_SYN5_DA = 0x18F0, + AE_SYN5_DB = 0x18F1, + AE_SYN5_DC = 0x18F2, + AE_SYN5_DD = 0x18F3, + AE_SYN5_DE = 0x18F4, + AE_SYN5_EA = 0x18F5, + AE_SYN5_EB = 0x18F6, + AE_SYN5_EC = 0x18F7, + AE_SYN5_ED = 0x18F8, + AE_SYN5_FA = 0x18F9, + AE_SYN5_FB = 0x18FA, + AE_SYN5_GA = 0x18FB, + AE_SYN5_GB = 0x18FC, + AE_SYN5_GC = 0x18FD, + AE_SYN5_GD = 0x18FE, + AE_SYN5_GE = 0x18FF, + AE_SYN5_GF = 0x1900, + AE_SYN5_GG = 0x1901, + AE_SYN5_GH = 0x1902, + AE_SYN5_GJ = 0x1903, + AE_SYN5_GK = 0x1904, + AE_SYN5_GL = 0x1905, + AE_SYN5_GM = 0x1906, + AE_SYN5_GN = 0x1907, + AE_SYN5_GO = 0x1908, + AE_SYN5_GW = 0x1909, + AE_SYN5_GX = 0x190A, + AE_SYN5_GY = 0x190B, + AE_SYN5_GZ = 0x190C, + AE_SYN5_HA = 0x190D, + AE_SYN5_HB = 0x190E, + AE_SYN5_HC = 0x190F, + AE_SYN5_HD = 0x1910, + AE_SYN5_HE = 0x1911, + AE_SYN5_HF = 0x1912, + AE_SYN5_HG = 0x1913, + AE_SYN5_HH = 0x1914, + AE_SYN5_HJ = 0x1915, + AE_SYN5_HK = 0x1916, + AE_SYN5_HL = 0x1917, + AE_SYN5_JA = 0x1918, + AE_SYN5_JB = 0x1919, + AE_SYN5_JC = 0x191A, + AE_SYN5_KA = 0x191B, + AE_SYN5_KB = 0x191C, + AE_SYN5_KC = 0x191D, + AE_SYN5_KD = 0x191E, + AE_SYN5_KE = 0x191F, + AE_SYN7_AA = 0x1920, + AE_SYN7_AB = 0x1921, + AE_SYN7_AC = 0x1922, + AE_SYN7_AD = 0x1923, + AE_SYN7_AE = 0x1924, + AE_SYN7_BA = 0x1925, + AE_SYN7_BB = 0x1926, + AE_SYN7_BC = 0x1927, + AE_SYN7_CA = 0x1928, + AE_SYN7_CB = 0x1929, + AE_SYN7_CC = 0x192A, + AE_SYN7_DA = 0x192B, + AE_SYN7_DB = 0x192C, + AE_SYN7_DC = 0x192D, + AE_SYN7_DD = 0x192E, + AE_SYN7_DE = 0x192F, + AE_TATTOO = 0x1930, + AE_TBOX_AA = 0x1931, + AE_TBOX_AB = 0x1932, + AE_TBOX_AC = 0x1933, + AE_TBOX_AD = 0x1934, + AE_TBOX_AE = 0x1935, + AE_TBOX_AF = 0x1936, + AE_TBOX_AG = 0x1937, + AE_TBOX_AH = 0x1938, + AE_TBOX_AI = 0x1939, + AE_TBOX_AJ = 0x193A, + AE_TBOX_AK = 0x193B, + AE_TBOX_AL = 0x193C, + AE_TBOX_AM = 0x193D, + AE_TBOX_AN = 0x193E, + AE_TBOX_AO = 0x193F, + AE_TBOX_AP = 0x1940, + AE_TBOX_AQ = 0x1941, + AE_TBOX_AR = 0x1942, + AE_TBOX_AS = 0x1943, + AE_TBOX_AT = 0x1944, + AE_TBOX_AU = 0x1945, + AE_TBOX_AV = 0x1946, + AE_TBOX_AW = 0x1947, + AE_TBOX_AX = 0x1948, + AE_TBOX_AY = 0x1949, + AE_TBOX_AZ = 0x194A, + AE_TBOX_BA = 0x194B, + AE_TBOX_BB = 0x194C, + AE_TBOX_BC = 0x194D, + AE_TBOX_BD = 0x194E, + AE_TBOX_BE = 0x194F, + AE_TBOX_BF = 0x1950, + AE_TBOX_BG = 0x1951, + AE_TBOX_BH = 0x1952, + AE_TBOX_BI = 0x1953, + AE_TBOX_BJ = 0x1954, + AE_TBOX_BK = 0x1955, + AE_TBOX_BL = 0x1956, + AE_TBOX_BM = 0x1957, + AE__TEMPEST_SHIELD_LOOP = 0x1958, + AE__TEMPEST_ENEMYSHOOT = 0x1959, + AE__TEMPEST_EXPLOSION = 0x195A, + AE__TEMPEST_GAMEOVER = 0x195B, + AE__TEMPEST_HIGHLIGHT = 0x195C, + AE__TEMPEST_PICKUP = 0x195D, + AE__TEMPEST_PLAYERSHOOT = 0x195E, + AE__TEMPEST_SELECT = 0x195F, + AE__TEMPEST_WARP = 0x1960, + AE_GREEN_GOO_HUM = 0x1961, + AE_TORX_AA = 0x1962, + AE_TORX_AB = 0x1963, + AE_TORX_AC = 0x1964, + AE_TORX_AD = 0x1965, + AE_TORX_AE = 0x1966, + AE_TORX_AF = 0x1967, + AE_TORX_AG = 0x1968, + AE_TORX_AH = 0x1969, + AE_TORX_AI = 0x196A, + AE_TORX_AJ = 0x196B, + AE_TORX_AK = 0x196C, + AE_TORX_AL = 0x196D, + AE_TORX_AM = 0x196E, + AE_TORX_AN = 0x196F, + AE_TORX_AO = 0x1970, + AE_TORX_AP = 0x1971, + AE_TORX_AQ = 0x1972, + AE_TORX_AR = 0x1973, + AE_TORX_AS = 0x1974, + AE_TORX_AT = 0x1975, + AE_TORX_AU = 0x1976, + AE_TRU1_AA = 0x1977, + AE_TRU1_AB = 0x1978, + AE_TRU1_AC = 0x1979, + AE_TRU1_AD = 0x197A, + AE_TRU1_AE = 0x197B, + AE_TRU1_AF = 0x197C, + AE_TRU1_AG = 0x197D, + AE_TRU1_AH = 0x197E, + AE_TRU1_BA = 0x197F, + AE_TRU1_BB = 0x1980, + AE_TRU1_BC = 0x1981, + AE_TRU1_BD = 0x1982, + AE_TRU1_BE = 0x1983, + AE_TRU1_BF = 0x1984, + AE_TRU1_BG = 0x1985, + AE_TRU1_BH = 0x1986, + AE_TRU1_CA = 0x1987, + AE_TRU1_CB = 0x1988, + AE_TRU1_CC = 0x1989, + AE_TRU1_CD = 0x198A, + AE_TRU1_CE = 0x198B, + AE_TRU1_CF = 0x198C, + AE_TRU1_CG = 0x198D, + AE_TRU1_CH = 0x198E, + AE_TRU1_DA = 0x198F, + AE_TRU1_DB = 0x1990, + AE_TRU1_DC = 0x1991, + AE_TRU1_DD = 0x1992, + AE_TRU1_DE = 0x1993, + AE_TRU1_DF = 0x1994, + AE_TRU1_DG = 0x1995, + AE_TRU1_DH = 0x1996, + AE_TRU1_FA = 0x1997, + AE_TRU1_FB = 0x1998, + AE_TRU1_FC = 0x1999, + AE_TRU1_FD = 0x199A, + AE_TRU1_FE = 0x199B, + AE_TRU1_FF = 0x199C, + AE_TRU1_FG = 0x199D, + AE_TRU1_FH = 0x199E, + AE_TRU1_ZA = 0x199F, + AE_TRU1_ZB = 0x19A0, + AE_TRU1_ZC = 0x19A1, + AE_TRU2_AA = 0x19A2, + AE_TRU2_AB = 0x19A3, + AE_TRU2_AC = 0x19A4, + AE_TRU2_AD = 0x19A5, + AE_TRU2_AE = 0x19A6, + AE_TRU2_BA = 0x19A7, + AE_TRU2_BB = 0x19A8, + AE_TRU2_BC = 0x19A9, + AE_TRU2_CA = 0x19AA, + AE_TRU2_CB = 0x19AB, + AE_TRU2_DA = 0x19AC, + AE_TRU2_DB = 0x19AD, + AE_TRU2_DC = 0x19AE, + AE_TRU2_DD = 0x19AF, + AE_TRU2_DE = 0x19B0, + AE_TRU2_DF = 0x19B1, + AE_TRU2_EA = 0x19B2, + AE_TRU2_EB = 0x19B3, + AE_TRU2_EC = 0x19B4, + AE_TRU2_ED = 0x19B5, + AE_TRU2_EF = 0x19B6, + AE_TRU2_EG = 0x19B7, + AE_TRU2_FA = 0x19B8, + AE_TRU2_FB = 0x19B9, + AE_TRU2_FC = 0x19BA, + AE_TRU2_FD = 0x19BB, + AE_TRU2_FE = 0x19BC, + AE_TRU2_FF = 0x19BD, + AE_TRU2_FG = 0x19BE, + AE_TRU2_FH = 0x19BF, + AE_TRU2_FJ = 0x19C0, + AE_TRU2_FK = 0x19C1, + AE_TRU2_GA = 0x19C2, + AE_TRU2_GB = 0x19C3, + AE_TRU2_GC = 0x19C4, + AE_TRU2_GE = 0x19C5, + AE_TRU2_GF = 0x19C6, + AE_TRU2_GG = 0x19C7, + AE_TRU2_GH = 0x19C8, + AE_TRU2_GJ = 0x19C9, + AE_TRU2_HA = 0x19CA, + AE_TRU2_HB = 0x19CB, + AE_TRU2_HC = 0x19CC, + AE_TRU2_HD = 0x19CD, + AE_TRU2_HE = 0x19CE, + AE_TRU2_HF = 0x19CF, + AE_TRU2_HG = 0x19D0, + AE_TRU2_HH = 0x19D1, + AE_TRU2_HJ = 0x19D2, + AE_TRU2_HK = 0x19D3, + AE_TRU2_HL = 0x19D4, + AE_TRU2_HM = 0x19D5, + AE_TRU2_HN = 0x19D6, + AE_TRU2_HO = 0x19D7, + AE_TRU2_JA = 0x19D8, + AE_TRU2_JB = 0x19D9, + AE_TRU2_KA = 0x19DA, + AE_TRU2_KB = 0x19DB, + AE_TRU2_KC = 0x19DC, + AE_TRU2_KD = 0x19DD, + AE_TRU2_LA = 0x19DE, + AE_TRU2_LB = 0x19DF, + AE_TRU2_LC = 0x19E0, + AE_TRU2_MA = 0x19E1, + AE_TRU2_MB = 0x19E2, + AE_TRU2_MC = 0x19E3, + AE_TRU2_NA = 0x19E4, + AE_TRU2_NB = 0x19E5, + AE_TRU2_OA = 0x19E6, + AE_TRU2_OC = 0x19E7, + AE_TRU2_OD = 0x19E8, + AE_TRU2_OE = 0x19E9, + AE_TRU2_OF = 0x19EA, + AE_TRUX_AA = 0x19EB, + AE_TRUX_AB = 0x19EC, + AE_TRUX_AC = 0x19ED, + AE_TRUX_AD = 0x19EE, + AE_TRUX_AE = 0x19EF, + AE_TRUX_AF = 0x19F0, + AE_TRUX_AG = 0x19F1, + AE_TRUX_AH = 0x19F2, + AE_TRUX_AI = 0x19F3, + AE_TRUX_AJ = 0x19F4, + AE_TRUX_AK = 0x19F5, + AE_TRUX_AL = 0x19F6, + AE_TRUX_AM = 0x19F7, + AE_TRUX_AN = 0x19F8, + AE_TRUX_AO = 0x19F9, + AE_TRUX_AP = 0x19FA, + AE_TRUX_AQ = 0x19FB, + AE_TRUX_AR = 0x19FC, + AE_TRUX_AS = 0x19FD, + AE_TRUX_AT = 0x19FE, + AE_TRUX_AU = 0x19FF, + AE_TRUX_AV = 0x1A00, + AE_TRUX_AW = 0x1A01, + AE_TRUX_AX = 0x1A02, + AE_TRUX_BA = 0x1A03, + AE_TRUX_BB = 0x1A04, + AE_TRUX_BC = 0x1A05, + AE_TRUX_BD = 0x1A06, + AE_TRUX_BE = 0x1A07, + AE_TRUX_BF = 0x1A08, + AE_TRUX_BG = 0x1A09, + AE_TRUX_BH = 0x1A0A, + AE_TRUX_BI = 0x1A0B, + AE__BLAST_DOOR_SLIDE_LOOP = 0x1A0C, + AE__BLAST_DOOR_SLIDE_START = 0x1A0D, + AE__BLAST_DOOR_SLIDE_STOP = 0x1A0E, + AE__KEYPAD_BEEP2 = 0x1A0F, + AE__SHOOT_CONTROLS2 = 0x1A10, + AE_SECURITY_ALARM = 0x1A11, + AE_VALDED1 = 0x1A12, + AE_VALDED2 = 0x1A13, + AE_VALDED3 = 0x1A14, + AE_VALUND1 = 0x1A15, + AE_VALUND2 = 0x1A16, + AE_VANK_1 = 0x1A17, + AE_VANK_2 = 0x1A18, + AE_VANK_3 = 0x1A19, + AE_VANK_4 = 0x1A1A, + AE_V_HEY_1 = 0x1A1B, + AE_V_HEY_2 = 0x1A1C, + AE_V_HEY_3 = 0x1A1D, + AE_VCR1_AA = 0x1A1E, + AE_VCR1_AB = 0x1A1F, + AE_VCR1_AC = 0x1A20, + AE_VCR1_AD = 0x1A21, + AE_VCR1_AE = 0x1A22, + AE_VCR1_AF = 0x1A23, + AE_VCR1_AG = 0x1A24, + AE_VCR1_AH = 0x1A25, + AE_VCR1_AI = 0x1A26, + AE_VCR2_AA = 0x1A27, + AE_VCR2_AB = 0x1A28, + AE_VCR2_AC = 0x1A29, + AE_VCR2_AD = 0x1A2A, + AE_VCR2_AE = 0x1A2B, + AE_VCR2_BA = 0x1A2C, + AE_VCR2_BB = 0x1A2D, + AE_VCR2_BC = 0x1A2E, + AE_VCR2_BE = 0x1A2F, + AE_VCR2_BF = 0x1A30, + AE_VCR2_BG = 0x1A31, + AE_VCR2_BH = 0x1A32, + AE_VCR2_BJ = 0x1A33, + AE_VCR2_CA = 0x1A34, + AE_VCR2_CB = 0x1A35, + AE_VCR2_CC = 0x1A36, + AE_VCR2_CD = 0x1A37, + AE_VCR2_CE = 0x1A38, + AE_VCR2_CF = 0x1A39, + AE_VCR2_CG = 0x1A3A, + AE_VCR2_DA = 0x1A3B, + AE_VCR2_DB = 0x1A3C, + AE_VCR2_DC = 0x1A3D, + AE_VCR2_DD = 0x1A3E, + AE_VCR2_DE = 0x1A3F, + AE_DRINKS_CAN = 0x1A40, + AE_VENDING_EAT = 0x1A41, + AE__LIFT_LOOP = 0x1A42, + AE__SECURITY_ALARM = 0x1A43, + AE__LIFT_START = 0x1A44, + AE__LIFT_STOP = 0x1A45, + AE__VIDEO_POKER_BUTTON = 0x1A46, + AE__VIDEO_POKER_PAYOUT = 0x1A47, + AE_VO_AA = 0x1A48, + AE_VO_AB = 0x1A49, + AE_VO_AC = 0x1A4A, + AE_VO_AD = 0x1A4B, + AE_VO_AE = 0x1A4C, + AE_VO_AF = 0x1A4D, + AE_VO_AG = 0x1A4E, + AE_WBOX_1 = 0x1A4F, + AE_WBOX_2 = 0x1A50, + AE_WBOX_3 = 0x1A51, + AE_WBOX_4 = 0x1A52, + AE_WBOX_5 = 0x1A53, + AE_WBOX_6 = 0x1A54, + AE_WBOX_7 = 0x1A55, + AE_WBOX_8 = 0x1A56, + AE_W_BET_1 = 0x1A57, + AE_W_BET_2 = 0x1A58, + AE_W_LEND1 = 0x1A59, + AE_W_LEND2 = 0x1A5A, + AE_W_LEND3 = 0x1A5B, + AE_W_NEM_1 = 0x1A5C, + AE_W_NEM_2 = 0x1A5D, + AE_W_NEM_3 = 0x1A5E, + AE_W_NMB_1 = 0x1A5F, + AE_W_NMB_2 = 0x1A60, + AE_W_NMB_3 = 0x1A61, + AE_W_NUM10 = 0x1A62, + AE_W_NUM11 = 0x1A63, + AE_W_NUM12 = 0x1A64, + AE_W_NUM13 = 0x1A65, + AE_W_NUM14 = 0x1A66, + AE_W_NUM15 = 0x1A67, + AE_W_NUM16 = 0x1A68, + AE_W_NUM17 = 0x1A69, + AE_W_NUM18 = 0x1A6A, + AE_W_NUM19 = 0x1A6B, + AE_W_NUM20 = 0x1A6C, + AE_W_NUM21 = 0x1A6D, + AE_W_NUM22 = 0x1A6E, + AE_W_NUM23 = 0x1A6F, + AE_W_NUM24 = 0x1A70, + AE_W_NUM25 = 0x1A71, + AE_W_NUM26 = 0x1A72, + AE_W_NUM27 = 0x1A73, + AE_W_NUM28 = 0x1A74, + AE_W_NUM29 = 0x1A75, + AE_W_NUM30 = 0x1A76, + AE_W_NUM31 = 0x1A77, + AE_W_NUM32 = 0x1A78, + AE_W_NUM33 = 0x1A79, + AE_W_NUM34 = 0x1A7A, + AE_W_NUM35 = 0x1A7B, + AE_W_NUM36 = 0x1A7C, + AE_W_NUM_0 = 0x1A7D, + AE_W_NUM_1 = 0x1A7E, + AE_W_NUM_2 = 0x1A7F, + AE_W_NUM_3 = 0x1A80, + AE_W_NUM_4 = 0x1A81, + AE_W_NUM_5 = 0x1A82, + AE_W_NUM_6 = 0x1A83, + AE_W_NUM_7 = 0x1A84, + AE_W_NUM_8 = 0x1A85, + AE_W_NUM_9 = 0x1A86, + AE_W_PWIN1 = 0x1A87, + AE_W_PWIN2 = 0x1A88, + AE_W_PWIN3 = 0x1A89, + AE_W_REG_1 = 0x1A8A, + AE_W_REG_2 = 0x1A8B, + AE_W_THX_1 = 0x1A8C, + AE_W_THX_2 = 0x1A8D, + AE_W_WEEL1 = 0x1A8E, + AE_W_WEEL2 = 0x1A8F, + AE_W_WEEL3 = 0x1A90, + AE_W_WEEL4 = 0x1A91, + AE_W_WEEL5 = 0x1A92, + AE_W_WEEL6 = 0x1A93, + AE_W_WEEL7 = 0x1A94, + AE_W_WINS1 = 0x1A95, + AE_W_WINS2 = 0x1A96, + AE_W_WINS3 = 0x1A97, + AE_WUZ1_AA = 0x1A98, + AE_WUZ1_AB = 0x1A99, + AE_WUZ1_BA = 0x1A9A, + AE_WUZ1_BB = 0x1A9B, + AE_WUZ1_CA = 0x1A9C, + AE_WUZ1_CB = 0x1A9D, + AE_WUZ1_CC = 0x1A9E, + AE_WUZ1_CD = 0x1A9F, + AE_WUZ1_CE = 0x1AA0, + AE_WUZ1_CG = 0x1AA1, + AE_WUZ1_CH = 0x1AA2, + AE_WUZ1_DA = 0x1AA3, + AE_WUZ1_DB = 0x1AA4, + AE_WUZ1_DC = 0x1AA5, + AE_WUZ1_DD = 0x1AA6, + AE_WUZ1_EA = 0x1AA7, + AE_WUZ1_EB = 0x1AA8, + AE_WUZ1_EC = 0x1AA9, + AE_WUZ1_EE = 0x1AAA, + AE_WUZ1_FA = 0x1AAB, + AE_WUZ1_FB = 0x1AAC, + AE_WUZ1_FC = 0x1AAD, + AE_WUZ1_FD = 0x1AAE, + AE_WUZ1_FE = 0x1AAF, + AE_WUZ1_GA = 0x1AB0, + AE_WUZ1_GB = 0x1AB1, + AE_WUZ1_GC = 0x1AB2, + AE_WUZ1_GD = 0x1AB3, + AE_WUZ1_GE = 0x1AB4, + AE_WUZ1_GF = 0x1AB5, + AE_WUZ1_GG = 0x1AB6, + AE_WUZ1_GH = 0x1AB7, + AE_WUZ1_GJ = 0x1AB8, + AE_WUZ1_GK = 0x1AB9, + AE_WUZ1_GL = 0x1ABA, + AE_WUZ1_GM = 0x1ABB, + AE_WUZ1_HA = 0x1ABC, + AE_WUZ1_HB = 0x1ABD, + AE_WUZ1_HC = 0x1ABE, + AE_WUZ1_JA = 0x1ABF, + AE_WUZ1_JB = 0x1AC0, + AE_WUZ1_KA = 0x1AC1, + AE_WUZ1_KB = 0x1AC2, + AE_WUZ1_KC = 0x1AC3, + AE_WUZ1_KD = 0x1AC4, + AE_WUZ1_LA = 0x1AC5, + AE_WUZ1_LB = 0x1AC6, + AE_WUZ1_LC = 0x1AC7, + AE_WUZ1_LD = 0x1AC8, + AE_WUZ1_MA = 0x1AC9, + AE_WUZ1_MB = 0x1ACA, + AE_WUZ1_MC = 0x1ACB, + AE_WUZ1_MD = 0x1ACC, + AE_WUZ1_ME = 0x1ACD, + AE_WUZ1_MF = 0x1ACE, + AE_WUZ1_MG = 0x1ACF, + AE_WUZ1_MH = 0x1AD0, + AE_WUZ1_MJ = 0x1AD1, + AE_WUZ1_NA = 0x1AD2, + AE_WUZ1_NB = 0x1AD3, + AE_WUZ1_NC = 0x1AD4, + AE_WUZ1_ND = 0x1AD5, + AE_WUZ1_NE = 0x1AD6, + AE_WUZ1_NF = 0x1AD7, + AE_WUZ1_NG = 0x1AD8, + AE_WUZ1_NH = 0x1AD9, + AE_WUZ1_NJ = 0x1ADA, + AE_WUZ1_NK = 0x1ADB, + AE_WUZ1_NL = 0x1ADC, + AE_WUZ1_NM = 0x1ADD, + AE_WUZ1_NN = 0x1ADE, + AE_WUZ1_NO = 0x1ADF, + AE_WUZ1_NP = 0x1AE0, + AE_WUZ1_NQ = 0x1AE1, + AE_WUZ1_OA = 0x1AE2, + AE_WUZ1_OB = 0x1AE3, + AE_WUZ1_OC = 0x1AE4, + AE_WUZ1_OD = 0x1AE5, + AE_WUZ1_OE = 0x1AE6, + AE_WUZ1_OF = 0x1AE7, + AE_WUZ1_OG = 0x1AE8, + AE_WUZ1_OH = 0x1AE9, + AE_WUZ1_OJ = 0x1AEA, + AE_WUZ1_OK = 0x1AEB, + AE_WUZ1_OL = 0x1AEC, + AE_WUZ1_OM = 0x1AED, + AE_WUZ1_ON = 0x1AEE, + AE_WUZ1_OO = 0x1AEF, + AE_WUZ1_OP = 0x1AF0, + AE_WUZ1_OQ = 0x1AF1, + AE_WUZ1_OR = 0x1AF2, + AE_WUZ1_OS = 0x1AF3, + AE_WUZ1_PA = 0x1AF4, + AE_WUZ1_PB = 0x1AF5, + AE_WUZ1_QA = 0x1AF6, + AE_WUZ1_QB = 0x1AF7, + AE_WUZ1_QC = 0x1AF8, + AE_WUZ1_QD = 0x1AF9, + AE_WUZ1_QE = 0x1AFA, + AE_WUZ1_QF = 0x1AFB, + AE_WUZ1_QG = 0x1AFC, + AE_WUZ1_QH = 0x1AFD, + AE_WUZ1_RA = 0x1AFE, + AE_WUZ1_RB = 0x1AFF, + AE_WUZ1_RC = 0x1B00, + AE_WUZ1_RD = 0x1B01, + AE_WUZ2_AA = 0x1B02, + AE_WUZ2_AB = 0x1B03, + AE_WUZ2_AC = 0x1B04, + AE_WUZ2_BA = 0x1B05, + AE_WUZ2_BB = 0x1B06, + AE_WUZ2_BC = 0x1B07, + AE_WUZ2_CA = 0x1B08, + AE_WUZ2_CB = 0x1B09, + AE_WUZ2_CC = 0x1B0A, + AE_WUZ2_DA = 0x1B0B, + AE_WUZ2_DB = 0x1B0C, + AE_WUZ2_DC = 0x1B0D, + AE_WUZ2_EA = 0x1B0E, + AE_WUZ2_EB = 0x1B0F, + AE_WUZ2_EC = 0x1B10, + AE_WUZ2_FA = 0x1B11, + AE_WUZ2_FB = 0x1B12, + AE_WUZ2_FC = 0x1B13, + AE_WUZ2_GA = 0x1B14, + AE_WUZ2_GB = 0x1B15, + AE_WUZ2_GC = 0x1B16, + AE_WUZ2_HA = 0x1B17, + AE_WUZ2_HB = 0x1B18, + AE_WUZ2_HC = 0x1B19, + AE_WUZ2_JA = 0x1B1A, + AE_WUZ2_JB = 0x1B1B, + AE_WUZ2_JC = 0x1B1C, + AE_WUZ2_KA = 0x1B1D, + AE_WUZ2_KB = 0x1B1E, + AE_WUZ2_KC = 0x1B1F, + AE_WUZ2_LA = 0x1B20, + AE_WUZ2_LB = 0x1B21, + AE_WUZ2_LC = 0x1B22, + AE_WUZ2_MA = 0x1B23, + AE_WUZ2_MB = 0x1B24, + AE_WUZ2_MC = 0x1B25, + AE_WUZ2_NA = 0x1B26, + AE_WUZ2_NB = 0x1B27, + AE_WUZ2_NC = 0x1B28, + AE_WUZ2_OA = 0x1B29, + AE_WUZ2_OB = 0x1B2A, + AE_WUZ2_OC = 0x1B2B, + AE_WUZ2_PA = 0x1B2C, + AE_WUZ2_PB = 0x1B2D, + AE_WUZ2_PC = 0x1B2E, + AE_WUZ2_QA = 0x1B2F, + AE_WUZ2_QB = 0x1B30, + AE_WUZ2_QC = 0x1B31, + AE_WUZ2_RA = 0x1B32, + AE_WUZ2_RB = 0x1B33, + AE_WUZ2_RC = 0x1B34, + AE_WUZ2_SA = 0x1B35, + AE_WUZ2_SB = 0x1B36, + AE_WUZ2_SC = 0x1B37, + AE_WUZ2_TA = 0x1B38, + AE_WUZ2_TB = 0x1B39, + AE_WUZ2_TC = 0x1B3A, + AE_WUZ2_UA = 0x1B3B, + AE_WUZ2_UB = 0x1B3C, + AE_WUZ2_UC = 0x1B3D, + AE_WUZ2_VA = 0x1B3E, + AE_WUZ2_VB = 0x1B3F, + AE_WUZ2_VC = 0x1B40, + AE_WUZ2_WA = 0x1B41, + AE_WUZ2_WB = 0x1B42, + AE_WUZ2_WC = 0x1B43, + AE_WUZ2_XA = 0x1B44, + AE_WUZ2_XB = 0x1B45, + AE_WUZ2_XC = 0x1B46, + AE_WUZ2_XD = 0x1B47, + AE_WUZ2_XE = 0x1B48, + AE_WUZ2_XF = 0x1B49, + AE_WUZ2_YA = 0x1B4A, + AE_WUZ2_YB = 0x1B4B, + AE_WUZ2_YC = 0x1B4C, + AE_WUZ2_YD = 0x1B4D, + AE_WUZ2_YE = 0x1B4E, + AE_WUZ2_YF = 0x1B4F, + AE_WUZ2_YG = 0x1B50, + AE_WUZ2_YH = 0x1B51, + AE_WUZ2_YJ = 0x1B52, + AE_WUZ2_YK = 0x1B53, + AE_WUZ2_YL = 0x1B54, + AE_WUZ2_ZA = 0x1B55, + AE_WUZ2_ZB = 0x1B56, + AE_WUZ2_ZC = 0x1B57, + AE_WUZ2_ZD = 0x1B58, + AE_WUZ2_ZE = 0x1B59, + AE_WUZ2_ZF = 0x1B5A, + AE_WUZ2_ZG = 0x1B5B, + AE_WUZ2_ZH = 0x1B5C, + AE_WUZ2_ZJ = 0x1B5D, + AE_WUZ2_ZK = 0x1B5E, + AE_WUZ2_ZL = 0x1B5F, + AE_WUZ2_ZM = 0x1B60, + AE_WUZ2_ZN = 0x1B61, + AE_WUZ2_ZO = 0x1B62, + AE_WUZ2_ZP = 0x1B63, + AE_WUZ2_ZQ = 0x1B64, + AE_WUZ2_ZR = 0x1B65, + AE_WUZ2_ZS = 0x1B66, + AE_WUZ2_ZT = 0x1B67, + AE_WUZ2_ZU = 0x1B68, + AE_WUZ2_ZV = 0x1B69, + AE_WUZ2_ZW = 0x1B6A, + AE_WUZ2_ZX = 0x1B6B, + AE_WUZ2_ZY = 0x1B6C, + AE_WUZ2_ZZ = 0x1B6D, + AE_WUZ4_AA = 0x1B6E, + AE_WUZ4_AB = 0x1B6F, + AE_WUZ4_BA = 0x1B70, + AE_WUZ4_CA = 0x1B71, + AE_WUZ4_CB = 0x1B72, + AE_WUZ4_CC = 0x1B73, + AE_WUZ4_DA = 0x1B74, + AE_WUZ4_EA = 0x1B75, + AE_WUZ4_EB = 0x1B76, + AE_WUZ4_FA = 0x1B77, + AE_WUZ4_FB = 0x1B78, + AE_WUZ4_GA = 0x1B79, + AE_WUZ4_GB = 0x1B7A, + AE_WUZ4_GC = 0x1B7B, + AE_WUZ4_HA = 0x1B7C, + AE_WUZ4_JA = 0x1B7D, + AE_WUZ4_JB = 0x1B7E, + AE_WUZ4_JC = 0x1B7F, + AE_WUZ4_JD = 0x1B80, + AE_WUZ4_JE = 0x1B81, + AE_WUZ4_JF = 0x1B82, + AE_WUZ4_KA = 0x1B83, + AE_WUZ4_KB = 0x1B84, + AE_WUZ4_KC = 0x1B85, + AE_WUZ4_KD = 0x1B86, + AE_WUZ4_KE = 0x1B87, + AE_WUZ4_LA = 0x1B88, + AE_WUZ4_LB = 0x1B89, + AE_WUZ4_LC = 0x1B8A, + AE_WUZ4_LD = 0x1B8B, + AE_WUZ4_LE = 0x1B8C, + AE_WUZ4_MA = 0x1B8D, + AE_WUZ4_MB = 0x1B8E, + AE_WUZ4_MC = 0x1B8F, + AE_WUZ4_MD = 0x1B90, + AE_WUZ4_ME = 0x1B91, + AE_WUZ4_MF = 0x1B92, + AE_WUZ4_MH = 0x1B93, + AE_WUZ4_MJ = 0x1B94, + AE_WUZ4_NA = 0x1B95, + AE_WUZ4_NB = 0x1B96, + AE_WUZ4_NC = 0x1B97, + AE_WUZ4_NE = 0x1B98, + AE_WUZ4_NF = 0x1B99, + AE_WUZ4_OA = 0x1B9A, + AE_WUZ4_OB = 0x1B9B, + AE_WUZ4_PA = 0x1B9C, + AE_WUZ4_ZA = 0x1B9D, + AE_WUZX_AA = 0x1B9E, + AE_WUZX_AB = 0x1B9F, + AE_WUZX_AC = 0x1BA0, + AE_WUZX_AD = 0x1BA1, + AE_WUZX_AE = 0x1BA2, + AE_WUZX_AF = 0x1BA3, + AE_WUZX_AG = 0x1BA4, + AE_WUZX_AH = 0x1BA5, + AE_WUZX_AI = 0x1BA6, + AE_WUZX_AJ = 0x1BA7, + AE_WUZX_AK = 0x1BA8, + AE_WUZX_AL = 0x1BA9, + AE_WUZX_AM = 0x1BAA, + AE_WUZX_AN = 0x1BAB, + AE_WUZX_AO = 0x1BAC, + AE_WUZX_AP = 0x1BAD, + AE_WUZX_AQ = 0x1BAE, + AE_WUZX_AR = 0x1BAF, + AE_WUZX_AS = 0x1BB0, + AE_WUZX_AT = 0x1BB1, + AE_WUZX_AU = 0x1BB2, + AE_WUZX_AV = 0x1BB3, + AE_WUZX_AW = 0x1BB4, + AE_WUZX_AX = 0x1BB5, + AE_WUZX_AY = 0x1BB6, + AE_WUZX_AZ = 0x1BB7, + AE_WUZX_BA = 0x1BB8, + AE_WUZX_BB = 0x1BB9, + AE_WUZX_BC = 0x1BBA, + AE_WUZX_BD = 0x1BBB, + AE_WUZX_BE = 0x1BBC, + AE_WUZX_BF = 0x1BBD, + AE_WUZX_BG = 0x1BBE, + AE_WUZX_BH = 0x1BBF, + AE_WUZX_BI = 0x1BC0, + AE_WUZX_BJ = 0x1BC1, + AE_WUZX_BK = 0x1BC2, + AE_WUZX_BL = 0x1BC3, + AE_WUZX_BM = 0x1BC4, + AE_WUZX_BN = 0x1BC5, + AE_WUZX_BO = 0x1BC6, + AE_WUZX_BP = 0x1BC7, + AE_WUZX_BQ = 0x1BC8, + AE_WUZX_BR = 0x1BC9, + AE_WUZX_BS = 0x1BCA, + AE_ZER1_AA = 0x1BCB, + AE_ZER1_AB = 0x1BCC, + AE_ZER1_AC = 0x1BCD, + AE_ZER1_AD = 0x1BCE, + AE_ZER1_AE = 0x1BCF, + AE_ZER1_BA = 0x1BD0, + AE_ZER1_BB = 0x1BD1, + AE_ZER1_BC = 0x1BD2, + AE_ZER1_BD = 0x1BD3, + AE_ZER1_BE = 0x1BD4, + AE_ZER1_BF = 0x1BD5, + AE_ZER1_BG = 0x1BD6, + AE_ZER1_BH = 0x1BD7, + AE_ZER1_BJ = 0x1BD8, + AE_ZER1_BK = 0x1BD9, + AE_ZER1_BL = 0x1BDA, + AE_ZER1_BM = 0x1BDB, + AE_ZER1_BN = 0x1BDC, + AE_ZER1_CA = 0x1BDD, + AE_ZER1_DA = 0x1BDE, + AE_ZER1_DB = 0x1BDF, + AE_ZER1_EA = 0x1BE0, + AE_ZER1_EB = 0x1BE1, + AE_ZER1_EC = 0x1BE2, + AE_ZER1_FA = 0x1BE3, + AE_ZER1_FB = 0x1BE4, + AE_ZER1_FC = 0x1BE5, + AE_ZER1_FD = 0x1BE6, + AE_ZER1_FE = 0x1BE7, + AE_ZER1_FF = 0x1BE8, + AE_ZER1_FG = 0x1BE9, + AE_ZER1_FH = 0x1BEA, + AE_ZER2_AA = 0x1BEB, + AE_ZER2_AB = 0x1BEC, + AE_ZER2_AC = 0x1BED, + AE_ZER2_AD = 0x1BEE, + AE_ZER2_BA = 0x1BEF, + AE_ZER2_BB = 0x1BF0, + AE_ZER2_CA = 0x1BF1, + AE_ZER2_CB = 0x1BF2, + AE_ZER2_CC = 0x1BF3, + AE_ZER2_CD = 0x1BF4, + AE_ZER2_CE = 0x1BF5, + AE_ZER2_DA = 0x1BF6, + AE_ZER2_DB = 0x1BF7, + AE_ZER2_DC = 0x1BF8, + AE_ZER2_DD = 0x1BF9, + AE_ZER2_EA = 0x1BFA, + AE_ZER2_EB = 0x1BFB, + AE_ZER2_FA = 0x1BFC, + AE_ZER2_FB = 0x1BFD, + AE_ZER2_FC = 0x1BFE, + AE_ZER2_FD = 0x1BFF, + AE_ZER3_AA = 0x1C00, + AE_ZER3_AB = 0x1C01, + AE_ZER3_AC = 0x1C02, + AE_ZER3_AD = 0x1C03, + AE_ZER3_AE = 0x1C04, + AE_ZER3_AF = 0x1C05, + AE_ZER3_ZA = 0x1C06, + AE_ZER3_ZB = 0x1C07, + AE_ZER3_ZC = 0x1C08, + AE_ZER3_ZD = 0x1C09, + AE_ZER3_ZE = 0x1C0A, + AE_ZER3_ZF = 0x1C0B, + AE_ZER4_AA = 0x1C0C, + AE_ZER4_AB = 0x1C0D, + AE_ZER4_AC = 0x1C0E, + AE_ZER4_AD = 0x1C0F, + AE_ZER4_AE = 0x1C10, + AE_ZER4_AF = 0x1C11, + AE_ZER4_BA = 0x1C12, + AE_ZER4_BB = 0x1C13, + AE_ZER4_BC = 0x1C14, + AE_ZER4_CA = 0x1C15, + AE_ZER4_CB = 0x1C16, + AE_ZER4_CC = 0x1C17, + AE_ZER4_DA = 0x1C18, + AE_ZER4_DB = 0x1C19, + AE_ZER4_DC = 0x1C1A, + AE_ZER4_DD = 0x1C1B, + AE_ZER4_DE = 0x1C1C, + AE_ZER4_EA = 0x1C1D, + AE_ZER4_EB = 0x1C1E, + AE_ZER4_FA = 0x1C1F, + AE_ZER4_FB = 0x1C20, + AE_ZER4_FC = 0x1C21, + AE_ZER4_FD = 0x1C22, + AE_ZER4_FE = 0x1C23, + AE_ZER4_FF = 0x1C24, + AE_ZER4_GA = 0x1C25, + AE_ZER4_HA = 0x1C26, + AE_ZER4_HB = 0x1C27, + AE_ZER4_HC = 0x1C28, + AE_ZER4_JA = 0x1C29, + AE_ZER4_JB = 0x1C2A, + AE_ZER4_JC = 0x1C2B, + AE_ZER4_JD = 0x1C2C, + AE_ZER4_JE = 0x1C2D, + AE_ZER4_JF = 0x1C2E, + AE_ZER4_KA = 0x1C2F, + AE_ZER4_KB = 0x1C30, + AE_ZER4_KC = 0x1C31, + AE_ZER4_LA = 0x1C32, + AE_ZER4_LB = 0x1C33, + AE_ZER4_LC = 0x1C34, + AE_ZER4_LD = 0x1C35, + AE_ZER4_MA = 0x1C36, + AE_ZER4_MB = 0x1C37, + AE_ZER4_MC = 0x1C38, + AE_ZER4_MD = 0x1C39, + AE_ZER4_NA = 0x1C3A, + AE_ZER4_NB = 0x1C3B, + AE_ZER4_NC = 0x1C3C, + AE_ZER4_OA = 0x1C3D, + AE_ZER4_OB = 0x1C3E, + AE_ZER4_OC = 0x1C3F, + AE_ZER4_OD = 0x1C40, + AE_ZER4_OE = 0x1C41, + AE_ZER4_OF = 0x1C42, + AE_ZER4_OG = 0x1C43, + AE_BLIP_DETECTED = 0x1C44, + AE_END_OF_EVENTS = 0x1C45, +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eCamMode.h b/third-party/plugin-sdk/plugin_sa/game_sa/eCamMode.h new file mode 100644 index 00000000..026966e5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eCamMode.h @@ -0,0 +1,78 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +enum PLUGIN_API eCamMode : unsigned short { + MODE_NONE = 0x0, + MODE_TOPDOWN = 0x1, + MODE_GTACLASSIC = 0x2, + MODE_BEHINDCAR = 0x3, + MODE_FOLLOWPED = 0x4, + MODE_AIMING = 0x5, + MODE_DEBUG = 0x6, + MODE_SNIPER = 0x7, + MODE_ROCKETLAUNCHER = 0x8, + MODE_MODELVIEW = 0x9, + MODE_BILL = 0xA, + MODE_SYPHON = 0xB, + MODE_CIRCLE = 0xC, + MODE_CHEESYZOOM = 0xD, + MODE_WHEELCAM = 0xE, + MODE_FIXED = 0xF, + MODE_1STPERSON = 0x10, + MODE_FLYBY = 0x11, + MODE_CAM_ON_A_STRING = 0x12, + MODE_REACTION = 0x13, + MODE_FOLLOW_PED_WITH_BIND = 0x14, + MODE_CHRIS = 0x15, + MODE_BEHINDBOAT = 0x16, + MODE_PLAYER_FALLEN_WATER = 0x17, + MODE_CAM_ON_TRAIN_ROOF = 0x18, + MODE_CAM_RUNNING_SIDE_TRAIN = 0x19, + MODE_BLOOD_ON_THE_TRACKS = 0x1A, + MODE_IM_THE_PASSENGER_WOOWOO = 0x1B, + MODE_SYPHON_CRIM_IN_FRONT = 0x1C, + MODE_PED_DEAD_BABY = 0x1D, + MODE_PILLOWS_PAPS = 0x1E, + MODE_LOOK_AT_CARS = 0x1F, + MODE_ARRESTCAM_ONE = 0x20, + MODE_ARRESTCAM_TWO = 0x21, + MODE_M16_1STPERSON = 0x22, + MODE_SPECIAL_FIXED_FOR_SYPHON = 0x23, + MODE_FIGHT_CAM = 0x24, + MODE_TOP_DOWN_PED = 0x25, + MODE_LIGHTHOUSE = 0x26, + MODE_SNIPER_RUNABOUT = 0x27, + MODE_ROCKETLAUNCHER_RUNABOUT = 0x28, + MODE_1STPERSON_RUNABOUT = 0x29, + MODE_M16_1STPERSON_RUNABOUT = 0x2A, + MODE_FIGHT_CAM_RUNABOUT = 0x2B, + MODE_EDITOR = 0x2C, + MODE_HELICANNON_1STPERSON = 0x2D, + MODE_CAMERA = 0x2E, + MODE_ATTACHCAM = 0x2F, + MODE_TWOPLAYER = 0x30, + MODE_TWOPLAYER_IN_CAR_AND_SHOOTING = 0x31, + MODE_TWOPLAYER_SEPARATE_CARS = 0x32, + MODE_ROCKETLAUNCHER_HS = 0x33, + MODE_ROCKETLAUNCHER_RUNABOUT_HS = 0x34, + MODE_AIMWEAPON = 0x35, + MODE_TWOPLAYER_SEPARATE_CARS_TOPDOWN = 0x36, + MODE_AIMWEAPON_FROMCAR = 0x37, + MODE_DW_HELI_CHASE = 0x38, + MODE_DW_CAM_MAN = 0x39, + MODE_DW_BIRDY = 0x3A, + MODE_DW_PLANE_SPOTTER = 0x3B, + MODE_DW_DOG_FIGHT = 0x3C, + MODE_DW_FISH = 0x3D, + MODE_DW_PLANECAM1 = 0x3E, + MODE_DW_PLANECAM2 = 0x3F, + MODE_DW_PLANECAM3 = 0x40, + MODE_AIMWEAPON_ATTACHED = 0x41 +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eCarMission.h b/third-party/plugin-sdk/plugin_sa/game_sa/eCarMission.h new file mode 100644 index 00000000..1abaa82d --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eCarMission.h @@ -0,0 +1,92 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eCarMission : char +{ + MISSION_NONE = 0, + MISSION_CRUISE = 1, + MISSION_RAMPLAYER_FARAWAY = 2, + MISSION_RAMPLAYER_CLOSE = 3, + MISSION_BLOCKPLAYER_FARAWAY = 4, + MISSION_BLOCKPLAYER_CLOSE = 5, + MISSION_BLOCKPLAYER_HANDBRAKESTOP = 6, + MISSION_WAITFORDELETION = 7, + MISSION_GOTOCOORDS = 8, + MISSION_GOTOCOORDS_STRAIGHT = 9, + MISSION_EMERGENCYVEHICLE_STOP = 10, + MISSION_STOP_FOREVER = 11, + MISSION_GOTOCOORDS_ACCURATE = 12, + MISSION_GOTOCOORDS_STRAIGHT_ACCURATE = 13, + MISSION_GOTOCOORDS_ASTHECROWSWIMS = 14, + MISSION_RAMCAR_FARAWAY = 15, + MISSION_RAMCAR_CLOSE = 16, + MISSION_BLOCKCAR_FARAWAY = 17, + MISSION_BLOCKCAR_CLOSE = 18, + MISSION_BLOCKCAR_HANDBRAKESTOP = 19, + MISSION_HELI_FLYTOCOORS = 20, + MISSION_ATTACKPLAYER = 21, + MISSION_PLANE_FLYTOCOORS = 22, + MISSION_HELI_LAND = 23, + MISSION_SLOWLY_DRIVE_TOWARDS_PLAYER_1 = 24, + MISSION_SLOWLY_DRIVE_TOWARDS_PLAYER_2 = 25, + MISSION_BLOCKPLAYER_FORWARDANDBACK = 26, + MISSION_1B = 27, + MISSION_1C = 28, + MISSION_1D = 29, + MISSION_1E = 30, + MISSION_1F = 31, + MISSION_20 = 32, + MISSION_RACING = 33, + MISSION_FOLLOW_PRE_RECORDED_PATH = 34, + MISSION_PLANE_ATTACK_PLAYER = 35, + MISSION_PLANE_FLY_IN_DIRECTION = 36, + MISSION_PLANE_FOLLOW_ENTITY = 37, + MISSION_26 = 38, + MISSION_HELI_FOLLOW_ENTITY = 39, + MISSION_COP_HELI_ATTACK = 40, + MISSION_29 = 41, + MISSION_2A = 42, + MISSION_POLICE_BIKE = 43, + MISSION_2C = 44, + MISSION_PARKING_2D = 45, + MISSION_PARKING_2E = 46, + MISSION_2F = 47, + MISSION_30 = 48, + MISSION_PARKING_31 = 49, + MISSION_PARKING_32 = 50, + MISSION_HELI_KEEP_ENTITY_IN_VIEW = 51, + MISSION_34 = 52, + MISSION_35 = 53, + MISSION_36 = 54, + MISSION_37 = 55, + MISSION_38 = 56, + MISSION_39 = 57, + MISSION_HELI_CRASH_LAND = 58, + MISSION_PLANE_HS_MISSILE_ATTACK_CAR = 59, + MISSION_3C = 60, + MISSION_3D = 61, + MISSION_3E = 62, + MISSION_PLANE_HS_MISSILE_ATTACK_PLAYER = 63, + MISSION_POLICE_WAIT_FOR_PLAYER = 64, + MISSION_41 = 65, + MISSION_42 = 66, + MISSION_43 = 67, + MISSION_44 = 68, + MISSION_45 = 69, + MISSION_46 = 70, + MISSION_47 = 71, + MISSION_48 = 72, + MISSION_49 = 73, + MISSION_4A = 74, + MISSION_4B = 75, + MISSION_4C = 76, + MISSION_4D = 77, + MISSION_4E = 78, + MISSION_4F = 79, + MISSION_50 = 80, +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eClothesModelPart.h b/third-party/plugin-sdk/plugin_sa/game_sa/eClothesModelPart.h new file mode 100644 index 00000000..8bbf8106 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eClothesModelPart.h @@ -0,0 +1,21 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eClothesModelPart +{ + CLOTHES_MODEL_TORSO = 0x0, + CLOTHES_MODEL_HEAD = 0x1, + CLOTHES_MODEL_LEGS = 0x3, + CLOTHES_MODEL_SHOES = 0x4, + CLOTHES_MODEL_NECKLACE = 0x5, + CLOTHES_MODEL_BRACELET = 0x6, + CLOTHES_MODEL_GLASSES = 0x7, + CLOTHES_MODEL_HATS = 0x8, + CLOTHES_MODEL_SPECIAL = 0x9, + CLOTHES_MODEL_UNAVAILABLE = 0xA, +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eClothesTexturePart.h b/third-party/plugin-sdk/plugin_sa/game_sa/eClothesTexturePart.h new file mode 100644 index 00000000..f36eec80 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eClothesTexturePart.h @@ -0,0 +1,30 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eClothesTexturePart +{ + CLOTHES_TEXTURE_TORSO = 0x0, + CLOTHES_TEXTURE_HEAD = 0x1, + CLOTHES_TEXTURE_LEGS = 0x2, + CLOTHES_TEXTURE_SHOES = 0x3, + CLOTHES_TEXTURE_LOWER_LEFT_ARM = 0x4, + CLOTHES_TEXTURE_UPPER_LEFT_ARM = 0x5, + CLOTHES_TEXTURE_UPPER_RIGHT_ARM = 0x6, + CLOTHES_TEXTURE_LOWER_RIGHT_ARM = 0x7, + CLOTHES_TEXTURE_BACK_TOP = 0x8, + CLOTHES_TEXTURE_LEFT_CHEST = 0x9, + CLOTHES_TEXTURE_RIGHT_CHEST = 0xA, + CLOTHES_TEXTURE_STOMACH = 0xB, + CLOTHES_TEXTURE_LOWER_BACK = 0xB, + CLOTHES_TEXTURE_NECKLACE = 0xD, + CLOTHES_TEXTURE_BRACELET = 0xE, + CLOTHES_TEXTURE_GLASSES = 0xF, + CLOTHES_TEXTURE_HATS = 0x10, + CLOTHES_TEXTURE_SPECIAL = 0x11, + CLOTHES_TEXTURE_UNAVAILABLE = 0x12, +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eCopType.h b/third-party/plugin-sdk/plugin_sa/game_sa/eCopType.h new file mode 100644 index 00000000..6837c5e0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eCopType.h @@ -0,0 +1,18 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eCopType : unsigned int +{ + COP_TYPE_CITYCOP, + COP_TYPE_LAPDM1, + COP_TYPE_SWAT1, + COP_TYPE_SWAT2, + COP_TYPE_FBI, + COP_TYPE_ARMY, + COP_TYPE_CSHER = 7 +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eCrimeType.h b/third-party/plugin-sdk/plugin_sa/game_sa/eCrimeType.h new file mode 100644 index 00000000..6033010a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eCrimeType.h @@ -0,0 +1,24 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eCrimeType { + CRIME_FIRE_WEAPON = 1, + CRIME_DAMAGED_PED = 2, + CRIME_FIRE_WEAPON_HIT_PED = 3, + CRIME_DAMAGE_CAR = 4, + CRIME_DAMAGE_COP_CAR = 5, + CRIME_CAR_STEAL = 6, + CRIME_KILL_PED_WITH_CAR = 10, + CRIME_KILL_COP_PED_WITH_CAR = 11, + CRIME_SET_PED_ON_FIRE = 13, + CRIME_SET_COP_PED_ON_FIRE = 14, + CRIME_SET_CAR_ON_FIRE = 15, + CRIME_EXPLOSION = 17, + CRIME_HIT_CAR = 21, + CRIME_AIM_GUN = 22 +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eDecisionMakerEvents.h b/third-party/plugin-sdk/plugin_sa/game_sa/eDecisionMakerEvents.h new file mode 100644 index 00000000..e132e259 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eDecisionMakerEvents.h @@ -0,0 +1,53 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eDecisionMakerEvents { + DM_EVENT_DRAGGED_OUT_CAR, + DM_EVENT_KNOCK_OFF_BIKE, + DM_EVENT_DAMAGE, + DM_EVENT_DEAD_PED, + DM_EVENT_POTENTIAL_GET_RUN_OVER, + DM_EVENT_POTENTIAL_WALK_INTO_PED, + DM_EVENT_SHOT_FIRED, + DM_EVENT_PED_ENTERED_MY_VEHICLE, + DM_EVENT_SEXY_PED, + DM_EVENT_ATTRACTOR, + DM_EVENT_VEHICLE_THREAT, + DM_EVENT_GUN_AIMED_AT, + DM_EVENT_ACQUAINTANCE_PED_HATE, + DM_EVENT_ACQUAINTANCE_PED_DISLIKE, + DM_EVENT_ACQUAINTANCE_PED_LIKE, + DM_EVENT_ACQUAINTANCE_PED_RESPECT, + DM_EVENT_VEHICLE_DAMAGE_WEAPON, + DM_EVENT_SPECIAL, + DM_EVENT_GOT_KNOCKED_OVER_BY_CAR, + DM_EVENT_POTENTIAL_WALK_INTO_OBJECT, + DM_EVENT_POTENTIAL_WALK_INTO_FIRE, + DM_EVENT_SCRIPTED_ATTRACTOR, + DM_EVENT_SHOT_FIRED_WHIZZED_BY, + DM_EVENT_LOW_ANGER_AT_PLAYER, + DM_EVENT_HIGH_ANGER_AT_PLAYER, + DM_EVENT_HEALTH_REALLY_LOW, + DM_EVENT_HEALTH_LOW, + DM_EVENT_LEADER_ENTERED_CAR_AS_DRIVER, + DM_EVENT_LEADER_EXITED_CAR_AS_DRIVER, + DM_EVENT_POTENTIAL_WALK_INTO_VEHICLE, + DM_EVENT_FIRE_NEARBY, + DM_EVENT_SOUND_LOUD, + DM_EVENT_SOUND_QUIET, + DM_EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT, + DM_EVENT_SEEN_PANICKED_PED, + DM_EVENT_PLAYER_COMMAND_TO_GROUP, + DM_EVENT_SEEN_COP, + DM_EVENT_VEHICLE_DAMAGE_COLLISION, + DM_EVENT_DANGER, + DM_EVENT_PLAYER_COMMAND_TO_GROUP_GATHER, + DM_EVENT_VEHICLE_ON_FIRE, + + DM_TOTAL_NUM_EVENTS +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eEmergencyPedVoices.h b/third-party/plugin-sdk/plugin_sa/game_sa/eEmergencyPedVoices.h new file mode 100644 index 00000000..c80c4f46 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eEmergencyPedVoices.h @@ -0,0 +1,56 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eEmergencyPedVoices : unsigned int { + VOICE_EMG_ARMY1, + VOICE_EMG_ARMY2, + VOICE_EMG_ARMY3, + VOICE_EMG_EMT1, + VOICE_EMG_EMT2, + VOICE_EMG_EMT3, + VOICE_EMG_EMT4, + VOICE_EMG_EMT5, + VOICE_EMG_FBI2, + VOICE_EMG_FBI3, + VOICE_EMG_FBI4, + VOICE_EMG_FBI5, + VOICE_EMG_FBI6, + VOICE_EMG_LAPD1, + VOICE_EMG_LAPD2, + VOICE_EMG_LAPD3, + VOICE_EMG_LAPD4, + VOICE_EMG_LAPD5, + VOICE_EMG_LAPD6, + VOICE_EMG_LAPD7, + VOICE_EMG_LAPD8, + VOICE_EMG_LVPD1, + VOICE_EMG_LVPD2, + VOICE_EMG_LVPD3, + VOICE_EMG_LVPD4, + VOICE_EMG_LVPD5, + VOICE_EMG_MCOP1, + VOICE_EMG_MCOP2, + VOICE_EMG_MCOP3, + VOICE_EMG_MCOP4, + VOICE_EMG_MCOP5, + VOICE_EMG_MCOP6, + VOICE_EMG_PULASKI, + VOICE_EMG_RCOP1, + VOICE_EMG_RCOP2, + VOICE_EMG_RCOP3, + VOICE_EMG_RCOP4, + VOICE_EMG_SFPD1, + VOICE_EMG_SFPD2, + VOICE_EMG_SFPD3, + VOICE_EMG_SFPD4, + VOICE_EMG_SFPD5, + VOICE_EMG_SWAT1, + VOICE_EMG_SWAT2, + VOICE_EMG_SWAT4, + VOICE_EMG_SWAT6 +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eEntityStatus.h b/third-party/plugin-sdk/plugin_sa/game_sa/eEntityStatus.h new file mode 100644 index 00000000..767b4670 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eEntityStatus.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eEntityStatus +{ + STATUS_PLAYER, + STATUS_PLAYER_PLAYBACKFROMBUFFER, + STATUS_SIMPLE, + STATUS_PHYSICS, + STATUS_ABANDONED, + STATUS_WRECKED, + STATUS_TRAIN_MOVING, + STATUS_TRAIN_NOT_MOVING, + STATUS_HELI, + STATUS_PLANE, + STATUS_REMOTE_CONTROLLED, + STATUS_PLAYER_DISABLED, + STATUS_TRAILER, + STATUS_SIMPLE_TRAILER +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eEntityType.h b/third-party/plugin-sdk/plugin_sa/game_sa/eEntityType.h new file mode 100644 index 00000000..66e4bd93 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eEntityType.h @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +/* https://code.google.com/p/mtasa-blue/source/browse/trunk/MTA10/sdk/game/CEntity.h */ +enum eEntityType +{ + ENTITY_TYPE_NOTHING, + ENTITY_TYPE_BUILDING, + ENTITY_TYPE_VEHICLE, + ENTITY_TYPE_PED, + ENTITY_TYPE_OBJECT, + ENTITY_TYPE_DUMMY, + ENTITY_TYPE_NOTINPOOLS +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eEventType.h b/third-party/plugin-sdk/plugin_sa/game_sa/eEventType.h new file mode 100644 index 00000000..32d40d1e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eEventType.h @@ -0,0 +1,98 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eEventType { + EVENT_VEHICLE_COLLISION = 1, + EVENT_PED_COLLISION_WITH_PED = 2, + EVENT_PED_COLLISION_WITH_PLAYER = 3, + EVENT_PLAYER_COLLISION_WITH_PED = 4, + EVENT_OBJECT_COLLISION = 5, + EVENT_BUILDING_COLLISION = 6, + EVENT_DRAGGED_OUT_CAR = 7, + EVENT_KNOCK_OFF_BIKE = 8, + EVENT_DAMAGE = 9, + EVENT_DEATH = 10, + EVENT_DEAD_PED = 11, + EVENT_POTENTIAL_GET_RUN_OVER = 12, + EVENT_POTENTIAL_WALK_INTO_PED = 13, + EVENT_VEHICLE_HIT_AND_RUN = 14, + EVENT_SHOT_FIRED = 15, + EVENT_COP_CAR_BEING_STOLEN = 16, + EVENT_PED_ENTERED_MY_VEHICLE = 17, + EVENT_REVIVE = 18, + EVENT_CHAT_PARTNER = 19, + EVENT_SEXY_PED = 20, + EVENT_SEXY_VEHICLE = 21, + EVENT_PED_TO_CHASE = 25, + EVENT_PED_TO_FLEE = 26, + EVENT_ATTRACTOR = 27, + EVENT_VEHICLE_TO_STEAL = 28, + + EVENT_VEHICLE_THREAT = 30, + EVENT_GUN_AIMED_AT = 31, + EVENT_SCRIPT_COMMAND = 32, + EVENT_IN_AIR = 33, + + EVENT_VEHICLE_DIED = 35, + EVENT_ACQUAINTANCE_PED_HATE = 36, + EVENT_ACQUAINTANCE_PED_DISLIKE = 37, + EVENT_ACQUAINTANCE_PED_LIKE = 38, + EVENT_ACQUAINTANCE_PED_RESPECT = 39, + + EVENT_VEHICLE_DAMAGE_WEAPON = 41, + EVENT_SPECIAL = 42, + EVENT_GOT_KNOCKED_OVER_BY_CAR = 43, + EVENT_POTENTIAL_WALK_INTO_OBJECT = 44, + EVENT_CAR_UPSIDE_DOWN = 45, + EVENT_POTENTIAL_WALK_INTO_FIRE = 46, + EVENT_GROUP_EVENT = 47, + EVENT_SCRIPTED_ATTRACTOR = 48, + EVENT_SHOT_FIRED_WHIZZED_BY = 49, + EVENT_LOW_ANGER_AT_PLAYER = 50, + EVENT_HIGH_ANGER_AT_PLAYER = 51, + EVENT_HEALTH_REALLY_LOW = 52, + EVENT_HEALTH_LOW = 53, + EVENT_LEADER_ENTERED_CAR_AS_DRIVER = 54, + EVENT_LEADER_EXITED_CAR_AS_DRIVER = 55, + EVENT_POTENTIAL_WALK_INTO_VEHICLE = 56, + EVENT_LEADER_QUIT_ENTERING_CAR_AS_DRIVER = 57, + EVENT_ON_FIRE = 58, + EVENT_FIRE_NEARBY = 59, + EVENT_POTENTIAL_WALK_INTO_BUILDING = 60, + EVENT_SOUND_LOUD = 61, + EVENT_SOUND_QUIET = 62, + EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT = 63, + EVENT_WATER_CANNON = 64, + EVENT_SEEN_PANICKED_PED = 65, + EVENT_IN_WATER = 66, + EVENT_AREA_CODES = 67, + + EVENT_PLAYER_WANTED_LEVEL = 69, + EVENT_CREATE_PARTNER_TASK = 70, + EVENT_PLAYER_COMMAND_TO_GROUP = 71, + EVENT_SEEN_COP = 72, + EVENT_VEHICLE_DAMAGE_COLLISION = 73, + EVENT_ON_ESCALATOR = 74, + EVENT_DANGER = 75, + EVENT_PLAYER_COMMAND_TO_GROUP_GATHER = 76, + EVENT_LEADER_ENTRY_EXIT = 77, + + EVENT_VEHICLE_ON_FIRE = 79, + + EVENT_INTERIOR_USE_INFO = 81, + + EVENT_SIGNAL_AT_PED = 88, + EVENT_PASS_OBJECT = 89, + EVENT_NEW_GANG_MEMBER = 90, + + EVENT_LEAN_ON_VEHICLE = 92, + EVENT_STUCK_IN_AIR = 93, + EVENT_DONT_JOIN_GROUP = 94, + + EVENT_TOTAL_NUM_EVENTS = 96 +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eGangID.h b/third-party/plugin-sdk/plugin_sa/game_sa/eGangID.h new file mode 100644 index 00000000..ee6c88f3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eGangID.h @@ -0,0 +1,20 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum PLUGIN_API eGangID { + GANG_BALLAS = 0, + GANG_GROVE = 0x1, + GANG_VAGOS = 0x2, + GANG_RIFA = 0x3, + GANG_DANANGBOYS = 0x4, + GANG_MAFIA = 0x5, + GANG_TRIAD = 0x6, + GANG_AZTECAS = 0x7, + GANG_UNUSED1 = 0x8, //!< RUSSIAN_MAFIA + GANG_UNUSED2 = 0x9 //!< BIKERS +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eModelID.h b/third-party/plugin-sdk/plugin_sa/game_sa/eModelID.h new file mode 100644 index 00000000..7b6c1748 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eModelID.h @@ -0,0 +1,14847 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +// Enumeration generated by fastman92's PHP script. +// The list was generated from unmodified data of GTA San Andreas. +// Author: fastman92 + +enum eModelID // Number of entries: 14832 +{ + MODEL_NULL = 0, + MODEL_CSPLAY = 1, + MODEL_MALE01 = 7, + MODEL_BFORI = 9, + MODEL_BFOST = 10, + MODEL_VBFYCRP = 11, + MODEL_BFYRI = 12, + MODEL_BFYST = 13, + MODEL_BMORI = 14, + MODEL_BMOST = 15, + MODEL_BMYAP = 16, + MODEL_BMYBU = 17, + MODEL_BMYBE = 18, + MODEL_BMYDJ = 19, + MODEL_BMYRI = 20, + MODEL_BMYCR = 21, + MODEL_BMYST = 22, + MODEL_WMYBMX = 23, + MODEL_WBDYG1 = 24, + MODEL_WBDYG2 = 25, + MODEL_WMYBP = 26, + MODEL_WMYCON = 27, + MODEL_BMYDRUG = 28, + MODEL_WMYDRUG = 29, + MODEL_HMYDRUG = 30, + MODEL_DWFOLC = 31, + MODEL_DWMOLC1 = 32, + MODEL_DWMOLC2 = 33, + MODEL_DWMYLC1 = 34, + MODEL_HMOGAR = 35, + MODEL_WMYGOL1 = 36, + MODEL_WMYGOL2 = 37, + MODEL_HFORI = 38, + MODEL_HFOST = 39, + MODEL_HFYRI = 40, + MODEL_HFYST = 41, + MODEL_HMORI = 43, + MODEL_HMOST = 44, + MODEL_HMYBE = 45, + MODEL_HMYRI = 46, + MODEL_HMYCR = 47, + MODEL_HMYST = 48, + MODEL_OMOKUNG = 49, + MODEL_WMYMECH = 50, + MODEL_BMYMOUN = 51, + MODEL_WMYMOUN = 52, + MODEL_OFORI = 53, + MODEL_OFOST = 54, + MODEL_OFYRI = 55, + MODEL_OFYST = 56, + MODEL_OMORI = 57, + MODEL_OMOST = 58, + MODEL_OMYRI = 59, + MODEL_OMYST = 60, + MODEL_WMYPLT = 61, + MODEL_WMOPJ = 62, + MODEL_BFYPRO = 63, + MODEL_HFYPRO = 64, + MODEL_BMYPOL1 = 66, + MODEL_BMYPOL2 = 67, + MODEL_WMOPREA = 68, + MODEL_SBFYST = 69, + MODEL_WMOSCI = 70, + MODEL_WMYSGRD = 71, + MODEL_SWMYHP1 = 72, + MODEL_SWMYHP2 = 73, + MODEL_SWFOPRO = 75, + MODEL_WFYSTEW = 76, + MODEL_SWMOTR1 = 77, + MODEL_WMOTR1 = 78, + MODEL_BMOTR1 = 79, + MODEL_VBMYBOX = 80, + MODEL_VWMYBOX = 81, + MODEL_VHMYELV = 82, + MODEL_VBMYELV = 83, + MODEL_VIMYELV = 84, + MODEL_VWFYPRO = 85, + MODEL_VWFYST1 = 87, + MODEL_WFORI = 88, + MODEL_WFOST = 89, + MODEL_WFYJG = 90, + MODEL_WFYRI = 91, + MODEL_WFYRO = 92, + MODEL_WFYST = 93, + MODEL_WMORI = 94, + MODEL_WMOST = 95, + MODEL_WMYJG = 96, + MODEL_WMYLG = 97, + MODEL_WMYRI = 98, + MODEL_WMYRO = 99, + MODEL_WMYCR = 100, + MODEL_WMYST = 101, + MODEL_BALLAS1 = 102, + MODEL_BALLAS2 = 103, + MODEL_BALLAS3 = 104, + MODEL_FAM1 = 105, + MODEL_FAM2 = 106, + MODEL_FAM3 = 107, + MODEL_LSV1 = 108, + MODEL_LSV2 = 109, + MODEL_LSV3 = 110, + MODEL_MAFFA = 111, + MODEL_MAFFB = 112, + MODEL_MAFBOSS = 113, + MODEL_VLA1 = 114, + MODEL_VLA2 = 115, + MODEL_VLA3 = 116, + MODEL_TRIADA = 117, + MODEL_TRIADB = 118, + MODEL_TRIBOSS = 120, + MODEL_DNB1 = 121, + MODEL_DNB2 = 122, + MODEL_DNB3 = 123, + MODEL_VMAFF1 = 124, + MODEL_VMAFF2 = 125, + MODEL_VMAFF3 = 126, + MODEL_VMAFF4 = 127, + MODEL_DNMYLC = 128, + MODEL_DNFOLC1 = 129, + MODEL_DNFOLC2 = 130, + MODEL_DNFYLC = 131, + MODEL_DNMOLC1 = 132, + MODEL_DNMOLC2 = 133, + MODEL_SBMOTR2SBMOTR2 = 134, + MODEL_SWMOTR2 = 135, + MODEL_SBMYTR3 = 136, + MODEL_SWMOTR3 = 137, + MODEL_WFYBE = 138, + MODEL_BFYBE = 139, + MODEL_HFYBE = 140, + MODEL_SOFYBU = 141, + MODEL_SBMYST = 142, + MODEL_SBMYCR = 143, + MODEL_BMYCG = 144, + MODEL_WFYCRK = 145, + MODEL_HMYCM = 146, + MODEL_WMYBU = 147, + MODEL_BFYBU = 148, + MODEL_WFYBU = 150, + MODEL_DWFYLC1 = 151, + MODEL_WFYPRO = 152, + MODEL_WMYCONB = 153, + MODEL_WMYBE = 154, + MODEL_WMYPIZZ = 155, + MODEL_BMOBAR = 156, + MODEL_CWFYHB = 157, + MODEL_CWMOFR = 158, + MODEL_CWMOHB1 = 159, + MODEL_CWMOHB2 = 160, + MODEL_CWMYFR = 161, + MODEL_CWMYHB1 = 162, + MODEL_BMYBOUN = 163, + MODEL_WMYBOUN = 164, + MODEL_WMOMIB = 165, + MODEL_BMYMIB = 166, + MODEL_WMYBELL = 167, + MODEL_BMOCHIL = 168, + MODEL_SOFYRI = 169, + MODEL_SOMYST = 170, + MODEL_VWMYBJD = 171, + MODEL_VWFYCRP = 172, + MODEL_SFR1 = 173, + MODEL_SFR2 = 174, + MODEL_SFR3 = 175, + MODEL_BMYBAR = 176, + MODEL_WMYBAR = 177, + MODEL_WFYSEX = 178, + MODEL_WMYAMMO = 179, + MODEL_BMYTATT = 180, + MODEL_VWMYCR = 181, + MODEL_VBMOCD = 182, + MODEL_VBMYCR = 183, + MODEL_VHMYCR = 184, + MODEL_SBMYRI = 185, + MODEL_SOMYRI = 186, + MODEL_SOMYBU = 187, + MODEL_SWMYST = 188, + MODEL_WMYVA = 189, + MODEL_COPGRL3 = 190, + MODEL_GUNGRL3 = 191, + MODEL_MECGRL3 = 192, + MODEL_NURGRL3 = 193, + MODEL_CROGRL3 = 194, + MODEL_GANGRL3 = 195, + MODEL_CWFOFR = 196, + MODEL_CWFOHB = 197, + MODEL_CWFYFR1 = 198, + MODEL_CWFYFR2 = 199, + MODEL_CWMYHB2 = 200, + MODEL_DWFYLC2 = 201, + MODEL_DWMYLC2 = 202, + MODEL_OMYKARA = 203, + MODEL_WMYKARA = 204, + MODEL_WFYBURG = 205, + MODEL_VWMYCD = 206, + MODEL_VHFYPRO = 207, + MODEL_OMONOOD = 209, + MODEL_OMOBOAT = 210, + MODEL_WFYCLOT = 211, + MODEL_VWMOTR1 = 212, + MODEL_VWMOTR2 = 213, + MODEL_VWFYWAI = 214, + MODEL_SBFORI = 215, + MODEL_SWFYRI = 216, + MODEL_WMYCLOT = 217, + MODEL_SBFOST = 218, + MODEL_SBFYRI = 219, + MODEL_SBMOCD = 220, + MODEL_SBMORI = 221, + MODEL_SBMOST = 222, + MODEL_SHMYCR = 223, + MODEL_SOFORI = 224, + MODEL_SOFOST = 225, + MODEL_SOFYST = 226, + MODEL_SOMOBU = 227, + MODEL_SOMORI = 228, + MODEL_SOMOST = 229, + MODEL_SWMOTR5 = 230, + MODEL_SWFORI = 231, + MODEL_SWFOST = 232, + MODEL_SWFYST = 233, + MODEL_SWMOCD = 234, + MODEL_SWMORI = 235, + MODEL_SWMOST = 236, + MODEL_SHFYPRO = 237, + MODEL_SBFYPRO = 238, + MODEL_SWMOTR4 = 239, + MODEL_SWMYRI = 240, + MODEL_SMYST = 241, + MODEL_SMYST2 = 242, + MODEL_SFYPRO = 243, + MODEL_VBFYST2 = 244, + MODEL_VBFYPRO = 245, + MODEL_VHFYST3 = 246, + MODEL_BIKERA = 247, + MODEL_BIKERB = 248, + MODEL_BMYPIMP = 249, + MODEL_SWMYCR = 250, + MODEL_WFYLG = 251, + MODEL_WMYVA2 = 252, + MODEL_BMOSEC = 253, + MODEL_BIKDRUG = 254, + MODEL_WMYCH = 255, + MODEL_SBFYSTR = 256, + MODEL_SWFYSTR = 257, + MODEL_HECK1 = 258, + MODEL_HECK2 = 259, + MODEL_BMYCON = 260, + MODEL_WMYCD1 = 261, + MODEL_BMOCD = 262, + MODEL_VWFYWA2 = 263, + MODEL_WMOICE = 264, + MODEL_LAEMT1 = 274, + MODEL_LVEMT1 = 275, + MODEL_SFEMT1 = 276, + MODEL_LAFD1 = 277, + MODEL_LVFD1 = 278, + MODEL_SFFD1 = 279, + MODEL_LAPD1 = 280, + MODEL_SFPD1 = 281, + MODEL_LVPD1 = 282, + MODEL_CSHER = 283, + MODEL_LAPDM1 = 284, + MODEL_SWAT = 285, + MODEL_FBI = 286, + MODEL_ARMY = 287, + MODEL_DSHER = 288, + MODEL_SPECIAL01 = 290, + MODEL_SPECIAL02 = 291, + MODEL_SPECIAL03 = 292, + MODEL_SPECIAL04 = 293, + MODEL_SPECIAL05 = 294, + MODEL_SPECIAL06 = 295, + MODEL_SPECIAL07 = 296, + MODEL_SPECIAL08 = 297, + MODEL_SPECIAL09 = 298, + MODEL_SPECIAL10 = 299, + MODEL_CUTOBJ01 = 300, + MODEL_CUTOBJ02 = 301, + MODEL_CUTOBJ03 = 302, + MODEL_CUTOBJ04 = 303, + MODEL_CUTOBJ05 = 304, + MODEL_CUTOBJ06 = 305, + MODEL_CUTOBJ07 = 306, + MODEL_CUTOBJ08 = 307, + MODEL_CUTOBJ09 = 308, + MODEL_CUTOBJ10 = 309, + MODEL_CUTOBJ11 = 310, + MODEL_CUTOBJ12 = 311, + MODEL_CUTOBJ13 = 312, + MODEL_CUTOBJ14 = 313, + MODEL_CUTOBJ15 = 314, + MODEL_CUTOBJ16 = 315, + MODEL_CUTOBJ17 = 316, + MODEL_CUTOBJ18 = 317, + MODEL_CUTOBJ19 = 318, + MODEL_CUTOBJ20 = 319, + MODEL_AIRTRAIN_VLO = 320, + MODEL_GUN_DILDO1 = 321, + MODEL_GUN_DILDO2 = 322, + MODEL_GUN_VIBE1 = 323, + MODEL_GUN_VIBE2 = 324, + MODEL_FLOWERA = 325, + MODEL_GUN_CANE = 326, + MODEL_GUN_BOXWEE = 327, + MODEL_GUN_BOXBIG = 328, + MODEL_CELLPHONE = 330, + MODEL_BRASSKNUCKLE = 331, + MODEL_GOLFCLUB = 333, + MODEL_NITESTICK = 334, + MODEL_KNIFECUR = 335, + MODEL_BAT = 336, + MODEL_SHOVEL = 337, + MODEL_POOLCUE = 338, + MODEL_KATANA = 339, + MODEL_CHNSAW = 341, + MODEL_GRENADE = 342, + MODEL_TEARGAS = 343, + MODEL_MOLOTOV = 344, + MODEL_MISSILE = 345, + MODEL_COLT45 = 346, + MODEL_SILENCED = 347, + MODEL_DESERT_EAGLE = 348, + MODEL_CHROMEGUN = 349, + MODEL_SAWNOFF = 350, + MODEL_SHOTGSPA = 351, + MODEL_MICRO_UZI = 352, + MODEL_MP5LNG = 353, + MODEL_FLARE = 354, + MODEL_AK47 = 355, + MODEL_M4 = 356, + MODEL_CUNTGUN = 357, + MODEL_SNIPER = 358, + MODEL_ROCKETLA = 359, + MODEL_HEATSEEK = 360, + MODEL_FLAME = 361, + MODEL_MINIGUN = 362, + MODEL_SATCHEL = 363, + MODEL_BOMB = 364, + MODEL_SPRAYCAN = 365, + MODEL_FIRE_EX = 366, + MODEL_CAMERA = 367, + MODEL_NVGOGGLES = 368, + MODEL_IRGOGGLES = 369, + MODEL_JETPACK = 370, + MODEL_GUN_PARA = 371, + MODEL_TEC9 = 372, + MODEL_ARMOUR = 373, + MODEL_CLOTHES01_ID384 = 384, + MODEL_CLOTHES01_ID385 = 385, + MODEL_CLOTHES01_ID386 = 386, + MODEL_CLOTHES01_ID387 = 387, + MODEL_CLOTHES01_ID388 = 388, + MODEL_CLOTHES01_ID389 = 389, + MODEL_CLOTHES01_ID390 = 390, + MODEL_CLOTHES01_ID391 = 391, + MODEL_CLOTHES01_ID392 = 392, + MODEL_CLOTHES01_ID393 = 393, + MODEL_SHANDL = 394, + MODEL_SHANDR = 395, + MODEL_FHANDL = 396, + MODEL_FHANDR = 397, + MODEL_LANDSTAL = 400, + MODEL_BRAVURA = 401, + MODEL_BUFFALO = 402, + MODEL_LINERUN = 403, + MODEL_PEREN = 404, + MODEL_SENTINEL = 405, + MODEL_DUMPER = 406, + MODEL_FIRETRUK = 407, + MODEL_TRASH = 408, + MODEL_STRETCH = 409, + MODEL_MANANA = 410, + MODEL_INFERNUS = 411, + MODEL_VOODOO = 412, + MODEL_PONY = 413, + MODEL_MULE = 414, + MODEL_CHEETAH = 415, + MODEL_AMBULAN = 416, + MODEL_LEVIATHN = 417, + MODEL_MOONBEAM = 418, + MODEL_ESPERANT = 419, + MODEL_TAXI = 420, + MODEL_WASHING = 421, + MODEL_BOBCAT = 422, + MODEL_MRWHOOP = 423, + MODEL_BFINJECT = 424, + MODEL_HUNTER = 425, + MODEL_PREMIER = 426, + MODEL_ENFORCER = 427, + MODEL_SECURICA = 428, + MODEL_BANSHEE = 429, + MODEL_PREDATOR = 430, + MODEL_BUS = 431, + MODEL_RHINO = 432, + MODEL_BARRACKS = 433, + MODEL_HOTKNIFE = 434, + MODEL_ARTICT1 = 435, + MODEL_PREVION = 436, + MODEL_COACH = 437, + MODEL_CABBIE = 438, + MODEL_STALLION = 439, + MODEL_RUMPO = 440, + MODEL_RCBANDIT = 441, + MODEL_ROMERO = 442, + MODEL_PACKER = 443, + MODEL_MONSTER = 444, + MODEL_ADMIRAL = 445, + MODEL_SQUALO = 446, + MODEL_SEASPAR = 447, + MODEL_PIZZABOY = 448, + MODEL_TRAM = 449, + MODEL_ARTICT2 = 450, + MODEL_TURISMO = 451, + MODEL_SPEEDER = 452, + MODEL_REEFER = 453, + MODEL_TROPIC = 454, + MODEL_FLATBED = 455, + MODEL_YANKEE = 456, + MODEL_CADDY = 457, + MODEL_SOLAIR = 458, + MODEL_TOPFUN = 459, + MODEL_SKIMMER = 460, + MODEL_PCJ600 = 461, + MODEL_FAGGIO = 462, + MODEL_FREEWAY = 463, + MODEL_RCBARON = 464, + MODEL_RCRAIDER = 465, + MODEL_GLENDALE = 466, + MODEL_OCEANIC = 467, + MODEL_SANCHEZ = 468, + MODEL_SPARROW = 469, + MODEL_PATRIOT = 470, + MODEL_QUAD = 471, + MODEL_COASTG = 472, + MODEL_DINGHY = 473, + MODEL_HERMES = 474, + MODEL_SABRE = 475, + MODEL_RUSTLER = 476, + MODEL_ZR350 = 477, + MODEL_WALTON = 478, + MODEL_REGINA = 479, + MODEL_COMET = 480, + MODEL_BMX = 481, + MODEL_BURRITO = 482, + MODEL_CAMPER = 483, + MODEL_MARQUIS = 484, + MODEL_BAGGAGE = 485, + MODEL_DOZER = 486, + MODEL_MAVERICK = 487, + MODEL_VCNMAV = 488, + MODEL_RANCHER = 489, + MODEL_FBIRANCH = 490, + MODEL_VIRGO = 491, + MODEL_GREENWOO = 492, + MODEL_JETMAX = 493, + MODEL_HOTRING = 494, + MODEL_SANDKING = 495, + MODEL_BLISTAC = 496, + MODEL_POLMAV = 497, + MODEL_BOXVILLE = 498, + MODEL_BENSON = 499, + MODEL_MESA = 500, + MODEL_RCGOBLIN = 501, + MODEL_HOTRINA = 502, + MODEL_HOTRINB = 503, + MODEL_BLOODRA = 504, + MODEL_RNCHLURE = 505, + MODEL_SUPERGT = 506, + MODEL_ELEGANT = 507, + MODEL_JOURNEY = 508, + MODEL_BIKE = 509, + MODEL_MTBIKE = 510, + MODEL_BEAGLE = 511, + MODEL_CROPDUST = 512, + MODEL_STUNT = 513, + MODEL_PETRO = 514, + MODEL_RDTRAIN = 515, + MODEL_NEBULA = 516, + MODEL_MAJESTIC = 517, + MODEL_BUCCANEE = 518, + MODEL_SHAMAL = 519, + MODEL_HYDRA = 520, + MODEL_FCR900 = 521, + MODEL_NRG500 = 522, + MODEL_COPBIKE = 523, + MODEL_CEMENT = 524, + MODEL_TOWTRUCK = 525, + MODEL_FORTUNE = 526, + MODEL_CADRONA = 527, + MODEL_FBITRUCK = 528, + MODEL_WILLARD = 529, + MODEL_FORKLIFT = 530, + MODEL_TRACTOR = 531, + MODEL_COMBINE = 532, + MODEL_FELTZER = 533, + MODEL_REMINGTN = 534, + MODEL_SLAMVAN = 535, + MODEL_BLADE = 536, + MODEL_FREIGHT = 537, + MODEL_STREAK = 538, + MODEL_VORTEX = 539, + MODEL_VINCENT = 540, + MODEL_BULLET = 541, + MODEL_CLOVER = 542, + MODEL_SADLER = 543, + MODEL_FIRELA = 544, + MODEL_HUSTLER = 545, + MODEL_INTRUDER = 546, + MODEL_PRIMO = 547, + MODEL_CARGOBOB = 548, + MODEL_TAMPA = 549, + MODEL_SUNRISE = 550, + MODEL_MERIT = 551, + MODEL_UTILITY = 552, + MODEL_NEVADA = 553, + MODEL_YOSEMITE = 554, + MODEL_WINDSOR = 555, + MODEL_MONSTERA = 556, + MODEL_MONSTERB = 557, + MODEL_URANUS = 558, + MODEL_JESTER = 559, + MODEL_SULTAN = 560, + MODEL_STRATUM = 561, + MODEL_ELEGY = 562, + MODEL_RAINDANC = 563, + MODEL_RCTIGER = 564, + MODEL_FLASH = 565, + MODEL_TAHOMA = 566, + MODEL_SAVANNA = 567, + MODEL_BANDITO = 568, + MODEL_FREIFLAT = 569, + MODEL_STREAKC = 570, + MODEL_KART = 571, + MODEL_MOWER = 572, + MODEL_DUNERIDE = 573, + MODEL_SWEEPER = 574, + MODEL_BROADWAY = 575, + MODEL_TORNADO = 576, + MODEL_AT400 = 577, + MODEL_DFT30 = 578, + MODEL_HUNTLEY = 579, + MODEL_STAFFORD = 580, + MODEL_BF400 = 581, + MODEL_NEWSVAN = 582, + MODEL_TUG = 583, + MODEL_PETROTR = 584, + MODEL_EMPEROR = 585, + MODEL_WAYFARER = 586, + MODEL_EUROS = 587, + MODEL_HOTDOG = 588, + MODEL_CLUB = 589, + MODEL_FREIBOX = 590, + MODEL_ARTICT3 = 591, + MODEL_ANDROM = 592, + MODEL_DODO = 593, + MODEL_RCCAM = 594, + MODEL_LAUNCH = 595, + MODEL_COPCARLA = 596, + MODEL_COPCARSF = 597, + MODEL_COPCARVG = 598, + MODEL_COPCARRU = 599, + MODEL_PICADOR = 600, + MODEL_SWATVAN = 601, + MODEL_ALPHA = 602, + MODEL_PHOENIX = 603, + MODEL_GLENSHIT = 604, + MODEL_SADLSHIT = 605, + MODEL_BAGBOXA = 606, + MODEL_BAGBOXB = 607, + MODEL_TUGSTAIR = 608, + MODEL_BOXBURG = 609, + MODEL_FARMTR1 = 610, + MODEL_UTILTR1 = 611, + MODEL_VEG_TREE3 = 615, + MODEL_VEG_TREEA1 = 616, + MODEL_VEG_TREEB1 = 617, + MODEL_VEG_TREEA3 = 618, + MODEL_VEG_PALWEE03 = 619, + MODEL_VEG_PALM04 = 620, + MODEL_VEG_PALM02 = 621, + MODEL_VEG_PALM03 = 622, + MODEL_VEG_PALWEE01 = 623, + MODEL_VEG_PALWEE02 = 624, + MODEL_VEG_PALMKB1 = 625, + MODEL_VEG_PALMKB2 = 626, + MODEL_VEG_PALMKB3 = 627, + MODEL_VEG_PALMKB4 = 628, + MODEL_VEG_PALMKB5 = 629, + MODEL_VEG_PALMKB8 = 630, + MODEL_VEG_PALMKB9 = 631, + MODEL_VEG_PALMKB7 = 632, + MODEL_VEG_PALMKB10 = 633, + MODEL_VEG_PALMKBB11 = 634, + MODEL_VEG_FERN_BALCNY_KB1 = 635, + MODEL_VEG_FERN_BALCNY_KB2 = 636, + MODEL_KB_PLANTERBOX = 637, + MODEL_KB_PLANTER_BUSH = 638, + MODEL_VEG_IVY_BALCNY_KB3 = 639, + MODEL_KB_PLANTER_BUSH2 = 640, + MODEL_VEG_PALMKB13 = 641, + MODEL_KB_CANOPY_TEST = 642, + MODEL_KB_CHR_TBL_TEST = 643, + MODEL_POT_02 = 644, + MODEL_VEG_PALMBIG14 = 645, + MODEL_VEG_PALMKB14 = 646, + MODEL_NEW_BUSHSM = 647, + MODEL_VEG_PALM01 = 648, + MODEL_SJMPALM = 649, + MODEL_SJMCACTI2 = 650, + MODEL_SJMCACTI1 = 651, + MODEL_SJMPALMBIG = 652, + MODEL_SJMCACTI03 = 653, + MODEL_PINETREE08 = 654, + MODEL_PINETREE06 = 655, + MODEL_PINETREE05 = 656, + MODEL_PINETREE02 = 657, + MODEL_PINETREE04 = 658, + MODEL_PINETREE01 = 659, + MODEL_PINETREE03 = 660, + MODEL_PINETREE07 = 661, + MODEL_FIRTREE2 = 664, + MODEL_SM_VEG_TREE4 = 669, + MODEL_SM_FIRTALLDED = 670, + MODEL_SM_BUSHYTREE = 671, + MODEL_SM_VEG_TREE5 = 672, + MODEL_SM_BEVHILTREE = 673, + MODEL_SM_DES_JOSH_LRG1 = 674, + MODEL_JOSH_BALL = 675, + MODEL_SM_DES_JOSH_SML1 = 676, + MODEL_SM_DES_AGAVE1 = 677, + MODEL_SM_DES_AGAVE2 = 678, + MODEL_SM_DES_CACT_BSH = 679, + MODEL_SM_DES_JOSH_LRG2 = 680, + MODEL_SM_DES_JOSH_SM2 = 681, + MODEL_SM_DES_CACTFLR = 682, + MODEL_SM_FIR_GROUP = 683, + MODEL_SM_FIR_LOG02 = 684, + MODEL_SM_FIR_SCABBY = 685, + MODEL_SM_FIR_DEAD = 686, + MODEL_SM_FIR_ = 687, + MODEL_SM_FIR_SCABG = 688, + MODEL_SM_FIR_COPSE1 = 689, + MODEL_SM_FIR_COPSE2 = 690, + MODEL_SM_VEG_TREE4_BIG = 691, + MODEL_SM_DES_BUSH1 = 692, + MODEL_SM_REDWOOD_ = 693, + MODEL_SM_REDWOODGRP = 694, + MODEL_SM_FIR_SCABTG = 695, + MODEL_SM_FIR_SCABT = 696, + MODEL_SM_FIR_TALL = 697, + MODEL_SM_FIRTBSHG = 698, + MODEL_SM_VEG_TREE6 = 700, + MODEL_SM_TUMBLEWD48P = 701, + MODEL_SM_TUMBLEWEED = 702, + MODEL_SM_VEG_TREE7_BIG = 703, + MODEL_BG_FIR_DEAD = 704, + MODEL_SM_VEG_TREE7VBIG = 705, + MODEL_SM_VEGVBBIG = 706, + MODEL_SM_BUSHVBIG = 707, + MODEL_SM_VEG_TREE4_VBIG = 708, + MODEL_SM_VEGVBBIGBRN = 709, + MODEL_VGS_PALM01 = 710, + MODEL_VGS_PALM02 = 711, + MODEL_VGS_PALM03 = 712, + MODEL_VEG_BEVTREE1 = 713, + MODEL_VEG_BEVTREE2 = 714, + MODEL_VEG_BEVTREE3 = 715, + MODEL_SJMPALMBIGPV = 716, + MODEL_SM_BEVHILTREEPV = 717, + MODEL_VGS_PALM04 = 718, + MODEL_VEG_LARGEFURS07 = 719, + MODEL_VEG_LARGEFURS01 = 720, + MODEL_VEG_LARGEFURS02 = 721, + MODEL_VEG_LARGEFURS03 = 722, + MODEL_VEG_LARGEFURS04 = 723, + MODEL_VEG_LARGEFURS05 = 724, + MODEL_VEG_LARGEFURS06 = 725, + MODEL_TREE_HIPOLY19 = 726, + MODEL_TREE_HIPOLY04 = 727, + MODEL_TREE_HIPOLY06 = 728, + MODEL_TREE_HIPOLY07 = 729, + MODEL_TREE_HIPOLY08 = 730, + MODEL_TREE_HIPOLY09 = 731, + MODEL_TREE_HIPOLY10 = 732, + MODEL_TREE_HIPOLY11 = 733, + MODEL_TREE_HIPOLY14 = 734, + MODEL_TREE_HIPOLY09B = 735, + MODEL_CEASERTREE01_LVS = 736, + MODEL_AW_STREETTREE3 = 737, + MODEL_AW_STREETTREE2 = 738, + MODEL_SJMPALMTALL = 739, + MODEL_VGS_PALMVTALL = 740, + MODEL_POT_01 = 741, + MODEL_POT_03 = 742, + MODEL_KB_POT_1 = 743, + MODEL_SM_SCRUB_ROCK4 = 744, + MODEL_SM_SCRUB_ROCK5 = 745, + MODEL_SM_SCRUB_ROCK2 = 746, + MODEL_SM_SCRUB_ROCK3 = 747, + MODEL_SM_SCRB_GRP1 = 748, + MODEL_SM_SCRB_COLUMN3 = 749, + MODEL_SM_SCRB_COLUMN2 = 750, + MODEL_SM_SCRB_COLUMN1 = 751, + MODEL_SM_CUNT_ROCK1 = 752, + MODEL_SM_DESCACTIIGRPB = 753, + MODEL_SM_DES_CACTIIGRP = 754, + MODEL_SM_DES_PCKLYPR3 = 755, + MODEL_SM_DES_PCKLYPR2 = 756, + MODEL_SM_DES_PCKLYPR1 = 757, + MODEL_SM_SCRUB_ROCK6 = 758, + MODEL_SM_BUSH_LARGE_1 = 759, + MODEL_SM_BUSH_SMALL_1 = 760, + MODEL_SM_DRYBRUSH_SM1 = 761, + MODEL_NEW_BUSHTEST = 762, + MODEL_ASH1_HI = 763, + MODEL_CEDAR3_HI = 764, + MODEL_CEDAR2_HI = 765, + MODEL_CEDAR1_HI = 766, + MODEL_ELMTREEGRN_HI = 767, + MODEL_ELMTREEGRN2_HI = 768, + MODEL_LOCUST_HI = 769, + MODEL_PINEBG_HI = 770, + MODEL_SPRUCETREE_HI = 771, + MODEL_ELMRED_HI = 772, + MODEL_ELMDEAD_HI = 773, + MODEL_ELMSPARSE_HI = 774, + MODEL_ELMWEE_HI = 775, + MODEL_HAZELWEETREE_HI = 776, + MODEL_HAZELTALL_HI = 777, + MODEL_ELMRED_HISM = 778, + MODEL_PINEBG_HISM = 779, + MODEL_ELMSPARSE_HISM = 780, + MODEL_ELMWEE_HISM = 781, + MODEL_ELMTREEGRN_HISM = 782, + MODEL_LOD_VEGVBBIGBRN = 783, + MODEL_LOD_REDWOODGRP = 784, + MODEL_LOD_VBG_FIR_CO = 785, + MODEL_LOD_LARGEFURS06 = 786, + MODEL_LOD_LARGEFURS07 = 787, + MODEL_LOD_LARGEFURS05 = 788, + MODEL_HASHBURYTREE4SFS = 789, + MODEL_SM_FIR_TALLGROUP = 790, + MODEL_VBG_FIR_COPSE = 791, + MODEL_AW_STREETTREE1 = 792, + MODEL_GENVEG_BUSH07 = 800, + MODEL_GENVEG_BUSH01 = 801, + MODEL_GENVEG_BUSH08 = 802, + MODEL_GENVEG_BUSH09 = 803, + MODEL_GENVEG_BUSH10 = 804, + MODEL_GENVEG_BUSH11 = 805, + MODEL_GENVEG_TALLGRASS = 806, + MODEL_P_RUBBLE = 807, + MODEL_GENVEG_BUSH12 = 808, + MODEL_GENVEG_BUSH13 = 809, + MODEL_GENVEG_BUSH14 = 810, + MODEL_GENVEG_BUSH15 = 811, + MODEL_GENVEG_BUSH16 = 812, + MODEL_GENVEG_BUSH17 = 813, + MODEL_GENVEG_BUSH18 = 814, + MODEL_GENVEG_BUSH19 = 815, + MODEL_P_RUBBLE03 = 816, + MODEL_VEG_PFLOWERS01 = 817, + MODEL_GENVEG_TALLGRASS02 = 818, + MODEL_GENVEG_TALLGRASS03 = 819, + MODEL_GENVEG_TALLGRASS04 = 820, + MODEL_GENVEG_TALLGRASS05 = 821, + MODEL_GENVEG_TALLGRASS06 = 822, + MODEL_GENVEG_TALLGRASS07 = 823, + MODEL_GENVEG_TALLGRASS08 = 824, + MODEL_GENVEG_BUSHY = 825, + MODEL_GENVEG_TALLGRASS10 = 826, + MODEL_GENVEG_TALLGRASS11 = 827, + MODEL_P_RUBBLE2 = 828, + MODEL_DEAD_TREE_3 = 829, + MODEL_DEAD_TREE_2 = 830, + MODEL_DEAD_TREE_5 = 831, + MODEL_DEAD_TREE_4 = 832, + MODEL_DEAD_TREE_6 = 833, + MODEL_DEAD_TREE_7 = 834, + MODEL_DEAD_TREE_8 = 835, + MODEL_DEAD_TREE_10 = 836, + MODEL_DEAD_TREE_1 = 837, + MODEL_DEAD_TREE_9 = 838, + MODEL_DEAD_TREE_11 = 839, + MODEL_DEAD_TREE_12 = 840, + MODEL_DEAD_TREE_13 = 841, + MODEL_DEAD_TREE_14 = 842, + MODEL_DEAD_TREE_15 = 843, + MODEL_DEAD_TREE_16 = 844, + MODEL_DEAD_TREE_17 = 845, + MODEL_DEAD_TREE_18 = 846, + MODEL_DEAD_TREE_19 = 847, + MODEL_DEAD_TREE_20 = 848, + MODEL_CJ_URB_RUB_3 = 849, + MODEL_CJ_URB_RUB_1 = 850, + MODEL_CJ_URB_RUB_2 = 851, + MODEL_CJ_URB_RUB_4 = 852, + MODEL_CJ_URB_RUB_5 = 853, + MODEL_CJ_URB_RUB_3B = 854, + MODEL_GENVEG_TALLGRASS01 = 855, + MODEL_GENVEG_TALLGRASS12 = 856, + MODEL_PROCWEEGRS = 857, + MODEL_SAND_JOSH2 = 858, + MODEL_SAND_PLANT04 = 859, + MODEL_SAND_PLANT01 = 860, + MODEL_SAND_PLANT02 = 861, + MODEL_SAND_PLANT05 = 862, + MODEL_SAND_PLANT03 = 863, + MODEL_SAND_COMBUSH1 = 864, + MODEL_SAND_COMBUSH02 = 865, + MODEL_SAND_COMBUSH03 = 866, + MODEL_P_RUBBLE04COL = 867, + MODEL_P_RUBBLE05COL = 868, + MODEL_VEG_PFLOWERSWEE = 869, + MODEL_VEG_PFLOWERS2WEE = 870, + MODEL_VEG_PROCFPATCHWEE = 871, + MODEL_GEN_TALLGRSNEW = 872, + MODEL_VEG_PROCFPATCH = 873, + MODEL_VEG_PROCGRASSPATCH = 874, + MODEL_VEG_PROCFPATCH01 = 875, + MODEL_VEG_PFLOWERS03 = 876, + MODEL_VEG_PFLOWERS04 = 877, + MODEL_VEG_PFLOWERS02 = 878, + MODEL_P_RUBBLE04BCOL = 879, + MODEL_P_RUBBLE0BCOL = 880, + MODEL_SM_FIR_SCABG_PO = 881, + MODEL_ASH_PO = 882, + MODEL_CEDAR3_PO = 883, + MODEL_CEDAR2_PO = 884, + MODEL_CEDAR1_PO = 885, + MODEL_ELMTREEGRN_PO = 886, + MODEL_ELMTREEGRN2_PO = 887, + MODEL_LOCUST_PO = 888, + MODEL_PINEBG_PO = 889, + MODEL_ELMRED_PO = 890, + MODEL_ELMDEAD_PO = 891, + MODEL_HAZELWEETREE_PO = 892, + MODEL_ELMREDSM_PO = 893, + MODEL_ELMSPARSESM_PO = 894, + MODEL_ELMWEESM_PO = 895, + MODEL_SEAROCK06 = 896, + MODEL_SEAROCK01 = 897, + MODEL_SEAROCK02 = 898, + MODEL_SEAROCK03 = 899, + MODEL_SEAROCK04 = 900, + MODEL_SEAROCK05 = 901, + MODEL_STARFISH = 902, + MODEL_SEAWEED = 903, + MODEL_SAND_JOSH1 = 904, + MODEL_ROCKBRKQ = 905, + MODEL_P_RUBBLEBIG = 906, + MODEL_BUST_CABINET_4 = 910, + MODEL_BUST_CABINET_1 = 911, + MODEL_BUST_CABINET_2 = 912, + MODEL_BUST_CABINET_3 = 913, + MODEL_GRILL = 914, + MODEL_AIRCON_FAN = 915, + MODEL_FRUITCRATE2 = 916, + MODEL_FRUITCRATE1 = 917, + MODEL_CJ_FLAME_DRUM = 918, + MODEL_AIRCON = 919, + MODEL_Y_GENERATOR = 920, + MODEL_CJ_IND_LIGHT = 921, + MODEL_PACKING_CARATES1 = 922, + MODEL_PACKING_CARATES2 = 923, + MODEL_FRUITCRATE3 = 924, + MODEL_RACK2 = 925, + MODEL_RUBBISH_BOX2 = 926, + MODEL_PIPING_DETAIL = 927, + MODEL_RUBBISH_BOX1 = 928, + MODEL_GENERATOR = 929, + MODEL_O2_BOTTLES = 930, + MODEL_RACK3 = 931, + MODEL_H_WHEELCHAIR = 932, + MODEL_CJ_CABLEROLL = 933, + MODEL_GENERATOR_BIG = 934, + MODEL_CJ_DRUM = 935, + MODEL_CJ_DF_WORKTOP_2 = 936, + MODEL_CJ_DF_WORKTOP = 937, + MODEL_CJ_DF_LIGHT = 938, + MODEL_CJ_DF_UNIT = 939, + MODEL_CJ_DF_LIGHT_2 = 940, + MODEL_CJ_DF_WORKTOP_3 = 941, + MODEL_CJ_DF_UNIT_2 = 942, + MODEL_GENERATOR_LOW = 943, + MODEL_PACKING_CARATES04 = 944, + MODEL_WS_CF_LAMPS = 945, + MODEL_BSKBALL_LAX = 946, + MODEL_BSKBALLHUB_LAX01 = 947, + MODEL_PLANT_POT_10 = 948, + MODEL_PLANT_POT_4 = 949, + MODEL_PLANT_POT_12 = 950, + MODEL_CJ_VIEW_TELE2 = 951, + MODEL_GENERATOR_BIG_D = 952, + MODEL_CJ_OYSTER = 953, + MODEL_CJ_HORSE_SHOE = 954, + MODEL_CJ_EXT_SPRUNK = 955, + MODEL_CJ_EXT_CANDY = 956, + MODEL_CJ_LIGHT_FIT_EXT = 957, + MODEL_CJ_CHIP_MAKER = 958, + MODEL_CJ_CHIP_MAKER_BITS = 959, + MODEL_CJ_ARM_CRATE = 960, + MODEL_CJ_ARM_CRATE_TOP = 961, + MODEL_CJ_T_TICKET_PED = 962, + MODEL_CJ_T_TICKET = 963, + MODEL_CJ_METAL_CRATE = 964, + MODEL_BAR_GATEBAR01 = 966, + MODEL_BAR_GATEBOX01 = 967, + MODEL_BARRIERTURN = 968, + MODEL_ELECTRICGATE = 969, + MODEL_FENCESMALLB = 970, + MODEL_SUBWAYGATE = 971, + MODEL_TUNNELENTRANCE = 972, + MODEL_SUB_ROADBARRIER = 973, + MODEL_TALL_FENCE = 974, + MODEL_COLUMBIANGATE = 975, + MODEL_PHILS_COMPND_GATE = 976, + MODEL_NEWTOWERDOOR1 = 977, + MODEL_SUB_ROADRIGHT = 978, + MODEL_SUB_ROADLEFT = 979, + MODEL_AIRPORTGATE = 980, + MODEL_HELIX_BARRIER = 981, + MODEL_FENCESHIT = 982, + MODEL_FENCESHIT3 = 983, + MODEL_FENCESHIT2 = 984, + MODEL_GATE_AUTOR = 985, + MODEL_GATE_AUTOL = 986, + MODEL_ELECFENCE_BAR = 987, + MODEL_WS_APGATE = 988, + MODEL_AC_APGATE = 989, + MODEL_BAR_BARRIER12 = 990, + MODEL_BAR_BARRIERGATE1 = 991, + MODEL_BAR_BARRIER10B = 992, + MODEL_BAR_BARRIER10 = 993, + MODEL_LHOUSE_BARRIER2 = 994, + MODEL_BAR_BARRIER16 = 995, + MODEL_LHOUSE_BARRIER1 = 996, + MODEL_LHOUSE_BARRIER3 = 997, + MODEL_GDYN_BARRIER17 = 998, + MODEL_SPL_B_MAR_M = 1000, + MODEL_SPL_B_BAB_M = 1001, + MODEL_SPL_B_BAR_M = 1002, + MODEL_SPL_B_MAB_M = 1003, + MODEL_BNT_B_SC_M = 1004, + MODEL_BNT_B_SC_L = 1005, + MODEL_RF_B_SC_R = 1006, + MODEL_WG_L_B_SSK = 1007, + MODEL_NTO_B_L = 1008, + MODEL_NTO_B_S = 1009, + MODEL_NTO_B_TW = 1010, + MODEL_BNT_B_SC_P_M = 1011, + MODEL_BNT_B_SC_P_L = 1012, + MODEL_LGT_B_RSPT = 1013, + MODEL_SPL_B_BAR_L = 1014, + MODEL_SPL_B_BBR_L = 1015, + MODEL_SPL_B_BBR_M = 1016, + MODEL_WG_R_B_SSK = 1017, + MODEL_EXH_B_TS = 1018, + MODEL_EXH_B_T = 1019, + MODEL_EXH_B_L = 1020, + MODEL_EXH_B_M = 1021, + MODEL_EXH_B_S = 1022, + MODEL_SPL_B_BBB_M = 1023, + MODEL_LGT_B_SSPT = 1024, + MODEL_WHEEL_OR1 = 1025, + MODEL_WG_L_A_S = 1026, + MODEL_WG_R_A_S = 1027, + MODEL_EXH_A_S = 1028, + MODEL_EXH_C_S = 1029, + MODEL_WG_R_C_S = 1030, + MODEL_WG_L_C_S = 1031, + MODEL_RF_A_S = 1032, + MODEL_RF_C_S = 1033, + MODEL_EXH_A_L = 1034, + MODEL_RF_C_L = 1035, + MODEL_WG_L_A_L = 1036, + MODEL_EXH_C_L = 1037, + MODEL_RF_A_L = 1038, + MODEL_WG_L_C_L = 1039, + MODEL_WG_R_A_L = 1040, + MODEL_WG_R_C_L = 1041, + MODEL_WG_L_LR_BR1 = 1042, + MODEL_EXH_LR_BR2 = 1043, + MODEL_EXH_LR_BR1 = 1044, + MODEL_EXH_C_F = 1045, + MODEL_EXH_A_F = 1046, + MODEL_WG_L_A_F = 1047, + MODEL_WG_L_C_F = 1048, + MODEL_SPL_A_F_R = 1049, + MODEL_SPL_C_F_R = 1050, + MODEL_WG_R_A_F = 1051, + MODEL_WG_R_C_F = 1052, + MODEL_RF_C_F = 1053, + MODEL_RF_A_F = 1054, + MODEL_RF_A_ST = 1055, + MODEL_WG_L_A_ST = 1056, + MODEL_WG_L_C_ST = 1057, + MODEL_SPL_A_ST_R = 1058, + MODEL_EXH_C_ST = 1059, + MODEL_SPL_C_ST_R = 1060, + MODEL_RF_C_ST = 1061, + MODEL_WG_R_A_ST = 1062, + MODEL_WG_R_C_ST = 1063, + MODEL_EXH_A_ST = 1064, + MODEL_EXH_A_J = 1065, + MODEL_EXH_C_J = 1066, + MODEL_RF_A_J = 1067, + MODEL_RF_C_J = 1068, + MODEL_WG_L_A_J = 1069, + MODEL_WG_L_C_J = 1070, + MODEL_WG_R_A_J = 1071, + MODEL_WG_R_C_J = 1072, + MODEL_WHEEL_SR6 = 1073, + MODEL_WHEEL_SR3 = 1074, + MODEL_WHEEL_SR2 = 1075, + MODEL_WHEEL_LR4 = 1076, + MODEL_WHEEL_LR1 = 1077, + MODEL_WHEEL_LR3 = 1078, + MODEL_WHEEL_SR1 = 1079, + MODEL_WHEEL_SR5 = 1080, + MODEL_WHEEL_SR4 = 1081, + MODEL_WHEEL_GN1 = 1082, + MODEL_WHEEL_LR2 = 1083, + MODEL_WHEEL_LR5 = 1084, + MODEL_WHEEL_GN2 = 1085, + MODEL_STEREO = 1086, + MODEL_HYDRALICS = 1087, + MODEL_RF_A_U = 1088, + MODEL_EXH_C_U = 1089, + MODEL_WG_L_A_U = 1090, + MODEL_RF_C_U = 1091, + MODEL_EXH_A_U = 1092, + MODEL_WG_L_C_U = 1093, + MODEL_WG_R_A_U = 1094, + MODEL_WG_R_C_U = 1095, + MODEL_WHEEL_GN3 = 1096, + MODEL_WHEEL_GN4 = 1097, + MODEL_WHEEL_GN5 = 1098, + MODEL_WG_R_LR_BR1 = 1099, + MODEL_MISC_C_LR_REM1 = 1100, + MODEL_WG_R_LR_REM1 = 1101, + MODEL_WG_R_LR_SV = 1102, + MODEL_RF_LR_BL2 = 1103, + MODEL_EXH_LR_BL1 = 1104, + MODEL_EXH_LR_BL2 = 1105, + MODEL_WG_L_LR_REM2 = 1106, + MODEL_WG_R_LR_BL1 = 1107, + MODEL_WG_L_LR_BL1 = 1108, + MODEL_BBB_LR_SLV1 = 1109, + MODEL_BBB_LR_SLV2 = 1110, + MODEL_BNT_LR_SLV1 = 1111, + MODEL_BNT_LR_SLV2 = 1112, + MODEL_EXH_LR_SLV1 = 1113, + MODEL_EXH_LR_SLV2 = 1114, + MODEL_FBB_LR_SLV1 = 1115, + MODEL_FBB_LR_SLV2 = 1116, + MODEL_FBMP_LR_SLV1 = 1117, + MODEL_WG_L_LR_SLV1 = 1118, + MODEL_WG_L_LR_SLV2 = 1119, + MODEL_WG_R_LR_SLV1 = 1120, + MODEL_WG_R_LR_SLV2 = 1121, + MODEL_WG_L_LR_REM1 = 1122, + MODEL_MISC_C_LR_REM2 = 1123, + MODEL_WG_R_LR_REM2 = 1124, + MODEL_MISC_C_LR_REM3 = 1125, + MODEL_EXH_LR_REM1 = 1126, + MODEL_EXH_LR_REM2 = 1127, + MODEL_RF_LR_BL1 = 1128, + MODEL_EXH_LR_SV1 = 1129, + MODEL_RF_LR_SV1 = 1130, + MODEL_RF_LR_SV2 = 1131, + MODEL_EXH_LR_SV2 = 1132, + MODEL_WG_L_LR_SV = 1133, + MODEL_WG_L_LR_T1 = 1134, + MODEL_EXH_LR_T2 = 1135, + MODEL_EXH_LR_T1 = 1136, + MODEL_WG_R_LR_T1 = 1137, + MODEL_SPL_A_S_B = 1138, + MODEL_SPL_C_S_B = 1139, + MODEL_RBMP_C_S = 1140, + MODEL_RBMP_A_S = 1141, + MODEL_BNTR_B_OV = 1142, + MODEL_BNTL_B_OV = 1143, + MODEL_BNTR_B_SQ = 1144, + MODEL_BNTL_B_SQ = 1145, + MODEL_SPL_C_L_B = 1146, + MODEL_SPL_A_L_B = 1147, + MODEL_RBMP_C_L = 1148, + MODEL_RBMP_A_L = 1149, + MODEL_RBMP_A_F = 1150, + MODEL_RBMP_C_F = 1151, + MODEL_FBMP_C_F = 1152, + MODEL_FBMP_A_F = 1153, + MODEL_RBMP_A_ST = 1154, + MODEL_FBMP_A_ST = 1155, + MODEL_RBMP_C_ST = 1156, + MODEL_FBMP_C_ST = 1157, + MODEL_SPL_C_J_B = 1158, + MODEL_RBMP_A_J = 1159, + MODEL_FBMP_A_J = 1160, + MODEL_RBMP_C_J = 1161, + MODEL_SPL_A_J_B = 1162, + MODEL_SPL_C_U_B = 1163, + MODEL_SPL_A_U_B = 1164, + MODEL_FBMP_C_U = 1165, + MODEL_FBMP_A_U = 1166, + MODEL_RBMP_C_U = 1167, + MODEL_RBMP_A_U = 1168, + MODEL_FBMP_A_S = 1169, + MODEL_FBMP_C_S = 1170, + MODEL_FBMP_A_L = 1171, + MODEL_FBMP_C_L = 1172, + MODEL_FBMP_C_J = 1173, + MODEL_FBMP_LR_BR1 = 1174, + MODEL_FBMP_LR_BR2 = 1175, + MODEL_RBMP_LR_BR1 = 1176, + MODEL_RBMP_LR_BR2 = 1177, + MODEL_RBMP_LR_REM2 = 1178, + MODEL_FBMP_LR_REM1 = 1179, + MODEL_RBMP_LR_REM1 = 1180, + MODEL_FBMP_LR_BL2 = 1181, + MODEL_FBMP_LR_BL1 = 1182, + MODEL_RBMP_LR_BL2 = 1183, + MODEL_RBMP_LR_BL1 = 1184, + MODEL_FBMP_LR_REM2 = 1185, + MODEL_RBMP_LR_SV2 = 1186, + MODEL_RBMP_LR_SV1 = 1187, + MODEL_FBMP_LR_SV2 = 1188, + MODEL_FBMP_LR_SV1 = 1189, + MODEL_FBMP_LR_T2 = 1190, + MODEL_FBMP_LR_T1 = 1191, + MODEL_RBMP_LR_T1 = 1192, + MODEL_RBMP_LR_T2 = 1193, + MODEL_TINY_ROCK = 1207, + MODEL_WASHER = 1208, + MODEL_VENDMACH = 1209, + MODEL_BRIEFCASE = 1210, + MODEL_FIRE_HYDRANT = 1211, + MODEL_MONEY = 1212, + MODEL_MINE = 1213, + MODEL_BOLLARD = 1214, + MODEL_BOLLARDLIGHT = 1215, + MODEL_PHONEBOOTH1 = 1216, + MODEL_BARREL2 = 1217, + MODEL_BARREL1 = 1218, + MODEL_PALETTE = 1219, + MODEL_CARDBOARDBOX2 = 1220, + MODEL_CARDBOARDBOX4 = 1221, + MODEL_BARREL3 = 1222, + MODEL_LAMPOST_COAST = 1223, + MODEL_WOODENBOX = 1224, + MODEL_BARREL4 = 1225, + MODEL_LAMPPOST3 = 1226, + MODEL_DUMP1 = 1227, + MODEL_ROADWORKBARRIER1 = 1228, + MODEL_BUSSIGN1 = 1229, + MODEL_CARDBOARDBOX = 1230, + MODEL_STREETLAMP2 = 1231, + MODEL_STREETLAMP1 = 1232, + MODEL_NOPARKINGSIGN1 = 1233, + MODEL_PHONESIGN = 1234, + MODEL_WASTEBIN = 1235, + MODEL_RCYCLBANK01 = 1236, + MODEL_STRTBARRIER01 = 1237, + MODEL_TRAFFICCONE = 1238, + MODEL_INFO = 1239, + MODEL_HEALTH = 1240, + MODEL_ADRENALINE = 1241, + MODEL_BODYARMOUR = 1242, + MODEL_BOUY = 1243, + MODEL_PETROLPUMP = 1244, + MODEL_NEWRAMP = 1245, + MODEL_LINE = 1246, + MODEL_BRIBE = 1247, + MODEL_BONUS = 1248, + MODEL_FAKETARGET = 1249, + MODEL_SMASHBARPOST = 1250, + MODEL_SMASHBAR = 1251, + MODEL_BARRELEXPOS = 1252, + MODEL_CAMERAPICKUP = 1253, + MODEL_KILLFRENZY = 1254, + MODEL_LOUNGER = 1255, + MODEL_STONEBENCH1 = 1256, + MODEL_BUSTOPM = 1257, + MODEL_MPOSTBOX1 = 1258, + MODEL_BILLBD1 = 1259, + MODEL_BILLBD3 = 1260, + MODEL_LODLBD2 = 1261, + MODEL_MTRAFFIC4 = 1262, + MODEL_MTRAFFIC3 = 1263, + MODEL_BLACKBAG1 = 1264, + MODEL_BLACKBAG2 = 1265, + MODEL_LODLBD3 = 1266, + MODEL_BILLBD2 = 1267, + MODEL_LODLBD1 = 1268, + MODEL_PARKINGMETER = 1269, + MODEL_PARKINGMETERG = 1270, + MODEL_GUNBOX = 1271, + MODEL_PROPERTY_LOCKED = 1272, + MODEL_PROPERTY_FSALE = 1273, + MODEL_BIGDOLLAR = 1274, + MODEL_CLOTHESP = 1275, + MODEL_PACKAGE1 = 1276, + MODEL_PICKUPSAVE = 1277, + MODEL_SUB_FLOODLITE = 1278, + MODEL_CRAIGPACKAGE = 1279, + MODEL_PARKBENCH1 = 1280, + MODEL_PARKTABLE1 = 1281, + MODEL_BARRIERM = 1282, + MODEL_MTRAFFIC1 = 1283, + MODEL_MTRAFFIC2 = 1284, + MODEL_NEWSTANDNEW5 = 1285, + MODEL_NEWSTANDNEW4 = 1286, + MODEL_NEWSTANDNEW3 = 1287, + MODEL_NEWSTANDNEW2 = 1288, + MODEL_NEWSTANDNEW1 = 1289, + MODEL_LAMPPOST2 = 1290, + MODEL_POSTBOX1 = 1291, + MODEL_POSTBOX1_D = 1292, + MODEL_PAPERMACHN01 = 1293, + MODEL_MLAMPPOST = 1294, + MODEL_DOUBLESTREETLGHT1 = 1295, + MODEL_DOUBLESTREETLGHT1_D = 1296, + MODEL_LAMPPOST1 = 1297, + MODEL_LAMPPOST1_D = 1298, + MODEL_SMASHBOXPILE = 1299, + MODEL_BIN1 = 1300, + MODEL_HELI_MAGNET = 1301, + MODEL_VENDMACHFD = 1302, + MODEL_DYN_QUARRYROCK03 = 1303, + MODEL_DYN_QUARRYROCK02 = 1304, + MODEL_DYN_QUARRYROCK01 = 1305, + MODEL_TLGRAPHPOLEGEN = 1306, + MODEL_TELGRPHPOLEALL = 1307, + MODEL_TELGRPHPOLE02 = 1308, + MODEL_BIGBILLBRD = 1309, + MODEL_PIKUPPARACHUTE = 1310, + MODEL_GEN_ROADSIGN1 = 1311, + MODEL_GEN_ROADSIGN2 = 1312, + MODEL_KILLFRENZY2PLYR = 1313, + MODEL_TWOPLAYER = 1314, + MODEL_TRAFFICLIGHT1 = 1315, + MODEL_HOOP = 1316, + MODEL_CYLINDER = 1317, + MODEL_ARROW = 1318, + MODEL_WS_REF_BOLLARD = 1319, + MODEL_WS_ROADWARNING_05 = 1320, + MODEL_WS_ROADWARNING_01 = 1321, + MODEL_WS_ROADWARNING_02 = 1322, + MODEL_WS_ROADWARNING_03 = 1323, + MODEL_WS_ROADWARNING_04 = 1324, + MODEL_LODLBRD = 1325, + MODEL_JUNK_TYRE = 1327, + MODEL_BINNT10_LA = 1328, + MODEL_BINNT13_LA = 1329, + MODEL_BINNT14_LA = 1330, + MODEL_BINNT01_LA = 1331, + MODEL_BINNT02_LA = 1332, + MODEL_BINNT03_LA = 1333, + MODEL_BINNT04_LA = 1334, + MODEL_BINNT05_LA = 1335, + MODEL_BINNT06_LA = 1336, + MODEL_BINNT07_LA = 1337, + MODEL_BINNT08_LA = 1338, + MODEL_BINNT09_LA = 1339, + MODEL_CHILLIDOGCART = 1340, + MODEL_ICESCART_PROP = 1341, + MODEL_NOODLECART_PROP = 1342, + MODEL_CJ_DUMPSTER3 = 1343, + MODEL_CJ_DUMPSTER2 = 1344, + MODEL_CJ_DUMPSTER = 1345, + MODEL_CJ_PHONE_KIOSK2 = 1346, + MODEL_CJ_WASTEBIN = 1347, + MODEL_CJ_O2TANKS = 1348, + MODEL_CJ_SHTROLLY = 1349, + MODEL_CJ_TRAFFIC_LIGHT4 = 1350, + MODEL_CJ_TRAFFIC_LIGHT5 = 1351, + MODEL_CJ_TRAFFIC_LIGHT3 = 1352, + MODEL_CJ_AIRCON = 1353, + MODEL_CJ_AIRCON_FAN = 1354, + MODEL_CJ_FRUITCRATE1 = 1355, + MODEL_CJ_FRUITCRATE2 = 1356, + MODEL_CJ_FRUITCRATE3 = 1357, + MODEL_CJ_SKIP_RUBBISH = 1358, + MODEL_CJ_BIN1 = 1359, + MODEL_CJ_BUSH_PROP3 = 1360, + MODEL_CJ_BUSH_PROP2 = 1361, + MODEL_CJ_FIREBIN__L0_ = 1362, + MODEL_CJ_PHONE_KIOSK = 1363, + MODEL_CJ_BUSH_PROP = 1364, + MODEL_CJ_BIG_SKIP1 = 1365, + MODEL_CJ_FIREHYDRANT = 1366, + MODEL_CJ_POSTBOX = 1367, + MODEL_CJ_BLOCKER_BENCH = 1368, + MODEL_CJ_WHEELCHAIR1 = 1369, + MODEL_CJ_FLAME_DRUM__F_ = 1370, + MODEL_CJ_HIPPO_BIN = 1371, + MODEL_CJ_DUMP2_LOW = 1372, + MODEL_TRAINCROSS1 = 1373, + MODEL_TRAINCROSS2 = 1374, + MODEL_TRAMSTOP_SF = 1375, + MODEL_CONTAINERCRANE_03 = 1376, + MODEL_CONTAINERCRANE_01 = 1377, + MODEL_CONTAINERCRANE_04 = 1378, + MODEL_MAGNOCRANE_02 = 1379, + MODEL_MAGNOCRANE_01 = 1380, + MODEL_MAGNOCRANE_04 = 1381, + MODEL_MAGNOCRANE_03 = 1382, + MODEL_TWRCRANE_M_04 = 1383, + MODEL_TWRCRANE_M_01 = 1384, + MODEL_TWRCRANE_M_02 = 1385, + MODEL_CONTAINERCRANE_02 = 1386, + MODEL_TWRCRANE_M_03 = 1387, + MODEL_TWRCRANE_S_04 = 1388, + MODEL_TWRCRANE_S_01 = 1389, + MODEL_TWRCRANE_S_02 = 1390, + MODEL_TWRCRANE_S_03 = 1391, + MODEL_TWRCRANE_L_04 = 1392, + MODEL_TWRCRANE_L_01 = 1393, + MODEL_TWRCRANE_L_02 = 1394, + MODEL_TWRCRANE_L_03 = 1395, + MODEL_LODTAINERCRANE_04 = 1396, + MODEL_LODTAINERCRANE_03 = 1397, + MODEL_LODNOCRANE_01 = 1398, + MODEL_LODNOCRANE_02 = 1399, + MODEL_LODNOCRANE_03 = 1400, + MODEL_LODCRANE_S_03 = 1401, + MODEL_LODCRANE_S_04 = 1402, + MODEL_LODCRANE_M_01 = 1403, + MODEL_LODCRANE_M_04 = 1404, + MODEL_LODCRANE_L_03 = 1405, + MODEL_LODCRANE_L_02 = 1406, + MODEL_DYN_F_R_WOOD_1 = 1407, + MODEL_DYN_F_WOOD_2 = 1408, + MODEL_CJ_DUMP1_LOW = 1409, + MODEL_DYN_F_R_WOOD_1B = 1410, + MODEL_DYN_MESH_1 = 1411, + MODEL_DYN_MESH_2 = 1412, + MODEL_DYN_MESH_3 = 1413, + MODEL_DYN_COR_SHEET = 1414, + MODEL_DYN_DUMPSTER = 1415, + MODEL_DYN_UNIT = 1416, + MODEL_DYN_CUPBOARD = 1417, + MODEL_DYN_F_WOOD_3 = 1418, + MODEL_DYN_F_IRON_1 = 1419, + MODEL_DYN_AIRCON = 1420, + MODEL_DYN_BOXES = 1421, + MODEL_DYN_ROADBARRIER_5 = 1422, + MODEL_DYN_ROADBARRIER_4 = 1423, + MODEL_DYN_ROADBARRIER_2 = 1424, + MODEL_DYN_ROADBARRIER_3 = 1425, + MODEL_DYN_SCAFFOLD = 1426, + MODEL_CJ_ROADBARRIER = 1427, + MODEL_DYN_LADDER = 1428, + MODEL_DYN_TV = 1429, + MODEL_CJ_DUMP1_LOW01 = 1430, + MODEL_DYN_BOX_PILE = 1431, + MODEL_DYN_TABLE_2 = 1432, + MODEL_DYN_TABLE_1 = 1433, + MODEL_DYN_ROADBARRIER_5A = 1434, + MODEL_DYN_ROADBARRIER_5B = 1435, + MODEL_DYN_SCAFFOLD_2 = 1436, + MODEL_DYN_LADDER_2 = 1437, + MODEL_DYN_BOX_PILE_2 = 1438, + MODEL_DYN_DUMPSTER_1 = 1439, + MODEL_DYN_BOX_PILE_3 = 1440, + MODEL_DYN_BOX_PILE_4 = 1441, + MODEL_DYN_FIREBIN0 = 1442, + MODEL_DYN_STREET_SIGN_1 = 1443, + MODEL_DYN_STREET_SIGN_2 = 1444, + MODEL_DYN_FF_STAND = 1445, + MODEL_DYN_F_R_WOOD_4 = 1446, + MODEL_DYN_MESH_4 = 1447, + MODEL_DYN_CRATE_1 = 1448, + MODEL_DYN_CRATE_2 = 1449, + MODEL_DYN_CRATE_3 = 1450, + MODEL_DYN_COUP = 1451, + MODEL_DYN_OUTHOUSE = 1452, + MODEL_DYN_H_BALE1 = 1453, + MODEL_DYN_H_BALE2 = 1454, + MODEL_DYN_GLASS = 1455, + MODEL_DYN_F_R_WOOD_2 = 1456, + MODEL_DYN_OUTHOUSE_2 = 1457, + MODEL_DYN_CART = 1458, + MODEL_DYN_ROADBARRIER_6 = 1459, + MODEL_DYN_F_R_WOOD_3 = 1460, + MODEL_DYN_LIFE_P = 1461, + MODEL_DYN_WOODPILE = 1462, + MODEL_DYN_WOODPILE2 = 1463, + MODEL_DYN_SCAFFOLD_3 = 1464, + MODEL_DYN_SCAFFOLD_4 = 1465, + MODEL_DYN_SCAFFOLD_5 = 1466, + MODEL_DYN_SCAFFOLD_3B = 1467, + MODEL_DYN_MESH_05 = 1468, + MODEL_DYN_SCAFFOLD_4B = 1469, + MODEL_DYN_PORCH_3 = 1470, + MODEL_DYN_PORCH_2 = 1471, + MODEL_DYN_PORCH_1 = 1472, + MODEL_DYN_PORCH_1B = 1473, + MODEL_DYN_PORCH_2B = 1474, + MODEL_DYN_PORCH_3B = 1475, + MODEL_DYN_PORCH_4 = 1476, + MODEL_DYN_PORCH_4B = 1477, + MODEL_DYN_POST_BOX = 1478, + MODEL_DYN_GAZ_1 = 1479, + MODEL_DYN_GAZ_2 = 1480, + MODEL_DYN_BAR_B_Q = 1481, + MODEL_DYN_GARRAGE1 = 1482, + MODEL_DYN_GARRAGE2 = 1483, + MODEL_CJ_BEAR_BOTTLE = 1484, + MODEL_CJ_CIGGY = 1485, + MODEL_DYN_BEER_1 = 1486, + MODEL_DYN_WINE_1 = 1487, + MODEL_DYN_SPIRIT_1 = 1488, + MODEL_DYN_SALE_POST = 1489, + MODEL_TAG_01 = 1490, + MODEL_GEN_DOORINT01 = 1491, + MODEL_GEN_DOORINT02 = 1492, + MODEL_GEN_DOORSHOP01 = 1493, + MODEL_GEN_DOORINT03 = 1494, + MODEL_GEN_DOOREXT01 = 1495, + MODEL_GEN_DOORSHOP02 = 1496, + MODEL_GEN_DOOREXT02 = 1497, + MODEL_GEN_DOOREXT03 = 1498, + MODEL_GEN_DOORINT05 = 1499, + MODEL_GEN_DOOREXT05 = 1500, + MODEL_GEN_DOOREXT04 = 1501, + MODEL_GEN_DOORINT04 = 1502, + MODEL_DYN_RAMP = 1503, + MODEL_GEN_DOOREXT06 = 1504, + MODEL_GEN_DOOREXT07 = 1505, + MODEL_GEN_DOOREXT08 = 1506, + MODEL_GEN_DOOREXT09 = 1507, + MODEL_DYN_GARAGE_DOOR = 1508, + MODEL_DYN_WINE_3 = 1509, + MODEL_DYN_ASHTRY = 1510, + MODEL_DYN_SPIRIT_02 = 1511, + MODEL_DYN_WINE_03 = 1512, + MODEL_DYN_SWEETIE_TRAY = 1513, + MODEL_DYN_FF_TILL = 1514, + MODEL_DYN_SLOT_PROP = 1515, + MODEL_DYN_TABLE_03 = 1516, + MODEL_DYN_WINE_BREAK = 1517, + MODEL_DYN_TV_2 = 1518, + MODEL_DYN_SCAFF_COVER = 1519, + MODEL_DYN_WINE_BOUNCE = 1520, + MODEL_DYN_SCAFF2_COVER = 1521, + MODEL_GEN_DOORSHOP3 = 1522, + MODEL_GEN_DOOREXT10 = 1523, + MODEL_TAG_FRONT = 1524, + MODEL_TAG_KILO = 1525, + MODEL_TAG_RIFA = 1526, + MODEL_TAG_ROLLIN = 1527, + MODEL_TAG_SEVILLE = 1528, + MODEL_TAG_TEMPLE = 1529, + MODEL_TAG_VAGOS = 1530, + MODEL_TAG_AZTECA = 1531, + MODEL_GEN_DOOREXT11 = 1532, + MODEL_GEN_DOOREXT12 = 1533, + MODEL_CJ_WIN_POP2 = 1534, + MODEL_GEN_DOOREXT14 = 1535, + MODEL_GEN_DOOREXT15 = 1536, + MODEL_GEN_DOOREXT16 = 1537, + MODEL_SL_DTDOOR1 = 1538, + MODEL_LAMOTSIG1_LACJ = 1539, + MODEL_VEGASMOTSIGNCJ = 1540, + MODEL_CJ_BEER_TAPS_1 = 1541, + MODEL_CJ_BEER_TAPS_2 = 1542, + MODEL_CJ_BEER_B_2 = 1543, + MODEL_CJ_BEER_B_1 = 1544, + MODEL_CJ_B_OPTIC1 = 1545, + MODEL_CJ_PINT_GLASS = 1546, + MODEL_CJ_B_PISH_T = 1547, + MODEL_CJ_DRIP_TRAY = 1548, + MODEL_CJ_ASHTRAY_B = 1549, + MODEL_CJ_MONEY_BAG = 1550, + MODEL_DYN_WINE_BIG = 1551, + MODEL_VEGASMASHFNCE = 1552, + MODEL_VEGASMASHFNCE_GATE = 1553, + MODEL_CJ_WATER_BARRIER = 1554, + MODEL_GEN_DOOREXT17 = 1555, + MODEL_GEN_DOOREXT18 = 1556, + MODEL_GEN_DOOREXT19 = 1557, + MODEL_CJ_CARDBRD_PICKUP = 1558, + MODEL_DIAMOND_3 = 1559, + MODEL_GEN_DOOREXT7_11L = 1560, + MODEL_GEN_DOOREXT7_11R = 1561, + MODEL_AB_JETSEAT = 1562, + MODEL_AB_JETSEAT_HREST = 1563, + MODEL_AB_JETLITEGLASS = 1564, + MODEL_AB_JETLITE = 1565, + MODEL_CJ_WS_DOOR = 1566, + MODEL_GEN_WARDROBE = 1567, + MODEL_CHINALAMP_SF = 1568, + MODEL_ADAM_V_DOOR = 1569, + MODEL_CJ_NOODLE_3 = 1570, + MODEL_CJ_NOODLE_1 = 1571, + MODEL_CJ_AIR_TROLLY = 1572, + MODEL_TRASHCAN = 1574, + MODEL_DRUG_WHITE = 1575, + MODEL_DRUG_ORANGE = 1576, + MODEL_DRUG_YELLOW = 1577, + MODEL_DRUG_GREEN = 1578, + MODEL_DRUG_BLUE = 1579, + MODEL_DRUG_RED = 1580, + MODEL_KEYCARD = 1581, + MODEL_PIZZABOX = 1582, + MODEL_TAR_GUN2 = 1583, + MODEL_TAR_GUN1 = 1584, + MODEL_TAR_CIV2 = 1585, + MODEL_TAR_CIV1 = 1586, + MODEL_TAR_FRAME = 1587, + MODEL_TAR_TOP = 1588, + MODEL_TAR_UPRIGHT = 1589, + MODEL_TAR_UPLEFT = 1590, + MODEL_TAR_DOWNLEFT = 1591, + MODEL_TAR_DOWNRIGHT = 1592, + MODEL_PLC_STINGER = 1593, + MODEL_CHAIRSNTABLE = 1594, + MODEL_SATDISHBIG = 1595, + MODEL_SATDISHSML = 1596, + MODEL_CNTRLRSAC1 = 1597, + MODEL_BEACHBALL = 1598, + MODEL_FISH1SINGLE = 1599, + MODEL_FISH2SINGLE = 1600, + MODEL_FISH3S = 1601, + MODEL_JELLYFISH = 1602, + MODEL_JELLYFISH01 = 1603, + MODEL_FISH3SINGLE = 1604, + MODEL_FISH1S = 1605, + MODEL_FISH2S = 1606, + MODEL_DOLPHIN = 1607, + MODEL_SHARK = 1608, + MODEL_TURTLE = 1609, + MODEL_SANDCASTLE1 = 1610, + MODEL_SANDCASTLE2 = 1611, + MODEL_SUBMARINE = 1612, + MODEL_NT_FIREHOSE_01 = 1613, + MODEL_NT_ALARM1_01 = 1614, + MODEL_NT_ALARM2_01 = 1615, + MODEL_NT_SECURECAM1_01 = 1616, + MODEL_NT_AIRCON1_01 = 1617, + MODEL_NT_AIRCON1_02 = 1618, + MODEL_NT_VENT1_01 = 1619, + MODEL_NT_VENT2_01 = 1620, + MODEL_NT_VENT3_01 = 1621, + MODEL_NT_SECURECAM2_01 = 1622, + MODEL_NT_AIRCON3_01 = 1623, + MODEL_NT_CABLEBOX1_01 = 1624, + MODEL_NT_CABLEBOX2_01 = 1625, + MODEL_NT_CABLEBOX3_01 = 1626, + MODEL_NT_ALARM3_01 = 1627, + MODEL_NT_CABLEBOX4_01 = 1628, + MODEL_NT_CABLEBOX5_01 = 1629, + MODEL_NT_CABLEBOX6_01 = 1630, + MODEL_WATERJUMP2 = 1631, + MODEL_WATERJUMP1 = 1632, + MODEL_LANDJUMP = 1633, + MODEL_LANDJUMP2 = 1634, + MODEL_NT_AIRCON1DBL = 1635, + MODEL_RCBOMB = 1636, + MODEL_OD_PAT_HUTB = 1637, + MODEL_OD_PAT_HUT = 1638, + MODEL_OD_VBNET = 1639, + MODEL_BEACHTOWEL04 = 1640, + MODEL_BEACHTOWEL03 = 1641, + MODEL_BEACHTOWEL02 = 1642, + MODEL_BEACHTOWEL01 = 1643, + MODEL_LOTION = 1644, + MODEL_LOUNGE_WOOD_UP = 1645, + MODEL_LOUNGE_TOWEL_UP = 1646, + MODEL_LOUNGE_WOOD_DN = 1647, + MODEL_OD_GROYNE01 = 1648, + MODEL_WGLASSSMASH = 1649, + MODEL_PETROLCANM = 1650, + MODEL_OD_COPWINDOWS = 1651, + MODEL_FENCEHAITI = 1652, + MODEL_FENCEHAITISM = 1653, + MODEL_DYNAMITE = 1654, + MODEL_WATERJUMPX2 = 1655, + MODEL_ESC_STEP = 1656, + MODEL_HTL_FAN_ROTATE_NT = 1657, + MODEL_HTL_FAN_STATIC_NT = 1658, + MODEL_HTL_FAN_STATIC_DY = 1659, + MODEL_RAMP = 1660, + MODEL_HTL_FAN_ROTATE_DY = 1661, + MODEL_NT_ROADBLOCKCI = 1662, + MODEL_SWIVELCHAIR_B = 1663, + MODEL_PROPWINEBOTL2 = 1664, + MODEL_PROPASHTRAY1 = 1665, + MODEL_PROPBEERGLASS1 = 1666, + MODEL_PROPWINEGLASS1 = 1667, + MODEL_PROPVODKABOTL1 = 1668, + MODEL_PROPWINEBOTL1 = 1669, + MODEL_PROPCOLLECTTABLE = 1670, + MODEL_SWIVELCHAIR_A = 1671, + MODEL_GASGRENADE = 1672, + MODEL_ROADSIGN = 1673, + MODEL_LODXREFHSE1 = 1674, + MODEL_WSHXREFHSE1 = 1675, + MODEL_WASHGASPUMP = 1676, + MODEL_WSHXREFHSE2 = 1677, + MODEL_LODXREFHSE2 = 1678, + MODEL_CHAIRSNTABLEML = 1679, + MODEL_LODJUMBO_01 = 1680, + MODEL_AP_LEARJET1_01 = 1681, + MODEL_AP_RADAR1_01 = 1682, + MODEL_AP_JUMBO_01 = 1683, + MODEL_PORTAKABIN = 1684, + MODEL_BLOCKPALLET = 1685, + MODEL_PETROLPUMPNEW = 1686, + MODEL_GEN_ROOFBIT1 = 1687, + MODEL_GEN_ROOFBIT2 = 1688, + MODEL_GEN_ROOFBIT3 = 1689, + MODEL_GEN_ROOFBIT4 = 1690, + MODEL_GEN_ROOFBIT5 = 1691, + MODEL_ROOFSTUFF18 = 1692, + MODEL_ROOFSTUFF12 = 1693, + MODEL_ROOFSTUFF13 = 1694, + MODEL_ROOFSTUFF14 = 1695, + MODEL_ROOFSTUFF15 = 1696, + MODEL_ROOFSTUFF16 = 1697, + MODEL_ESC_STEP8 = 1698, + MODEL_KB_BED_TEST1 = 1700, + MODEL_KB_BED_TEST2 = 1701, + MODEL_KB_COUCH06 = 1702, + MODEL_KB_COUCH02 = 1703, + MODEL_KB_CHAIR03 = 1704, + MODEL_KB_CHAIR04 = 1705, + MODEL_KB_COUCH03 = 1706, + MODEL_KB_COUCH01 = 1707, + MODEL_KB_CHAIR02 = 1708, + MODEL_KB_COUCH08 = 1709, + MODEL_KB_COUCH07 = 1710, + MODEL_KB_CHAIR01 = 1711, + MODEL_KB_COUCH05 = 1712, + MODEL_KB_COUCH04 = 1713, + MODEL_KB_SWIVELCHAIR1 = 1714, + MODEL_KB_SWIVELCHAIR2 = 1715, + MODEL_KB_SLOT_STOOL = 1716, + MODEL_TELLY_LOW_TEST = 1717, + MODEL_SNESISH = 1718, + MODEL_LOW_CONSOLE = 1719, + MODEL_REST_CHAIR = 1720, + MODEL_EST_CHAIR1 = 1721, + MODEL_OFF_CHAIRNU = 1722, + MODEL_MRK_SEATING1 = 1723, + MODEL_MRK_SEATING1B = 1724, + MODEL_MRK_BED1 = 1725, + MODEL_MRK_SEATING2 = 1726, + MODEL_MRK_SEATING2B = 1727, + MODEL_MRK_SEATING3 = 1728, + MODEL_MRK_SEATING3B = 1729, + MODEL_SWANK_CABINET_3 = 1730, + MODEL_CJ_MLIGHT3 = 1731, + MODEL_CJ_JUKE_BOX = 1732, + MODEL_CJ_WASHINGMAC = 1733, + MODEL_CJ_MLIGHT2 = 1734, + MODEL_CJ_EASYCHAIR1 = 1735, + MODEL_CJ_STAGS_HEAD = 1736, + MODEL_MED_DINNING_5 = 1737, + MODEL_CJ_RADIATOR_OLD = 1738, + MODEL_SWANK_DIN_CHAIR_5 = 1739, + MODEL_LOW_CABINET_3 = 1740, + MODEL_LOW_CABINET_1 = 1741, + MODEL_MED_BOOKSHELF = 1742, + MODEL_MED_CABINET_3 = 1743, + MODEL_MED_SHELF = 1744, + MODEL_MED_BED_3 = 1745, + MODEL_SWANK_1_FOOTSTOOL = 1746, + MODEL_LOW_TV_2 = 1747, + MODEL_LOW_TV_3 = 1748, + MODEL_MED_TV_3 = 1749, + MODEL_MED_TV_2 = 1750, + MODEL_MED_TV_4 = 1751, + MODEL_SWANK_TV_3 = 1752, + MODEL_SWANK_COUCH_1 = 1753, + MODEL_SWANK_SINGLE_1 = 1754, + MODEL_MED_SINGLE_2 = 1755, + MODEL_LOW_COUCH_4 = 1756, + MODEL_LOW_COUCH_5 = 1757, + MODEL_LOW_SINGLE_4 = 1758, + MODEL_LOW_SINGLE_1 = 1759, + MODEL_MED_COUCH_2 = 1760, + MODEL_SWANK_COUCH_2 = 1761, + MODEL_SWANK_SINGLE_2 = 1762, + MODEL_LOW_COUCH_1 = 1763, + MODEL_LOW_COUCH_2 = 1764, + MODEL_LOW_SINGLE_2 = 1765, + MODEL_MED_COUCH_1 = 1766, + MODEL_MED_SINGLE_1 = 1767, + MODEL_LOW_COUCH_3 = 1768, + MODEL_LOW_SINGLE_3 = 1769, + MODEL_LOW_DINNING_2 = 1770, + MODEL_CJ_BUNK_BED1 = 1771, + MODEL_CJ_HOT_DOG1 = 1772, + MODEL_CJ_COOKER2 = 1773, + MODEL_CJ_MONKETSHOPSIGN = 1774, + MODEL_CJ_SPRUNK1 = 1775, + MODEL_CJ_CANDYVENDOR = 1776, + MODEL_CJ_COOKER1 = 1777, + MODEL_CJ_MOP_PAIL = 1778, + MODEL_CJ_TICKETMACHINE = 1779, + MODEL_CJ_THIN_FRIGE = 1780, + MODEL_MED_TV_1 = 1781, + MODEL_MED_VIDEO_2 = 1782, + MODEL_SWANK_VIDEO_2 = 1783, + MODEL_LOW_VIDEO_2 = 1784, + MODEL_LOW_VIDEO_1 = 1785, + MODEL_SWANK_TV_4 = 1786, + MODEL_MED_VIDEO_1 = 1787, + MODEL_SWANK_VIDEO_1 = 1788, + MODEL_CJ_CHAMBERMAID = 1789, + MODEL_SWANK_VIDEO_3 = 1790, + MODEL_SWANK_TV_2 = 1791, + MODEL_SWANK_TV_1 = 1792, + MODEL_LOW_BED_2 = 1793, + MODEL_LOW_BED_3 = 1794, + MODEL_SWANK_BED_2 = 1795, + MODEL_LOW_BED_4 = 1796, + MODEL_SWANK_BED_3 = 1797, + MODEL_SWANK_BED_1 = 1798, + MODEL_MED_BED_4 = 1799, + MODEL_LOW_BED_1 = 1800, + MODEL_SWANK_BED_4 = 1801, + MODEL_MED_BED_2 = 1802, + MODEL_MED_BED_7 = 1803, + MODEL_MED_BED_1 = 1804, + MODEL_CJ_BARSTOOL = 1805, + MODEL_MED_OFFICE_CHAIR = 1806, + MODEL_CJ_MEDIUMPOTS1 = 1807, + MODEL_CJ_WATERCOOLER2 = 1808, + MODEL_MED_HI_FI = 1809, + MODEL_CJ_FOLDCHAIR = 1810, + MODEL_MED_DIN_CHAIR_5 = 1811, + MODEL_LOW_BED_5 = 1812, + MODEL_COFFEE_LOW_5 = 1813, + MODEL_COFFEE_MED_1 = 1814, + MODEL_COFFEE_LOW_2 = 1815, + MODEL_COFFEE_LOW_3 = 1816, + MODEL_COFFEE_MED_2 = 1817, + MODEL_COFFEE_SWANK_2 = 1818, + MODEL_COFFEE_SWANK_4 = 1819, + MODEL_COFFEE_LOW_4 = 1820, + MODEL_COFFEE_LOW_1 = 1821, + MODEL_COFFEE_SWANK_6 = 1822, + MODEL_COFFEE_MED_5 = 1823, + MODEL_CRAPS_TABLE = 1824, + MODEL_KB_TABLE_CHAIRS1 = 1825, + MODEL_KB_TABLE1 = 1826, + MODEL_MAN_SDR_TABLES = 1827, + MODEL_MAN_SDR_RUG = 1828, + MODEL_MAN_SAFENEW = 1829, + MODEL_KB_BANDIT1 = 1830, + MODEL_KB_BANDIT2 = 1831, + MODEL_KB_BANDIT3 = 1832, + MODEL_KB_BANDIT4 = 1833, + MODEL_KB_BANDIT6 = 1834, + MODEL_KB_BANDIT5 = 1835, + MODEL_KB_BANDIT7 = 1836, + MODEL_KB_BANDIT9 = 1837, + MODEL_KB_BANDIT11 = 1838, + MODEL_K_HIFI_1 = 1839, + MODEL_SPEAKER_2 = 1840, + MODEL_SPEAKER_1 = 1841, + MODEL_SHOP_SHELF05 = 1842, + MODEL_SHOP_SHELF02 = 1843, + MODEL_SHOP_SHELF03 = 1844, + MODEL_SHOP_SHELF10 = 1845, + MODEL_SHOP_SHELF04 = 1846, + MODEL_SHOP_SHELF06 = 1847, + MODEL_SHOP_SHELF07 = 1848, + MODEL_SHOP_SHELF09 = 1849, + MODEL_SHOP_SHELF08 = 1850, + MODEL_DICE1 = 1851, + MODEL_DICE02 = 1852, + MODEL_PKR_CHP_HI04 = 1853, + MODEL_PKR_CHP_HI05 = 1854, + MODEL_PKR_CHP_HI03 = 1855, + MODEL_PKR_CHP_HI02 = 1856, + MODEL_PKR_CHP_HI01 = 1857, + MODEL_PKR_CHP_HI06 = 1858, + MODEL_PKR_CHP_MED04 = 1859, + MODEL_PKR_CHP_MED06 = 1860, + MODEL_PKR_CHP_MED05 = 1861, + MODEL_PKR_CHP_MED03 = 1862, + MODEL_PKR_CHP_MED02 = 1863, + MODEL_PKR_CHP_MED01 = 1864, + MODEL_PKR_CHPLO06 = 1865, + MODEL_PKR_CHPLO05 = 1866, + MODEL_PKR_CHPLO04 = 1867, + MODEL_PKR_CHPLO03 = 1868, + MODEL_PKR_CHPLO02 = 1869, + MODEL_PKR_CHPLO01 = 1870, + MODEL_PKR_CHP_VLO04 = 1871, + MODEL_PKR_CHP_VLO01 = 1872, + MODEL_PKR_CHP_VLO02 = 1873, + MODEL_PKR_CHP_VLO03 = 1874, + MODEL_PKR_CHP_VLO05 = 1875, + MODEL_PKR_CHP_VLO06 = 1876, + MODEL_CHIP_STACK02 = 1877, + MODEL_CHIP_STACK03 = 1878, + MODEL_CHIP_STACK04 = 1879, + MODEL_CHIP_STACK05 = 1880, + MODEL_CHIP_STACK06 = 1881, + MODEL_CHIP_STACK01 = 1882, + MODEL_SHOP_SHELF01 = 1883, + MODEL_SHOP_DBLSHLF = 1884, + MODEL_SHOP_BASKETS = 1885, + MODEL_SHOP_SEC_CAM = 1886, + MODEL_SHOP_SHELF11 = 1887, + MODEL_SHOP_SHELF12 = 1888, + MODEL_SHOP_DBLSHLF01 = 1889, + MODEL_SHOP_DBLSHLF02 = 1890, + MODEL_SHOP_DBLSHLF03 = 1891, + MODEL_SECURITY_GATSH = 1892, + MODEL_SHOPLIGHT1 = 1893, + MODEL_GARYS_LUV_RAMP = 1894, + MODEL_WHEEL_O_FORTUNE = 1895, + MODEL_WHEEL_TABLE = 1896, + MODEL_WHEEL_SUPPORT = 1897, + MODEL_CLICKER = 1898, + MODEL_PKR_CHP_VLO07 = 1899, + MODEL_PKR_CHPLO07 = 1900, + MODEL_CHIP_STACK07 = 1901, + MODEL_CHIP_STACK08 = 1902, + MODEL_CHIP_STACK09 = 1903, + MODEL_CHIP_STACK10 = 1904, + MODEL_PKR_CHPLO08 = 1905, + MODEL_PKR_CHPLO09 = 1906, + MODEL_PKR_CHPLO10 = 1907, + MODEL_PKR_CHPLO11 = 1908, + MODEL_PKR_CHP_VLO08 = 1909, + MODEL_PKR_CHP_VLO09 = 1910, + MODEL_CHIP_STACK11 = 1911, + MODEL_PKR_CHP_VLO10 = 1912, + MODEL_PKR_CHP_VLO11 = 1913, + MODEL_PKR_CHP_VLO12 = 1914, + MODEL_PKR_CHP_MED07 = 1915, + MODEL_PKR_CHP_MED08 = 1916, + MODEL_PKR_CHP_MED09 = 1917, + MODEL_PKR_CHP_MED10 = 1918, + MODEL_PKR_CHPLO12 = 1919, + MODEL_PKR_CHP_MED11 = 1920, + MODEL_CHIP_STACK12 = 1921, + MODEL_PKR_CHP_MED12 = 1922, + MODEL_PKR_CHP_HI07 = 1923, + MODEL_PKR_CHP_HI08 = 1924, + MODEL_PKR_CHP_HI09 = 1925, + MODEL_PKR_CHP_HI10 = 1926, + MODEL_PKR_CHP_HI11 = 1927, + MODEL_PKR_CHP_HI12 = 1928, + MODEL_WHEEL_WEE01 = 1929, + MODEL_CHIP_STACK13 = 1930, + MODEL_CHIP_STACK14 = 1931, + MODEL_CHIP_STACK15 = 1932, + MODEL_CHIP_STACK16 = 1933, + MODEL_PKR_CHP_HI13 = 1934, + MODEL_PKR_CHP_HI14 = 1935, + MODEL_PKR_CHP_HI15 = 1936, + MODEL_PKR_CHP_HI16 = 1937, + MODEL_PKR_CHP_HI17 = 1938, + MODEL_PKR_CHP_HI18 = 1939, + MODEL_CHIP_STACK18 = 1940, + MODEL_CHIP_STACK17 = 1941, + MODEL_KG50 = 1942, + MODEL_KG20 = 1943, + MODEL_KG10 = 1944, + MODEL_KG5 = 1945, + MODEL_BASKT_BALL_HI = 1946, + MODEL_CHIPS_TEMP = 1947, + MODEL_SLOT_4CHRIS = 1948, + MODEL_BARRIER_4ANDY = 1949, + MODEL_KB_BEER = 1950, + MODEL_KB_BEER01 = 1951, + MODEL_TURN_ARM_R = 1952, + MODEL_TURN_PLATER_R = 1953, + MODEL_TURN_TABLE_R = 1954, + MODEL_TURN_ARML = 1955, + MODEL_TURN_PLATERL = 1956, + MODEL_TURN_TABLEL = 1957, + MODEL_MXR_MIX_BODY = 1958, + MODEL_SHOP_TILL = 1959, + MODEL_RECORD2 = 1960, + MODEL_RECORD3 = 1961, + MODEL_RECORD1 = 1962, + MODEL_EST_DESK = 1963, + MODEL_EST_DSK_STUF = 1964, + MODEL_IMCMPTRKDRL_LAS = 1965, + MODEL_IMCOMPMOVEDR1_LAS = 1966, + MODEL_IMCMPTRKDRR_LAS = 1967, + MODEL_DINERSEAT_2 = 1968, + MODEL_DINERSEAT_3 = 1969, + MODEL_DINERSEAT_1 = 1970, + MODEL_KB_FLYKILLER = 1971, + MODEL_KB_CUNTOPDISP2 = 1972, + MODEL_KB_CUNTOPDISP1 = 1973, + MODEL_KB_GOLFBALL = 1974, + MODEL_E_TEST = 1975, + MODEL_W_TEST = 1976, + MODEL_VENDIN3 = 1977, + MODEL_ROULETTE_TBL = 1978, + MODEL_WHEEL_WEE = 1979, + MODEL_WILSHIRE7DR1_LAW = 1980, + MODEL_SHLF1_CAB_MID = 1981, + MODEL_SHLF2_CAB_MID = 1982, + MODEL_SHLF4_CAB_MID = 1983, + MODEL_SHLF5_TILL = 1984, + MODEL_PUNCHBAGNU = 1985, + MODEL_SHLF2_CAB_RT = 1986, + MODEL_SHLF4_CABLFT = 1987, + MODEL_SHLF4_CAB_RT = 1988, + MODEL_KB_COOLERLFT2 = 1989, + MODEL_KB_COOLERLFT = 1990, + MODEL_SHLF1_CABLFT1 = 1991, + MODEL_SHLF2_CABLFT = 1992, + MODEL_SHLF3_CAB_MID2 = 1993, + MODEL_SHLF3_CABLFT = 1994, + MODEL_SHLF3_CAB_RT = 1995, + MODEL_SHLF1_CAB_RT = 1996, + MODEL_HOS_TROLLEY = 1997, + MODEL_OFFICEDESK1L = 1998, + MODEL_OFFICEDESK2 = 1999, + MODEL_FILING_CAB_NU = 2000, + MODEL_NU_PLANT_OFC = 2001, + MODEL_WATER_COOLNU = 2002, + MODEL_CR_SAFE_BODY = 2003, + MODEL_CR_SAFE_DOOR = 2004, + MODEL_CR_SAFE_CASH = 2005, + MODEL_CR_SAFE_DIAL = 2006, + MODEL_FILING_CAB_NU01 = 2007, + MODEL_OFFICEDESK1 = 2008, + MODEL_OFFICEDESK2L = 2009, + MODEL_NU_PLANT3_OFC = 2010, + MODEL_NU_PLANT2_OFC = 2011, + MODEL_SHOP_SHELF13 = 2012, + MODEL_KIT_CAB_SINK = 2013, + MODEL_KIT_CAB_MID = 2014, + MODEL_KIT_CAB_RGHT = 2015, + MODEL_KIT_CAB_LFT = 2016, + MODEL_KIT_CAB_COOKR = 2017, + MODEL_KIT_CAB_WASHIN = 2018, + MODEL_KIT_CAB_FRDG = 2019, + MODEL_MRK_SIDEBRD1 = 2020, + MODEL_MRK_BDSDECAB1 = 2021, + MODEL_KIT_CAB_CRNR = 2022, + MODEL_MRK_STND_LMP = 2023, + MODEL_MRK_LIV_TBLE = 2024, + MODEL_MRK_WROBE_TMP = 2025, + MODEL_MRK_SHADE_TMP = 2026, + MODEL_DINERSEAT_4 = 2027, + MODEL_SWANK_CONSOLE = 2028, + MODEL_SWANK_DINNING_1 = 2029, + MODEL_MED_DINNING_1 = 2030, + MODEL_MED_DINNING_3 = 2031, + MODEL_MED_DINNING_2 = 2032, + MODEL_CJ_SAWNOFF2 = 2033, + MODEL_CJ_SAWNOFF = 2034, + MODEL_CJ_M16 = 2035, + MODEL_CJ_PSG1 = 2036, + MODEL_CJ_PISTOL_AMMO = 2037, + MODEL_AMMO_BOX_S2 = 2038, + MODEL_AMMO_BOX_S1 = 2039, + MODEL_AMMO_BOX_M1 = 2040, + MODEL_AMMO_BOX_M2 = 2041, + MODEL_AMMO_BOX_M3 = 2042, + MODEL_AMMO_BOX_M4 = 2043, + MODEL_CJ_MP5K = 2044, + MODEL_CJ_BBAT_NAILS = 2045, + MODEL_CJ_GUNCUPBOARD = 2046, + MODEL_CJ_FLAG1 = 2047, + MODEL_CJ_FLAG2 = 2048, + MODEL_CJ_TARGET1 = 2049, + MODEL_CJ_TARGET2 = 2050, + MODEL_CJ_TARGET4 = 2051, + MODEL_CJ_TOMMY_HAT = 2052, + MODEL_CJ_JERRY_HAT = 2053, + MODEL_CJ_CAPT_HAT = 2054, + MODEL_CJ_TARGET5 = 2055, + MODEL_CJ_TARGET6 = 2056, + MODEL_FLAME_TINS = 2057, + MODEL_CJ_GUN_DOCS = 2058, + MODEL_CJ_GUNSTUFF1 = 2059, + MODEL_CJ_SANDBAG = 2060, + MODEL_CJ_SHELLS1 = 2061, + MODEL_CJ_OILDRUM2 = 2062, + MODEL_CJ_GREENSHELVES = 2063, + MODEL_CJ_FEILDGUN = 2064, + MODEL_CJ_M_FILEING1 = 2065, + MODEL_CJ_M_FILEING2 = 2066, + MODEL_CJ_M_FILEING3 = 2067, + MODEL_CJ_CAMMO_NET = 2068, + MODEL_CJ_MLIGHT7 = 2069, + MODEL_CJ_MLIGHT6 = 2070, + MODEL_CJ_MLIGHT5 = 2071, + MODEL_CJ_MLIGHT4 = 2072, + MODEL_CJ_MLIGHT1 = 2073, + MODEL_CJ_MLIGHT8 = 2074, + MODEL_CJ_MLIGHT9 = 2075, + MODEL_CJ_MLIGHT10 = 2076, + MODEL_CJ_MLIGHT11 = 2077, + MODEL_SWANK_CABINET_1 = 2078, + MODEL_SWANK_DIN_CHAIR_2 = 2079, + MODEL_SWANK_DINNING_2 = 2080, + MODEL_COFFEE_SWANK_3 = 2081, + MODEL_COFFEE_MED_3 = 2082, + MODEL_COFFEE_MED_4 = 2083, + MODEL_MED_CABINET_1 = 2084, + MODEL_SWANK_DINNING_3 = 2085, + MODEL_SWANK_DINNING_4 = 2086, + MODEL_MED_CABINET_2 = 2087, + MODEL_LOW_CABINET_4 = 2088, + MODEL_SWANK_CABINET_2 = 2089, + MODEL_SWANK_BED_5 = 2090, + MODEL_TV_WARD_MED_1 = 2091, + MODEL_SWANK_CABINET_5 = 2092, + MODEL_TV_WARD_LOW = 2093, + MODEL_SWANK_CABINET_4 = 2094, + MODEL_LOW_CABINET_2 = 2095, + MODEL_CJ_ROCKINGCHAIR = 2096, + MODEL_BATH_HIGH = 2097, + MODEL_CJ_SLOTCOVER1 = 2098, + MODEL_MED_HI_FI_1 = 2099, + MODEL_MED_HI_FI_2 = 2100, + MODEL_MED_HI_FI_3 = 2101, + MODEL_LOW_HI_FI_2 = 2102, + MODEL_LOW_HI_FI_1 = 2103, + MODEL_SWANK_HI_FI = 2104, + MODEL_CJ_MLIGHT14 = 2105, + MODEL_CJ_MLIGHT15 = 2106, + MODEL_CJ_MLIGHT12 = 2107, + MODEL_CJ_MLIGHT13 = 2108, + MODEL_LOW_DINNING_3 = 2109, + MODEL_LOW_DINNING_4 = 2110, + MODEL_LOW_DINNING_5 = 2111, + MODEL_MED_DINNING_4 = 2112, + MODEL_BASKGAMENET = 2113, + MODEL_BASKETBALL = 2114, + MODEL_LOW_DINNING_1 = 2115, + MODEL_LOW_DINNING_6 = 2116, + MODEL_SWANK_DINNING_5 = 2117, + MODEL_SWANK_DINNING_6 = 2118, + MODEL_MED_DINNING_6 = 2119, + MODEL_MED_DIN_CHAIR_4 = 2120, + MODEL_LOW_DIN_CHAIR_2 = 2121, + MODEL_SWANK_DIN_CHAIR_3 = 2122, + MODEL_SWANK_DIN_CHAIR_4 = 2123, + MODEL_SWANK_DIN_CHAIR_1 = 2124, + MODEL_MED_DIN_CHAIR_1 = 2125, + MODEL_COFFEE_SWANK_5 = 2126, + MODEL_CJ_K1_FRIDGE_UNIT = 2127, + MODEL_CJ_K1_TALL_UNIT = 2128, + MODEL_CJ_K1_LOW_UNIT = 2129, + MODEL_CJ_K1_SINK = 2130, + MODEL_CJ_KITCH2_FRIDGE = 2131, + MODEL_CJ_KITCH2_SINK = 2132, + MODEL_CJ_KITCH2_R = 2133, + MODEL_CJ_KITCH2_M = 2134, + MODEL_CJ_K3_COOKER = 2135, + MODEL_CJ_K3_SINK = 2136, + MODEL_CJ_K3_LOW_UNIT3 = 2137, + MODEL_CJ_K3_LOW_UNIT1 = 2138, + MODEL_CJ_K3_LOW_UNIT2 = 2139, + MODEL_CJ_K3_TALL_UNIT1 = 2140, + MODEL_CJ_KITCH2_L = 2141, + MODEL_CJ_K4_LOW_UNIT2 = 2142, + MODEL_CJ_K4_LOW_UNIT1 = 2143, + MODEL_CJ_COOKER3 = 2144, + MODEL_CJ_K3_UNIT06 = 2145, + MODEL_CJ_TROLLY1 = 2146, + MODEL_CJ_KITCH1_FRIDGE = 2147, + MODEL_CJ_K4_LOW_UNIT03 = 2148, + MODEL_CJ_MICROWAVE1 = 2149, + MODEL_CJ_SINK1 = 2150, + MODEL_CJ_K5_LOW_UNIT2 = 2151, + MODEL_CJ_K5_LOW_UNIT3 = 2152, + MODEL_CJ_K5_UNIT1 = 2153, + MODEL_CJ_K5_LOW_UNIT1 = 2154, + MODEL_CJ_K5_LOW_UNIT4 = 2155, + MODEL_CJ_K6_LOW_UNIT1 = 2156, + MODEL_CJ_K6_LOW_UNIT2 = 2157, + MODEL_CJ_KITCH1_L = 2158, + MODEL_CJ_K6_LOW_UNIT4 = 2159, + MODEL_CJ_K6_LOW_UNIT3 = 2160, + MODEL_MED_OFFICE_UNIT_4 = 2161, + MODEL_MED_OFFICE_UNIT_1 = 2162, + MODEL_MED_OFFICE_UNIT_2 = 2163, + MODEL_MED_OFFICE_UNIT_5 = 2164, + MODEL_MED_OFFICE_DESK_1 = 2165, + MODEL_MED_OFFICE_DESK_2 = 2166, + MODEL_MED_OFFICE_UNIT_7 = 2167, + MODEL_PARTITION = 2168, + MODEL_MED_OFFICE3_DESK_1 = 2169, + MODEL_CJ_KITCH1_COOKER = 2170, + MODEL_MED_OFFICE4_DESK_1 = 2171, + MODEL_MED_OFFICE2_DESK_1 = 2172, + MODEL_MED_OFFICE_DESK_3 = 2173, + MODEL_MED_OFFICE4_DESK_2 = 2174, + MODEL_MED_OFFICE4_DESK_3 = 2175, + MODEL_CASINO_LIGHT4 = 2176, + MODEL_CASINO_LIGHT3 = 2177, + MODEL_CASINO_LIGHT2 = 2178, + MODEL_CASINO_LIGHT1 = 2179, + MODEL_MED_OFFICE5_DESK_3 = 2180, + MODEL_MED_OFFICE5_DESK_2 = 2181, + MODEL_MED_OFFICE5_DESK_1 = 2182, + MODEL_MED_OFFICE3_DESK_09 = 2183, + MODEL_MED_OFFICE6_DESK_2 = 2184, + MODEL_MED_OFFICE6_DESK_1 = 2185, + MODEL_PHOTOCOPIER_1 = 2186, + MODEL_PARTITION2 = 2187, + MODEL_BLCK_JACK = 2188, + MODEL_POKER_TBL = 2189, + MODEL_PC_1 = 2190, + MODEL_MED_OFFICE2_CAB = 2191, + MODEL_FAN_1 = 2192, + MODEL_MED_OFFICE2_DESK_2 = 2193, + MODEL_PLANT_POT_2 = 2194, + MODEL_PLANT_POT_3 = 2195, + MODEL_WORK_LAMP1 = 2196, + MODEL_FILLING_CABINET = 2197, + MODEL_MED_OFFICE2_DESK_3 = 2198, + MODEL_MED_OFFICE6_MC_1 = 2199, + MODEL_MED_OFFICE5_UNIT_1 = 2200, + MODEL_PRINTER_1 = 2201, + MODEL_PHOTOCOPIER_2 = 2202, + MODEL_PLANT_POT_1 = 2203, + MODEL_MED_OFFICE8_CABINET = 2204, + MODEL_MED_OFFICE8_DESK_1 = 2205, + MODEL_MED_OFFICE8_DESK_02 = 2206, + MODEL_MED_OFFICE7_DESK_1 = 2207, + MODEL_MED_OFFICE7_UNIT_1 = 2208, + MODEL_MED_OFFICE9_DESK_1 = 2209, + MODEL_MED_OFFICE9_UNIT_1 = 2210, + MODEL_MED_OFFICE9_UNIT_2 = 2211, + MODEL_BURGERHIGH = 2212, + MODEL_BURGERLOW = 2213, + MODEL_BURGERMED = 2214, + MODEL_CLUCKLOW = 2215, + MODEL_CLUCKMED = 2216, + MODEL_CLUCKHIGH = 2217, + MODEL_PIZZALOW = 2218, + MODEL_PIZZAMED = 2219, + MODEL_PIZZAHIGH = 2220, + MODEL_RUSTYLOW = 2221, + MODEL_RUSTYHIGH = 2222, + MODEL_RUSTYMED = 2223, + MODEL_CJ_SPHERE_TV = 2224, + MODEL_SWANK_HI_FI_2 = 2225, + MODEL_LOW_HI_FI_3 = 2226, + MODEL_SWANK_HI_FI_3 = 2227, + MODEL_CJ_SHOVEL = 2228, + MODEL_SWANK_SPEAKER = 2229, + MODEL_SWANK_SPEAKER_2 = 2230, + MODEL_SWANK_SPEAKER_3 = 2231, + MODEL_MED_SPEAKER_4 = 2232, + MODEL_SWANK_SPEAKER_4 = 2233, + MODEL_COFFEE_LOW_6 = 2234, + MODEL_COFFEE_MED_6 = 2235, + MODEL_COFFEE_SWANK_1 = 2236, + MODEL_CJ_SHOVEL2 = 2237, + MODEL_CJ_LAVA_LAMP = 2238, + MODEL_CJ_MLIGHT16 = 2239, + MODEL_PLANT_POT_8 = 2240, + MODEL_PLANT_POT_5 = 2241, + MODEL_PLANT_POT_7 = 2242, + MODEL_PLANT_POT_6 = 2243, + MODEL_PLANT_POT_9 = 2244, + MODEL_PLANT_POT_11 = 2245, + MODEL_PLANT_POT_14 = 2246, + MODEL_PLANT_POT_15 = 2247, + MODEL_PLANT_POT_16 = 2248, + MODEL_PLANT_POT_18 = 2249, + MODEL_PLANT_POT_19 = 2250, + MODEL_PLANT_POT_20 = 2251, + MODEL_PLANT_POT_21 = 2252, + MODEL_PLANT_POT_22 = 2253, + MODEL_FRAME_CLIP_1 = 2254, + MODEL_FRAME_CLIP_2 = 2255, + MODEL_FRAME_CLIP_3 = 2256, + MODEL_FRAME_CLIP_4 = 2257, + MODEL_FRAME_CLIP_5 = 2258, + MODEL_FRAME_CLIP_6 = 2259, + MODEL_FRAME_SLIM_1 = 2260, + MODEL_FRAME_SLIM_2 = 2261, + MODEL_FRAME_SLIM_3 = 2262, + MODEL_FRAME_SLIM_4 = 2263, + MODEL_FRAME_SLIM_5 = 2264, + MODEL_FRAME_SLIM_6 = 2265, + MODEL_FRAME_WOOD_5 = 2266, + MODEL_FRAME_WOOD_3 = 2267, + MODEL_FRAME_WOOD_2 = 2268, + MODEL_FRAME_WOOD_4 = 2269, + MODEL_FRAME_WOOD_6 = 2270, + MODEL_FRAME_WOOD_1 = 2271, + MODEL_FRAME_FAB_5 = 2272, + MODEL_FRAME_FAB_1 = 2273, + MODEL_FRAME_FAB_6 = 2274, + MODEL_FRAME_FAB_4 = 2275, + MODEL_FRAME_FAB_3 = 2276, + MODEL_FRAME_FAB_2 = 2277, + MODEL_FRAME_THICK_2 = 2278, + MODEL_FRAME_THICK_6 = 2279, + MODEL_FRAME_THICK_1 = 2280, + MODEL_FRAME_THICK_5 = 2281, + MODEL_FRAME_THICK_4 = 2282, + MODEL_FRAME_THICK_3 = 2283, + MODEL_FRAME_6 = 2284, + MODEL_FRAME_1 = 2285, + MODEL_FRAME_5 = 2286, + MODEL_FRAME_4 = 2287, + MODEL_FRAME_3 = 2288, + MODEL_FRAME_2 = 2289, + MODEL_SWK_COUCH_1 = 2290, + MODEL_SWK_SINGLE_1 = 2291, + MODEL_SWK_SINGLE_1B = 2292, + MODEL_SWK_1_FSTOOL = 2293, + MODEL_CJ_K_COOKER1 = 2294, + MODEL_CJ_BEANBAG = 2295, + MODEL_TV_UNIT_1 = 2296, + MODEL_TV_UNIT_2 = 2297, + MODEL_SWANK_BED_7 = 2298, + MODEL_SWANK_BED_6 = 2299, + MODEL_MED_BED_8 = 2300, + MODEL_MED_BED_9 = 2301, + MODEL_LOW_BED_06 = 2302, + MODEL_CJ_K3_WASH_MAC = 2303, + MODEL_CJ_K1_LOW_CORNER = 2304, + MODEL_CJ_K3_C_UNIT = 2305, + MODEL_SWANK_CABINET_4D = 2306, + MODEL_SWANK_CABINET_4B = 2307, + MODEL_MED_OFFICE4_DESK_4 = 2308, + MODEL_MED_OFFICE_CHAIR2 = 2309, + MODEL_MIKE_DIN_CHAIR = 2310, + MODEL_CJ_TV_TABLE2 = 2311, + MODEL_CJ_TELE_2 = 2312, + MODEL_CJ_TV_TABLE1 = 2313, + MODEL_CJ_TV_TABLE3 = 2314, + MODEL_CJ_TV_TABLE4 = 2315, + MODEL_CJ_TELE_4 = 2316, + MODEL_CJ_TELE_3 = 2317, + MODEL_CJ_TELE_1 = 2318, + MODEL_CJ_TV_TABLE5 = 2319, + MODEL_CJ_TELE_5 = 2320, + MODEL_CJ_TV_TABLE6 = 2321, + MODEL_CJ_TELE_6 = 2322, + MODEL_CJ_BEDROOM1 = 2323, + MODEL_REEL2 = 2324, + MODEL_KB_BANDIT_U = 2325, + MODEL_REEL3 = 2326, + MODEL_REEL1 = 2327, + MODEL_LOW_CABINET_1_S = 2328, + MODEL_LOW_CABINET_1_L = 2329, + MODEL_CJ_BEDROOM1_W = 2330, + MODEL_CJ_BED_FURN_1 = 2331, + MODEL_KEV_SAFE = 2332, + MODEL_CJ_BED_FURN_1B = 2333, + MODEL_CJ_KITCH1_M = 2334, + MODEL_CJ_KITCH1_R = 2335, + MODEL_CJ_KITCH1_SINK = 2336, + MODEL_CJ_KITCH1_WASHER = 2337, + MODEL_CJ_KITCH1_CORNER = 2338, + MODEL_CJ_KITCH2_COOKER = 2339, + MODEL_CJ_KITCH2_WASHER = 2340, + MODEL_CJ_KITCH2_CORNER = 2341, + MODEL_DONUT_DISP = 2342, + MODEL_CJ_BARB_CHAIR_2 = 2343, + MODEL_CJ_REMOTE = 2344, + MODEL_PLANT_POT_23 = 2345, + MODEL_CJ_HIFI_TABLE = 2346, + MODEL_CJ_WHEEL_1 = 2347, + MODEL_CJ_WHEEL_02 = 2348, + MODEL_CJ_WHEEL_03 = 2349, + MODEL_CJ_BARSTOOL_2 = 2350, + MODEL_CJ_DYN_PLUNGE_1 = 2351, + MODEL_CJ_DYN_PLUNGE_2 = 2352, + MODEL_CLUCK_HEALTHY = 2353, + MODEL_BURGER_HEALTHY = 2354, + MODEL_PIZZA_HEALTHY = 2355, + MODEL_POLICE_OFF_CHAIR = 2356, + MODEL_DUNC_DINNING = 2357, + MODEL_AMMO_BOX_C2 = 2358, + MODEL_AMMO_BOX_C5 = 2359, + MODEL_CJ_ICE_FRIDGE_2 = 2360, + MODEL_CJ_ICE_FRIDGE_1 = 2361, + MODEL_CJ_SWEETIE_TRAY_1 = 2362, + MODEL_CJ_SHOP_SIGN_1 = 2363, + MODEL_CJ_SHOP_SIGN_2 = 2364, + MODEL_SHOPPING_BASKET = 2365, + MODEL_CJ_DUDS_RAIL = 2366, + MODEL_SHOP_COUNTER_2 = 2367, + MODEL_SHOP_COUNTER_1 = 2368, + MODEL_CJ_TILL = 2369, + MODEL_SHOP_SET_1_TABLE = 2370, + MODEL_CLOTHES_RAIL = 2371, + MODEL_CLOTHES_RAIL2 = 2372, + MODEL_CLOTHES_RAIL3 = 2373, + MODEL_CJ_TSHIRT = 2374, + MODEL_SHOP_SET_2_UNIT1 = 2375, + MODEL_SHOP_SET_2_UNIT2 = 2376, + MODEL_CJ_JEAN_DARK = 2377, + MODEL_CJ_JEAN_LIGHT = 2378, + MODEL_SHOP_SET_2_UNIT3 = 2379, + MODEL_CJ_SUITS = 2380, + MODEL_CJ_8_SWEATER = 2381, + MODEL_CJ_8_JEANS_LIGHT = 2382, + MODEL_CJ_6_SWEATER = 2383, + MODEL_CJ_8_JEANS_DARK = 2384, + MODEL_SHOP_SET_2_UNIT4 = 2385, + MODEL_CJ_SWEATER_F_1 = 2386, + MODEL_SHOP_SET_2_UNIT5 = 2387, + MODEL_CJ_DUDS_RAIL_2 = 2388, + MODEL_CJ_4_SWEATERS = 2389, + MODEL_CJ_4WAY_CLOTHES = 2390, + MODEL_CJ_JEAN_CREAM = 2391, + MODEL_CJ_8_JEANS_MED = 2392, + MODEL_CJ_DUDS_RAIL_3 = 2393, + MODEL_CJ_CLOTHES_STEP_1 = 2394, + MODEL_CJ_SPORTS_WALL = 2395, + MODEL_CJ_4_S_SWEATER = 2396, + MODEL_CJ_TRACKIES_DARK = 2397, + MODEL_CJ_TRACKIES_LIGHT = 2398, + MODEL_CJ_4_S_SWEATER_2 = 2399, + MODEL_CJ_SPORTS_WALL01 = 2400, + MODEL_CJ_TRACKIES_WHITE = 2401, + MODEL_CJ_SPORTS_BAGS = 2402, + MODEL_SHOP_SET_2_SHOE = 2403, + MODEL_CJ_SURF_BOARD = 2404, + MODEL_CJ_SURF_BOARD2 = 2405, + MODEL_CJ_SURF_BOARD3 = 2406, + MODEL_CJ_F_TORSO = 2407, + MODEL_CJ_F_LEG_1 = 2408, + MODEL_CJ_F_LEG_2 = 2409, + MODEL_CJ_SURF_BOARD4 = 2410, + MODEL_CJ_F_TORSO_1 = 2411, + MODEL_CJ_DETECTOR = 2412, + MODEL_SHOP_COUNTER_3A = 2413, + MODEL_SHOP_COUNTER_3B = 2414, + MODEL_CJ_FF_FRYER = 2415, + MODEL_CJ_FF_DISP = 2416, + MODEL_CJ_FF_COOKER = 2417, + MODEL_CJ_FF_WORKTOP = 2418, + MODEL_CJ_FF_WORKTOP_2 = 2419, + MODEL_CJ_FF_BUCKET = 2420, + MODEL_CJ_FF_MICROW = 2421, + MODEL_CJ_FF_TILL = 2422, + MODEL_CJ_FF_CONTER_1B = 2423, + MODEL_CJ_FF_CONTER_1 = 2424, + MODEL_CJ_FF_JUICE = 2425, + MODEL_CJ_FF_PIZZA_OVEN = 2426, + MODEL_CJ_FF_JUICE_L = 2427, + MODEL_CJ_FF_STAND1 = 2428, + MODEL_CJ_FF_CUP_DISP = 2429, + MODEL_CJ_FF_LIST1 = 2430, + MODEL_CJ_FF_LIST2 = 2431, + MODEL_CJ_FF_LIST3 = 2432, + MODEL_CJ_FF_DISP1 = 2433, + MODEL_CJ_FF_CONTER_2B = 2434, + MODEL_CJ_FF_CONTER_2 = 2435, + MODEL_CJ_FF_DISP2 = 2436, + MODEL_CJ_CUP_PILE = 2437, + MODEL_CJ_SLUSH_MAC = 2438, + MODEL_CJ_FF_CONTER_3 = 2439, + MODEL_CJ_FF_CONTER_3B = 2440, + MODEL_CJ_FF_CONTER_4 = 2441, + MODEL_CJ_FF_CONTER_4B = 2442, + MODEL_CJ_FF_FRIGE = 2443, + MODEL_CJ_FF_CONTER_4C = 2444, + MODEL_CJ_FF_CONTER_4D = 2445, + MODEL_CJ_FF_CONTER_5 = 2446, + MODEL_CJ_FF_CONTER_5C = 2447, + MODEL_CJ_FF_CONTER_5D = 2448, + MODEL_CJ_FF_CONTER_5E = 2449, + MODEL_CJ_FF_CONTER_5B = 2450, + MODEL_CJ_FF_WORKTOP_3 = 2451, + MODEL_CJ_FF_FRIDGE2 = 2452, + MODEL_CJ_PIZZA_DISPF = 2453, + MODEL_CJ_FF_CONTER_8B = 2454, + MODEL_CJ_FF_CONTER_8 = 2455, + MODEL_CJ_FF_STAND02 = 2456, + MODEL_CJ_FF_CONTER_8C = 2457, + MODEL_CJ_HOBBY_C_3 = 2458, + MODEL_CJ_HOBBY_C_4 = 2459, + MODEL_CJ_HOBBY_C_1 = 2460, + MODEL_CJ_HOBBY_C_2 = 2461, + MODEL_CJ_HOBBY_SHELF = 2462, + MODEL_CJ_HOBBY_SHELF_2 = 2463, + MODEL_MODEL_BOX1 = 2464, + MODEL_MODEL_BOX2 = 2465, + MODEL_MODEL_BOX3 = 2466, + MODEL_CJ_HOBBY_C_5 = 2467, + MODEL_MODEL_BOX4 = 2468, + MODEL_MODEL_PLANES_3 = 2469, + MODEL_MODEL_PLANES_4 = 2470, + MODEL_MODEL_TRAINS2 = 2471, + MODEL_MODEL_PLANES_1 = 2472, + MODEL_MODEL_PLANES_2 = 2473, + MODEL_MODEL_TRAINS1 = 2474, + MODEL_CJ_HOBBY_SHELF_3 = 2475, + MODEL_MODEL_BOX11 = 2476, + MODEL_MODEL_BOX5 = 2477, + MODEL_MODEL_BOX6 = 2478, + MODEL_MODEL_BOX8 = 2479, + MODEL_MODEL_BOX9 = 2480, + MODEL_MODEL_BOX10 = 2481, + MODEL_CJ_HOBBY_SHELF_4 = 2482, + MODEL_MODEL_BOX13 = 2483, + MODEL_MODEL_YAUGHT = 2484, + MODEL_MODEL_CAR_1 = 2485, + MODEL_MODEL_CAR = 2486, + MODEL_HOBBY_KITE = 2487, + MODEL_MANHUNT_TOY_1 = 2488, + MODEL_MANHUNT_TOY_2 = 2489, + MODEL_VICE_TOY_1 = 2490, + MODEL_MODEL_STAND = 2491, + MODEL_MANHUNT_TOY2_1 = 2492, + MODEL_VICE_TOY2_1 = 2493, + MODEL_MANHUNT_TOY2_2 = 2494, + MODEL_VICE_TOY_2 = 2495, + MODEL_VICE_TOY2_2 = 2496, + MODEL_HOBBY_KITE2 = 2497, + MODEL_HOBBY_KITE3 = 2498, + MODEL_HOBBY_KITE4 = 2499, + MODEL_CJ_FF_COFFEE = 2500, + MODEL_TRAIN_TOY_1 = 2501, + MODEL_CJ_HOBBY_SHELF_5 = 2502, + MODEL_TRAIN_TOY_2 = 2503, + MODEL_TRAIN_TOY_3 = 2504, + MODEL_MODEL_TOY_1 = 2505, + MODEL_MODEL_TOY_2 = 2506, + MODEL_MODEL_TOY_3 = 2507, + MODEL_MODEL_TOY_4 = 2508, + MODEL_CJ_HOBBY_SHELF_6 = 2509, + MODEL_MODEL_PLANE_BIG2 = 2510, + MODEL_MODEL_PLANE_BIG1 = 2511, + MODEL_MODEL_PLANE_BIG3 = 2512, + MODEL_MODEL_TRAINS3 = 2513, + MODEL_CJ_TOILET1 = 2514, + MODEL_CJ_BS_SINK = 2515, + MODEL_CJ_BATH1 = 2516, + MODEL_CJ_SHOWER1 = 2517, + MODEL_CJ_B_SINK2 = 2518, + MODEL_CJ_BATH2 = 2519, + MODEL_CJ_SHOWER2 = 2520, + MODEL_CJ_TOILET2 = 2521, + MODEL_CJ_BATH3 = 2522, + MODEL_CJ_B_SINK3 = 2523, + MODEL_CJ_B_SINK4 = 2524, + MODEL_CJ_TOILET4 = 2525, + MODEL_CJ_BATH4 = 2526, + MODEL_CJ_SHOWER4 = 2527, + MODEL_CJ_TOILET3 = 2528, + MODEL_CJ_OFF2_LIC_2_L = 2529, + MODEL_CJ_OFF2_LIC_2_R = 2530, + MODEL_CJ_OFF2_LIC_1_M = 2531, + MODEL_CJ_OFF2_LIC_1_R = 2532, + MODEL_CJ_OFF2_LIC_1_L = 2533, + MODEL_CJ_OFF2_LIC_2_M = 2534, + MODEL_CJ_SS_1_M = 2535, + MODEL_CJ_SS_1_L = 2536, + MODEL_CJ_SS_1_R = 2537, + MODEL_CJ_SS_2_R = 2538, + MODEL_CJ_SS_2_M = 2539, + MODEL_CJ_SS_2_L = 2540, + MODEL_CJ_SS_3_M = 2541, + MODEL_CJ_SS_3_L = 2542, + MODEL_CJ_SS_4_M = 2543, + MODEL_CJ_SS_4_L = 2544, + MODEL_CJ_SS_4_R = 2545, + MODEL_CJ_SS_7_M = 2546, + MODEL_CJ_SS_6_R = 2547, + MODEL_CJ_SS_6_M = 2548, + MODEL_CJ_SS_6_L = 2549, + MODEL_CJ_SS_7_R = 2550, + MODEL_CJ_SS_7_L = 2551, + MODEL_CJ_SS_8_R = 2552, + MODEL_CJ_SS_8_L = 2553, + MODEL_CJ_SS_8_M = 2554, + MODEL_CJ_SS_5_M = 2555, + MODEL_CJ_SS_5_L = 2556, + MODEL_CJ_SS_5_R = 2557, + MODEL_CURTAIN_1_CLOSED = 2558, + MODEL_CURTAIN_1_OPEN = 2559, + MODEL_CURTAIN_2_OPEN = 2560, + MODEL_CURTAIN_2_CLOSED = 2561, + MODEL_HOTEL_DRESSER_2 = 2562, + MODEL_HOTEL_S_BEDSET_1 = 2563, + MODEL_HOTEL_D_BEDSET_1 = 2564, + MODEL_HOTEL_D_BEDSET_3 = 2565, + MODEL_HOTEL_S_BEDSET_3 = 2566, + MODEL_AB_WAREHOUSESHELF = 2567, + MODEL_HOTEL_DRESSER_3 = 2568, + MODEL_HOTEL_DRESSER_1 = 2569, + MODEL_HOTEL_DRESSER_4 = 2570, + MODEL_HOTEL_SINGLE_1 = 2571, + MODEL_HOTEL_SINGLE_2 = 2572, + MODEL_HOTEL_DRESSER_6 = 2573, + MODEL_HOTEL_DRESSER_5 = 2574, + MODEL_HOTEL_S_BEDSET_8 = 2575, + MODEL_HOTEL_DRESSER_8 = 2576, + MODEL_CJ_SEX_COUNTER = 2577, + MODEL_CJ_SEX_SHELF_1 = 2578, + MODEL_CJ_SEX_SHELF_2 = 2579, + MODEL_SEX_1 = 2580, + MODEL_CJ_SEX_V_RACK = 2581, + MODEL_CJ_SEX_VIDEO_1 = 2582, + MODEL_CJ_SEX_VIDEO_2 = 2583, + MODEL_CJ_SEX_DILDO = 2584, + MODEL_CJ_SEX_SHELF_3 = 2585, + MODEL_CJ_SEX_COUNTER2 = 2586, + MODEL_SEX_2 = 2587, + MODEL_SEX_3 = 2588, + MODEL_AB_CARCASS = 2589, + MODEL_AB_HOOK = 2590, + MODEL_AB_PARTITION1 = 2591, + MODEL_AB_SLOTTABLE = 2592, + MODEL_ROLEPLAY_RACK = 2593, + MODEL_ROLEPLAY_OUTFITS = 2594, + MODEL_CJ_SHOP_TV_VIDEO = 2595, + MODEL_CJ_SEX_TV = 2596, + MODEL_DILDO_RACK1 = 2597, + MODEL_DILDO_RACK2 = 2598, + MODEL_CJ_SEX_SHOP_SIGN = 2599, + MODEL_CJ_VIEW_TELE = 2600, + MODEL_CJ_JUICE_CAN = 2601, + MODEL_POLICE_CELL_TOILET = 2602, + MODEL_POLICE_CELL_BED = 2603, + MODEL_CJ_POLICE_COUNTER = 2604, + MODEL_POLCE_DESK1 = 2605, + MODEL_CJ_POLICE_COUNTER2 = 2606, + MODEL_POLCE_DESK2 = 2607, + MODEL_POLCE_SHELF = 2608, + MODEL_CJ_P_FILEING1 = 2609, + MODEL_CJ_P_FILEING2 = 2610, + MODEL_POLICE_NB1 = 2611, + MODEL_POLICE_NB2 = 2612, + MODEL_POLICE_WASTEBIN = 2613, + MODEL_CJ_US_FLAG = 2614, + MODEL_POLICE_NB3 = 2615, + MODEL_POLICE_NB04 = 2616, + MODEL_HOTEL_SINGLE_3 = 2617, + MODEL_CJ_SLOT_PROPG = 2618, + MODEL_MP_AMMOAMBIENT = 2619, + MODEL_CJ_TRAINER_ERIS = 2620, + MODEL_CJ_TRAINER_HEAT = 2621, + MODEL_CJ_TRAINER_PRO = 2622, + MODEL_CJ_PRO_COUNTER = 2623, + MODEL_CJ_SHOE_CORNER01 = 2624, + MODEL_CJ_SHOE_URBAN2 = 2625, + MODEL_CJ_URB_COUNTER = 2626, + MODEL_GYM_TREADMILL = 2627, + MODEL_GYM_BENCH2 = 2628, + MODEL_GYM_BENCH1 = 2629, + MODEL_GYM_BIKE = 2630, + MODEL_GYM_MAT1 = 2631, + MODEL_GYM_MAT02 = 2632, + MODEL_CRACK_WALKWAY1 = 2633, + MODEL_AB_VAULTDOOR = 2634, + MODEL_CJ_PIZZA_TABLE = 2635, + MODEL_CJ_PIZZA_CHAIR = 2636, + MODEL_CJ_PIZZA_TABLE2 = 2637, + MODEL_CJ_PIZZA_CHAIR2 = 2638, + MODEL_CJ_PIZZA_CHAIR3 = 2639, + MODEL_NEIL_SLOT = 2640, + MODEL_CJ_BURGER_POSTER = 2641, + MODEL_CJ_BURGER_POSTER2 = 2642, + MODEL_CJ_BURGER_POSTER3 = 2643, + MODEL_CJ_BURG_TABLE = 2644, + MODEL_CJ_PIZZA_POSTER = 2645, + MODEL_CJ_PIZZA_POSTER2 = 2646, + MODEL_CJ_BS_CUP = 2647, + MODEL_CJ_STEAL_TV = 2648, + MODEL_CJ_AIRCON2 = 2649, + MODEL_CJ_SKATE_WALL2 = 2650, + MODEL_CJ_SKATE_WALL1 = 2651, + MODEL_CJ_SKATE_CUBES = 2652, + MODEL_CJ_AIRCON3 = 2653, + MODEL_CJ_SHOE_BOX = 2654, + MODEL_CJ_BANNER1 = 2655, + MODEL_CJ_BANNER02 = 2656, + MODEL_CJ_BANNER03 = 2657, + MODEL_CJ_BANNER04 = 2658, + MODEL_CJ_BANNER05 = 2659, + MODEL_CJ_BANNER06 = 2660, + MODEL_CJ_BANNER07 = 2661, + MODEL_CJ_BANNER08 = 2662, + MODEL_CJ_BS_BAG = 2663, + MODEL_CJ_SUBURB_DOOR = 2664, + MODEL_CJ_FF_LIST04 = 2665, + MODEL_CJ_PIZ_POSTER2 = 2666, + MODEL_CJ_PIZ_POSTER1 = 2667, + MODEL_CJ_PIZ_POSTER3 = 2668, + MODEL_CJ_CHRIS_CRATE = 2669, + MODEL_PROC_RUBBISH_1 = 2670, + MODEL_PROC_RUBBISH_3 = 2671, + MODEL_PROC_RUBBISH_4 = 2672, + MODEL_PROC_RUBBISH_5 = 2673, + MODEL_PROC_RUBBISH_2 = 2674, + MODEL_PROC_RUBBISH_6 = 2675, + MODEL_PROC_RUBBISH_8 = 2676, + MODEL_PROC_RUBBISH_7 = 2677, + MODEL_CJ_CHRIS_CRATE_LD = 2678, + MODEL_CJ_CHRIS_CRATE_RD = 2679, + MODEL_CJ_PADLOCK = 2680, + MODEL_CJ_COIN_OP = 2681, + MODEL_PIZZA_MENU = 2682, + MODEL_PIZZA_S_P = 2683, + MODEL_CJ_FOOD_POST = 2684, + MODEL_CJ_FOOD_POST1 = 2685, + MODEL_CJ_FOOD_POST2 = 2686, + MODEL_CJ_FOOD_POST3 = 2687, + MODEL_CJ_FOOD_POST4 = 2688, + MODEL_CJ_HOODIE_2 = 2689, + MODEL_CJ_FIRE_EXT = 2690, + MODEL_CJ_BANNER09 = 2691, + MODEL_CJ_BANNER10 = 2692, + MODEL_CJ_BANNER11 = 2693, + MODEL_CJ_SHOE_BOX2 = 2694, + MODEL_CJ_BANNER12 = 2695, + MODEL_CJ_BANNER13 = 2696, + MODEL_CJ_BANNER14 = 2697, + MODEL_CJ_DUDS_RAIL01 = 2698, + MODEL_CJ_DUDS_RAIL02 = 2699, + MODEL_CJ_SEX_TV2 = 2700, + MODEL_CJ_PRO_LIGHT = 2701, + MODEL_CJ_PIZZA_1 = 2702, + MODEL_CJ_BURG_1 = 2703, + MODEL_CJ_HOODIE_3 = 2704, + MODEL_CJ_HOODIE_04 = 2705, + MODEL_CJ_HOODIE_05 = 2706, + MODEL_CJ_LIGHT_FIT = 2707, + MODEL_ZIP_SHELF1 = 2708, + MODEL_PAIN_KILLER = 2709, + MODEL_WATCH_PICKUP = 2710, + MODEL_TATOO_NEEDLE = 2711, + MODEL_CJ_MOP = 2712, + MODEL_CJ_BUCKET = 2713, + MODEL_CJ_OPEN_SIGN_2 = 2714, + MODEL_CJ_DON_POSTER = 2715, + MODEL_CJ_DON_POSTER3 = 2716, + MODEL_CJ_DON_POSTER2 = 2717, + MODEL_CJ_FLY_KILLER = 2718, + MODEL_CJ_BANNER15 = 2719, + MODEL_CJ_BANNER16 = 2720, + MODEL_CJ_BANNER17 = 2721, + MODEL_CJ_BANNER18 = 2722, + MODEL_LM_STRIPSTOOL = 2723, + MODEL_LM_STRIPCHAIR = 2724, + MODEL_LM_STRIPTABLE = 2725, + MODEL_LM_STRIPLAMP = 2726, + MODEL_DS_SIGN = 2727, + MODEL_DS_BACKLIGHT = 2728, + MODEL_CJ_BINC_POST3 = 2729, + MODEL_CJ_BINC_POST2 = 2730, + MODEL_CJ_BINC_POST = 2731, + MODEL_CJ_ZIP_POST_2 = 2732, + MODEL_CJ_ZIP_POST_1 = 2733, + MODEL_CJ_ZIP_POST_3 = 2734, + MODEL_CJ_ZIP_POST_4 = 2735, + MODEL_CJ_ZIP_POST_05 = 2736, + MODEL_POLICE_NB_CAR = 2737, + MODEL_CJ_TOILET_BS = 2738, + MODEL_CJ_B_SINK1 = 2739, + MODEL_CJ_BS_LIGHT = 2740, + MODEL_CJ_SOAP_DISP = 2741, + MODEL_CJ_HANDDRIER = 2742, + MODEL_CJ_STAT_1 = 2743, + MODEL_CJ_STAT_2 = 2744, + MODEL_CJ_STAT_3 = 2745, + MODEL_CJ_DONUT_CHAIR = 2746, + MODEL_CJ_DONUT_TABLE = 2747, + MODEL_CJ_DONUT_CHAIR2 = 2748, + MODEL_CJ_HAIRSPRAY = 2749, + MODEL_CJ_HAIR_DRYER = 2750, + MODEL_CJ_HAIRSCREAM = 2751, + MODEL_CJ_HAIRSPRAY2 = 2752, + MODEL_CJ_FF_TILL_QUE = 2753, + MODEL_OTB_MACHINE = 2754, + MODEL_DOJO_WALL = 2755, + MODEL_CJ_S1_BASE = 2756, + MODEL_CJ_S1_LARM = 2757, + MODEL_CJ_S1_RARM = 2758, + MODEL_CJ_S1_HEAD = 2759, + MODEL_CJ_S1_TORSO = 2760, + MODEL_CJ_S1_LEGS = 2761, + MODEL_CJ_CHICK_TABLE = 2762, + MODEL_CJ_CHICK_TABLE_2 = 2763, + MODEL_CJ_PIZZA_TABLE03 = 2764, + MODEL_CJ_CB_LIST1 = 2765, + MODEL_CJ_CB_LIST2 = 2766, + MODEL_CJ_CB_TRAY = 2767, + MODEL_CJ_CB_BURG = 2768, + MODEL_CJ_CJ_BURG2 = 2769, + MODEL_CJ_CB_BIN = 2770, + MODEL_CJ_OTB_TILL_Q = 2771, + MODEL_CJ_ESCULATOR = 2772, + MODEL_CJ_AIRPRT_BAR = 2773, + MODEL_CJ_AIRP_PILLARS = 2774, + MODEL_CJ_AIRPRT_MON = 2775, + MODEL_LEE_STRIPCHAIR2 = 2776, + MODEL_LEE_STRIPCHAIR1 = 2777, + MODEL_CJ_COIN_OP_1 = 2778, + MODEL_CJ_COIN_OP_2 = 2779, + MODEL_CJ_SMOKE_MACH = 2780, + MODEL_CJ_AIR_TICKET = 2781, + MODEL_CJ_OYSTER_2 = 2782, + MODEL_CJ_BANDIT_6 = 2783, + MODEL_AB_SLOTTABLE6 = 2784, + MODEL_CJ_SLOT_BANK = 2785, + MODEL_LODCJ_SLOT_BANK = 2786, + MODEL_LODCJ_BANDIT_6 = 2787, + MODEL_CJ_BURG_CHAIR = 2788, + MODEL_CJ_DEPART_BOARD = 2789, + MODEL_CJ_ARRIVE_BOARD = 2790, + MODEL_CJ_INDEX_BOARD = 2791, + MODEL_CJ_AIR_D_1 = 2792, + MODEL_CJ_AIR_D_2 = 2793, + MODEL_CJ_AIR_D_3 = 2794, + MODEL_CJ_AIR_D_4 = 2795, + MODEL_CJ_AIR_D_6 = 2796, + MODEL_CJ_AIR_D_5 = 2797, + MODEL_CJ_EX_PEDALS = 2798, + MODEL_CASTABLE2 = 2799, + MODEL_CASTABLE2TOP = 2800, + MODEL_CASTABLE1TOP = 2801, + MODEL_CASTABLE1 = 2802, + MODEL_CJ_MEAT_BAG_1 = 2803, + MODEL_CJ_MEAT_1 = 2804, + MODEL_CJ_MEAT_BAG_2 = 2805, + MODEL_CJ_MEAT_2 = 2806, + MODEL_CJ_BURG_CHAIR_NA = 2807, + MODEL_CJ_PIZZA_CHAIR4 = 2808, + MODEL_CJ_STAT_1_BIT = 2809, + MODEL_CJ_STAT_2_BIT = 2810, + MODEL_GB_ROMANPOT01 = 2811, + MODEL_GB_PLATEDIRTY01 = 2812, + MODEL_GB_NOVELS01 = 2813, + MODEL_GB_TAKEAWAY01 = 2814, + MODEL_GB_LIVINGRUG01 = 2815, + MODEL_GB_BEDMAGS01 = 2816, + MODEL_GB_BEDRUG01 = 2817, + MODEL_GB_BEDRUG02 = 2818, + MODEL_GB_BEDCLOTHES01 = 2819, + MODEL_GB_KITCHDIRT01 = 2820, + MODEL_GB_FOODWRAP01 = 2821, + MODEL_GB_KITCHPLATECLN01 = 2822, + MODEL_GB_KITCHTAKEWAY01 = 2823, + MODEL_GB_NOVELS02 = 2824, + MODEL_GB_NOVELS03 = 2825, + MODEL_GB_NOVELS04 = 2826, + MODEL_GB_NOVELS05 = 2827, + MODEL_GB_ORNAMENT02 = 2828, + MODEL_GB_PLATEDIRTY02 = 2829, + MODEL_GB_PLATEDIRTY04 = 2830, + MODEL_GB_PLATEDIRTY03 = 2831, + MODEL_GB_PLATEDIRTY05 = 2832, + MODEL_GB_LIVINGRUG02 = 2833, + MODEL_GB_LIVINGRUG03 = 2834, + MODEL_GB_LIVINGRUG04 = 2835, + MODEL_GB_LIVINGRUG05 = 2836, + MODEL_GB_TAKEAWAY02 = 2837, + MODEL_GB_TAKEAWAY03 = 2838, + MODEL_GB_TAKEAWAY04 = 2839, + MODEL_GB_TAKEAWAY05 = 2840, + MODEL_GB_BEDRUG03 = 2841, + MODEL_GB_BEDRUG04 = 2842, + MODEL_GB_BEDCLOTHES02 = 2843, + MODEL_GB_BEDCLOTHES03 = 2844, + MODEL_GB_BEDCLOTHES04 = 2845, + MODEL_GB_BEDCLOTHES05 = 2846, + MODEL_GB_BEDRUG05 = 2847, + MODEL_GB_KITCHDIRT02 = 2848, + MODEL_GB_KITCHDIRT03 = 2849, + MODEL_GB_KITCHDIRT04 = 2850, + MODEL_GB_KITCHDIRT05 = 2851, + MODEL_GB_BEDMAGS02 = 2852, + MODEL_GB_BEDMAGS03 = 2853, + MODEL_GB_BEDMAGS04 = 2854, + MODEL_GB_BEDMAGS05 = 2855, + MODEL_GB_FOODWRAP02 = 2856, + MODEL_GB_KITCHTAKEWAY02 = 2857, + MODEL_GB_KITCHTAKEWAY03 = 2858, + MODEL_GB_KITCHTAKEWAY04 = 2859, + MODEL_GB_KITCHTAKEWAY05 = 2860, + MODEL_GB_FOODWRAP03 = 2861, + MODEL_GB_KITCHPLATECLN02 = 2862, + MODEL_GB_KITCHPLATECLN03 = 2863, + MODEL_GB_KITCHPLATECLN04 = 2864, + MODEL_GB_KITCHPLATECLN05 = 2865, + MODEL_GB_FOODWRAP04 = 2866, + MODEL_GB_FOODWRAP05 = 2867, + MODEL_GB_ORNAMENT03 = 2868, + MODEL_GB_ORNAMENT04 = 2869, + MODEL_GB_ORNAMENT05 = 2870, + MODEL_CJ_SS_3_R = 2871, + MODEL_CJ_COIN_OP_3 = 2872, + MODEL_CJ_SUBURB_DOOR_2 = 2873, + MODEL_CJ_SLUSH_CUPDUM = 2874, + MODEL_CJ_GAP_DOOR_ = 2875, + MODEL_CJ_PRO_DOOR_01 = 2876, + MODEL_CJ_BINCO_DOOR = 2877, + MODEL_CJ_VICTIM_DOOR = 2878, + MODEL_CJ_DS_DOOR = 2879, + MODEL_CJ_BURG_2 = 2880, + MODEL_CJ_PIZZA_2 = 2881, + MODEL_OBJECT01 = 2882, + MODEL_XREF_GARAGEDOOR = 2885, + MODEL_SEC_KEYPAD = 2886, + MODEL_A51_SPOTBULB = 2887, + MODEL_A51_SPOTHOUSING = 2888, + MODEL_A51_SPOTBASE = 2889, + MODEL_KMB_SKIP = 2890, + MODEL_KMB_PACKET = 2891, + MODEL_TEMP_STINGER = 2892, + MODEL_KMB_RAMP = 2893, + MODEL_KMB_RHYMESBOOK = 2894, + MODEL_FUN_FLOWER_LAW = 2895, + MODEL_CASKET_LAW = 2896, + MODEL_FUNTARP_LAW = 2897, + MODEL_FUNTURF_LAW = 2898, + MODEL_TEMP_STINGER2 = 2899, + MODEL_TEMP_CARDBOX = 2900, + MODEL_KMB_MARIJUANA = 2901, + MODEL_KMB_SMOKECAN = 2902, + MODEL_KMB_PARACHUTE = 2903, + MODEL_WAREHOUSE_DOOR1 = 2904, + MODEL_KMB_DEADLEG = 2905, + MODEL_KMB_DEADARM = 2906, + MODEL_KMB_DEADTORSO = 2907, + MODEL_KMB_DEADHEAD = 2908, + MODEL_KMB_FRONTGATE = 2909, + MODEL_TEMP_ROAD = 2910, + MODEL_KMB_PETROLDOOR = 2911, + MODEL_TEMP_CRATE1 = 2912, + MODEL_KMB_BPRESS = 2913, + MODEL_KMB_RCFLAG = 2914, + MODEL_KMB_DUMBBELL2 = 2915, + MODEL_KMB_DUMBBELL = 2916, + MODEL_A51_CRANE = 2917, + MODEL_KMB_MINE = 2918, + MODEL_KMB_HOLDALL = 2919, + MODEL_POLICE_BARRIER = 2920, + MODEL_KMB_CAM = 2921, + MODEL_KMB_KEYPAD = 2922, + MODEL_BOTTLE_BANK = 2923, + MODEL_KMB_CRASH3DOOR = 2924, + MODEL_DYNO_BOX_B = 2925, + MODEL_DYNO_BOX_A = 2926, + MODEL_A51_BLASTDOORR = 2927, + MODEL_A51_INTDOOR = 2928, + MODEL_A51_BLASTDOORL = 2929, + MODEL_CHINATGATE = 2930, + MODEL_KMB_JUMP1 = 2931, + MODEL_KMB_CONTAINER_BLUE = 2932, + MODEL_POL_COMP_GATE = 2933, + MODEL_KMB_CONTAINER_RED = 2934, + MODEL_KMB_CONTAINER_YEL = 2935, + MODEL_KMB_ROCK = 2936, + MODEL_KMB_PLANK = 2937, + MODEL_SHUTTER_VEGAS = 2938, + MODEL_RAMP_BOT = 2939, + MODEL_RAMP_TOP = 2940, + MODEL_TEMP_TILL = 2941, + MODEL_KMB_ATM1 = 2942, + MODEL_KMB_ATM2 = 2943, + MODEL_FREIGHT_SFW_DOOR = 2944, + MODEL_KMB_NETTING = 2945, + MODEL_CR_DOOR_03 = 2946, + MODEL_CR_DOOR_01 = 2947, + MODEL_CR_DOOR_02 = 2948, + MODEL_KMB_LOCKEDDOOR = 2949, + MODEL_BREAK_WALL_2A = 2950, + MODEL_A51_LABDOOR = 2951, + MODEL_KMB_GIMPDOOR = 2952, + MODEL_KMB_PAPER_CODE = 2953, + MODEL_KMB_OT = 2954, + MODEL_IMY_COMPIN = 2955, + MODEL_IMMMCRAN = 2956, + MODEL_CHINATGARAGEDOOR = 2957, + MODEL_CUTSCENE_BEER = 2958, + MODEL_RIDER1_DOOR = 2959, + MODEL_KMB_BEAM = 2960, + MODEL_FIRE_BREAK = 2961, + MODEL_FIRE_BREAK_GLASS = 2962, + MODEL_FREEZER_DOOR = 2963, + MODEL_K_POOLTABLESM = 2964, + MODEL_K_POOLTRIANGLE01 = 2965, + MODEL_MOBILE1993B = 2966, + MODEL_MOBILE1993A = 2967, + MODEL_CM_BOX = 2968, + MODEL_LEVEL_AMMOBOX = 2969, + MODEL_DTS_BBDOOR = 2970, + MODEL_K_SMASHBOXES = 2971, + MODEL_K_CARGO4 = 2972, + MODEL_K_CARGO2 = 2973, + MODEL_K_CARGO1 = 2974, + MODEL_K_CARGO3 = 2975, + MODEL_GREEN_GLOOP = 2976, + MODEL_KMILITARY_CRATE = 2977, + MODEL_KMILITARY_BASE = 2978, + MODEL_REEL02 = 2979, + MODEL_KB_BANDIT10 = 2980, + MODEL_REEL03 = 2981, + MODEL_REEL01 = 2982, + MODEL_WILL_VALVE = 2983, + MODEL_PORTALOO = 2984, + MODEL_MINIGUN_BASE = 2985, + MODEL_LXR_MOTELVENT = 2986, + MODEL_LXR_MOTEL_DOORSIM = 2987, + MODEL_COMP_WOOD_GATE = 2988, + MODEL_IMY_SKYLIGHT = 2989, + MODEL_WONGS_GATE = 2990, + MODEL_IMY_BBOX = 2991, + MODEL_ROULETTE_MARKER = 2992, + MODEL_KMB_GOFLAG = 2993, + MODEL_KMB_TROLLEY = 2994, + MODEL_K_POOLBALLSTP01 = 2995, + MODEL_K_POOLBALLSTP02 = 2996, + MODEL_K_POOLBALLSTP03 = 2997, + MODEL_K_POOLBALLSTP04 = 2998, + MODEL_K_POOLBALLSTP05 = 2999, + MODEL_K_POOLBALLSTP06 = 3000, + MODEL_K_POOLBALLSTP07 = 3001, + MODEL_K_POOLBALLSPT01 = 3002, + MODEL_K_POOLBALLCUE = 3003, + MODEL_K_POOLQ2 = 3004, + MODEL_SMASH_BOX_STAY = 3005, + MODEL_SMASH_BOX_BRK = 3006, + MODEL_CHOPCOP_TORSO = 3007, + MODEL_CHOPCOP_ARMR = 3008, + MODEL_CHOPCOP_ARML = 3009, + MODEL_CHOPCOP_LEGR = 3010, + MODEL_CHOPCOP_LEGL = 3011, + MODEL_CHOPCOP_HEAD = 3012, + MODEL_CR_AMMOBOX = 3013, + MODEL_CR_GUNCRATE = 3014, + MODEL_CR_CRATESTACK = 3015, + MODEL_CR_AMMOBOX_NONBRK = 3016, + MODEL_ARCH_PLANS = 3017, + MODEL_TARGET_RLEG = 3018, + MODEL_TARGET_LLEG = 3019, + MODEL_TARGET_LTORSO = 3020, + MODEL_TARGET_RTORSO = 3021, + MODEL_TARGET_RARM = 3022, + MODEL_TARGET_LARM = 3023, + MODEL_TARGET_HEAD = 3024, + MODEL_TARGET_FRAME = 3025, + MODEL_PARA_PACK = 3026, + MODEL_CIGGY = 3027, + MODEL_KATANA_LHAND = 3028, + MODEL_CR1_DOOR = 3029, + MODEL_WONGS_ERECTION = 3030, + MODEL_WONG_DISH = 3031, + MODEL_BD_WINDOW_SHATTER = 3032, + MODEL_MD_LOCKDOOR = 3033, + MODEL_BD_WINDOW = 3034, + MODEL_TMP_BIN = 3035, + MODEL_CT_GATEXR = 3036, + MODEL_WAREHOUSE_DOOR2B = 3037, + MODEL_CT_LANTERNS = 3038, + MODEL_CT_STALL1 = 3039, + MODEL_CT_STALL2 = 3040, + MODEL_CT_TABLE = 3041, + MODEL_CT_VENT = 3042, + MODEL_KMB_CONTAINER_OPEN = 3043, + MODEL_CIGAR = 3044, + MODEL_CIGAR_GLOW = 3045, + MODEL_KB_BARREL = 3046, + MODEL_JET_BAGGAGE_DOOR = 3047, + MODEL_CEMENT_IN_HOLE = 3048, + MODEL_DES_QUARRYGATE = 3049, + MODEL_DES_QUARRYGATE2 = 3050, + MODEL_LIFT_DR = 3051, + MODEL_DB_AMMO = 3052, + MODEL_INDUS_MAGNET = 3053, + MODEL_DYN_WREKING_BALL = 3054, + MODEL_KMB_SHUTTER = 3055, + MODEL_MINI_MAGNET = 3056, + MODEL_KB_BARREL_EXP = 3057, + MODEL_STORM_DRAIN_COVER = 3058, + MODEL_IMY_SHASH_WALL = 3059, + MODEL_PARA_COLLISION = 3060, + MODEL_AD_FLATDOOR = 3061, + MODEL_CONTAINER_DOOR = 3062, + MODEL_BREAK_WALL_3A = 3063, + MODEL_BREAK_WALL_1A = 3064, + MODEL_BBALL_COL = 3065, + MODEL_AMMOTRN_OBJ = 3066, + MODEL_KMB_ATM3 = 3067, + MODEL_CARGO_REAR = 3068, + MODEL_D9_RAMP = 3069, + MODEL_KMB_GOGGLES = 3070, + MODEL_KMB_DUMBBELL_R = 3071, + MODEL_KMB_DUMBBELL_L = 3072, + MODEL_KMB_CONTAINER_BROKE = 3073, + MODEL_D9_RUNWAY = 3074, + MODEL_IMPEXP_DOOR = 3075, + MODEL_AD_ROADMARK1 = 3076, + MODEL_NF_BLACKBOARD = 3077, + MODEL_AD_FINISH = 3078, + MODEL_AD_ROADMARK2 = 3079, + MODEL_AD_JUMP = 3080, + MODEL_FAKE_MULE_COL = 3081, + MODEL_AMMO_CAPSULE = 3082, + MODEL_MD_POSTER = 3083, + MODEL_TRDCSGRGDOOR_LVS = 3084, + MODEL_NF_LIST_1 = 3085, + MODEL_WANTED_CROSS_OFF = 3086, + MODEL_NF_LIST_2 = 3087, + MODEL_NF_LIST_3 = 3088, + MODEL_AB_CASDORLOK = 3089, + MODEL_NF_PED_COLL = 3090, + MODEL_IMY_TRACK_BARRIER = 3091, + MODEL_DEAD_TIED_COP = 3092, + MODEL_CUNTGIRLDOOR = 3093, + MODEL_K_POOLTABLEB = 3094, + MODEL_A51_JETDOOR = 3095, + MODEL_BB_PICKUP = 3096, + MODEL_BREAK_WALL_2B = 3097, + MODEL_BREAK_WALL_1B = 3098, + MODEL_BREAK_WALL_3B = 3099, + MODEL_K_POOLBALLSPT02 = 3100, + MODEL_K_POOLBALLSPT03 = 3101, + MODEL_K_POOLBALLSPT04 = 3102, + MODEL_K_POOLBALLSPT05 = 3103, + MODEL_K_POOLBALLSPT06 = 3104, + MODEL_K_POOLBALLSPT07 = 3105, + MODEL_K_POOLBALL8 = 3106, + MODEL_WONGS_ERECTION2 = 3107, + MODEL_BASEJUMP_TARGET = 3108, + MODEL_IMY_LA_DOOR = 3109, + MODEL_MD_BILLBOLAEB = 3110, + MODEL_ST_ARCH_PLAN = 3111, + MODEL_TRIMAINLITE = 3112, + MODEL_CARRIER_DOOR_SFSE = 3113, + MODEL_CARRIER_LIFT2_SFSE = 3114, + MODEL_CARRIER_LIFT1_SFSE = 3115, + MODEL_ACWINCH1 = 3116, + MODEL_A51_VENTCOVERB = 3117, + MODEL_IMY_SHASH_LOD = 3118, + MODEL_CS_RY_PROPS = 3119, + MODEL_BBALL_INGAME = 3120, + MODEL_MUNCH_DONUT = 3121, + MODEL_K_POOLQ = 3122, + MODEL_KATANA_ANIM = 3123, + MODEL_SNIPER_ANIM = 3124, + MODEL_WD_FENCE_ANIM = 3125, + MODEL_TATTOO_KIT = 3126, + MODEL_BD_FIRE1_O = 3127, + MODEL_BBALL_NET = 3128, + MODEL_SMLPLANE_DOOR = 3129, + MODEL_MTSAFE = 3130, + MODEL_PARACHUTE = 3131, + MODEL_JET_DOOR = 3132, + MODEL_PEDALS = 3133, + MODEL_QUARRY_BARREL = 3134, + MODEL_CAT2_SAFE_COL = 3135, + MODEL_TRAILER_LARGE1_01 = 3167, + MODEL_TRAILER2_01 = 3168, + MODEL_TRAILER_LARGE2_01 = 3169, + MODEL_TRAILER_LARGE3_01 = 3170, + MODEL_TRAILER5_01 = 3171, + MODEL_TRAILER6_01 = 3172, + MODEL_TRAILER_LARGE4_01 = 3173, + MODEL_SM_AIRSTRM_SML_ = 3174, + MODEL_SM_AIRSTRM_MED_ = 3175, + MODEL_SHACK02 = 3178, + MODEL_NT_GASSTATION = 3187, + MODEL_ST5BASE = 3193, + MODEL_QUARRY_CRUSHER = 3214, + MODEL_DRV_IN_SPKRS = 3221, + MODEL_CONHOOS2 = 3241, + MODEL_CONHOOS1 = 3242, + MODEL_TEPEE_ROOM_ = 3243, + MODEL_PYLON_BIG1_ = 3244, + MODEL_DES_WESTRN7_ = 3246, + MODEL_DES_WESTSALOON_ = 3249, + MODEL_DES_WESTRN9_ = 3250, + MODEL_DES_OLDWATTWR_ = 3252, + MODEL_DES_WESTRN11_ = 3253, + MODEL_REF_OILTANK01 = 3255, + MODEL_REFCHIMNY01 = 3256, + MODEL_REFINERYBOX1 = 3257, + MODEL_REFTHINCHIM1 = 3258, + MODEL_REFCONDENS1 = 3259, + MODEL_OLDWOODPANEL = 3260, + MODEL_GRASSHOUSE = 3261, + MODEL_PRIVATESIGN1 = 3262, + MODEL_PRIVATESIGN2 = 3263, + MODEL_PRIVATESIGN3 = 3264, + MODEL_PRIVATESIGN4 = 3265, + MODEL_MIL_SAMSITE = 3267, + MODEL_MIL_HANGAR1_ = 3268, + MODEL_BONYRD_BLOCK1_ = 3269, + MODEL_BONYRD_BLOCK2_ = 3270, + MODEL_BONYRD_BLOCK3_ = 3271, + MODEL_SUBSTA_TRANSF1_ = 3272, + MODEL_SUBSTA_TRANSF2_ = 3273, + MODEL_SUBSTA_GRID_ = 3274, + MODEL_CXREFFENCE = 3275, + MODEL_CXREFFENCESLD = 3276, + MODEL_MIL_SAMBASE = 3277, + MODEL_DES_WAREWIN = 3278, + MODEL_A51_SPOTTOWER = 3279, + MODEL_A51_PANEL = 3280, + MODEL_MTB_BANNER1 = 3281, + MODEL_CXREFFENCEMSH = 3282, + MODEL_CONHOOS3 = 3283, + MODEL_CONHOOS5 = 3284, + MODEL_CONHOOS4 = 3285, + MODEL_CXRF_WATERTWR = 3286, + MODEL_CXRF_OILTANK = 3287, + MODEL_LOD_REFINERYBOX1 = 3288, + MODEL_LOD_REFTHINCHIM1 = 3289, + MODEL_LOD_REFCHIMNY01 = 3290, + MODEL_LOD_REF_OILTANK = 3291, + MODEL_CXF_PAYSPRAY_ = 3292, + MODEL_DES_PAYSPINT = 3293, + MODEL_CXF_SPRAYDOOR1 = 3294, + MODEL_LOD_WATERTWR = 3295, + MODEL_LOD_OILTANK = 3296, + MODEL_LOD_CONHOOS1 = 3297, + MODEL_LOD_CONHOOS2 = 3298, + MODEL_LOD_CONHOOS3 = 3299, + MODEL_LOD_CONHOOS4 = 3300, + MODEL_LOD_CONHOOS5 = 3301, + MODEL_CXRF_CORPANEL = 3302, + MODEL_DES_BIGHUS03 = 3303, + MODEL_DES_BIGHUS02 = 3304, + MODEL_DES_BIGHUS01 = 3305, + MODEL_SWBURBHAUS02 = 3306, + MODEL_SWBURBHAUS01 = 3307, + MODEL_SWBURBHAUS03 = 3308, + MODEL_SWBURBHAUS04 = 3309, + MODEL_SW_WOODHAUS04 = 3310, + MODEL_SW_WOODHAUS01A = 3311, + MODEL_SW_WOODHAUS02 = 3312, + MODEL_SW_WOODHAUS03 = 3313, + MODEL_SW_BIGBURB_04 = 3314, + MODEL_SW_BIGBURB_03 = 3315, + MODEL_SW_BIGBURB_02 = 3316, + MODEL_SW_BIGBURB_01 = 3317, + MODEL_LODSWBURBHAUS04 = 3318, + MODEL_LODSWBURBHAUS03 = 3319, + MODEL_LODSWBURBHAUS02 = 3320, + MODEL_LODSWBURBHAUS01 = 3321, + MODEL_LODSWOODHAUS01A = 3322, + MODEL_LODSWOODHAUS03 = 3323, + MODEL_LODSWOODHAUS02 = 3324, + MODEL_LODSWOODHAUS04 = 3325, + MODEL_LODSWBIGBURB01 = 3326, + MODEL_LODSWBIGBURB02 = 3327, + MODEL_LODSWBIGBURB03 = 3328, + MODEL_LODSWBIGBURB04 = 3329, + MODEL_CXRF_BRIGLEG = 3330, + MODEL_CXRF_WHITEBRIG = 3331, + MODEL_CXRF_LODWHBRIG = 3332, + MODEL_CXRF_LODBRIGLG = 3333, + MODEL_BIG_COCK_SIGN = 3334, + MODEL_CE_ROADSIGN1 = 3335, + MODEL_CXRF_FRWAY1SIG = 3336, + MODEL_CXRF_DESERTSIG = 3337, + MODEL_PYLON_LODBIG1_ = 3338, + MODEL_LODTRAIL_LG2_01 = 3339, + MODEL_LODTRAIL_LG1_01 = 3340, + MODEL_LODTRAIL_LG3_01 = 3341, + MODEL_LODTRAIL_LG4_01 = 3342, + MODEL_LODTRAIL2_01 = 3343, + MODEL_LODTRAIL5_01 = 3344, + MODEL_LODTRAIL6_01 = 3345, + MODEL_LOD_AIRSTRM_SML_ = 3346, + MODEL_LOD_AIRSTRM_MED_ = 3347, + MODEL_TORINO_MIC = 3350, + MODEL_SW_BIGBURBSAVE = 3351, + MODEL_BURBDOORRENAME_ME = 3352, + MODEL_SW_BIGBURBSAVE2 = 3353, + MODEL_BURBDOOR2REF = 3354, + MODEL_CXRF_SAVHUS1_ = 3355, + MODEL_CXRF_SAVHUS2_ = 3356, + MODEL_CXRF_LOD_SAVHS1_ = 3357, + MODEL_CXRF_LOD_SAVHS2_ = 3358, + MODEL_CXRF_SAVHUSGAR1_ = 3359, + MODEL_CXRF_LOD_SAVG_ = 3360, + MODEL_CXREF_WOODSTAIR = 3361, + MODEL_DES_RUIN2_ = 3362, + MODEL_DES_RUIN1_ = 3363, + MODEL_DES_RUIN3_ = 3364, + MODEL_LOD_CXF_PAYSPY_ = 3365, + MODEL_LOD_MIL_HANGAR1_ = 3366, + MODEL_LOD_BNYD_BLK3_ = 3367, + MODEL_LOD_BNYD_BLK2_ = 3368, + MODEL_LOD_BNYD_BLK1_ = 3369, + MODEL_LOD_QRY_CRUSHER = 3370, + MODEL_LOD_D_BIGHUS1_ = 3371, + MODEL_LOD_D_BIGHUS2_ = 3372, + MODEL_LOD_D_BIGHUS3_ = 3373, + MODEL_SW_HAYBREAK02 = 3374, + MODEL_CE_DBLBARN01 = 3375, + MODEL_LODCE_DBLBARN01 = 3376, + MODEL_LODCE_BEERPILE01 = 3377, + MODEL_CE_BEERPILE01 = 3378, + MODEL_CE_HAIRPINR = 3379, + MODEL_CE_HAIRPINL = 3380, + MODEL_CXRF_REDARCH = 3381, + MODEL_CXRF_LOD_RDRCH = 3382, + MODEL_A51_LABTABLE1_ = 3383, + MODEL_A51_HALBOX_ = 3384, + MODEL_A51_LIGHT1_ = 3385, + MODEL_A51_SRACK2_ = 3386, + MODEL_A51_SRACK3_ = 3387, + MODEL_A51_SRACK4_ = 3388, + MODEL_A51_SRACK1_ = 3389, + MODEL_A51_SDSK_NCOL1_ = 3390, + MODEL_A51_SDSK_NCOL2_ = 3391, + MODEL_A51_SDSK_NCOL3_ = 3392, + MODEL_A51_SDSK_NCOL4_ = 3393, + MODEL_A51_SDSK_2_ = 3394, + MODEL_A51_SDSK_3_ = 3395, + MODEL_A51_SDSK_4_ = 3396, + MODEL_A51_SDSK_1_ = 3397, + MODEL_CXRF_FLOODLITE_ = 3398, + MODEL_CXRF_A51_STAIRS = 3399, + MODEL_CXRF_A51SECT = 3400, + MODEL_CXRF_A51SECT2 = 3401, + MODEL_SW_TEMPBARN01 = 3402, + MODEL_SW_LOGCOVER = 3403, + MODEL_LODSW_TEMPBARN01 = 3404, + MODEL_LODSW_LOGCOVER = 3405, + MODEL_CXREF_WOODJETTY = 3406, + MODEL_CE_MAILBOX1 = 3407, + MODEL_CE_MAILBOX2 = 3408, + MODEL_GRASSPLANT = 3409, + MODEL_CXRF_ALDEA = 3410, + MODEL_CUNTERB01 = 3411, + MODEL_CUNTERB03 = 3412, + MODEL_LODCUNTERB07 = 3413, + MODEL_CE_OLDHUT1 = 3414, + MODEL_CE_LOGHUT1 = 3415, + MODEL_CE_LOGHUT02 = 3417, + MODEL_CE_OLDHUT02 = 3418, + MODEL_CE_LOGBARN02 = 3419, + MODEL_LODCE_LOGBARN02 = 3420, + MODEL_LODCE_OLDHUT1 = 3421, + MODEL_LODCE_OLDHUT02 = 3422, + MODEL_LODCE_LOGHUT02 = 3423, + MODEL_LOD_REFCONDENS1 = 3424, + MODEL_NT_WINDMILL = 3425, + MODEL_NT_NODDONKBASE = 3426, + MODEL_DERRICK01 = 3427, + MODEL_OILPLODBITBASE = 3428, + MODEL_VEGASBOOTH01 = 3430, + MODEL_VGSCLUBOX01 = 3431, + MODEL_HTLCNPY02_LVS = 3432, + MODEL_HTLCNPY01_LVS = 3433, + MODEL_SKLLSGN01_LVS = 3434, + MODEL_MOTEL01SGN_LVS = 3435, + MODEL_MOTEL03_LVS = 3436, + MODEL_BALLYPLLR01_LVS = 3437, + MODEL_BALLYRING01_LVS = 3438, + MODEL_APRTREE01_LVS = 3439, + MODEL_ARPTPILLAR01_LVS = 3440, + MODEL_LUXORPILLAR02_LVS = 3441, + MODEL_VEGASXREXHSE1 = 3442, + MODEL_VEGASXREXHSE2 = 3443, + MODEL_SHABBYHOUSE02_LVS = 3444, + MODEL_VEGASXREXHSE08 = 3445, + MODEL_VEGASXREXHSE10 = 3446, + MODEL_VGSTLGRAPHPOLE = 3447, + MODEL_SHAMCPRKIN = 3448, + MODEL_VEGASHSENEW1 = 3449, + MODEL_VEGASHSEPLOT1 = 3450, + MODEL_VEGASHSENEW2 = 3451, + MODEL_BBALLINTVGN1 = 3452, + MODEL_BBALLINTVGN2 = 3453, + MODEL_VGNHSEING15 = 3454, + MODEL_VGNHSEBLK1 = 3455, + MODEL_VGNHSEBLK3 = 3456, + MODEL_VGNHSEBLK2 = 3457, + MODEL_VGNCARSHADE1 = 3458, + MODEL_VGNTELEPOLE1 = 3459, + MODEL_VEGASLAMPOST = 3460, + MODEL_TIKITORCH01_LVS = 3461, + MODEL_CSRANGEL_LVS = 3462, + MODEL_VEGASLAMPOST2 = 3463, + MODEL_SHABBYHOUSE03_LVS = 3464, + MODEL_VEGSPETROLPUMP = 3465, + MODEL_SHABBYHOUSE01_LVS = 3466, + MODEL_VEGSTREETSIGN1 = 3467, + MODEL_VEGSTREETSIGN2 = 3468, + MODEL_VEGENMOTEL1 = 3469, + MODEL_VEGASAIRCON1 = 3470, + MODEL_VGSCHINALION1 = 3471, + MODEL_CIRCUSLAMPOST03 = 3472, + MODEL_VEGENMOTEL12 = 3473, + MODEL_FREIGHTCRANE1 = 3474, + MODEL_VGSN_FNCELEC_PST = 3475, + MODEL_LODLLINTVGN1 = 3476, + MODEL_LODLLINTVGN2 = 3477, + MODEL_LODHSEING15 = 3478, + MODEL_LODHSEBLK2 = 3479, + MODEL_LODHSEBLK1 = 3480, + MODEL_LODHSEBLK03 = 3481, + MODEL_LODLSGN01_LVS = 3482, + MODEL_VEGASXREXHSE09 = 3483, + MODEL_VEGASXREXHSE03 = 3484, + MODEL_VEGASXREXHSE04 = 3485, + MODEL_VEGASXREXHSE05 = 3486, + MODEL_VEGASXREXHSE06 = 3487, + MODEL_VEGASXREXHSE07 = 3488, + MODEL_HANGAR1_08_LVS = 3489, + MODEL_LODGAR1_08_LVS = 3490, + MODEL_VEGASS_HANGER2 = 3491, + MODEL_LODASS_HANGER2 = 3492, + MODEL_VGSN_CARPARK01 = 3493, + MODEL_LUXORPILLAR04_LVS = 3494, + MODEL_LODORPILLAR04_LVS = 3495, + MODEL_VGSXREFBBALLNET = 3496, + MODEL_VGSXREFBBALLNET2 = 3497, + MODEL_WDPILLAR01_LVS = 3498, + MODEL_WDPILLAR02_LVS = 3499, + MODEL_LODXREFPARTM1 = 3500, + MODEL_VGSXREFPARTM1 = 3501, + MODEL_VGSN_CON_TUBE = 3502, + MODEL_VGSNSCFFPLE = 3503, + MODEL_VGSN_PORTALOO = 3504, + MODEL_VGSN_NITREE_Y01 = 3505, + MODEL_VGSN_NITREE_Y02 = 3506, + MODEL_VGSN_NITREE_G01 = 3507, + MODEL_VGSN_NITREE_G02 = 3508, + MODEL_VGSN_NITREE_R01 = 3509, + MODEL_VGSN_NITREE_R02 = 3510, + MODEL_VGSN_NITREE_B01 = 3511, + MODEL_VGSN_NITREE_B02 = 3512, + MODEL_VGS_ROADSIGN1 = 3513, + MODEL_VGS_ROADSIGN02 = 3514, + MODEL_VGSFOUNTAIN = 3515, + MODEL_VGSSTRIPTLIGHTS1 = 3516, + MODEL_CEASERTREE02_LVS = 3517, + MODEL_VGSN_ROOFLITY = 3518, + MODEL_VGSN_ROOFLITB = 3519, + MODEL_VGSN_FLWRBDSM = 3520, + MODEL_VGSN_RBSTIFF = 3521, + MODEL_VGSN_FLWBDCRB = 3522, + MODEL_LODENMOTEL13 = 3523, + MODEL_SKULLPILLAR01_LVS = 3524, + MODEL_EXBRTORCH01 = 3525, + MODEL_VEGASAIRPORTLIGHT = 3526, + MODEL_LODMCPRKIN = 3527, + MODEL_VGSEDRAGON = 3528, + MODEL_VGSN_CONSTRBEAM = 3529, + MODEL_VGSN_CONSTRBEAM2 = 3530, + MODEL_TRDFLWRBEDQ = 3531, + MODEL_TRIADBUSH = 3532, + MODEL_TRDPILLAR01 = 3533, + MODEL_TRDLAMP01 = 3534, + MODEL_LODASHSENEW1 = 3535, + MODEL_LODBBYHOUSE03_LVS = 3536, + MODEL_LODBBYHOUSE02_LVS = 3537, + MODEL_LODASHSEPLOT1 = 3538, + MODEL_LODBBYHOUSE01_LVS = 3539, + MODEL_LODASXREXHSE09 = 3540, + MODEL_LODASXREXHSE03 = 3541, + MODEL_LODASXREXHSE04 = 3542, + MODEL_LODASXREXHSE05 = 3543, + MODEL_LODASXREXHSE06 = 3544, + MODEL_LODASXREXHSE07 = 3545, + MODEL_LODASXREXHSE08 = 3546, + MODEL_LODASXREXHSE10 = 3547, + MODEL_LODASXREXHSE2 = 3548, + MODEL_LODASXREXHSE1 = 3549, + MODEL_VGSN_FNCELEC_MSH = 3550, + MODEL_LODN_FNCELEC_PST = 3551, + MODEL_LODLYPLLR01_LVS = 3552, + MODEL_LODAGESIGN04 = 3553, + MODEL_VISAGESIGN04 = 3554, + MODEL_COMPMEDHOS2_LAE = 3555, + MODEL_COMPMEDHOS3_LAE = 3556, + MODEL_COMPMEDHOS4_LAE = 3557, + MODEL_COMPMEDHOS5_LAE = 3558, + MODEL_LODPMEDHOS5_LAE = 3559, + MODEL_LODPMEDHOS4_LAE = 3560, + MODEL_LODPMEDHOS3_LAE = 3561, + MODEL_LODPMEDHOS1_LAE = 3562, + MODEL_LODPMEDHOS2_LAE = 3563, + MODEL_LASTRAN1_LA01 = 3564, + MODEL_LASDKRT1_LA01 = 3565, + MODEL_LASNTRK1 = 3566, + MODEL_LASNFLTRAIL = 3567, + MODEL_LASNTRK2 = 3568, + MODEL_LASNTRK3 = 3569, + MODEL_LASDKRT2 = 3570, + MODEL_LASDKRT3 = 3571, + MODEL_LASDKRT4 = 3572, + MODEL_LASDKRTGRP1 = 3573, + MODEL_LASDKRTGRP2 = 3574, + MODEL_LASDKRT05 = 3575, + MODEL_DOCKCRATES2_LA = 3576, + MODEL_DOCKCRATES1_LA = 3577, + MODEL_DOCKBARR1_LA = 3578, + MODEL_LODPBIGHO1_LAE = 3579, + MODEL_COMPBIGHO2_LAE = 3580, + MODEL_LODPBIGHO3_LAE = 3581, + MODEL_COMPMEDHOS1_LAE = 3582, + MODEL_COMPBIGHO3_LAE = 3583, + MODEL_COMPPROJ01_LA = 3584, + MODEL_LASTRAN1_LA02 = 3585, + MODEL_ESCL_LA = 3586, + MODEL_NWSNPEDHUS1_LAS = 3587, + MODEL_SANPED_HSE1_LAS = 3588, + MODEL_COMPFUKHOUSE3 = 3589, + MODEL_COMPFUKHOUSE2 = 3590, + MODEL_LODPFUKHOUSE2 = 3591, + MODEL_LODPFUKHOUSE3 = 3592, + MODEL_LA_FUCKCAR2 = 3593, + MODEL_LA_FUCKCAR1 = 3594, + MODEL_DINGBAT01AEX_LA = 3595, + MODEL_DINGBAT02AEX_LA = 3596, + MODEL_DINGBAT01BEX_LA = 3597, + MODEL_HILLHOUSE01_LA = 3598, + MODEL_HILLHOUSE02_LA = 3599, + MODEL_HILLHOUSE06_LA = 3600, + MODEL_HILLHOUSE04_LA = 3601, + MODEL_HILLHOUSE05_LA = 3602, + MODEL_BEVMAN_LAW2 = 3603, + MODEL_BEVMANGAR_LAW2 = 3604, + MODEL_BEVMAN3_LAW2 = 3605, + MODEL_BEVBRKHUS1 = 3606, + MODEL_BEVMAN2_LAW2 = 3607, + MODEL_HILLHOUSE08_LA = 3608, + MODEL_HILLHOUSE13_LA = 3609, + MODEL_HILLHOUSE12_LA = 3612, + MODEL_HILLHOUSE10_LA = 3613, + MODEL_HILLHOUSE09_LA = 3614, + MODEL_SANMONBHUT1_LAW2 = 3615, + MODEL_MIDRANHUS2_LAS = 3616, + MODEL_MIDRANHUS_LAS = 3617, + MODEL_NWLAW2HUSJM3_LAW2 = 3618, + MODEL_NWLAW2HUSJM4_LAW2 = 3619, + MODEL_REDOCKRANE_LAS = 3620, + MODEL_RBIGCRATE_LAS = 3621, + MODEL_RDWARHUS = 3622, + MODEL_RDWARHUS2 = 3623, + MODEL_NWWARHUS = 3624, + MODEL_CRGOSTNTRMP = 3625, + MODEL_DCKWRKHUT = 3626, + MODEL_DCKCANPY = 3627, + MODEL_SMALLPROSJMT_LAS = 3628, + MODEL_ARHANG_LAS = 3629, + MODEL_CRDBOXES2_LAS = 3630, + MODEL_OILCRAT_LAS = 3631, + MODEL_IMOILDRUM_LAS = 3632, + MODEL_IMOILDRUM4_LAS = 3633, + MODEL_NWCCUMPHUS1_LAS = 3634, + MODEL_NWCCUMPHUS2_LAS = 3635, + MODEL_INDUST1LAS_LAS = 3636, + MODEL_INDUST1LAS2_LAS = 3637, + MODEL_ELECSTIONV_LAS = 3638, + MODEL_GLENPHOUSE01_LAX = 3639, + MODEL_GLENPHOUSE02_LAX = 3640, + MODEL_GLENPHOUSE04_LAX = 3641, + MODEL_GLENPHOUSE03_LAX = 3642, + MODEL_LA_CHEM_PIPING = 3643, + MODEL_IDLEBUILD01_LAX = 3644, + MODEL_LODEBUILD01_LAX = 3645, + MODEL_GANGHOUS05_LAX = 3646, + MODEL_LODGANGHOUS02_LAX = 3647, + MODEL_GANGHOUS02_LAX = 3648, + MODEL_GANGHOUS01_LAX = 3649, + MODEL_LODGANGHOUS04_LAX = 3650, + MODEL_GANGHOUS04_LAX = 3651, + MODEL_LOD1BCHAPTA1_LAX = 3652, + MODEL_BEACHAPARTA1_LAX = 3653, + MODEL_LODGANGHOUS01_LAX = 3654, + MODEL_GANGHOUS03_LAX = 3655, + MODEL_LODGANGHOUS03_LAX = 3656, + MODEL_AIRSEATA_LAS = 3657, + MODEL_AIRLASTROLA_LAS = 3658, + MODEL_AIRFINFOA_LAS = 3659, + MODEL_LASAIRFBED_LAS = 3660, + MODEL_PROJECTS01_LAX = 3661, + MODEL_LODJECTS01_LAX = 3662, + MODEL_LASSTEPSA_LAS = 3663, + MODEL_LASBLASTDE_LAS = 3664, + MODEL_AIRYELRM_LAS = 3665, + MODEL_AIRUNTEST_LAS = 3666, + MODEL_LODPED_HSE1_LAS = 3667, + MODEL_LODNPEDHUS1_LAS = 3668, + MODEL_LODCUMPHUS1_LAS = 3669, + MODEL_LODCUMPHUS2_LAS = 3670, + MODEL_CENTUBAL01_LAX = 3671, + MODEL_LODANG_LAS = 3672, + MODEL_LAXRF_REFINERYBASE = 3673, + MODEL_LAXRF_REFINERYALPHA = 3674, + MODEL_LAXRF_REFINERYPIPE = 3675, + MODEL_LAWNHOUSEREDA = 3676, + MODEL_LAWNHOUSEGREYLS = 3677, + MODEL_LAWNHOUSEGREYRS = 3678, + MODEL_LODNHOUSEREDA = 3679, + MODEL_LODNHOUSEGREYRS = 3680, + MODEL_LODNHOUSEGREYLS = 3681, + MODEL_LOD_REFINERYBASE = 3682, + MODEL_LOD_INDUST1LAS = 3683, + MODEL_LAWNAPARTMNT = 3684, + MODEL_LODLAWNAPARTMNT = 3685, + MODEL_LOD_DCKCANPY = 3686, + MODEL_LOD_RDWARHUS = 3687, + MODEL_LOD_RBIGCRATE_LAS = 3688, + MODEL_RDWARHUSBIG = 3689, + MODEL_LOD_RDWARHUSBIG = 3690, + MODEL_DINGBAT02AEXLOD = 3691, + MODEL_DINGBAT01AEXLOD = 3692, + MODEL_DINGBAT01BEXLOD = 3693, + MODEL_RYDER_HOLES = 3694, + MODEL_LODCOMPPROJ_LAE2 = 3695, + MODEL_LODPROJECT2LAE2 = 3696, + MODEL_PROJECT2LAE2 = 3697, + MODEL_BARRIO3B_LAE = 3698, + MODEL_LODBARRIO3BLAE2 = 3699, + MODEL_DRUGDEALHS1_LAE = 3700, + MODEL_LODDRUGDEALHS1_LAE = 3701, + MODEL_BARRIO6B_LAE2 = 3702, + MODEL_LODBARRIO6BLAE2 = 3703, + MODEL_BARRIO6A_LAE2 = 3704, + MODEL_LODBARRIO6A_LAE2 = 3705, + MODEL_LODGNGHOS05_LAX = 3706, + MODEL_RDWARHUSMED = 3707, + MODEL_LOD_RDWARHUSMED = 3708, + MODEL_LOD_RDWARHUS2 = 3709, + MODEL_LOD_NWWARHUS = 3710, + MODEL_BEACHAPARTA5B = 3711, + MODEL_LODBEACHAPT5B = 3712, + MODEL_BEACHAPARTA5A = 3713, + MODEL_LODBEACHAPT5A = 3714, + MODEL_ARCH_SIGN = 3715, + MODEL_LODARCH_SIGN = 3716, + MODEL_SANCLIFBAL1_LAX = 3717, + MODEL_LODNPHOUSE01_LAX = 3718, + MODEL_LODNPHOUSE02_LAX = 3719, + MODEL_LODNPHOUSE03_LAX = 3720, + MODEL_LODNPHOUSE04_LAX = 3721, + MODEL_LAXRF_SCRAPBOX = 3722, + MODEL_LAXRF_LODSCRAPBOX = 3723, + MODEL_LAXRF_CARGOTOP = 3724, + MODEL_LODHILLHOUSE06_LA = 3725, + MODEL_LODHILLHOUSE05_LA = 3726, + MODEL_LODHILLHOUSE06_LA01 = 3727, + MODEL_LODHILLHOUSE10_LA = 3728, + MODEL_LODHILLHOUSE09_LA = 3729, + MODEL_LODHILLHOUSE08_LA = 3730, + MODEL_LODHILLHOUSE01_LA = 3731, + MODEL_LODNWLAW2HUSJM = 3732, + MODEL_LODBEVMAN2_LAW2 = 3733, + MODEL_LODBEVMAN3_LAW2 = 3734, + MODEL_LODBEVMAN_LAW2 = 3735, + MODEL_LODBEVBRKHUS1 = 3736, + MODEL_LODBEVMANGAR_LAW2 = 3737, + MODEL_LODNWLHUSJM = 3738, + MODEL_LODHILLHOUSE02_LA = 3739, + MODEL_LODHILLHOUSE13_LA = 3740, + MODEL_CEHILLHSE14 = 3741, + MODEL_LODCEHILLHSE14 = 3742, + MODEL_ESCL_SINGLELA = 3743, + MODEL_LODLASDKRTGRP02 = 3744, + MODEL_LODLA_CHEM_PIPING = 3745, + MODEL_LODREDOCKRANE_LAS = 3746, + MODEL_LODLASNTRK3 = 3747, + MODEL_LODLLPROSJMT_LAS = 3748, + MODEL_CLUBGATE01_LAX = 3749, + MODEL_LODBGATE01_LAX = 3750, + MODEL_LODSEAT01_LAX = 3751, + MODEL_FERSEAT01_LAX = 3752, + MODEL_DOCKWALL_LAS2 = 3753, + MODEL_LAMOTSIG1_LA = 3754, + MODEL_LAS2WARHUS_LAS2 = 3755, + MODEL_LODWARHUS_LAS03 = 3756, + MODEL_LAMOTSIG2_LA = 3757, + MODEL_LODKWALL_LAS2 = 3758, + MODEL_VENCANHOU01_LAX = 3759, + MODEL_LODCANHOU01_LAX = 3760, + MODEL_INDUSTSHELVES = 3761, + MODEL_CENWLAW4 = 3762, + MODEL_CE_RADARMAST3 = 3763, + MODEL_TCENEWHILLHUS02 = 3764, + MODEL_TCEMULHOUSE04_LAW01 = 3765, + MODEL_LODTCENEWHILLHUS03 = 3766, + MODEL_LOD_MULHOUSE04 = 3767, + MODEL_LODCENWLAW4 = 3768, + MODEL_LODOSTNTRMP = 3769, + MODEL_LODWRKHUT = 3770, + MODEL_CEHILLHSE14_ALPHA = 3771, + MODEL_LODPBIGHO2_LAE = 3772, + MODEL_LODRANHUS2_LAS = 3773, + MODEL_LODRANHUS_LAS = 3774, + MODEL_LODHILLHOUSE12_LA = 3775, + MODEL_CI_BSTAGE = 3776, + MODEL_LODBSTAGE01 = 3777, + MODEL_LODMONBHUT1_LAX01 = 3778, + MODEL_LODUST1LAS2_LAS2 = 3779, + MODEL_LODAIRYELRM_LAS = 3780, + MODEL_LAN2OFFICEFLRS = 3781, + MODEL_LODLAN2OFFICEFLRS = 3782, + MODEL_LAS2XREF01_LAX = 3783, + MODEL_BULKHEADLIGHT = 3785, + MODEL_MISSILE_05_SFXR = 3786, + MODEL_MISSILE_02_SFXR = 3787, + MODEL_MISSILE_03_SFXR = 3788, + MODEL_MISSILE_09_SFXR = 3789, + MODEL_MISSILE_01_SFXR = 3790, + MODEL_MISSILE_10_SFXR = 3791, + MODEL_MISSILE_08_SFXR = 3792, + MODEL_MISSILE_06_SFXR = 3793, + MODEL_MISSILE_07_SFXR = 3794, + MODEL_MISSILE_04_SFXR = 3795, + MODEL_ACBOX1_SFS = 3796, + MODEL_MISSILE_11_SFXR = 3797, + MODEL_ACBOX3_SFS = 3798, + MODEL_ACBOX2_SFS = 3799, + MODEL_ACBOX4_SFS = 3800, + MODEL_SFX_LITE04 = 3801, + MODEL_SFX_PLANT03 = 3802, + MODEL_SFX_ALARMS03 = 3803, + MODEL_SFXREF_AIRCON11 = 3804, + MODEL_SFXREF_AIRCON12 = 3805, + MODEL_SFX_WINPLANT07 = 3806, + MODEL_SFX_FLAG02 = 3807, + MODEL_SFX_ALARMS04 = 3808, + MODEL_SFX_LITE05 = 3809, + MODEL_SFX_PLANT04 = 3810, + MODEL_SFX_WINPLANT08 = 3811, + MODEL_SFXREF_AIRCON13 = 3812, + MODEL_SFXREF_AIRCON14 = 3813, + MODEL_HANGAR1_SFXREF = 3814, + MODEL_LODHANGAR1_SFXREF = 3815, + MODEL_BIGHANGAR1_SFX = 3816, + MODEL_LODHANGAR1_SFX = 3817, + MODEL_SF_FRWAYSIG = 3818, + MODEL_BLEACHER_SFSX = 3819, + MODEL_BOX_HSE_09_SFXRF = 3820, + MODEL_BOX_HSE_02_SFXRF = 3821, + MODEL_BOX_HSE_03_SFXRF = 3822, + MODEL_BOX_HSE_11_SFXRF = 3823, + MODEL_BOX_HSE_10_SFXRF = 3824, + MODEL_BOX_HSE_01_SFXRF = 3825, + MODEL_BOX_HSE_06_SFXRF = 3826, + MODEL_BOX_HSE_07_SFXRF = 3827, + MODEL_BOX_HSE_05_SFXRF = 3828, + MODEL_BOX_HSE_04_SFXRF = 3829, + MODEL_BOX_HSE_08_SFXRF = 3830, + MODEL_LOD_HSE_09_SFXRF = 3831, + MODEL_LOD_HSE_02_SFXRF = 3832, + MODEL_LOD_HSE_03_SFXRF = 3833, + MODEL_LOD_HSE_11_SFXRF = 3834, + MODEL_LOD_HSE_10_SFXRF = 3835, + MODEL_LOD_HSE_08_SFXRF = 3836, + MODEL_LOD_HSE_05_SFXRF = 3837, + MODEL_LOD_HSE_07_SFXRF = 3838, + MODEL_LOD_HSE_04_SFXRF = 3839, + MODEL_LOD_HSE_06_SFXRF = 3840, + MODEL_LOD_HSE_01_SFXRF = 3841, + MODEL_BOX_HSE_14_SFXRF = 3842, + MODEL_BOX_HSE_12_SFXRF = 3843, + MODEL_BOX_HSE_15_SFXRF = 3844, + MODEL_BOX_HSE_13_SFXRF = 3845, + MODEL_LOD_HSE_13_SFXRF = 3846, + MODEL_LOD_HSE_14_SFXRF = 3847, + MODEL_LOD_HSE_15_SFXRF = 3848, + MODEL_LOD_HSE_12_SFXRF = 3849, + MODEL_CARSHOWBANN_SFSX = 3850, + MODEL_CARSHOWWIN_SFSX = 3851, + MODEL_SF_JUMP = 3852, + MODEL_GAY_LAMPPOST = 3853, + MODEL_GAY_TELGRPHPOLE = 3854, + MODEL_GAY_TRAFFIC_LIGHT = 3855, + MODEL_SF_FRWAYSIG_HALF = 3856, + MODEL_OTTOSMASH3 = 3857, + MODEL_OTTOSMASH1 = 3858, + MODEL_OTTOSMASH04 = 3859, + MODEL_MARKETSTALL04_SFXRF = 3860, + MODEL_MARKETSTALL01_SFXRF = 3861, + MODEL_MARKETSTALL02_SFXRF = 3862, + MODEL_MARKETSTALL03_SFXRF = 3863, + MODEL_WS_FLOODLIGHT = 3864, + MODEL_CONCPIPE_SFXRF = 3865, + MODEL_DEMOLISH1_SFXRF = 3866, + MODEL_WS_SCAFFOLDING_SFX = 3867, + MODEL_LODSCAFFOLDING_SFX = 3868, + MODEL_LODDEMOLISH1_SFXRF = 3869, + MODEL_WS_FLOODBEAMS = 3872, + MODEL_SILICON04_SFS = 3873, + MODEL_LODSILICON04_SFS = 3874, + MODEL_SFTELEPOLE = 3875, + MODEL_SF_ROOFMAST = 3876, + MODEL_SF_ROOFLITE = 3877, + MODEL_HEADSTONES_SFSX = 3878, + MODEL_WS_JETTY_SFX = 3879, + MODEL_LODWS_JETTY_SFX = 3880, + MODEL_AIRSECBOOTH_SFSE = 3881, + MODEL_AIRSECBOOTHINT_SFSE = 3882, + MODEL_SAMSITE_SFXRF = 3884, + MODEL_SAMBASE_SFXRF = 3885, + MODEL_WS_JETTYNOL_SFX = 3886, + MODEL_DEMOLISH4_SFXRF = 3887, + MODEL_LODDEMOLISH4_SFXRF = 3888, + MODEL_LIB_STREET09 = 3890, + MODEL_LIB_STREET08 = 3891, + MODEL_LIB_STREET10 = 3892, + MODEL_LIB_STREET05 = 3893, + MODEL_LIB_STREET11 = 3894, + MODEL_LIB_STREET14 = 3895, + MODEL_LOD_LIBERTY04 = 3896, + MODEL_LIB_STREET03 = 3897, + MODEL_LIB_STREET15 = 3898, + MODEL_LIB_STREET04 = 3899, + MODEL_LIB_STREET12 = 3900, + MODEL_LOD_LIBERTY01 = 3901, + MODEL_LIB_STREET16 = 3902, + MODEL_LIB_STREET07 = 3903, + MODEL_LOD_LIBERTY02 = 3904, + MODEL_LIB_STREET02 = 3905, + MODEL_LIB_STREET01 = 3906, + MODEL_LIB_STREET06 = 3907, + MODEL_LOD_LIBERTY03 = 3908, + MODEL_LOD_LIBERTY06 = 3909, + MODEL_TRACKSHAD05 = 3910, + MODEL_LIB_STREET13 = 3911, + MODEL_LOD_LIBERTY05 = 3912, + MODEL_LOD_LIBERTY07 = 3913, + MODEL_SNOWOVER02 = 3914, + MODEL_SNOWOVER03 = 3915, + MODEL_SNOWOVER04 = 3916, + MODEL_LIB_STREET17 = 3917, + MODEL_SNOWOVER01 = 3918, + MODEL_LIB_MAIN_BISTROTOP = 3919, + MODEL_LIB_VEG3 = 3920, + MODEL_LIB_COUNCHS = 3921, + MODEL_REST_CHAIR2 = 3922, + MODEL_LIBSTREETFAR = 3923, + MODEL_PLAYROOM = 3924, + MODEL_BRIDGE_1 = 3925, + MODEL_D_SIGN = 3926, + MODEL_D_SIGN01 = 3927, + MODEL_HELIPAD = 3928, + MODEL_D_ROCK = 3929, + MODEL_D_ROCK01 = 3930, + MODEL_D_ROCK02 = 3931, + MODEL_HANGER = 3932, + MODEL_FAKE_SKY = 3933, + MODEL_HELIPAD01 = 3934, + MODEL_STATUE = 3935, + MODEL_BWIRE_FENCE = 3936, + MODEL_BWIRE_FENCE01 = 3937, + MODEL_RCZERO4_BASE01 = 3938, + MODEL_HANGER01 = 3939, + MODEL_COMMS01 = 3940, + MODEL_COMMS02 = 3941, + MODEL_BISTROBAR = 3942, + MODEL_MID_STAIRCASE = 3943, + MODEL_BISTRO_BLOK = 3944, + MODEL_ALPHA_FENCE = 3945, + MODEL_PLANTS01 = 3946, + MODEL_RC_TRACK_A = 3947, + MODEL_BISTROGARDEN = 3948, + MODEL_RC_TRACK_B = 3949, + MODEL_RC_ZERO_C = 3950, + MODEL_RC_WATER = 3951, + MODEL_RC_TRACK_D = 3952, + MODEL_RC_TRACK_E = 3953, + MODEL_RC_TRACK_F = 3954, + MODEL_RC_TRACK_G = 3955, + MODEL_RC_TRACK_H = 3956, + MODEL_RC_TRACK_I = 3957, + MODEL_WAREHOOSEBOXES = 3958, + MODEL_RCZERO_ALPHA = 3959, + MODEL_RCZERO4_BASE02 = 3960, + MODEL_BOXKITCH = 3961, + MODEL_LEE_PLANE07 = 3962, + MODEL_LEE_PLANE08 = 3963, + MODEL_LEE_PLANE09 = 3964, + MODEL_LEE_OBJECT11 = 3965, + MODEL_LEE_OBJECT01 = 3966, + MODEL_AIRPORT_INT2 = 3967, + MODEL_AIRPORT_FRONT = 3968, + MODEL_BAG_BELT2 = 3969, + MODEL_CJ_CUSTOM_BAR = 3970, + MODEL_CJ_BAG_RECLAIM = 3971, + MODEL_MON1 = 3972, + MODEL_CJ_BAG_DET = 3973, + MODEL_POLICEST01_LAN = 3975, + MODEL_POLICEST02_LAN = 3976, + MODEL_LARIVERSEC1_LAN = 3977, + MODEL_LARIVERSEC3_LAN = 3978, + MODEL_BONAVENTURA_LAN = 3979, + MODEL_LACITYHALL1_LAN = 3980, + MODEL_LARIVERSEC4A_LAN = 3981, + MODEL_LARIVERSEC5A_LAN = 3982, + MODEL_PEUBLOMISS2_LAN = 3983, + MODEL_CHURCHPROG1_LAN = 3984, + MODEL_PERSHINGSQ1_LAN = 3985, + MODEL_MIS1_LAN = 3986, + MODEL_FIGHTPLAZA2_LAN = 3987, + MODEL_CITYHALLBLOCK2_LAN = 3988, + MODEL_BONAPLAZAGR_LAN = 3989, + MODEL_GSFREEWAY6_LAN = 3990, + MODEL_GSFREEWAY7_LAN = 3991, + MODEL_ROADS03_LAN = 3992, + MODEL_ROADS04_LAN = 3993, + MODEL_ROADS06_LAN = 3994, + MODEL_ROADS07_LAN = 3995, + MODEL_ROADS08_LAN = 3996, + MODEL_CITYHALLBLOK_LAN = 3997, + MODEL_COURT1_LAN = 3998, + MODEL_LODTWINTJAIL1_LAN = 3999, + MODEL_TWINTJAIL2_LAN = 4000, + MODEL_BAILBONDS1_LAN = 4001, + MODEL_LACITYHALL2_LAN = 4002, + MODEL_LACITYHALLTRANS_LAN = 4003, + MODEL_LACITYHALL3_LAN = 4004, + MODEL_DECOBLOK2_LAN = 4005, + MODEL_EASTCOLUMB1_LAN = 4006, + MODEL_WELLSFARGO1_LAN = 4007, + MODEL_DECOBLOK1_LAN = 4008, + MODEL_LODLSFARGO1_LAN = 4009, + MODEL_FIGFREE1_LAN = 4010, + MODEL_FIGFREE2_LAN = 4011, + MODEL_TERMANEXGRD1_LAN = 4012, + MODEL_BONAVENBASE_LAN = 4013, + MODEL_BONAPLAZA_LAN = 4014, + MODEL_BONAVENTURAGL_LAN = 4015, + MODEL_FIGHOTBASE_LAN = 4016, + MODEL_OFFBLOKA_LAN = 4017, + MODEL_NEWBUILDSM02 = 4018, + MODEL_NEWBUILDSM01 = 4019, + MODEL_FIGHOTBLOK1_LAN = 4020, + MODEL_OFFICESSML1_LAN = 4021, + MODEL_FOODMART1_LAN = 4022, + MODEL_NEWDBBUILD_LAN04 = 4023, + MODEL_LODITYHALL2_LAN = 4024, + MODEL_LODBUILDSM01 = 4025, + MODEL_LODHOTBASE_LAN = 4026, + MODEL_LANGRASSPATCH = 4027, + MODEL_LANSTAP = 4028, + MODEL_LARIVERSEC5B_LAN = 4029, + MODEL_LARIVERSEC4B_LAN = 4030, + MODEL_LODIVERSEC4A_LAN = 4031, + MODEL_CARIMP_LAN = 4032, + MODEL_FIGHTPLAZA1_LAN = 4033, + MODEL_FIGHTPLAZA1TRA_LAN = 4034, + MODEL_LODROADS01_LAN = 4035, + MODEL_LODROADS02_LAN01 = 4036, + MODEL_LODROADS03_LAN01 = 4037, + MODEL_LODROADS04_LAN01 = 4038, + MODEL_LODROADS06_LAN01 = 4039, + MODEL_LODROADS07_LAN01 = 4040, + MODEL_LODROADS01B_LAN = 4041, + MODEL_LODGSFREEWAY6_LAN = 4042, + MODEL_LODGSFREEWAY7_LAN = 4043, + MODEL_LODLACITYHALL1_LAN = 4044, + MODEL_LODCITYHALLBLOK_LAN = 4045, + MODEL_LODLACITYHALL3_LAN = 4046, + MODEL_LODLACITYHALL4_LAN = 4047, + MODEL_LACITYHALL4_LAN = 4048, + MODEL_LODBUILD01_LAN = 4049, + MODEL_LODFIGFREE1_LAN = 4050, + MODEL_LODOFFICESSML1_LAN = 4051, + MODEL_LODLARIVERSEC5_LAN = 4052, + MODEL_LODLARIVERSEC3_LAN = 4053, + MODEL_LODDECOBLOK2_LAN = 4054, + MODEL_LODEASTCOLUMB1_LAN = 4055, + MODEL_LODLARIVERSEC1_LAN = 4056, + MODEL_LODSHINGSQ2_LAN = 4057, + MODEL_FIGHOTBLOK2_LAN = 4058, + MODEL_FIGHOTBLOK3_LAN = 4059, + MODEL_FIGHOTBLOK4_LAN = 4060, + MODEL_LODFIGHOTBLOK1_LAN = 4061, + MODEL_LODFIGHOTBLOK2_LAN = 4062, + MODEL_LODPOLICEST01_LAN = 4063, + MODEL_LODPOLICEST02_LAN = 4064, + MODEL_LODAVENBASE_LAN = 4065, + MODEL_LODHLLBLK2LAND_LAN = 4066, + MODEL_LODFIGHOTBLOK3_LAN = 4067, + MODEL_LODFIGHOTBLOK4_LAN = 4068, + MODEL_LODBAILBONDS1_LAN = 4069, + MODEL_LODMIS1_LAN = 4070, + MODEL_LODPEUBLOMISS2_LAN = 4071, + MODEL_LODTERMANEXGRD1_LAN = 4072, + MODEL_LODFIGHTPLAZA1_LAN = 4073, + MODEL_LODFIGHTPLAZA2_LAN = 4074, + MODEL_LODNEWBUILDSM02 = 4075, + MODEL_LODLANGRASSPATCH = 4076, + MODEL_LODLANSTAP = 4077, + MODEL_LODCHURCHPROG1_LAN = 4078, + MODEL_TWINTJAIL1_LAN = 4079, + MODEL_LODTWINTJAIL2_LAN = 4080, + MODEL_LODCOURT1_LAN = 4081, + MODEL_LODOFFBLOKA_LAN = 4082, + MODEL_LODFIGFREE2_LAN = 4083, + MODEL_JUD_LAN = 4084, + MODEL_SUPPORTS01_LAN = 4085, + MODEL_SUPPORTS02_LAN = 4086, + MODEL_SUPPORTS03_LAN = 4087, + MODEL_SUPPORTS04_LAN = 4088, + MODEL_SUPPORTS05_LAN = 4089, + MODEL_SUPPORTS06_LAN = 4090, + MODEL_SUPPORTS07_LAN = 4091, + MODEL_LODSUPPORTS05_LAN = 4092, + MODEL_LODSUPPORTS03_LAN = 4093, + MODEL_LODSUPPORTS02_LAN = 4094, + MODEL_LODSUPPORTS04_LAN = 4095, + MODEL_LODSUPPORTS06_LAN = 4096, + MODEL_LODSUPPORTS07_LAN = 4097, + MODEL_LODSUPPORTS01_LAN = 4098, + MODEL_TWINTJAILFENCE_LAN = 4099, + MODEL_MESHFENCE1_LAN = 4100, + MODEL_EXPO_LAN = 4101, + MODEL_EXPOALPHA_LAN = 4102, + MODEL_STAPLES_LAN = 4103, + MODEL_LODSTAPLES_LAN = 4104, + MODEL_LODEXPO_LAN = 4105, + MODEL_SHPFIREESC_LAN = 4106, + MODEL_ROADS01_LAN = 4107, + MODEL_ROADS01B_LAN = 4108, + MODEL_LARIVERSEC5_LAN = 4109, + MODEL_LAN_EMBANK1 = 4110, + MODEL_LODLAN_EMBANK02 = 4111, + MODEL_BUILD01_LAN = 4112, + MODEL_LANOFFICEBLOK1 = 4113, + MODEL_LANBLOCKNEW2 = 4114, + MODEL_LODLANBLOCKNEW2 = 4115, + MODEL_LODLANOFFICEBLOK1 = 4116, + MODEL_FIGFREE3_LAN = 4117, + MODEL_LODDECOBLOK1_LAN = 4118, + MODEL_LODFIGFREE3_LAN = 4119, + MODEL_LAN_FESCALPHA1 = 4120, + MODEL_LAN_FESCALPHA02 = 4121, + MODEL_CTYHLLBLK2LAND_LAN = 4122, + MODEL_CITYHALLBLOCK1_LAN = 4123, + MODEL_LODHALLBLOCK1_LAN = 4124, + MODEL_GSFREEWAY1_LAN = 4125, + MODEL_LODGSFREEWAY1_LAN = 4126, + MODEL_GSFREEWAY2_LAN = 4127, + MODEL_GSFREEWAY3_LAN = 4128, + MODEL_GSFREEWAY4_LAN = 4129, + MODEL_LODGSFREEWAY4_LAN = 4130, + MODEL_GSFREEWAY5_LAN = 4131, + MODEL_LODGSFREEWAY5_LAN = 4132, + MODEL_GSFREEWAY8_LAN = 4133, + MODEL_LODGSFREEWAY8_LAN = 4134, + MODEL_LODLARIVERSEC5A_LAN = 4135, + MODEL_LODLARIVERSEC5B_LAN = 4136, + MODEL_LODBONAPLAZAGR_LAN = 4137, + MODEL_LODLARIVERSEC4B_LAN = 4138, + MODEL_ROADS09_LAN = 4139, + MODEL_LODROADS09_LAN = 4140, + MODEL_HOTELEXTERIOR1_LAN = 4141, + MODEL_ROADS10_LAN = 4142, + MODEL_LODROADS10_LAN = 4143, + MODEL_ROADS11_LAN = 4144, + MODEL_LODROADS11_LAN = 4145, + MODEL_ROADS12_LAN = 4146, + MODEL_LODROADS12_LAN = 4147, + MODEL_ROADS13_LAN = 4148, + MODEL_LODROADS13_LAN = 4149, + MODEL_ROADS14_LAN = 4150, + MODEL_LODROADS14_LAN = 4151, + MODEL_ROADS15_LAN = 4152, + MODEL_LODROADS15_LAN = 4153, + MODEL_ROADS16_LAN = 4154, + MODEL_LODROADS16_LAN = 4155, + MODEL_ROADS17_LAN = 4156, + MODEL_LODROADS17_LAN = 4157, + MODEL_ROADS18_LAN = 4158, + MODEL_LODROADS18_LAN = 4159, + MODEL_ROADS19_LAN = 4160, + MODEL_LODROADS19_LAN = 4161, + MODEL_LODROADS20_LAN = 4162, + MODEL_ROADS24_LAN = 4163, + MODEL_LODROADS24_LAN = 4164, + MODEL_ROADS21_LAN = 4165, + MODEL_LODROADS21_LAN = 4166, + MODEL_LODROADS22_LAN = 4167, + MODEL_ROADS23_LAN = 4168, + MODEL_LODROADS23_LAN = 4169, + MODEL_LAN_FESCALPHA04 = 4170, + MODEL_LAN_FESCALPHA05 = 4171, + MODEL_PLANTBEDS1_LAN01 = 4172, + MODEL_PLANTBEDS1_LAN02 = 4173, + MODEL_PLANTBEDS1_LAN04 = 4174, + MODEL_PLANTBEDS1_LAN05 = 4175, + MODEL_BAILBONDS2_LAN = 4176, + MODEL_LODBAILBONDS2_LAN = 4177, + MODEL_BAILBONDS3_LAN = 4178, + MODEL_LODBAILBONDS3_LAN = 4179, + MODEL_LAN_FESCALPHA06 = 4180, + MODEL_LODELEXTERIOR1_LAN = 4181, + MODEL_ROADS22_LAN = 4182, + MODEL_EXPOALPHA_LAN02 = 4183, + MODEL_HOTELFERNS2_LAN = 4184, + MODEL_HOTELFERNS3_LAN = 4185, + MODEL_PERSHINGSQ2_LAN = 4186, + MODEL_LODBONAPLAZA_LAN = 4187, + MODEL_BVENTURAENV_LAN = 4188, + MODEL_TWINTJAIL1ALPHA_LAN = 4189, + MODEL_SDFENCES1_LAN = 4190, + MODEL_LODFOODMART1_LAN = 4191, + MODEL_POLICESTALPHAS_LAN = 4192, + MODEL_OFFICEBLOK1_LAN = 4193, + MODEL_LODOFFICEBLOK1_LAN = 4194, + MODEL_SDFENCES2_LAN = 4195, + MODEL_SDFENCES3_LAN = 4196, + MODEL_LANALLEY1_LAN = 4197, + MODEL_LARIVERSEC3B_LAN = 4198, + MODEL_GARAGES1_LAN = 4199, + MODEL_LODGARAGES1_LAN = 4200, + MODEL_SDFENCES4_LAN = 4201, + MODEL_SDFENCES5_LAN = 4202, + MODEL_LARIVERSEC1B_LAN = 4203, + MODEL_LODLARIVERSEC1B_LAN = 4204, + MODEL_WEFARGOALPHAS_LAN = 4205, + MODEL_PERSHINGPOOL_LAN = 4206, + MODEL_ROADS02_LAN = 4207, + MODEL_LODROADS08_LAN01 = 4208, + MODEL_ROADS20_LAN = 4209, + MODEL_LODSHINGSQ1_LAN = 4210, + MODEL_LODLARIVESEC3B_LAN = 4211, + MODEL_LANITEWIN1_LAN = 4212, + MODEL_LANITEWIN1_LAN03 = 4213, + MODEL_LANITEWIN3_LAN = 4214, + MODEL_LANITEWIN4_LAN = 4215, + MODEL_LANITEWIN5_LAN = 4216, + MODEL_LANITEWIN6_LAN = 4217, + MODEL_LANITEWIN7_LAN = 4218, + MODEL_LANITEWIN8_LAN = 4219, + MODEL_LANITEWIN9_LAN = 4220, + MODEL_LANITEWIN91_LAN = 4221, + MODEL_LANITEWIN92_LAN = 4222, + MODEL_LODYHALLBLOCK2_LAN = 4223, + MODEL_LODGSFREEWAY2_LAN01 = 4224, + MODEL_LODGSFREEWAY3_LAN = 4225, + MODEL_LODNEWDBBUILD_LAN04 = 4226, + MODEL_GRAFFITI_LAN01 = 4227, + MODEL_LODCARIMP_LAN = 4228, + MODEL_LODBILLBRDLAN_08 = 4229, + MODEL_BILLBRDLAN_08 = 4230, + MODEL_LAN_FESCALPHA03 = 4231, + MODEL_CARIMP2_LAN = 4232, + MODEL_ROADS05_LAN = 4233, + MODEL_LODROADS05_LAN01 = 4234, + MODEL_BILLBRDLAN_03 = 4235, + MODEL_LODBILLBRDLAN_03 = 4236, + MODEL_LODBILLBRDLAN_10 = 4237, + MODEL_BILLBRDLAN_10 = 4238, + MODEL_BILLBRDLAN_11 = 4239, + MODEL_SBSBEDLAW2 = 4240, + MODEL_SBSBED4LAW2 = 4241, + MODEL_SBSBED5LAW2 = 4242, + MODEL_SBSBED8LAW2 = 4243, + MODEL_SBSBED9LAW2 = 4244, + MODEL_SBSBED1LAW2 = 4245, + MODEL_SBSBED3LAW2 = 4246, + MODEL_SBSBED6LAW2 = 4247, + MODEL_SBSBED7LAW2 = 4248, + MODEL_SBSBED91LAW2 = 4249, + MODEL_SBCNE_SEAFLOOR01 = 4250, + MODEL_SBCNE_SEAFLOOR02 = 4251, + MODEL_SBCNE_SEAFLOOR03 = 4252, + MODEL_SBCNE_SEAFLOOR05 = 4253, + MODEL_SBCE_GROUNDPALO09 = 4254, + MODEL_SBCNE_SEAFLOOR04 = 4255, + MODEL_SBCNE_SEAFLOOR06 = 4256, + MODEL_SBSEABED_SFE03 = 4257, + MODEL_SBSEABED_SFE05 = 4258, + MODEL_SBSEABED_SFE01 = 4259, + MODEL_SBSEABED_SFE69 = 4260, + MODEL_SBSEABED_SFN02 = 4261, + MODEL_SBSEABED_SFN03 = 4262, + MODEL_SBSEABED_SFNCUNT = 4263, + MODEL_SBSEABED1_SFW = 4264, + MODEL_SBSEABED2_SFW = 4265, + MODEL_SBSEABED6_SFW = 4266, + MODEL_SBSEABED2_LAS2 = 4267, + MODEL_SBSEABED3_LAS20 = 4268, + MODEL_SBSEABED1_LAS2 = 4269, + MODEL_SBSEABED5_LAS2 = 4270, + MODEL_SBSEABED6LAS2 = 4271, + MODEL_SBSEABED8_LAS2 = 4272, + MODEL_SBSEABED7_LAS2 = 4273, + MODEL_SBSEABED86_LAS2 = 4274, + MODEL_SBSEABED9_LAS20 = 4275, + MODEL_SBSEABED91_LAS2 = 4276, + MODEL_SBSEABED93_LAS = 4277, + MODEL_SBSEABED92_LAS = 4278, + MODEL_SBSEABED94_LAS = 4279, + MODEL_SBSEABED95_LAS = 4280, + MODEL_SBSEABED96_LAS = 4281, + MODEL_SBSEABED97_LAS = 4282, + MODEL_SBSEABED99_LAS = 4283, + MODEL_SBSEABED98_LAS = 4284, + MODEL_SBSEABED81_LAS = 4285, + MODEL_SBSEABED85_LAS = 4286, + MODEL_SBSEABED84_LAS = 4287, + MODEL_SBSEABED83_LAS = 4288, + MODEL_SBSEABED82_LAS = 4289, + MODEL_SBCS_LANDBIT_46 = 4290, + MODEL_SBCS_LANDBIT_54 = 4291, + MODEL_SBCS_LANDBIT_63 = 4292, + MODEL_SBCS_LANDBIT_72 = 4293, + MODEL_SBCS_LANDBIT_77 = 4294, + MODEL_SBCS_LANDBIT_78 = 4295, + MODEL_SBCS_SEABIT_NEW = 4296, + MODEL_SBCS_SEABIT1_NEW = 4297, + MODEL_SBCS_SEABIT2_NEW = 4298, + MODEL_SBCS_SEABIT3_NEW = 4299, + MODEL_SBCS_SEABIT4_NEW = 4300, + MODEL_SBCS_SEABIT5_NEW = 4301, + MODEL_SBCS_SEABIT6_NEW = 4302, + MODEL_SBCS_SEABIT7_NEW = 4303, + MODEL_SBCS_SEABIT8_NEW = 4304, + MODEL_SBCS_SEABIT9_NEW = 4305, + MODEL_SBCS_SEABIT11_NEW = 4306, + MODEL_SBCS_SEABIT10_NEW = 4307, + MODEL_SBCS_SEABIT12_NEW = 4308, + MODEL_SBCS_SEABIT13_NEW = 4309, + MODEL_SBCS_SEABIT14_NEW = 4310, + MODEL_SBCS_SEABIT15_NEW = 4311, + MODEL_SBCS_SEABIT16_NEW = 4312, + MODEL_SBCS_SEABIT17_NEW = 4313, + MODEL_SBSEABED_CN01 = 4314, + MODEL_SBSEABED_CN03 = 4315, + MODEL_SBSEABED_CN04 = 4316, + MODEL_SBCN_SEAFLOOR03 = 4317, + MODEL_SBCN_SEAFLOOR04 = 4318, + MODEL_SBCN_SEAFLOOR01 = 4319, + MODEL_SBCN_SEAFLOOR05 = 4320, + MODEL_SBCN_SEAFLOOR06 = 4321, + MODEL_SBCN_SEAFLOOR07 = 4322, + MODEL_SBXSEABED_CN02 = 4323, + MODEL_SBXSEABED_CN05 = 4324, + MODEL_SBXSEABED_CN06 = 4325, + MODEL_SBXSEABED_CN07 = 4326, + MODEL_SBCN_SEAFLOOR08 = 4327, + MODEL_SBCN_SEAFLOOR09 = 4328, + MODEL_SBCN_SEAFLOOR10 = 4329, + MODEL_SBCN2_SEAFLOOR01 = 4330, + MODEL_SBCN2_SEAFLOOR02 = 4331, + MODEL_SBCN2_SEAFLOOR03 = 4332, + MODEL_SBCN2_SEAFLOOR04 = 4333, + MODEL_SBVGSESEAFLOOR03 = 4334, + MODEL_SBSEABED_05_SFSE = 4335, + MODEL_SBSEABED_10_SFSE = 4336, + MODEL_SBSEABED_09_SFSE = 4337, + MODEL_SBSEABED_08_SFSE = 4338, + MODEL_SBSEABED_07_SFSE = 4339, + MODEL_SBSEABED_11_SFSE = 4340, + MODEL_SBSEABED_03_SFSE = 4341, + MODEL_SBSEABED_02_SFSE = 4342, + MODEL_SBSEABED_01_SFSE = 4343, + MODEL_SBSEABED01_LAW = 4344, + MODEL_SBVGSSSEAFLOOR05 = 4345, + MODEL_SBVGSSSEAFLOOR04 = 4346, + MODEL_SBCW_SEABED01 = 4347, + MODEL_SBCW_SEABED02 = 4348, + MODEL_SBCW_SEABED03 = 4349, + MODEL_SBCW_SEABED04 = 4350, + MODEL_SBCW_SEABED05 = 4351, + MODEL_SBCW_SEABED06 = 4352, + MODEL_SBCUNTWLAND27B = 4353, + MODEL_SBCUNTWLAND28B = 4354, + MODEL_SBCUNTWLAND30B = 4355, + MODEL_SBCUNTWLAND43B = 4356, + MODEL_SBCUNTWLAND44B = 4357, + MODEL_SBCUNTWLAND28BB = 4358, + MODEL_SBCUNTWLAND30BB = 4359, + MODEL_SBOBJECT01 = 4360, + MODEL_SBOBJECT02 = 4361, + MODEL_SBOBJECT03 = 4362, + MODEL_SBOBJECT04 = 4363, + MODEL_SBOBJECT05 = 4364, + MODEL_SBOBJECT06 = 4365, + MODEL_SBOBJECT07 = 4366, + MODEL_SBOBJECT08 = 4367, + MODEL_SBOBJECT09 = 4368, + MODEL_SBOBJECT10 = 4369, + MODEL_SBOBJECT11 = 4370, + MODEL_SBOBJECT12 = 4371, + MODEL_BEACH04_SV = 4372, + MODEL_SV_ROADSCOAST01 = 4373, + MODEL_BEACH04B_SV = 4374, + MODEL_LODSEABED001 = 4375, + MODEL_LODSEABED002 = 4376, + MODEL_LODSEABED003 = 4377, + MODEL_LODSEABED004 = 4378, + MODEL_LODSEABED005 = 4379, + MODEL_LODSEABED006 = 4380, + MODEL_LODSEABED007 = 4381, + MODEL_LODSEABED008 = 4382, + MODEL_LODSEABED009 = 4383, + MODEL_LODSEABED010 = 4384, + MODEL_LODSEABED011 = 4385, + MODEL_LODSEABED012 = 4386, + MODEL_LODSEABED013 = 4387, + MODEL_LODSEABED015 = 4388, + MODEL_LODSEABED019 = 4389, + MODEL_LODSEABED020 = 4390, + MODEL_LODSEABED021 = 4391, + MODEL_LODSEABED022 = 4392, + MODEL_LODSEABED023 = 4393, + MODEL_LODSEABED024 = 4394, + MODEL_LODSEABED026 = 4395, + MODEL_LODSEABED027 = 4396, + MODEL_LODSEABED028 = 4397, + MODEL_LODSEABED029 = 4398, + MODEL_LODSEABED030 = 4399, + MODEL_LODSEABED031 = 4400, + MODEL_LODSEABED032 = 4401, + MODEL_LODSEABED033 = 4402, + MODEL_LODSEABED034 = 4403, + MODEL_LODSEABED035 = 4404, + MODEL_LODSEABED036 = 4405, + MODEL_LODSEABED037 = 4406, + MODEL_LODSEABED038 = 4407, + MODEL_LODSEABED039 = 4408, + MODEL_LODSEABED040 = 4409, + MODEL_LODSEABED041 = 4410, + MODEL_LODSEABED042 = 4411, + MODEL_LODSEABED043 = 4412, + MODEL_LODSEABED044 = 4413, + MODEL_LODSEABED045 = 4414, + MODEL_LODSEABED046 = 4415, + MODEL_LODSEABED047 = 4416, + MODEL_LODSEABED048 = 4417, + MODEL_LODSEABED049 = 4418, + MODEL_LODSEABED050 = 4419, + MODEL_LODSEABED051 = 4420, + MODEL_LODSEABED052 = 4421, + MODEL_LODSEABED053 = 4422, + MODEL_LODSEABED054 = 4423, + MODEL_LODSEABED055 = 4424, + MODEL_LODSEABED056 = 4425, + MODEL_LODSEABED057 = 4426, + MODEL_LODSEABED058 = 4427, + MODEL_LODSEABED059 = 4428, + MODEL_LODSEABED060 = 4429, + MODEL_LODSEABED061 = 4430, + MODEL_LODSEABED062 = 4431, + MODEL_LODSEABED063 = 4432, + MODEL_LODSEABED064 = 4433, + MODEL_LODSEABED065 = 4434, + MODEL_LODSEABED066 = 4435, + MODEL_LODSEABED067 = 4436, + MODEL_LODSEABED068 = 4437, + MODEL_LODSEABED069 = 4438, + MODEL_LODSEABED070 = 4439, + MODEL_LODSEABED071 = 4440, + MODEL_LODSEABED072 = 4441, + MODEL_LODSEABED073 = 4442, + MODEL_LODSEABED074 = 4443, + MODEL_LODSEABED075 = 4444, + MODEL_LODSEABED076 = 4445, + MODEL_LODSEABED077 = 4446, + MODEL_LODSEABED078 = 4447, + MODEL_LODSEABED079 = 4448, + MODEL_LODSEABED080 = 4449, + MODEL_LODSEABED081 = 4450, + MODEL_LODSEABED083 = 4451, + MODEL_LODSEABED084 = 4452, + MODEL_LODSEABED085 = 4453, + MODEL_LODSEABED086 = 4454, + MODEL_LODSEABED087 = 4455, + MODEL_LODSEABED088 = 4456, + MODEL_LODSEABED089 = 4457, + MODEL_LODSEABED090 = 4458, + MODEL_LODSEABED091 = 4459, + MODEL_LODSEABED092 = 4460, + MODEL_LODSEABED093 = 4461, + MODEL_LODSEABED094 = 4462, + MODEL_LODSEABED095 = 4463, + MODEL_LODSEABED096 = 4464, + MODEL_LODSEABED097 = 4465, + MODEL_LODSEABED098 = 4466, + MODEL_LODSEABED099 = 4467, + MODEL_LODSEABED107 = 4468, + MODEL_LODSEABED108 = 4469, + MODEL_LODSEABED109 = 4470, + MODEL_LODSEABED110 = 4471, + MODEL_LODSEABED111 = 4472, + MODEL_LODSEABED112 = 4473, + MODEL_LODSEABED113 = 4474, + MODEL_LODSEABED114 = 4475, + MODEL_LODSEABED115 = 4476, + MODEL_LODSEABED116 = 4477, + MODEL_LODSEABED121 = 4478, + MODEL_LODSEABED123 = 4479, + MODEL_LODSEABED124 = 4480, + MODEL_LODSEABED125 = 4481, + MODEL_LODSEABED126 = 4482, + MODEL_LODSEABED127 = 4483, + MODEL_LODSEABED128 = 4484, + MODEL_LODSEABED130 = 4485, + MODEL_LODSEABED131 = 4486, + MODEL_LODSEABED133 = 4487, + MODEL_LODSEABED134 = 4488, + MODEL_LODSEABED135 = 4489, + MODEL_LODSEABED136 = 4490, + MODEL_LODSEABED137 = 4491, + MODEL_LODSEABED138 = 4492, + MODEL_LODSEABED139 = 4493, + MODEL_LODSEABED140 = 4494, + MODEL_LODSEABED141 = 4495, + MODEL_LODSEABED143 = 4496, + MODEL_LODSEABED144 = 4497, + MODEL_LODSEABED145 = 4498, + MODEL_LODSEABED146 = 4499, + MODEL_LODSEABED147 = 4500, + MODEL_LODSEABED148 = 4501, + MODEL_LODSEABED149 = 4502, + MODEL_LODSEABED151 = 4503, + MODEL_CUNTW_ROADBLOCKLD = 4504, + MODEL_CUNTW_ROADBLOCK01LD = 4505, + MODEL_CUNTW_ROADBLOCK02LD = 4506, + MODEL_CUNTW_ROADBLOCK03LD = 4507, + MODEL_CUNTW_ROADBLOCK04LD = 4508, + MODEL_CUNTW_ROADBLOCK05LD = 4509, + MODEL_SFW_ROADBLOCK1LD = 4510, + MODEL_SFW_ROADBLOCK2LD = 4511, + MODEL_SFW_ROADBLOCK3LD = 4512, + MODEL_SFN_ROADBLOCKLD = 4513, + MODEL_CN2_ROADBLOCK01LD = 4514, + MODEL_CN2_ROADBLOCK02LD = 4515, + MODEL_CN2_ROADBLOCK03LD = 4516, + MODEL_CN2_ROADBLOCK04LD = 4517, + MODEL_CE_MAKOSPAN1LD = 4518, + MODEL_CE_FREDBARLD = 4519, + MODEL_CE_FREDBAR01LD = 4520, + MODEL_CE_FLINTWAT01LD = 4521, + MODEL_CE_FLINTINTLD = 4522, + MODEL_SFSE_ROADBLOCK1 = 4523, + MODEL_SFSE_ROADBLOCK3 = 4524, + MODEL_SFSE_ROADBLOCK4 = 4525, + MODEL_SFSE_ROADBLOCK5 = 4526, + MODEL_SFSE_ROADBLOCK2 = 4527, + MODEL_LODSEABEDS01 = 4528, + MODEL_LODSEABEDS02 = 4529, + MODEL_LODSEABEDS03 = 4530, + MODEL_LODSEABEDS04 = 4531, + MODEL_LODSEABED027BB = 4532, + MODEL_SBSEABED_SFN03BB = 4533, + MODEL_LODUNTWLAND30B = 4534, + MODEL_SBSEABED_SFN01 = 4535, + MODEL_LODSEABED025 = 4536, + MODEL_LODROADSCOAST02 = 4537, + MODEL_SBCE_GRNDPALCST05 = 4538, + MODEL_LODSEABED017 = 4539, + MODEL_SBCN_SEAFLOOR02 = 4540, + MODEL_LODSEABED082 = 4541, + MODEL_LIBRTOW1_LAN = 4550, + MODEL_LARIVERSEC2_LAN = 4551, + MODEL_AMUBLOKSUN1_LAN = 4552, + MODEL_ROAD12_LAN2 = 4553, + MODEL_LIBBASE1_LAN = 4554, + MODEL_FIGFREE4_LAN = 4555, + MODEL_SKY4PLAZ1_LAN = 4556, + MODEL_ROAD10_LAN2 = 4557, + MODEL_LACMENTR1_LAN = 4558, + MODEL_LACMABASE1_LAN = 4559, + MODEL_LACMCANOP1_LAN = 4560, + MODEL_LODRTOW1_LAN = 4561, + MODEL_LAPLAZA2_LAN = 4562, + MODEL_LASKYSCRAP1_LAN = 4563, + MODEL_LASKYSCRAP2_LAN = 4564, + MODEL_BUNKSTEPS1_LAN = 4565, + MODEL_LODKYSCRAP1_LAN = 4566, + MODEL_ROAD07_LAN2 = 4567, + MODEL_GROUND01_LAN2 = 4568, + MODEL_STOLENBUILDS05 = 4569, + MODEL_STOLENBUILDS08 = 4570, + MODEL_STOLENBUILDS09 = 4571, + MODEL_STOLENBUILDS11 = 4572, + MODEL_STOLENBUILDS12 = 4573, + MODEL_STOLENBUILDS13 = 4574, + MODEL_FIREESCAPES1_LAN2 = 4575, + MODEL_LAN2NEWBUILD1 = 4576, + MODEL_LODLENBUILDS09 = 4577, + MODEL_LODLENBUILDS08 = 4578, + MODEL_LODKYSCRAP2_LAN = 4579, + MODEL_LODKYSCRAP4_LAN = 4580, + MODEL_LOD4PLAZ2_LAN = 4581, + MODEL_LODLAN2NEWBUILD1 = 4582, + MODEL_LODLENBUILDS12 = 4583, + MODEL_HALGROUNDLAN2 = 4584, + MODEL_TOWERLAN2 = 4585, + MODEL_SKYSCRAPN201 = 4586, + MODEL_SKYSCRAPN203 = 4587, + MODEL_ROOFSHITLAN2 = 4588, + MODEL_ROAD15_LAN2 = 4589, + MODEL_GRASSPATCHLAN2 = 4590, + MODEL_LAN2SHIT03 = 4591, + MODEL_LAN2SHIT04 = 4592, + MODEL_LAN2BUILDBLK01 = 4593, + MODEL_LAN2BUILDBLK02 = 4594, + MODEL_CPARK05_LAN2 = 4595, + MODEL_CSPGM_LAN2 = 4596, + MODEL_CRPRKBLOK4_LAN2 = 4597, + MODEL_CRPRKBLOK2_LAN2 = 4598, + MODEL_CSP2GM_LAN2 = 4599, + MODEL_LADTBUILD10_LAN = 4600, + MODEL_LAN2_GM1 = 4601, + MODEL_LASKYSCRAP4_LAN = 4602, + MODEL_SKY4PLAZ2_LAN = 4603, + MODEL_BUILD4PLAZ_LAN2 = 4604, + MODEL_SKYSCRAPN203_GLS = 4605, + MODEL_LODLAN2BUILDBLK2 = 4606, + MODEL_LODGRASPCHLAN2 = 4607, + MODEL_LODLACMABS1_LAN = 4608, + MODEL_LODCMCANP_LAN = 4609, + MODEL_LODCMENTR1_LAN = 4610, + MODEL_LODROAD15_LAN2 = 4611, + MODEL_LODLAN2SHIT03 = 4612, + MODEL_LODROAD09_LAN2 = 4613, + MODEL_LODROAD10_LAN2 = 4614, + MODEL_LODSKY4PLAZ_LAN = 4615, + MODEL_LODLAN2BUILDBLK01 = 4616, + MODEL_LOD_BUILD4PLAZ_LAN2 = 4617, + MODEL_LODDTBUILD2_LAN = 4618, + MODEL_LODROAD14_LAN2 = 4619, + MODEL_LODLIBBASE1_LAN = 4620, + MODEL_LODROAD05_LAN2 = 4621, + MODEL_LODSKYSCRAPN202 = 4622, + MODEL_LODBUNKSTEPS1_LAN = 4623, + MODEL_LODHALGROUNDLAN2 = 4624, + MODEL_LODLADTBUILD10_LAN = 4625, + MODEL_LODTOWERLAN = 4626, + MODEL_LODSTOLENBUILDS05 = 4627, + MODEL_LODSTOLENBUILDS11 = 4628, + MODEL_LODSKYSCRAPN201 = 4629, + MODEL_LODROAD11_LAN2 = 4630, + MODEL_LODFIGFREE4_LAN = 4631, + MODEL_LODAMUBLKSON1_LAN = 4632, + MODEL_LODLAN2_GM1 = 4633, + MODEL_LODLARIVERSEC2_LAN = 4634, + MODEL_LODCPARK05_LAN2 = 4635, + MODEL_CPARKGMAUMK_LAN = 4636, + MODEL_CPARK_MUCK_LAN2 = 4637, + MODEL_PAYPARK_LAN01 = 4638, + MODEL_PAYPARK_LAN02 = 4639, + MODEL_PAYPARK_LAN03 = 4640, + MODEL_PAYPARK_LAN04 = 4641, + MODEL_PAYPARK_LAN = 4642, + MODEL_LAPLAZA2B_LAN2 = 4643, + MODEL_ROAD06_LAN2 = 4644, + MODEL_ROAD14_LAN2 = 4645, + MODEL_ROAD13_LAN2 = 4646, + MODEL_ROAD11_LAN2 = 4647, + MODEL_ROAD05_LAN2 = 4648, + MODEL_ROAD01_LAN2 = 4649, + MODEL_ROAD02_LAN2 = 4650, + MODEL_ROAD03_LAN2 = 4651, + MODEL_ROAD04_LAN2 = 4652, + MODEL_FREEWAY7_LAN2 = 4653, + MODEL_ROAD09_LAN2 = 4654, + MODEL_LODFREEWAY7_LAN = 4655, + MODEL_FREEWAY1_LAN2 = 4656, + MODEL_LODFREEWAY1_LAN2 = 4657, + MODEL_FREEWAY2_LAN2 = 4658, + MODEL_LODFREEWAY2_LAN2 = 4659, + MODEL_FREEWAY3_LAN2 = 4660, + MODEL_LODFREEWAY3_LAN2 = 4661, + MODEL_FREEWAY4_LAN2 = 4662, + MODEL_LODFREEWAY4_LAN2 = 4663, + MODEL_FREEWAY5_LAN2 = 4664, + MODEL_LODFREEWAY5_LAN2 = 4665, + MODEL_FREEWAY6_LAN2 = 4666, + MODEL_LODFREEWAY6_LAN2 = 4667, + MODEL_LODROAD01_LAN2 = 4668, + MODEL_LODROAD02_LAN2 = 4669, + MODEL_LODROAD03_LAN2 = 4670, + MODEL_LODROAD04_LAN2 = 4671, + MODEL_LODGROUND01_LAN2 = 4672, + MODEL_LODROAD06_LAN2 = 4673, + MODEL_LODROAD07_LAN2 = 4674, + MODEL_LODROAD08_LAN2 = 4675, + MODEL_LODROAD12_LAN2 = 4676, + MODEL_LODROAD13_LAN2 = 4677, + MODEL_LODFREEWAY8_LAN2 = 4678, + MODEL_FREEWAY8_LAN2 = 4679, + MODEL_LODLADTBUILD6_LAN2 = 4680, + MODEL_LADTBUILD6_LAN2 = 4681, + MODEL_LADTBUILD3_LAN2 = 4682, + MODEL_LADTBUILD2_LAN2 = 4683, + MODEL_LAALLEY1_LAN2 = 4684, + MODEL_LAALLEY2_LAN2 = 4685, + MODEL_LODLADTBUILD3_LAN2 = 4686, + MODEL_LODLADTBUILD1_LAN22 = 4687, + MODEL_LODLAALLEY1_LAN2 = 4688, + MODEL_LODLAALLEY2_LAN2 = 4689, + MODEL_SKYSCRAPN202 = 4690, + MODEL_CSP3GM_LAN2 = 4691, + MODEL_FREEWAY9_LAN2 = 4692, + MODEL_LODFREEWAY10_LAN2 = 4693, + MODEL_FREEWAY10_LAN2 = 4694, + MODEL_FREEWAY11_LAN2 = 4695, + MODEL_LODFREEWAY9_LAN2 = 4696, + MODEL_CRPRKBLOK1_LAN2 = 4697, + MODEL_LODLAPLAZA2_LAN = 4698, + MODEL_LODLAPLAZA2B_LAN = 4699, + MODEL_CPARK01_LAN2 = 4700, + MODEL_CPARK02_LAN2 = 4701, + MODEL_CPARK03_LAN2 = 4702, + MODEL_CPARK04_LAN2 = 4703, + MODEL_LODCPARK03_LAN2 = 4704, + MODEL_LODCPARK02_LAN2 = 4705, + MODEL_LODCPARK01_LAN2 = 4706, + MODEL_LODCPARK04_LAN2 = 4707, + MODEL_LADTBUILD1_LAN2 = 4708, + MODEL_LODLAN2SHIT05 = 4709, + MODEL_ROAD08_LAN2 = 4710, + MODEL_AMUBLOKALPHA_LAN2 = 4711, + MODEL_LIBPLAZA1_LAN = 4712, + MODEL_LODLIBPLAZA1_LAN = 4713, + MODEL_LACMAALPHAS1_LAN = 4714, + MODEL_LTSLASKY1_LAN2 = 4715, + MODEL_LTSLASKY2_LAN2 = 4716, + MODEL_LTSLASKY3_LAN2 = 4717, + MODEL_GM_BUILD4_LAN2 = 4718, + MODEL_LODGM_BUILD4_LAN2 = 4719, + MODEL_LTSLASKY1B_LAN = 4720, + MODEL_LTSLASKY2B_LAN2 = 4721, + MODEL_LTSLASKY3B_LAN2 = 4722, + MODEL_LTSLASKY4_LAN2 = 4723, + MODEL_LIBRARYWALL_LAN2 = 4724, + MODEL_LTSLASKY6_LAN2 = 4725, + MODEL_LIBTWRHELIPD_LAN2 = 4726, + MODEL_LIBTWRHELIPDA_LAN2 = 4727, + MODEL_LODTWRHELIPD_LAN = 4728, + MODEL_BILLBRDLAN2_01 = 4729, + MODEL_BILLBRDLAN2_03 = 4730, + MODEL_BILLBRDLAN2_05 = 4731, + MODEL_BILLBRDLAN2_06 = 4732, + MODEL_BILLBRDLAN2_07 = 4733, + MODEL_BILLBRDLAN2_08 = 4734, + MODEL_BILLBRDLAN2_09 = 4735, + MODEL_BILLBRDLAN2_10 = 4736, + MODEL_FIREESCAPES3_LAN2 = 4737, + MODEL_FIREESCAPES2_LAN2 = 4738, + MODEL_LTSLABUILD1_LAN2 = 4739, + MODEL_LTSLABUILD2_LAN2 = 4740, + MODEL_LTSLABUILD3_LAN2 = 4741, + MODEL_LTSLABUILD4_LAN2 = 4742, + MODEL_LTSLASKY5_LAN2 = 4743, + MODEL_LTSLABUILD5_LAN2 = 4744, + MODEL_LTSLABUILD6_LAN2 = 4745, + MODEL_LTSLASKY7_LAN2 = 4746, + MODEL_LTSLASKY8_LAN2 = 4747, + MODEL_LTSLABUILD7_LAN2 = 4748, + MODEL_LTSLABUILD8_LAN2 = 4749, + MODEL_LTSLABUILD9_LAN2 = 4750, + MODEL_LTSLABUILD10_LAN2 = 4751, + MODEL_LTSLABUILD11_LAN2 = 4752, + MODEL_LODBILLBRDLAN2_08 = 4753, + MODEL_LODBILLBRDLAN2_01 = 4754, + MODEL_LODBILLBRDLAN2_07 = 4755, + MODEL_LODBILLBRDLAN2_06 = 4756, + MODEL_LODBILLBRDLAN2_10 = 4757, + MODEL_LODBILLBRDLAN2_03 = 4758, + MODEL_LODBILLBRDLAN2_05 = 4759, + MODEL_LODFREEWAY11_LAN2 = 4760, + MODEL_LODSKYSCRAPN203 = 4761, + MODEL_LODSKYSCR203_GLS = 4762, + MODEL_BTOLAND8_LAS = 4806, + MODEL_LAROADS_20GH_LAS = 4807, + MODEL_LAROADSS_30_LAS = 4808, + MODEL_LAROADS_05_LAS = 4809, + MODEL_HILLPALOS04_LAS = 4810, + MODEL_CLIFFTEST02 = 4811, + MODEL_CLIFFTEST05 = 4812, + MODEL_CLIFFTEST07 = 4813, + MODEL_CLIFFTEST09 = 4814, + MODEL_CLIFFTESTGRND2 = 4815, + MODEL_ROCKLIFF1_LAS = 4816, + MODEL_TRNTRK7_LAS = 4817, + MODEL_TRNTRK8_LAS = 4818, + MODEL_TRNTRK5_LAS = 4819, + MODEL_BTOLAND1_LAS = 4820, + MODEL_BTOLAND2_LAS = 4821, + MODEL_NWCSTRD1_LAS = 4822, + MODEL_LASGRIFROAD = 4823, + MODEL_LASGRIFSTEPS2 = 4824, + MODEL_GRIFFITHOBLAS = 4825, + MODEL_GRIFFTOP2 = 4826, + MODEL_LAROADS_20GHI_LAS = 4827, + MODEL_LASAIRPRT5 = 4828, + MODEL_LASAIRPRT4 = 4829, + MODEL_LASAIRPRT3 = 4830, + MODEL_AIRPURT2_LAS = 4831, + MODEL_AIRTWER_LAS = 4832, + MODEL_AIRPURTDER_LAS = 4833, + MODEL_AIROAD1D_LAS = 4834, + MODEL_AIROAD1B_LAS = 4835, + MODEL_LAROADSX_04_LAS = 4836, + MODEL_LAPEDHUSREA_LAS = 4837, + MODEL_AIRPURTDERFR_LAS = 4838, + MODEL_BCHCOSTRD3_LAS = 4839, + MODEL_BCHCOSTRD4_LAS = 4840, + MODEL_BCHCOSTRD1_LAS = 4841, + MODEL_BEACH1_LAS0FG = 4842, + MODEL_BEACH1_LAS0FHY = 4843, + MODEL_BEACH1_LAS04 = 4844, + MODEL_HILLPALOS02_LAS = 4845, + MODEL_LACITYPED1_LAS = 4846, + MODEL_BEACH1_LAS0GJ = 4847, + MODEL_SANPEDBEAUT = 4848, + MODEL_SNPDMSHFNC3_LAS = 4849, + MODEL_SNPEDSHPBLK07 = 4850, + MODEL_HILLPALOS01_LAS = 4851, + MODEL_HILLPALOS03_LAS = 4852, + MODEL_TRAINCANO_LAS = 4853, + MODEL_LASUNDRAIRPRT2 = 4854, + MODEL_LASUNDRAIRPRT1 = 4855, + MODEL_LASUNDRAIRPRT3 = 4856, + MODEL_SNPEDMTSP1_LAS = 4857, + MODEL_SNPEDLAND1_LAS = 4858, + MODEL_SNPEDLAND2_LAS = 4859, + MODEL_UNIONSTWAR_LAS = 4860, + MODEL_SNPEDHUAIR2_LAS = 4861, + MODEL_AIRTUN2_LAS = 4862, + MODEL_AIRTUN1_LAS = 4863, + MODEL_AIRTUN3_LAS = 4864, + MODEL_LASRNWAY2_LAS = 4865, + MODEL_LASRNWAY1_LAS = 4866, + MODEL_LASRNWAY3_LAS = 4867, + MODEL_LAROADS_23_LAS = 4868, + MODEL_LASRNWAY8_LAS = 4869, + MODEL_AIRPURT2AX_LAS = 4870, + MODEL_AIRPURT2BX_LAS = 4871, + MODEL_LAROADS_042E_LAS = 4872, + MODEL_UNIONSTWARC2_LAS = 4873, + MODEL_HELIPAD1_LAS = 4874, + MODEL_HILLPALOS06_LAS = 4875, + MODEL_HILLPALOS08_LAS = 4876, + MODEL_DWNTWNBIT4_LAS = 4877, + MODEL_OBCITY1_LAS = 4878, + MODEL_HILLPALOSWAL1_LAS = 4879, + MODEL_DWNTWNBIT2_LAS = 4880, + MODEL_UNINSTPS_LAS01 = 4881, + MODEL_LASBRID1_LAS = 4882, + MODEL_BCHCOSTAIR_LAS = 4883, + MODEL_LASTRANENTUN1_LAS = 4884, + MODEL_LASTRANENTUN4_LAS = 4885, + MODEL_GNGSPWNHUS1_LAS = 4886, + MODEL_DWNTWNBIT1_LAS = 4887, + MODEL_DWNTWNBIT3_LAS = 4888, + MODEL_DWNTWNBIT2B_LAS = 4889, + MODEL_LASAIRPRTERM2_LAS = 4890, + MODEL_BILLBOARD_LAS = 4891, + MODEL_KBSGARAGE2_LAS = 4892, + MODEL_LODTWNBIT4_LAS01 = 4893, + MODEL_DWNTWNBIT1B_LAS = 4894, + MODEL_LSTRUD_LAS = 4895, + MODEL_CLIFFTEST12 = 4896, + MODEL_BEACH1A1_LAS = 4897, + MODEL_CLIFFTESTGRND = 4898, + MODEL_LODTWNBIT3_LAS01 = 4899, + MODEL_LODTWNBIT2B_LAS01 = 4900, + MODEL_LODTWNBIT2_LAS01 = 4901, + MODEL_LODALOS01_LAS01 = 4902, + MODEL_LODFFTEST07 = 4903, + MODEL_LODOADS_05_LAS01 = 4904, + MODEL_LODCH1A1_LAS01 = 4905, + MODEL_LODFFTEST12 = 4906, + MODEL_LODFFTESTGRND = 4907, + MODEL_LODFTEST05 = 4908, + MODEL_LODFFTESTGRND03 = 4909, + MODEL_LODFFTEST09 = 4910, + MODEL_LODCOSTRD4_LAS01 = 4911, + MODEL_LODKLIFF1_LAS01 = 4912, + MODEL_LODFFTEST02 = 4913, + MODEL_LODLPALOS02_LAS01 = 4914, + MODEL_LODLPALOS04_LAS01 = 4915, + MODEL_LODLPALOS06_LAS01 = 4916, + MODEL_LODFFITHOBLAS01 = 4917, + MODEL_LODLPALOS03_LAS01 = 4918, + MODEL_LODGRIFROAD01 = 4919, + MODEL_LODGRIFSTEPS03 = 4920, + MODEL_LODLPALOSWAL1_LAS01 = 4921, + MODEL_LODOAD1D_LAS01 = 4922, + MODEL_LODOADSX_04_LAS01 = 4923, + MODEL_LODOADS_042E_LAS01 = 4924, + MODEL_LODLPALOS08_LAS01 = 4925, + MODEL_LODITY1_LAS01 = 4926, + MODEL_LODTWNBIT1B_LAS01 = 4927, + MODEL_LODOBJECT02 = 4928, + MODEL_LODCOSTAIR_LAS01 = 4929, + MODEL_LODCOSTRD3_LAS01 = 4930, + MODEL_LODCH1_LAS0FHY01 = 4931, + MODEL_LODCH1_LAS0FG01 = 4932, + MODEL_LODCH1_LAS0GJ01 = 4933, + MODEL_LODTUN1_LAS01 = 4934, + MODEL_LODTUN2_LAS01 = 4935, + MODEL_LODRNWAY2_LAS = 4936, + MODEL_LODRNWAY1_LAS = 4937, + MODEL_LODRNWAY3_LAS = 4938, + MODEL_LODRNWAY4_LAS01 = 4939, + MODEL_LODPURTDERFR_LAS01 = 4940, + MODEL_LODOAD1B_LAS01 = 4941, + MODEL_LODAIRPRT5 = 4942, + MODEL_LODPURTDER_LAS01 = 4943, + MODEL_LODPURT2AX_LAS01 = 4944, + MODEL_LODPURT2BX_LAS01 = 4945, + MODEL_LODAIRPRTERM2_LAS = 4946, + MODEL_LODAIRPRT3 = 4947, + MODEL_LODTWER_LAS01 = 4948, + MODEL_LODIPAD1_LAS01 = 4949, + MODEL_LODPURT2_LAS01 = 4950, + MODEL_LODAIRPRT4 = 4951, + MODEL_LODLAND1_LAS01 = 4952, + MODEL_LODITYPED1_LAS01 = 4953, + MODEL_LODRNWAY8_LAS = 4954, + MODEL_LODRNWAY7_LAS = 4955, + MODEL_LODRNWAY5_LAS = 4956, + MODEL_LODCH1_LAS05 = 4957, + MODEL_LODTUN3_LAS01 = 4958, + MODEL_LODCOSTRD1_LAS01 = 4959, + MODEL_LODOADS_20GHI_LAS01 = 4960, + MODEL_LODLAND2_LAS01 = 4961, + MODEL_LODTRK8_LAS01 = 4962, + MODEL_LODTRK7_LAS01 = 4963, + MODEL_LODONSTWAR_LAS01 = 4964, + MODEL_LODONSTWARC2_LAS01 = 4965, + MODEL_LODEDLAND2_LAS01 = 4966, + MODEL_LODOADSS_30_LAS01 = 4967, + MODEL_LODEDHUSREA_LAS01 = 4968, + MODEL_LODTRIPX1_LAS = 4969, + MODEL_LODLAND8_LAS01 = 4970, + MODEL_LODTRK5_LAS01 = 4971, + MODEL_LODEDHUAIR2_LAS01 = 4972, + MODEL_LODSPWNHUS1_LAS01 = 4973, + MODEL_LODRUD_LAS01 = 4974, + MODEL_LODEDLAND1_LAS01 = 4975, + MODEL_LODPEDBEAUT01 = 4976, + MODEL_LODROAD1VB_LAS01 = 4977, + MODEL_LODEDSHPBLK08 = 4978, + MODEL_LODEDMTSP1_LAS01 = 4979, + MODEL_LODSTRD1_LAS01 = 4980, + MODEL_SNPEDTEEW1_LAS = 4981, + MODEL_SNPEDTEEW3_LAS = 4982, + MODEL_SNPEDTEEW1VV_LAS = 4983, + MODEL_SNPEDTEEW3GT_LAS = 4984, + MODEL_CYLINDER03 = 4985, + MODEL_ODFWER_LAS = 4986, + MODEL_LODFFTOP03 = 4987, + MODEL_LASBILLBRD1_LAS = 4988, + MODEL_LODGARAGE2_LAS01 = 4989, + MODEL_AIRPRTWLKTO1_LAS = 4990, + MODEL_LASAIRPRTERM1_LAS = 4991, + MODEL_AIRPLANTS_LAS = 4992, + MODEL_AIRPLNT2_LAS = 4993, + MODEL_AIRBILLB_LAS = 4994, + MODEL_AIRSINAGE_LAS = 4995, + MODEL_AIRSINAGE2_LAS = 4996, + MODEL_AIRSINAGE3_LAS = 4997, + MODEL_AIRSINAGE4_LAS = 4998, + MODEL_AIRSINAGE6_LAS = 4999, + MODEL_AIRSINAGE5_LAS = 5000, + MODEL_LASRUNWALL2_LAS = 5001, + MODEL_LASRNWAY4_LAS = 5002, + MODEL_LASRNWAY5_LAS = 5003, + MODEL_LASRNWAY6_LAS = 5004, + MODEL_LASRUNWALL1_LAS = 5005, + MODEL_AIRPRTWLKTO2_LAS = 5006, + MODEL_LASRUNWALL3_LAS = 5007, + MODEL_LODRNWAY6_LAS = 5008, + MODEL_LASRNWAY7_LAS = 5009, + MODEL_LODPRTWLKTO1_LAS = 5010, + MODEL_LODPRTWLKTO2_LAS = 5011, + MODEL_LODAIRPRTERM1_LAS = 5012, + MODEL_LAROAKT1_30_LAS = 5013, + MODEL_LODOAKT1_30_LAS = 5014, + MODEL_LODOADS_20GH_LAS01 = 5015, + MODEL_SNPDPESS1_LAS = 5016, + MODEL_LASTRIPX1_LAS = 5017, + MODEL_LODDMSHFNC3_LAS = 5018, + MODEL_LODDPESS1_LAS = 5019, + MODEL_MUL_LAS = 5020, + MODEL_LAROADSBRK_05_LAS = 5021, + MODEL_LODOADSBRK_05_LAS = 5022, + MODEL_GRIFOVRHANG2_LAS = 5023, + MODEL_SNPEDTEE_LAS = 5024, + MODEL_SNPEDTEDC_LAS = 5025, + MODEL_LSTRUDCT1_LAS = 5026, + MODEL_LODRUDCT1_LAS = 5027, + MODEL_OBCITY1CT1_LAS = 5028, + MODEL_LODITY1CT1_LAS = 5029, + MODEL_LASRUNWALL1CT_LAS = 5030, + MODEL_SNPEDTEAIRT_LAS = 5031, + MODEL_LAS_RUNSIGNS_LAS = 5032, + MODEL_UNMAINSTAT_LAS = 5033, + MODEL_LASAIRPRTCUT4 = 5034, + MODEL_LODAIRPRTCUT4 = 5035, + MODEL_BTOLAND1CT_LAS = 5036, + MODEL_LODLAND1CT_LAS = 5037, + MODEL_AIRTUN2CT_LAS = 5038, + MODEL_LODTUN2CT_LAS01 = 5039, + MODEL_UNIONLIQ_LAS = 5040, + MODEL_LODONLIQ_LAS01 = 5041, + MODEL_BOMBSHOP_LAS = 5042, + MODEL_BOMBDOOR_LAS = 5043, + MODEL_LAS_RUNSIGNSX_LAS = 5044, + MODEL_LODOADS_23_LAS = 5045, + MODEL_BCHCOSTRD4FUK_LAS = 5046, + MODEL_LODCOSTRD4FUK_LAS = 5047, + MODEL_LODUNDRAIRPRT3 = 5048, + MODEL_LODUNDRAIRPRT1 = 5049, + MODEL_LODUNDRAIRPRT2 = 5050, + MODEL_AIROBARSJM_LAS = 5051, + MODEL_BTOROAD1VB_LAS = 5052, + MODEL_LODTRANENTUN4_LAS = 5053, + MODEL_LODTRANENTUN1_LAS = 5054, + MODEL_LODAINSTAT_LAS = 5055, + MODEL_MODLAS = 5056, + MODEL_LANITEWIN1_LAS = 5057, + MODEL_LANITEWIN2_LAS = 5058, + MODEL_LANITEWIN3_LAS = 5059, + MODEL_CRLSAFHUS_LAS = 5060, + MODEL_LASCARL = 5061, + MODEL_HILLPAWFNCE_LAS = 5062, + MODEL_LODBRID1_LAS = 5063, + MODEL_TRNTRK5Z_LAS = 5064, + MODEL_LODTRK5Z_LAS = 5065, + MODEL_MONDOSHAVE_LAS = 5066, + MODEL_LODNSTPS_LAS01 = 5067, + MODEL_AIRCTSJM1_LAS = 5068, + MODEL_CTSCENE1_LAS = 5069, + MODEL_SJMCTFNCE1_LAS = 5070, + MODEL_SJMCTFNCE2_LAS = 5071, + MODEL_SJMCTFNCE3_LAS = 5072, + MODEL_SJMCTFNCE4_LAS = 5073, + MODEL_SJMCTFNCE5_LAS = 5074, + MODEL_SJMCTFNCE6_LAS = 5075, + MODEL_SJMCTFNCE7_LAS = 5076, + MODEL_SJMCTFNCE8_LAS = 5077, + MODEL_CTSCENE2_LAS = 5078, + MODEL_SJMBARCT1_LAS = 5079, + MODEL_SJMBARCT2_LAS = 5080, + MODEL_RDCRASHBAR1_LAS = 5081, + MODEL_RDCRASHBAR2_LAS = 5082, + MODEL_ALPHBRK1_LAS = 5083, + MODEL_ALPHBRK2_LAS = 5084, + MODEL_ALPHBRK3_LAS = 5086, + MODEL_ALPHBRK4_LAS = 5087, + MODEL_ALPHBRK5_LAS = 5088, + MODEL_ALPHBRK6_LAS = 5089, + MODEL_STORDRALAS2 = 5105, + MODEL_ROADSBX_LAS2 = 5106, + MODEL_CHEMPLANT2_LAS2 = 5107, + MODEL_LADOCKS2_LAS2 = 5108, + MODEL_SANPDMDOCK3_LAS2 = 5109, + MODEL_MEXCRNERSHP2_LAS2 = 5110, + MODEL_INDUSLAND2_LAS2 = 5111, + MODEL_LAROADS_26_LAS2 = 5112, + MODEL_BLOCKAA_LAS2 = 5113, + MODEL_BEACH1_LAS2 = 5114, + MODEL_LAS2CHEMDOCK1 = 5115, + MODEL_LAS2STRIPBAR1 = 5116, + MODEL_TRNTRK4_LAS2 = 5117, + MODEL_TRNTRK3_LAS2 = 5118, + MODEL_TRNTRK4A_LAS2 = 5119, + MODEL_BTOROAD3_LAS2 = 5120, + MODEL_BTOLAND6_LAS2 = 5121, + MODEL_BTOLAND5_LAS2 = 5122, + MODEL_NEWCOMP2_LAS2 = 5123, + MODEL_NWCSTRD2_LAS2 = 5124, + MODEL_NWCSTRD3_LAS2 = 5125, + MODEL_DOCKCRANESCALE0 = 5126, + MODEL_IMCOMP1TRK = 5127, + MODEL_BTOROAD1MNK_LAS2 = 5128, + MODEL_IMRACOMPINT_LAS2 = 5129, + MODEL_IMCOMPSTRS02 = 5130, + MODEL_IMRANCOMP1_LAS2 = 5131, + MODEL_LAS2DKWAR107 = 5132, + MODEL_BCHCOSTRD6_LAS2 = 5133, + MODEL_SNPEDSHPRK_LAS2 = 5134, + MODEL_BRKWRHUS02 = 5135, + MODEL_SNPEDSHPRK1_LAS2 = 5136, + MODEL_BRKWRHUS3_LAS2 = 5137, + MODEL_SNPDOLDWRHS2_LAS2 = 5138, + MODEL_SANPEDRO4_LAS2 = 5139, + MODEL_SNPEDTATSHP = 5140, + MODEL_BTOROADXTRA_LAS2 = 5141, + MODEL_LAS2PLAZA1BIT = 5142, + MODEL_LAS2CHENDOCK04 = 5143, + MODEL_LAS2JMSCUM11 = 5144, + MODEL_SANPDMDOCK2_LAS2 = 5145, + MODEL_SANPDMDOCK1_LAS2 = 5146, + MODEL_SANPEDBIGBRID_LAS2 = 5147, + MODEL_BIGSTORMBRID_LAS2 = 5148, + MODEL_SCUMEST1_LAS2 = 5149, + MODEL_SCUMWIRES1_LAS2 = 5150, + MODEL_CARGANGHUD_LAS2 = 5151, + MODEL_STUNTRAMP1_LAS2 = 5152, + MODEL_STUNTRAMP7_LAS2 = 5153, + MODEL_DK_CARGOSHP03D = 5154, + MODEL_DK_CARGOSHP05D = 5155, + MODEL_DK_CARGOSHP24D = 5156, + MODEL_DK_CARGOSHPD25D = 5157, + MODEL_DK_CARGOSHP76D = 5158, + MODEL_LODARGOHULL2CD = 5159, + MODEL_DKCARGOHULL2D = 5160, + MODEL_LODCARGOSHP05D = 5161, + MODEL_LODCARGOSHP24D = 5162, + MODEL_LODCARGOSHP25D = 5163, + MODEL_LODCARGOSHP03D = 5164, + MODEL_LODCARGOSHP04D = 5165, + MODEL_DKCARGOHULL2BD = 5166, + MODEL_DKCARGOHULL2CD = 5167, + MODEL_CLUCKINBELL1_LAS2 = 5168, + MODEL_IMNRMPY1_LAS2 = 5169, + MODEL_IMNRMPY2_LAS2 = 5170, + MODEL_DOCKOFF01_LAS2 = 5171, + MODEL_BEACH1SPT_LAS2 = 5172, + MODEL_LAS2JMSCUM12 = 5173, + MODEL_SANPEDMEXQ4_LAS2 = 5174, + MODEL_SANPEDMEXQ3_LAS2 = 5175, + MODEL_SANPDMDOCKA_LAS2 = 5176, + MODEL_LAS2STRIPSSHP1 = 5177, + MODEL_CUTRDN1_LAS2 = 5178, + MODEL_MEXCRNERSHP_LAS2 = 5179, + MODEL_NWSPLTBILD2_LAS2 = 5180, + MODEL_NWSPLTBILD3_LAS2 = 5181, + MODEL_NWSPLTBILD4_LAS2 = 5182, + MODEL_NWSPLTBILD1_LAS2 = 5183, + MODEL_MDOCK1A_LAS2 = 5184, + MODEL_BRKWRHUSFUK_LAS2 = 5185, + MODEL_NWSNPDNW_LAS2 = 5186, + MODEL_MEXCRNRXC_LAS2 = 5187, + MODEL_NWRRDSSPLT_LAS2 = 5188, + MODEL_CTDDWWNBLK_LAS2 = 5189, + MODEL_SCRAPFNCE_LAS2 = 5190, + MODEL_NWDKBRIDD_LAS2 = 5191, + MODEL_CHEMGRND_LAS2 = 5192, + MODEL_LODPDMDOCK3_LAS2 = 5193, + MODEL_LODTRK4_LAS2 = 5194, + MODEL_LODRHUS3_LAS2 = 5195, + MODEL_LODWRHUS03 = 5196, + MODEL_LODWRHUSFUK_LAS2 = 5197, + MODEL_LODDWWNBLK_LAS2 = 5198, + MODEL_LODEDTATSHP01 = 5199, + MODEL_LODNPDNW_LAS2 = 5200, + MODEL_LODEDSHPRK1_LAS2 = 5201, + MODEL_LODDOLDWRHS2_LAS2 = 5202, + MODEL_LODLAND6_LAS2 = 5203, + MODEL_LODPEDRO4_LAS2 = 5204, + MODEL_LODPLTBILD1_LAS2 = 5205, + MODEL_LODPLTBILD2_LAS2 = 5206, + MODEL_LODPLTBILD3_LAS2 = 5207, + MODEL_LODPLTBILD4_LAS2 = 5208, + MODEL_LODTRK3_LAS2 = 5209, + MODEL_LODLAND5_LAS2 = 5210, + MODEL_LODOCKS2_LAS2 = 5211, + MODEL_LODSTRD2_LAS2 = 5212, + MODEL_LODCOMP2_LAS2 = 5213, + MODEL_LODOMP1TRK01 = 5214, + MODEL_LODANCOMP1_LAS2 = 5215, + MODEL_LODROAD3_LAS2 = 5216, + MODEL_LODROADXTRA_LAS2 = 5217, + MODEL_LODUSLAND2_LAS2 = 5218, + MODEL_LODPEDMEXQ3_LAS2 = 5219, + MODEL_LODSTRD3_LAS2 = 5220, + MODEL_LODMGRND_LAS2 = 5221, + MODEL_LODSTRIPBAR02 = 5222, + MODEL_LODPEDMEXQ4_LAS2 = 5223, + MODEL_LODCKINBELL1_LAS2 = 5224, + MODEL_LODSTPSHP1A_LAS2 = 5225, + MODEL_LODCRNERSHP2_LAS2 = 5226, + MODEL_LODRDN1_LAS2 = 5227, + MODEL_LODCRNERSHP2A_LAS = 5228, + MODEL_LODROAD1MNK_LAS2 = 5229, + MODEL_LODPLAZA1BIT01 = 5230, + MODEL_SNPEDTEEW2_LAS2 = 5231, + MODEL_SNPEDTEEW9_LAS2 = 5232, + MODEL_SNPEDTEEW8_LAS2 = 5233, + MODEL_SCUMWFIRES1_LAS20 = 5234, + MODEL_LODPDMDOCK2_LAS2 = 5235, + MODEL_LODPDMDOCK1_LAS2 = 5236, + MODEL_LODPDMDOCKA_LAS2 = 5237, + MODEL_LODCH1SPT_LAS2 = 5238, + MODEL_LODCKAA_LAS2 = 5239, + MODEL_LODRDSSPLT_LAS2 = 5240, + MODEL_LODGANGHUD_LAS2 = 5241, + MODEL_LODCHENDOCK04 = 5242, + MODEL_RIVERBRIDLS_LAS2 = 5243, + MODEL_LASNTRK1IM03 = 5244, + MODEL_LODTRK4C_LAS2 = 5245, + MODEL_LOD_STORDRALAS01 = 5246, + MODEL_LOD_SCUMEST1 = 5247, + MODEL_LOD_MEXCRNERSHP = 5248, + MODEL_LOD_MEXCRNRXC = 5249, + MODEL_BCHCOSTRD6V_LAS2 = 5250, + MODEL_LODCOSTRD6V_LAS2 = 5251, + MODEL_LOD_CHEMDOCK = 5252, + MODEL_LOD_MDOCK1A = 5253, + MODEL_LOD_BEACH1LAS2 = 5254, + MODEL_LOD_LAROADS_26 = 5255, + MODEL_LOD_JMSCUM01 = 5256, + MODEL_LOD_BCHCOSTRD6 = 5257, + MODEL_LOD_JMSCUM11 = 5258, + MODEL_LAS2DKWAR01 = 5259, + MODEL_LAS2DKWAR02 = 5260, + MODEL_LAS2DKWAR03 = 5261, + MODEL_LAS2DKWAR04 = 5262, + MODEL_LODPEDBIGBRID_LAS2 = 5263, + MODEL_LOD_ROADSBX_LAS2 = 5264, + MODEL_SCUMWFIRES1_LAS01 = 5265, + MODEL_SNPEDTEEW8_LAS01 = 5266, + MODEL_SANPEDMEXQ1_LAS2 = 5267, + MODEL_IMRACOMPRAL_LAS2 = 5268, + MODEL_LAS2DKWAR05 = 5269, + MODEL_STORMDRAIFR1_LAS2 = 5270, + MODEL_LAROADS_24_LAS2 = 5271, + MODEL_TRNTRK2_LAS2 = 5272, + MODEL_BTOLAND4_LAS2 = 5273, + MODEL_STORMDRAIFR2_LAS2 = 5274, + MODEL_TRNTRK4A_LAS201 = 5275, + MODEL_NEWCOMPRD_LAS2 = 5276, + MODEL_NEWCMPTRK_LAS2 = 5277, + MODEL_NEWCOMP1_LAS2 = 5278, + MODEL_NWSNPDGRND1_LAS2 = 5279, + MODEL_LODNPDGRND1_LAS2 = 5280, + MODEL_LODRMDRAIFR1_LAS2 = 5281, + MODEL_LODLAND4_LAS2 = 5282, + MODEL_LODTRK2_LAS2 = 5283, + MODEL_LODCOMPRD_LAS2 = 5284, + MODEL_LODCOMP1_LAS2 = 5285, + MODEL_LODRMDRAIFR2_LAS2 = 5286, + MODEL_LODCMPTRK_LAS2 = 5287, + MODEL_LODOADS_24_LAS2 = 5288, + MODEL_LODTRK4A_LAS202 = 5289, + MODEL_SCUMWIRES1_LAS03 = 5290, + MODEL_SNPEDSCRSAP_LAS01 = 5291, + MODEL_SNPEDTEEW8_LAS03 = 5292, + MODEL_SNPEDTEEW8_LAS04 = 5293, + MODEL_SNPEDTEEW8_LAS05 = 5294, + MODEL_SNPEDTEEW8_LAS06 = 5295, + MODEL_LAROADS_26A_LAS01 = 5296, + MODEL_LAROADS_26B_LAS01 = 5297, + MODEL_BIGSTORMBRIDB_LAS2 = 5298, + MODEL_LAS2_BRIGTOWER = 5299, + MODEL_LAS2_LODBRIGTOWER = 5300, + MODEL_BALCONY_KBOLT01 = 5301, + MODEL_BURG_LKUPDOOR = 5302, + MODEL_LODNWDKBRIDD_LAS = 5303, + MODEL_LODDOCKCRANESCALE = 5304, + MODEL_LODLASNTRK1IM = 5305, + MODEL_CHEMFENCE_LAS2 = 5306, + MODEL_LOD_LAROADS26B = 5307, + MODEL_BALCONY_KBOLT02 = 5308, + MODEL_LAS2LNEW3_LAS2 = 5309, + MODEL_LAS2LNEW2_LAS2 = 5310, + MODEL_LAS2LNEW1_LAS2 = 5311, + MODEL_SNPEDTEEVBG_LAS2 = 5312, + MODEL_NEWLAS2SH_LAS2 = 5313, + MODEL_NEWCOMFUK_LAS2 = 5314, + MODEL_LODCOMFUK_LAS2 = 5315, + MODEL_LODLAS2SH_LAS2 = 5316, + MODEL_LOD2LNEW3_LAS2 = 5317, + MODEL_LOD2LNEW2_LAS2 = 5318, + MODEL_LOD2LNEW1_LAS2 = 5319, + MODEL_LODOADS_26B_LAS01 = 5320, + MODEL_LODEDSHPRK_LAS2 = 5321, + MODEL_STORMD_FILL1_LAS2 = 5322, + MODEL_DOCKFENCEQ_LAS2 = 5323, + MODEL_DOCKFENCEW_LAS2 = 5324, + MODEL_DOCKFENCEE_LAS2 = 5325, + MODEL_DOCKFENCER_LAS2 = 5326, + MODEL_STORMFUL2_LAS2 = 5327, + MODEL_STORMFUL2S_LAS2 = 5328, + MODEL_BTOROADSP3_LAS2 = 5329, + MODEL_BTOROASP2_LAS2 = 5330, + MODEL_LODROASP2_LAS2 = 5331, + MODEL_LODROADSP3_LAS2 = 5332, + MODEL_SANPEDBIGSLT_LAS2 = 5333, + MODEL_LODPEDBIGSLT_LAS2 = 5334, + MODEL_LODARGOHULL2D = 5335, + MODEL_LODARGOHULL2BD = 5336, + MODEL_INDUSWIRE1_LAS2 = 5337, + MODEL_BEACH1FNCE_LAS2 = 5338, + MODEL_BEALPHA1_LAS2 = 5339, + MODEL_MODLAS2 = 5340, + MODEL_CRLSAFHUS_LAS2 = 5341, + MODEL_BTOLAND5M_LAS2 = 5342, + MODEL_BTOLAND5N_LAS2 = 5343, + MODEL_LODLAND5M_LAS2 = 5344, + MODEL_LODLAND5N_LAS2 = 5345, + MODEL_LODRMPY1_LAS2 = 5346, + MODEL_TRNTRK3P_LAS2 = 5347, + MODEL_LODTRK3P_LAS2 = 5348, + MODEL_BTOLAND6Q_LAS2 = 5349, + MODEL_LODLAND6Q_LAS2 = 5350, + MODEL_SNPEDTEEW8_LAS07 = 5351, + MODEL_LODCARGOSHP03F = 5352, + MODEL_NWCSTRD4_LAS2 = 5353, + MODEL_LOD_NWCSTRD4 = 5354, + MODEL_STORDRABLAS2 = 5355, + MODEL_LOD_STORDRABLAS2 = 5356, + MODEL_LODEDSCRSAP_LAS02 = 5357, + MODEL_LAS2JMSCUMTR12 = 5358, + MODEL_LODSTORMBRID_LAS2 = 5359, + MODEL_LODNRMPY2_LAS2 = 5360, + MODEL_LODCONY_KBOLT01 = 5361, + MODEL_LODCONY_KBOLT02 = 5362, + MODEL_NWCSTRTR_LAS2 = 5363, + MODEL_NEWCOMTR_LAS2 = 5364, + MODEL_LODCHEMPL2_LAS2 = 5365, + MODEL_ALPHBRK1_LAS2 = 5366, + MODEL_ALPHBRK2_LAS2 = 5367, + MODEL_ALPHBRK3_LAS2 = 5368, + MODEL_ALPHBRK4_LAS2 = 5369, + MODEL_ALPHBRK5_LAS2 = 5370, + MODEL_ALPHBRK6_LAS2 = 5371, + MODEL_ALPHBRK7_LAS2 = 5372, + MODEL_ALPHBRK8_LAS2 = 5373, + MODEL_ALPHBRK9_LAS2 = 5374, + MODEL_ALPHBRK91_LAS2 = 5375, + MODEL_LAESKATEPARKLA = 5390, + MODEL_LAEROAD01 = 5391, + MODEL_LAESTRIPMALL1 = 5392, + MODEL_LAESHOP1 = 5393, + MODEL_XSTPDNAM_LAE = 5394, + MODEL_LAECOMPTONBRIJ3 = 5395, + MODEL_LAERAILBRIJBLOK = 5396, + MODEL_LAECLUBBLOCK1 = 5397, + MODEL_LAETRAINTUNN02 = 5398, + MODEL_LAETRAINTUNN01 = 5399, + MODEL_LAESKATETUBE1 = 5400, + MODEL_LAEGARAGES1NW = 5401, + MODEL_LAEHOSPGROUND1 = 5402, + MODEL_LAEHOSPITAL1 = 5403, + MODEL_LAESTORMDRAIN01 = 5404, + MODEL_LAEBLAKWESTRAN2 = 5405, + MODEL_LAECRACKMOTEL4 = 5406, + MODEL_LAELASRUFF201 = 5407, + MODEL_LAEEXAMINERBUILD1 = 5408, + MODEL_LAEPETROL1A = 5409, + MODEL_LAECUMPSTREET = 5410, + MODEL_LAEROADSBLK = 5411, + MODEL_LAELASJMSCUBIT = 5412, + MODEL_LAECRACKMOTEL1 = 5413, + MODEL_LAEJEFFERS02 = 5414, + MODEL_LAESKATEPARKTRANS = 5415, + MODEL_LAEGANGHOUS205 = 5416, + MODEL_LAENWBLK2 = 5417, + MODEL_LAE711BLOCK01 = 5418, + MODEL_LAESTORMDRAIN02 = 5419, + MODEL_LAESTORMDRAIN03 = 5420, + MODEL_LAESMOKESHSE = 5421, + MODEL_LAESPRAYDOOR1 = 5422, + MODEL_LAEJEFFERS03 = 5423, + MODEL_LAEJEFFERS04 = 5424, + MODEL_LAEJEFFERS05 = 5425, + MODEL_LAEJEFFERS06 = 5426, + MODEL_LAEJEFFERS09 = 5427, + MODEL_LAEJEFFERS10 = 5428, + MODEL_XWHATTFK_LAE = 5429, + MODEL_LAEIDLEWOOD11 = 5430, + MODEL_LAEROAD02 = 5431, + MODEL_LAEROAD03 = 5432, + MODEL_LAEROAD04 = 5433, + MODEL_LAEROAD05 = 5434, + MODEL_LAEROAD06 = 5435, + MODEL_FUKXROAD07 = 5436, + MODEL_LAEROAD08 = 5437, + MODEL_LAEROAD09 = 5438, + MODEL_LAEROAD10 = 5439, + MODEL_LAEROAD11 = 5440, + MODEL_LAEROAD12 = 5441, + MODEL_LAEROAD13 = 5442, + MODEL_LAEGLENPARK02 = 5443, + MODEL_LAECHICANO02 = 5444, + MODEL_LAECHICANO01 = 5445, + MODEL_LAECHICANO03 = 5446, + MODEL_LAECHICANO04 = 5447, + MODEL_LAECHICANO05 = 5448, + MODEL_LAECHICANOTR1 = 5449, + MODEL_LAECHICANO06 = 5450, + MODEL_LAECHICANO07 = 5451, + MODEL_LAECHICANO09 = 5452, + MODEL_LAECHICANO10 = 5453, + MODEL_LAELODDS03 = 5454, + MODEL_LAELODDS04 = 5455, + MODEL_LAEROAD14 = 5456, + MODEL_LAEGLENPARK01 = 5457, + MODEL_LAEMACPARK01 = 5458, + MODEL_LAEJEFFERS01 = 5459, + MODEL_LAELODPARK01 = 5460, + MODEL_LAEGLENPARK05 = 5461, + MODEL_LAEGLENPARK04 = 5462, + MODEL_LAEBUILDSIT01 = 5463, + MODEL_LAEGLENPARK04TR = 5464, + MODEL_LAEGLENPARK05NT = 5465, + MODEL_LAELODLDSIT01 = 5466, + MODEL_LAEHOSPITALTR = 5467, + MODEL_LAELODFERS02 = 5468, + MODEL_LAEROADS11TR = 5469, + MODEL_LAEROADS10TR = 5470, + MODEL_LAEIDLEWOOD01 = 5471, + MODEL_FRECRSBRID_LAE = 5472, + MODEL_LAEIDLEBRIJTR = 5473, + MODEL_LAEIDLEWOOD02 = 5474, + MODEL_LAEIDLEPROJ02 = 5475, + MODEL_LAEIDLEPROJ01 = 5476, + MODEL_LAERAILTRACK1 = 5477, + MODEL_LAERAILTRACK2 = 5478, + MODEL_LAERAILTRACK3 = 5479, + MODEL_LAERAILTRACK4 = 5480, + MODEL_LAEBRIDGE = 5481, + MODEL_LAEROAD16 = 5482, + MODEL_LAEROAD17 = 5483, + MODEL_LAEROAD18 = 5484, + MODEL_LAEROAD20 = 5485, + MODEL_LAEROAD21 = 5486, + MODEL_LAEROAD22 = 5487, + MODEL_LAEROAD23 = 5488, + MODEL_LAEROAD24 = 5489, + MODEL_LAEROAD25 = 5490, + MODEL_LAEROAD26 = 5491, + MODEL_LAEROAD27 = 5492, + MODEL_LAEROAD28 = 5493, + MODEL_LAEROAD29 = 5494, + MODEL_LAEROAD30 = 5495, + MODEL_LAEROAD31 = 5496, + MODEL_LAEROAD32 = 5497, + MODEL_LAEROAD33 = 5498, + MODEL_LAEROAD34 = 5499, + MODEL_LAEROAD35 = 5500, + MODEL_LAEROAD36 = 5501, + MODEL_LAEROAD37 = 5502, + MODEL_LAEROAD38 = 5503, + MODEL_LAEROAD39 = 5504, + MODEL_LAEROAD40 = 5505, + MODEL_LAEROAD41 = 5506, + MODEL_LAEROAD42 = 5507, + MODEL_LAEROAD43 = 5508, + MODEL_LAEROAD44 = 5509, + MODEL_LAEROAD45 = 5510, + MODEL_LAEROAD46 = 5511, + MODEL_LAEROAD47 = 5512, + MODEL_LAERAIL6 = 5513, + MODEL_LODLAEIDLEWOOD01 = 5514, + MODEL_LODLAEIDLEWOOD02 = 5515, + MODEL_LODIDLEPROJ02 = 5516, + MODEL_LODIDLEPROJ01 = 5517, + MODEL_IDLEWOOD05_LAE = 5518, + MODEL_IDLEWOOD04_LAE = 5519, + MODEL_BDUPSHOUSE_LAE = 5520, + MODEL_IDLEWOFUK06_LAE = 5521, + MODEL_IDLEWOOD06TR_LAE = 5522, + MODEL_LODROADSBLK01 = 5523, + MODEL_LODNWBLKB02 = 5524, + MODEL_LODNWBLK03 = 5525, + MODEL_LODEWOOD06_LAE01 = 5526, + MODEL_LODSPRAYSHOP01 = 5527, + MODEL_LAEROADCT43 = 5528, + MODEL_LODROADF48 = 5529, + MODEL_LOD711BLOCK02 = 5530, + MODEL_LODIDLEWOOD12 = 5531, + MODEL_LAESPRAYSHOP = 5532, + MODEL_LODROADB48 = 5533, + MODEL_LODROADC48 = 5534, + MODEL_LODPETROL1A01 = 5535, + MODEL_LODCLUBBLOCK02 = 5536, + MODEL_LODROADML148 = 5537, + MODEL_LODROADBNJ = 5538, + MODEL_LODROADSJM2 = 5539, + MODEL_LODROADCT44 = 5540, + MODEL_LODLAEROAD37 = 5541, + MODEL_LODLAEROAD36 = 5542, + MODEL_LODZROAD12 = 5543, + MODEL_LODEXAMINERBUILD02 = 5544, + MODEL_LODLASJMSCUBIT = 5545, + MODEL_LODROADT42 = 5546, + MODEL_LODLASRUFF201 = 5547, + MODEL_LODROAD39T = 5548, + MODEL_LODEWOOD05_LAE = 5549, + MODEL_LODROADFG44 = 5550, + MODEL_LODCUMPSTREET = 5551, + MODEL_LODROFAD45 = 5552, + MODEL_LODROGHAD01 = 5553, + MODEL_LODEWOOD04_LAE01 = 5554, + MODEL_LODSTORMDRAIN02 = 5555, + MODEL_LODSTORMDRAIN01 = 5556, + MODEL_LODXROAD46 = 5557, + MODEL_LODXRAIL6 = 5558, + MODEL_LODROAD47 = 5559, + MODEL_LODXROAD10 = 5560, + MODEL_LODXRAILTRACK4 = 5561, + MODEL_LODXRAILTRACK3 = 5562, + MODEL_LODXROAD11 = 5563, + MODEL_LODXCRSBRID_LAE = 5564, + MODEL_LAECTRU_LAE = 5565, + MODEL_LODXRAILTRACK2 = 5566, + MODEL_LODXRAILBRIJ1 = 5567, + MODEL_LODXCOMPTONBRIJ3 = 5568, + MODEL_LODXROAD09 = 5569, + MODEL_LODXJEFFERS11 = 5570, + MODEL_LODXOAD33 = 5571, + MODEL_LODXROAD35 = 5572, + MODEL_LODXROAD32 = 5573, + MODEL_LODXROAD31 = 5574, + MODEL_LODXSKATEPARKLA = 5575, + MODEL_LODXROAD07 = 5576, + MODEL_LODXROAD30 = 5577, + MODEL_LODXHOSPGROUND1 = 5578, + MODEL_LODXHOSPITAL1 = 5579, + MODEL_LODXROAD08 = 5580, + MODEL_LODXJEFFERS09 = 5581, + MODEL_LODXGARAGES1NW = 5582, + MODEL_LODXROAD29 = 5583, + MODEL_LODXJEFFERS06 = 5584, + MODEL_LODXJEFFERS05 = 5585, + MODEL_LODXROAD27 = 5586, + MODEL_LODXROAD25 = 5587, + MODEL_LODXRAILTRACK1 = 5588, + MODEL_LODFUKXROAD06 = 5589, + MODEL_LODXROAD28 = 5590, + MODEL_LODXROAD26 = 5591, + MODEL_LODXJEFFERS03 = 5592, + MODEL_LODXJEFFERS04 = 5593, + MODEL_LODXROAD17 = 5594, + MODEL_LODXROAD16 = 5595, + MODEL_LODXROAD34 = 5596, + MODEL_LODXGLENPARK06 = 5597, + MODEL_LODXGLENPARK04 = 5598, + MODEL_LODXSROAD05 = 5599, + MODEL_LODSXROAD23 = 5600, + MODEL_LODSXROAD20 = 5601, + MODEL_LODSXROAD22 = 5602, + MODEL_LODSXROAD02 = 5603, + MODEL_LODSXROAD21 = 5604, + MODEL_LODXSGLENPARK01 = 5605, + MODEL_LODXSGLENPARK02 = 5606, + MODEL_LODXSSTRIPMALL1 = 5607, + MODEL_LODXSSHOP1 = 5608, + MODEL_LODXSROAD03 = 5609, + MODEL_LODXSJEFFERS01 = 5610, + MODEL_LODXSCRACKMOTEL4 = 5611, + MODEL_LODXSCRACKMOTEL1 = 5612, + MODEL_LODXSCHICANO11 = 5613, + MODEL_LODXSCHICANO08 = 5614, + MODEL_LODXSCHICANO10 = 5615, + MODEL_LODXSCHICANO09 = 5616, + MODEL_LODXSCHICANO01 = 5617, + MODEL_LODXSCHICANO02 = 5618, + MODEL_LODXSCHICANO03 = 5619, + MODEL_LODXSCHICANO07 = 5620, + MODEL_LODXSCHICANO06 = 5621, + MODEL_LODXSCHICANO05 = 5622, + MODEL_LODXSCHICANO04 = 5623, + MODEL_LAEHILLSCTST03 = 5624, + MODEL_LODXSHILLSCTST03 = 5625, + MODEL_LAECOMPMEDHOS518 = 5626, + MODEL_LASBRID1SJM_LAE = 5627, + MODEL_LAENWBLKB1 = 5628, + MODEL_LAEALPHA6 = 5629, + MODEL_BLOCKALPHALAE = 5630, + MODEL_APARTMNTALPHA = 5631, + MODEL_MOTELALPHA = 5632, + MODEL_LAEALPHA1 = 5633, + MODEL_LAEALPHA2 = 5634, + MODEL_LAEALPHA3 = 5635, + MODEL_LAEALPHA4 = 5636, + MODEL_LAEALPHA5 = 5637, + MODEL_LAEALPHA7 = 5638, + MODEL_LAEDIRTAPHA = 5639, + MODEL_LAEMACPARK02 = 5640, + MODEL_LAEALPHA5B = 5641, + MODEL_LAECHICANO11 = 5642, + MODEL_LAECHICANO08 = 5643, + MODEL_LAEBUILDSIT01A = 5644, + MODEL_LODLAESTORMDRAIN03 = 5645, + MODEL_LODLAETRAINTUNN01 = 5646, + MODEL_LODLAETRAINTUNN02 = 5647, + MODEL_LODLAEROAD48 = 5648, + MODEL_LODLAEJEFFERS10 = 5649, + MODEL_LAEROAD03B = 5650, + MODEL_LODXSROAD03B = 5651, + MODEL_STORMDRAINDRT1_LAE = 5652, + MODEL_LODLAERAILBRIJBLOK = 5653, + MODEL_LAEJEFFERS06ALPHAS = 5654, + MODEL_LAECHICANO01B = 5655, + MODEL_LAECHICANO01C = 5656, + MODEL_LODLAECHICANO01B = 5657, + MODEL_LODLAECHICANO01C = 5658, + MODEL_LODBRID1SJM_LAE = 5659, + MODEL_LAESKATEP_ALPHAS = 5660, + MODEL_LTSLAEHOSPITAL1 = 5661, + MODEL_LTSLAECHICANO02 = 5662, + MODEL_GRAFFITI01_LAE = 5663, + MODEL_LAELODPMEDHOS519 = 5664, + MODEL_LTSLAEGLENPARK04 = 5665, + MODEL_LAELODPARK02 = 5666, + MODEL_LODLAEROAD04 = 5667, + MODEL_LAEBRIDGEB = 5668, + MODEL_LODLAEBRIDGEB = 5669, + MODEL_LODSMOKESHSE = 5670, + MODEL_LODPSHOUSE_LAE = 5671, + MODEL_LODGANGHOUS206 = 5672, + MODEL_LODXRAILTRACK2B = 5673, + MODEL_LAERAILTRACK2B = 5674, + MODEL_LODLAEROAD18 = 5675, + MODEL_MOTEL2LAEALPHAS = 5676, + MODEL_LAEJEFFERSALPHA = 5677, + MODEL_LAE_SMOKECUTSCENE = 5678, + MODEL_LAETRAINTUNN03 = 5679, + MODEL_LODLAETRAINTUNN03 = 5680, + MODEL_CARWASHALPHAS_LAE = 5681, + MODEL_LAEJEFFERS10ALPHAS = 5682, + MODEL_ROAD_LAWN23 = 5703, + MODEL_ARCHWINDSHOP_LAW = 5704, + MODEL_FILMSTUD1 = 5705, + MODEL_STUDIOBLD03_LAW = 5706, + MODEL_ROAD_LAWN03 = 5707, + MODEL_HOSPITAL_LAW = 5708, + MODEL_SHOP03_LAW01 = 5709, + MODEL_CEM01_LAW = 5710, + MODEL_CEM02_LAW = 5711, + MODEL_CEMINT01_LAW = 5712, + MODEL_GRAVE01_LAW = 5713, + MODEL_GRAVE03_LAW = 5714, + MODEL_GRAVE08_LAW = 5715, + MODEL_MANNS01_LAWN = 5716, + MODEL_SUNSET20_LAWN = 5717, + MODEL_SUNSET16_LAWN = 5718, + MODEL_HOLBUILD01_LAW = 5719, + MODEL_HOLBUILD02_LAW = 5720, + MODEL_HOLBUILD04_LAW = 5721, + MODEL_MANNS05_LAWN = 5722, + MODEL_MANNS04_LAWN = 5723, + MODEL_HOLSIGN03N_LAW = 5724, + MODEL_HOLPACIFIC2_LAW = 5725, + MODEL_LAWN_HOLBUILD21 = 5726, + MODEL_HOLBUILD10_LAW = 5727, + MODEL_DUMMYBUILD46_LAW = 5728, + MODEL_MELBLOK02_LAWN = 5729, + MODEL_MELBLOK03_LAWN = 5730, + MODEL_MELBLOK05_LAWN = 5731, + MODEL_DONUT01_LAWN = 5732, + MODEL_MELROSE07_LAW = 5733, + MODEL_MELROSE09_LAW = 5734, + MODEL_STUDOFF_LAW = 5735, + MODEL_STUDOFF02_LAW = 5736, + MODEL_ARCHSHOP07_LAW02 = 5737, + MODEL_HOTHOL02_LAW01 = 5738, + MODEL_TALLBLDGRN = 5739, + MODEL_TALL2 = 5740, + MODEL_LAWNSTUFF21 = 5741, + MODEL_LAWNSTUFF15 = 5742, + MODEL_GRNDLAWN = 5743, + MODEL_ROAD_LAWN32 = 5744, + MODEL_ROAD_LAWN07 = 5745, + MODEL_ROAD_LAWN08 = 5746, + MODEL_ROAD_LAWN01 = 5747, + MODEL_ROAD_LAWN09 = 5748, + MODEL_ROAD_LAWN10 = 5749, + MODEL_ROAD_LAWN11 = 5750, + MODEL_ROAD_LAWN12 = 5751, + MODEL_ROAD_LAWN13 = 5752, + MODEL_ROAD_LAWN37 = 5753, + MODEL_ROAD_LAWN15 = 5754, + MODEL_ROAD_LAWN36 = 5755, + MODEL_ROAD_LAWN33 = 5756, + MODEL_ROAD_LAWN18 = 5757, + MODEL_ROAD_LAWN19 = 5758, + MODEL_ROAD_LAWN20 = 5759, + MODEL_MELBLOK09_LAWN = 5760, + MODEL_MELBLOK06_LAWN = 5761, + MODEL_FOODMARTLAWN = 5762, + MODEL_BIGBUILLAWN = 5763, + MODEL_LAWNWIRES01 = 5764, + MODEL_SUNSET15_LAWN = 5765, + MODEL_CAPITREC2_LAWN = 5766, + MODEL_CAPITREC1_LAWN = 5767, + MODEL_TAFTBLDG1_LAWN = 5768, + MODEL_VINEBLOCK1_LAWN = 5769, + MODEL_TAFTBLDGTRAN_LAWN = 5770, + MODEL_MELROSE10_LAW = 5771, + MODEL_RAILTUNN01_LAWN = 5772, + MODEL_TRAINSTAT01_LAWN = 5773, + MODEL_GARAGE01_LAWN = 5774, + MODEL_STANDARD01_LAWN = 5775, + MODEL_STANDARDTRA_LAWN = 5776, + MODEL_TOMBSTON01_LAWN = 5777, + MODEL_GRAVECOV01_LAWN = 5778, + MODEL_GARAGDOOR1_LAWN = 5779, + MODEL_MELBLOK11TR_LAWN = 5780, + MODEL_MELBLOK11_LAWN = 5781, + MODEL_MELBLOK12_LAWN = 5782, + MODEL_MELWIR02_LAWN = 5783, + MODEL_MELBLOK08_LAWN = 5784, + MODEL_MELBLOK02TR_LAWN = 5785, + MODEL_SHUTTERS01_LAWN = 5786, + MODEL_MELBLOK01_LAWN = 5787, + MODEL_MELBLOK01T_LAWN = 5788, + MODEL_MELROSE01TR_LAW = 5789, + MODEL_SHOPBOARDS01_LAWN = 5790, + MODEL_SHUTTERS02_LAWN = 5791, + MODEL_FREDRICKS01_LAWN = 5792, + MODEL_ROAD_LAWN02 = 5793, + MODEL_ROAD_LAWN06 = 5794, + MODEL_ROAD_LAWN14 = 5795, + MODEL_ROAD_LAWN38 = 5796, + MODEL_ROAD_LAWN21 = 5797, + MODEL_ROAD_LAWN35 = 5798, + MODEL_ROAD_LAWN29 = 5799, + MODEL_ROAD_LAWN30 = 5800, + MODEL_ROAD_LAWN28 = 5801, + MODEL_ROAD_LAWN34 = 5802, + MODEL_ROAD_HILLLAWN12 = 5803, + MODEL_ROAD_LAWN25 = 5804, + MODEL_ROAD_LAWN22 = 5805, + MODEL_ROAD_LAWN17 = 5806, + MODEL_ROAD_LAWN16 = 5807, + MODEL_ROAD_LAWN39 = 5808, + MODEL_LAWNGRNDAA = 5809, + MODEL_LAWNMALSTRIP = 5810, + MODEL_LAWNMALLSIGN1 = 5811, + MODEL_GRASSPATCHLAWN = 5812, + MODEL_LAWNSHOP1 = 5813, + MODEL_LAWNCLUCKBEL = 5814, + MODEL_LAWNGRNDA = 5815, + MODEL_ODRAMPBIT = 5816, + MODEL_ODRAMPBIT01 = 5817, + MODEL_POSTERS02_LAWN = 5818, + MODEL_LAWNBUILDG = 5819, + MODEL_ODRAMPBIT02 = 5820, + MODEL_ODRAMPBIT03 = 5821, + MODEL_LHROOFST14 = 5822, + MODEL_LAWNALLEY = 5823, + MODEL_LODROAD02 = 5824, + MODEL_LODROAD03 = 5825, + MODEL_LODROAD04 = 5826, + MODEL_LODROAD05 = 5827, + MODEL_LODROAD06 = 5828, + MODEL_LODROAD08 = 5829, + MODEL_LODROAD18 = 5830, + MODEL_LODROAD23 = 5831, + MODEL_LODROAD25 = 5832, + MODEL_LODROAD26 = 5833, + MODEL_LODROAD27 = 5834, + MODEL_CI_ASTAGE = 5835, + MODEL_CI_WATERTANK = 5836, + MODEL_CI_GUARDHOUSE1 = 5837, + MODEL_CI_WATERTANK01 = 5838, + MODEL_LODBUILD10_LAW = 5839, + MODEL_LODDRICKS01_LAWN = 5840, + MODEL_LODEBLOCK1_LAWN = 5841, + MODEL_LODHOL02_LAW01 = 5842, + MODEL_LODNSTUFF21 = 5843, + MODEL_LAWNMART_ALPHA = 5844, + MODEL_LAWNGRNDASAS = 5845, + MODEL_POSTERS01_LAWN = 5846, + MODEL_LAWNBUSHB = 5847, + MODEL_MAINBLK_LAWN = 5848, + MODEL_LODMAINBLK_LAWN = 5849, + MODEL_LODDLAWN = 5850, + MODEL_LODLAWNGRNASA = 5851, + MODEL_LODFOODMARTLAWN = 5852, + MODEL_SUNSET21_LAWN = 5853, + MODEL_LAWNBILLBRD2 = 5854, + MODEL_LAWNCRATES = 5855, + MODEL_LAWNSPRAYDOOR1 = 5856, + MODEL_LAWN_BUYABLE1 = 5857, + MODEL_LODBOIGASHOTLAWN = 5858, + MODEL_ROAD_LAWN24 = 5859, + MODEL_ROAD_LAWN27 = 5860, + MODEL_ROAD_LAWN05 = 5861, + MODEL_ROAD_LAWN31 = 5862, + MODEL_FILMSTUD4 = 5863, + MODEL_FILMSTUD3 = 5864, + MODEL_FILMSTUD2 = 5865, + MODEL_ROAD40_LAWN = 5866, + MODEL_LODSET15_LAWN = 5867, + MODEL_SUNSET16TR_LAWN = 5868, + MODEL_LODSET16_LAWN = 5869, + MODEL_SUNSET17_LAWN = 5870, + MODEL_GRAVEYARD01_LAWN = 5871, + MODEL_GRAVEYARDTR_LAWN = 5872, + MODEL_MANNS03TR_LAWN = 5873, + MODEL_MANNS03_LAWN = 5874, + MODEL_MANNS02_LAWN = 5875, + MODEL_LTSMANNS_LAWN = 5876, + MODEL_VINEBLOKTRAN_LAWN = 5877, + MODEL_VINEBLOCK2_LAWN = 5878, + MODEL_LODEBLOCK2_LAWN = 5879, + MODEL_LODD40_LAWN = 5880, + MODEL_SKYSCR02_LAWN = 5881, + MODEL_SKYSCR01_LAWN = 5882, + MODEL_LODSCR02_LAWN = 5883, + MODEL_LODSCR01_LAWN = 5884, + MODEL_SKYSCR03_LAWN = 5885, + MODEL_SPRAY01_LAWN = 5886, + MODEL_FREDBLOCK_LAWN = 5887, + MODEL_FREDBLOKTRAN_LAWN = 5888, + MODEL_LODDBLOCK_LAWN = 5889, + MODEL_LODUES02_LAWN = 5890, + MODEL_HBLUES02_LAWN = 5891, + MODEL_HBLUES01_LAWN = 5892, + MODEL_HBLUES01TR_LAWN = 5893, + MODEL_LODUES01_LAWN = 5894, + MODEL_LODSET20_LAWN = 5895, + MODEL_SUNSET22_LAWN = 5896, + MODEL_LODSET22_LAWN = 5897, + MODEL_LODSET21_LAWN = 5898, + MODEL_LODROAD01 = 5899, + MODEL_LODROAD09 = 5900, + MODEL_LODROAD10 = 5901, + MODEL_LODROAD11 = 5902, + MODEL_LODROAD12 = 5903, + MODEL_LODROAD14 = 5904, + MODEL_LODROAD15 = 5905, + MODEL_LODROAD16 = 5906, + MODEL_LODROAD17 = 5907, + MODEL_LODROAD19 = 5908, + MODEL_LODROAD20 = 5909, + MODEL_LODROAD24 = 5910, + MODEL_LODROAD28 = 5911, + MODEL_LODROAD29 = 5912, + MODEL_LODROAD30 = 5913, + MODEL_LODROAD31 = 5914, + MODEL_LODROAD32 = 5915, + MODEL_LODROAD33 = 5916, + MODEL_LODROAD34 = 5917, + MODEL_LODROAD35 = 5918, + MODEL_LODROAD36 = 5919, + MODEL_LODROAD38 = 5920, + MODEL_LODROAD39 = 5921, + MODEL_LODROAD40 = 5922, + MODEL_LODROAD41 = 5923, + MODEL_LODROAD42 = 5924, + MODEL_LODROAD43 = 5925, + MODEL_LODWATERTANK = 5926, + MODEL_LODASTAGE = 5927, + MODEL_LODHWINDSHOP_LAW = 5928, + MODEL_LODSSPATCHLAWN = 5929, + MODEL_LODPITAL_LAW = 5930, + MODEL_LODNMALSTRIP = 5931, + MODEL_LODBUILLAWN = 5932, + MODEL_LODNGRNDAA = 5933, + MODEL_LODBLOK05_LAWN = 5934, + MODEL_LODHSHOP07_LAW02 = 5935, + MODEL_LODBLOK01_LAWN = 5936, + MODEL_LODTBLDG1_LAWN = 5937, + MODEL_LODNS04_LAWN = 5938, + MODEL_LODBUILD04_LAW = 5939, + MODEL_LODIGN03N_LAW = 5940, + MODEL_LODBUILD02_LAW = 5941, + MODEL_LODNBUILDG = 5942, + MODEL_LODLOK03_LAWN = 5943, + MODEL_LODBLOK06_LAWN = 5944, + MODEL_LODBLOK08_LAWN = 5945, + MODEL_LODBLOK02_LAWN = 5946, + MODEL_LODBLOK09_LAWN = 5947, + MODEL_LODBLOK12_LAWN = 5948, + MODEL_LODNGRNDA = 5949, + MODEL_LODINSTAT01_LAWN = 5950, + MODEL_LODNSHOP1 = 5951, + MODEL_LODPACIFIC2_LAW = 5952, + MODEL_LODN_HOLBUILD21 = 5953, + MODEL_LODMYBUILD46_LAW = 5954, + MODEL_LODP03_LAW01 = 5955, + MODEL_LODBLDGRN = 5956, + MODEL_LODTALL03 = 5957, + MODEL_LODROSE09_LAW = 5958, + MODEL_LODROSE10_LAW = 5959, + MODEL_LODROSE07_LAW = 5960, + MODEL_LODLAWNALLEY = 5961, + MODEL_LODAGE01_LAWN = 5962, + MODEL_LODNS05_LAWN = 5963, + MODEL_LODCAPITAL = 5964, + MODEL_LODBLOK11_LAWN = 5965, + MODEL_LODMANNS = 5966, + MODEL_LODN_BUYABLE = 5967, + MODEL_LODLBUILD01_LAW = 5968, + MODEL_LODSET17_LAWN = 5969, + MODEL_LODVEYARD01_LAWN = 5970, + MODEL_LODNS03_LAWN = 5971, + MODEL_LODNS02_LAWN = 5972, + MODEL_LODNDARD01_LAWN = 5973, + MODEL_LODAY01_LAWN = 5974, + MODEL_LODUT01_LAWN = 5975, + MODEL_LODFILMSTUD04 = 5976, + MODEL_LODFILMSTUD05 = 5977, + MODEL_LODSTUDIOBLD03 = 5978, + MODEL_LODSTUDOFF_LAW = 5979, + MODEL_LODSTUDOFF02 = 5980, + MODEL_LODFILMSTUD06 = 5981, + MODEL_LODFILMSTUD03 = 5982, + MODEL_LODCEMET = 5983, + MODEL_LODCEM02 = 5984, + MODEL_LODLTUNN01_LAWN = 5985, + MODEL_CHATEAU01_LAWN = 5986, + MODEL_SUNSET19_LAWN = 5987, + MODEL_LODSET19_LAWN = 5988, + MODEL_LODTEAU_LAWN = 5989, + MODEL_LTSELD01_LAWN = 5990, + MODEL_LTSREC01_LAWN = 5991, + MODEL_LTSREG01_LAWN = 5992, + MODEL_LAWNMALSTRIPTR = 5993, + MODEL_ROAD_LAWN26 = 5994, + MODEL_ROAD_LAWN04 = 5995, + MODEL_LODROAD13 = 5996, + MODEL_LODROAD37 = 5997, + MODEL_SUNSET18TR_LAWN = 5998, + MODEL_SUNSET18_LAWN = 5999, + MODEL_LODSET18_LAWN = 6000, + MODEL_LTSSUNSET18_LAWN = 6001, + MODEL_LODLAWNCLUCKBEL = 6002, + MODEL_LODTERS02_LAWN = 6003, + MODEL_LODTERS01_LAWN = 6004, + MODEL_LODWATERTANK01 = 6005, + MODEL_NEWBIT01_LAWN = 6006, + MODEL_NEWBIT02_LAWN = 6007, + MODEL_LODBIT02_LAWN = 6008, + MODEL_LODBIT01_LAWN = 6009, + MODEL_LAWNBOIGASHOT25 = 6010, + MODEL_LAWROADS_LAW12 = 6035, + MODEL_FILLER01_LAW = 6036, + MODEL_FILLER02_LAW = 6037, + MODEL_WILSHIRE2_LAW = 6038, + MODEL_WILSHIRE5_LAW = 6039, + MODEL_WILSHIRE7_LAW = 6040, + MODEL_WILSHIRE6_LAW = 6041, + MODEL_VENBLUE01_LAW = 6042, + MODEL_WILSHIRE1W_LAW = 6043, + MODEL_WILSHIRE2W_LAW = 6044, + MODEL_WILSHIRE5W_LAW = 6045, + MODEL_HEDGE01_LAW = 6046, + MODEL_WILSHIRE1_LAW = 6047, + MODEL_MALL_LAW = 6048, + MODEL_BEACHWALL_LAW = 6049, + MODEL_BEACHHUT01_LAW = 6050, + MODEL_MALLGLASS_LAW = 6051, + MODEL_ARTCURVE_LAW = 6052, + MODEL_STEPSHOP_LAW = 6053, + MODEL_LAWROADS_LAW02 = 6054, + MODEL_LAWROADS_LAW03 = 6055, + MODEL_JETTYSIGN_LAW = 6056, + MODEL_WDPANELHS09_LAW = 6057, + MODEL_WDPANELHS08_LAW = 6058, + MODEL_OFFVEN02_LAW = 6059, + MODEL_PLAZA2TOP_LAW = 6060, + MODEL_PLAZA2BOT_LAW = 6061, + MODEL_MIAMI_ATM = 6062, + MODEL_STAPLAZ_LAW = 6063, + MODEL_LABEACH_03BX = 6064, + MODEL_LABEACH_04BX = 6065, + MODEL_VENGYM_LAW = 6066, + MODEL_LODSTEPSHOP_LAW01 = 6067, + MODEL_LODARTCURVE_LAW01 = 6068, + MODEL_LODPLAZA2TOP_LAW01 = 6069, + MODEL_LODPLAZA2BOT_LAW01 = 6070, + MODEL_LODSTAPLAZ_LAW01 = 6071, + MODEL_LODWILSHIRE1_LAW = 6072, + MODEL_LODFILLER01_LAW01 = 6073, + MODEL_LODWILSHIRE1_LAW01 = 6074, + MODEL_LODFILLER02_LAW01 = 6075, + MODEL_LODFILLER03_LAW01 = 6076, + MODEL_LODWILSHIRE5_LAW = 6077, + MODEL_LODWILSHIRE7_LAW01 = 6078, + MODEL_LODWILSHIRE6_LAW = 6079, + MODEL_LODROADS_LAW03 = 6080, + MODEL_LODLAROADS_04B01 = 6081, + MODEL_LODLABEACH_04BX01 = 6082, + MODEL_LODLABEACH_03BX01 = 6083, + MODEL_LODVENBLUE01_LAW = 6084, + MODEL_LODOFFVENSP03_LAW = 6085, + MODEL_LODOFFVENCP_LAW01 = 6086, + MODEL_OFFVEN01_LAW = 6087, + MODEL_OFFVEN05_LAW = 6088, + MODEL_LODOFFVEN01_LAW = 6089, + MODEL_LODOFFVEN05_LAW = 6090, + MODEL_LODWDPANELHS08_LAW = 6091, + MODEL_LODWDPANELHS09_LAW = 6092, + MODEL_LODOFFVEN02_LAW = 6093, + MODEL_BEVGRND03B_LAW = 6094, + MODEL_OFFVENSP02_LAW = 6095, + MODEL_OFFVENSP03_LAW = 6096, + MODEL_LODOFFVENSP02_LAW = 6097, + MODEL_GZBUILD2_LAW = 6098, + MODEL_GAZ3_LAW = 6099, + MODEL_GAZ1_LAW = 6100, + MODEL_GAZ2_LAW = 6101, + MODEL_GAZ4_LAW = 6102, + MODEL_GAZ5_LAW = 6103, + MODEL_GAZ18_LAW = 6104, + MODEL_LODGAZ5_LAW = 6105, + MODEL_LODGAZ4_LAW = 6106, + MODEL_LODGAZ1_LAW = 6107, + MODEL_LODGAZ2_LAW = 6108, + MODEL_LODGAZ3_LAW = 6109, + MODEL_PLAZADRAWLAST_LAW = 6110, + MODEL_LAWROADS_LAW05 = 6111, + MODEL_LAWROADS_LAW06 = 6112, + MODEL_LAWROADS_LAW07 = 6113, + MODEL_LAWROADS_LAW08 = 6114, + MODEL_LAWROADS_LAW09 = 6115, + MODEL_LAWROADS_LAW10 = 6116, + MODEL_LAWROADS_LAW11 = 6117, + MODEL_LAWROADS_LAW01 = 6118, + MODEL_LAWROADS_LAW13 = 6119, + MODEL_LAWROADS_LAW14 = 6120, + MODEL_LAWROADS_LAW15 = 6121, + MODEL_LAWROADS_LAW16 = 6122, + MODEL_LAWROADS_LAW17 = 6123, + MODEL_LAWROADS_LAW18 = 6124, + MODEL_LAWROADS_LAW19 = 6125, + MODEL_LAWROADS_LAW20 = 6126, + MODEL_LAWROADS_LAW21 = 6127, + MODEL_LAWROADS_LAW22 = 6128, + MODEL_LAWROADS_LAW23 = 6129, + MODEL_MALLB_LAW = 6130, + MODEL_LODMALL_LAW = 6131, + MODEL_GAZ8_LAW = 6132, + MODEL_GAZ9_LAW = 6133, + MODEL_GAZ11_LAW = 6134, + MODEL_GAZ13_LAW = 6135, + MODEL_GAZ15_LAW = 6136, + MODEL_GAZ12_LAW = 6137, + MODEL_GAZ10_LAW = 6138, + MODEL_LODGAZ8_LAW = 6139, + MODEL_LODGAZ10_LAW = 6140, + MODEL_LODGAZ15_LAW = 6141, + MODEL_LODGAZ13_LAW = 6142, + MODEL_LODGAZ12_LAW = 6143, + MODEL_LODBEVGRND03B_LAW = 6144, + MODEL_GAZ16_LAW = 6145, + MODEL_LODGAZ16_LAW = 6146, + MODEL_LODGAZ11_LAW = 6147, + MODEL_GAZ19_LAW = 6148, + MODEL_LODGAZ7_LAW = 6149, + MODEL_GAZ7_LAW = 6150, + MODEL_GAZ21_LAW = 6151, + MODEL_GAZ20_LAW = 6152, + MODEL_LODGAZ21_LAW = 6153, + MODEL_LODGAZ18_LAW = 6154, + MODEL_LODGAZ19_LAW = 6155, + MODEL_LODGAZ20_LAW = 6156, + MODEL_GAZ22_LAW = 6157, + MODEL_GAZ24_LAW = 6158, + MODEL_GAZ25_LAW = 6159, + MODEL_GAZ23_LAW = 6160, + MODEL_LODGAZ25_LAW = 6161, + MODEL_LODGAZ22_LAW = 6162, + MODEL_LODGAZ24_LAW = 6163, + MODEL_LODGAZ23_LAW = 6164, + MODEL_BURGGRND1_LAW = 6165, + MODEL_LODROADS_LAW18 = 6166, + MODEL_LODROADS_LAW05 = 6167, + MODEL_LODROADS_LAW06 = 6168, + MODEL_LODROADS_LAW07 = 6169, + MODEL_LODROADS_LAW19 = 6170, + MODEL_LODROADS_LAW12 = 6171, + MODEL_LODROADS_LAW21 = 6172, + MODEL_LODROADS_LAW22 = 6173, + MODEL_LODROADS_LAW20 = 6174, + MODEL_LODROADS_LAW23 = 6175, + MODEL_LODROADS_LAW08 = 6176, + MODEL_LODROADS_LAW02 = 6177, + MODEL_LODROADS_LAW09 = 6178, + MODEL_LODROADS_LAW01 = 6179, + MODEL_LODROADS_LAW11 = 6180, + MODEL_LODROADS_LAW10 = 6181, + MODEL_LODROADS_LAW16 = 6182, + MODEL_LODROADS_LAW13 = 6183, + MODEL_LODROADS_LAW14 = 6184, + MODEL_LODROADS_LAW15 = 6185, + MODEL_GAZ5_LAW01 = 6186, + MODEL_GAZ26_LAW = 6187, + MODEL_GAZ_PIER2 = 6188, + MODEL_GAZ_PIER1 = 6189, + MODEL_LODGAZ_PIER2 = 6190, + MODEL_LODGAZ_PIER1 = 6191, + MODEL_NITELITES_LAW02 = 6192, + MODEL_NITELITES_LAW01 = 6193, + MODEL_NITELITES_LAW05 = 6194, + MODEL_NITELITES_LAW03 = 6195, + MODEL_NITELITES_LAW04 = 6196, + MODEL_LODGAZ26_LAW = 6197, + MODEL_LODGAZ5_LAW01 = 6198, + MODEL_GAZ27_LAW = 6199, + MODEL_LODGAZ27_LAW = 6200, + MODEL_LODGER01_LAW = 6201, + MODEL_LODGGRND1_LAW = 6202, + MODEL_LALAND_08 = 6203, + MODEL_LAWPLAZA_ALPHA = 6204, + MODEL_JA_GERRARTLAW = 6205, + MODEL_LODJALAW_PLAZA = 6206, + MODEL_LODLALAND08 = 6207, + MODEL_LODJA_GERRARTLAW = 6208, + MODEL_BEACHBNT = 6209, + MODEL_BEACHBUNT2 = 6210, + MODEL_OFFVEN01_LAW01 = 6211, + MODEL_OFFVEN05_LAW01 = 6212, + MODEL_VENLAW_GRND = 6213, + MODEL_LAW_ALPHAVEG = 6214, + MODEL_LODOFFVEN01B_LAW = 6215, + MODEL_LODOFFVEN05B_LAW = 6216, + MODEL_LAW_VENGRND = 6217, + MODEL_LODRALTUN1LAW = 6218, + MODEL_LODRALTUN2LAW = 6219, + MODEL_LODRALTUN3LAW = 6220, + MODEL_LODRALTUN4LAW = 6221, + MODEL_LODRALTUN5LAW = 6222, + MODEL_GAZ2BLD_LAW = 6223, + MODEL_LODGAZ2BLD_LAW = 6224, + MODEL_LAWROADS_LAW04 = 6225, + MODEL_LODOADS_LAW04 = 6226, + MODEL_CANALWEST01_LAW = 6227, + MODEL_CANALBRIJ02_LAW = 6228, + MODEL_CANALEAST01_LAW = 6229, + MODEL_CANALJETTY_LAW = 6230, + MODEL_CANALROAD01_LAW = 6231, + MODEL_CANAL_ARCH = 6232, + MODEL_CANAL_FLOOR = 6233, + MODEL_CANAL_FLOOR2 = 6234, + MODEL_CANAL_ARCH01 = 6235, + MODEL_CANAL_FLOOR3 = 6236, + MODEL_VENICE_ALPHA = 6237, + MODEL_LODCANALROAD01_LAW = 6238, + MODEL_LODCANAL_ARCH2 = 6239, + MODEL_LODCANAL_FLOOR3 = 6240, + MODEL_LODCANAL_FLOOR2 = 6241, + MODEL_LODCANAL_FLOOR1 = 6242, + MODEL_LODCANBRIJ02_LAW = 6243, + MODEL_LODCANALW_LAW = 6244, + MODEL_LODCANAL_ARCH = 6245, + MODEL_LODCANALE1_LAW = 6246, + MODEL_LODCANLJETY_LAW = 6247, + MODEL_RAILTUNN01_LAW = 6248, + MODEL_RAILTUNN02_LAW = 6249, + MODEL_RAILTUNN03_LAW = 6250, + MODEL_RAILTUNN04_LAW = 6251, + MODEL_RAILTUNN05_LAW = 6252, + MODEL_LODHEDGE_LAW = 6253, + MODEL_LODMALLB_LAW = 6255, + MODEL_LODGAZ9_LAW = 6256, + MODEL_BURGER01_LAW = 6257, + MODEL_BEACH01_LAW2 = 6280, + MODEL_BEACH02_LAW2 = 6281, + MODEL_VENICE03_LAW2 = 6282, + MODEL_PIER04B_LAW2 = 6283, + MODEL_SANTAHOUSE02_LAW2 = 6284, + MODEL_SANTAHOUSE04_LAW2 = 6285, + MODEL_SANTAHOUSE05_LAW2 = 6286, + MODEL_PIER02C_LAW2 = 6287, + MODEL_PIER02B_LAW2 = 6288, + MODEL_PIER03B_LAW2 = 6289, + MODEL_RAILTUNN02_LAW2 = 6290, + MODEL_ROADS30_LAW2 = 6291, + MODEL_RAILTUNN01_LAW2 = 6292, + MODEL_LAWBORDER2B_LAW2 = 6293, + MODEL_SANTAHOUSEGRP_LAW2 = 6294, + MODEL_SANPEDLITHUS_LAW2 = 6295, + MODEL_VEROPOLICE_LAW2 = 6296, + MODEL_BEACHUT01_LAW2 = 6297, + MODEL_FERRIS01_LAW2 = 6298, + MODEL_PIER03C_LAW2 = 6299, + MODEL_PIER04_LAW2 = 6300, + MODEL_ROADS11_LAW2 = 6301, + MODEL_ROADS14_LAW2 = 6302, + MODEL_ROADS16_LAW2 = 6303, + MODEL_ROADS19_LAW2 = 6304, + MODEL_ROADS23_LAW2 = 6305, + MODEL_ROADS24_LAW2 = 6306, + MODEL_ROADS26_LAW2 = 6307, + MODEL_ROADS28_LAW2 = 6308, + MODEL_ROADS29_LAW2 = 6309, + MODEL_ROADS08_LAW2 = 6310, + MODEL_ROADS33_LAW2 = 6311, + MODEL_BEACLIFF03_LAW2 = 6312, + MODEL_BEACLIFF01_LAW2 = 6313, + MODEL_ROADS31_LAW2 = 6314, + MODEL_BEALAND01_LAW2 = 6315, + MODEL_ROADS02_LAW2 = 6316, + MODEL_ROADS07_LAW2 = 6317, + MODEL_ROADS12_LAW2 = 6318, + MODEL_ROADS17_LAW2 = 6319, + MODEL_ROADS15_LAW2 = 6320, + MODEL_ROADS18_LAW2 = 6321, + MODEL_ROADS20_LAW2 = 6322, + MODEL_ROADS21_LAW2 = 6323, + MODEL_ROADS22_LAW2 = 6324, + MODEL_ROADS01_LAW2 = 6325, + MODEL_ROADS34_LAW2 = 6326, + MODEL_ROADS35_LAW2 = 6327, + MODEL_SUNSET12_LAW2 = 6328, + MODEL_ROADS27_LAW2 = 6329, + MODEL_ROADS06_LAW2 = 6330, + MODEL_ROADS05_LAW2 = 6331, + MODEL_RODEO01_LAW2 = 6332, + MODEL_ROADS25_LAW2 = 6333, + MODEL_RODEO02_LAW2 = 6334, + MODEL_LODEO02_LAW2 = 6335, + MODEL_RODEO03_LAW2 = 6336, + MODEL_SUNSET01_LAW2 = 6337, + MODEL_SUNSET02_LAW2 = 6338, + MODEL_LODEO03_LAW2 = 6339, + MODEL_RODEO06_LAW2 = 6340, + MODEL_CENTURY02_LAW2 = 6341, + MODEL_CENTURY01_LAW2 = 6342, + MODEL_GEOPARK01_LAW2 = 6343, + MODEL_GEOPARKTR_LAW2 = 6344, + MODEL_ROADS04_LAW2 = 6345, + MODEL_LODSET02_LAW2 = 6346, + MODEL_BEACLIFF04_LAW2 = 6347, + MODEL_SUNBILS02_LAW2 = 6349, + MODEL_SUNBILS01_LAW2 = 6350, + MODEL_RODEO05_LAW2 = 6351, + MODEL_RODEO05TR_LAW2 = 6352, + MODEL_SUNBILS04_LAW2 = 6353, + MODEL_SUNSET04_LAW2 = 6354, + MODEL_SUNSET05_LAW2 = 6355, + MODEL_SUNSET06_LAW2 = 6356, + MODEL_SUNSET04TR_LAW2 = 6357, + MODEL_LODSET04_LAW2 = 6358, + MODEL_LODSET05_LAW2 = 6359, + MODEL_LODDS35_LAW2 = 6360, + MODEL_LODDS34_LAW2 = 6361, + MODEL_ROADS34TR_LAW2 = 6362, + MODEL_SUNSET02TR_LAW2 = 6363, + MODEL_SUNSET07_LAW2 = 6364, + MODEL_LODSET07_LAW2 = 6365, + MODEL_SUNSET08_LAW2 = 6366, + MODEL_LODSET08_LAW2 = 6367, + MODEL_SUNSET03_LAW2 = 6368, + MODEL_SUNSET09_LAW2 = 6369, + MODEL_RODEO06TR_LAW2 = 6370, + MODEL_RODEO04_LAW2 = 6371, + MODEL_RODEO04TR_LAW2 = 6372, + MODEL_SUNSET11_LAW2 = 6373, + MODEL_LODSET03_LAW2 = 6374, + MODEL_LODSET11_LAW2 = 6375, + MODEL_LODDS20_LAW2 = 6376, + MODEL_LODDS06_LAW2 = 6377, + MODEL_LODDS27_LAW2 = 6378, + MODEL_LODDS14_LAW2 = 6379, + MODEL_LODDS22_LAW2 = 6380, + MODEL_LODDS19_LAW2 = 6381, + MODEL_LODDS05_LAW2 = 6382, + MODEL_LODDS16_LAW2 = 6383, + MODEL_LODDS21_LAW2 = 6384, + MODEL_RODEO02TR_LAW2 = 6385, + MODEL_CENTURY02TR_LAW2 = 6386, + MODEL_CENTURY03_LAW2 = 6387, + MODEL_SANCLIFFT02_LAW2 = 6388, + MODEL_SANCLIFT01_LAW2 = 6389, + MODEL_SANCLIFFT04_LAW2 = 6390, + MODEL_SANCLIFFT05_LAW2 = 6391, + MODEL_LODCLIFFT04_LAW2 = 6392, + MODEL_SANCLIFF04TR_LAW2 = 6393, + MODEL_LODCLIFFT05_LAW2 = 6394, + MODEL_LODCLIFFT02_LAW2 = 6395, + MODEL_LODCLIFT01_LAW2 = 6396, + MODEL_SANCLIFF02TR_LAW2 = 6397, + MODEL_BEACLIFF06_LAW2 = 6398, + MODEL_BEACLIFF06TR_LAW2 = 6399, + MODEL_SPRAYDOOR_LAW2 = 6400, + MODEL_LODCLIFF06_LAW2 = 6401, + MODEL_LODCLIFF01_LAW2 = 6402, + MODEL_BEACLIFF01TR_LAW2 = 6403, + MODEL_VENICE01B_LAW2 = 6404, + MODEL_VENICE03TR_LAW2 = 6405, + MODEL_VENICE04_LAW2 = 6406, + MODEL_VENICE04TR_LAW2 = 6407, + MODEL_LODICE03_LAW2 = 6408, + MODEL_LODICE04_LAW2 = 6409, + MODEL_LODICE01B_LAW2 = 6410, + MODEL_VENICE01BT_LAW2 = 6411, + MODEL_SUNITWIN01_LAW2 = 6412, + MODEL_SUNSET07TR_LAW2 = 6413, + MODEL_LODDS01_LAW2 = 6414, + MODEL_SANPDLITHS_LOD = 6415, + MODEL_LAWBORDER2A_LAW2 = 6416, + MODEL_LAWBORDER2C_LAW2 = 6417, + MODEL_LODBORDER2A_LAW2 = 6418, + MODEL_LODBORDER2B_LAW2 = 6419, + MODEL_LODBORDER2C_LAW2 = 6420, + MODEL_BEALANTR02_LAW2 = 6421, + MODEL_RDSIGN01_LAW2 = 6422, + MODEL_LODDS31_LAW2 = 6423, + MODEL_LODLAND01_LAW2 = 6424, + MODEL_LODDS33_LAW2 = 6425, + MODEL_LODDS03_LAW2 = 6426, + MODEL_ROADS03_LAW2 = 6427, + MODEL_ROADS32_LAW2 = 6428, + MODEL_LODDS02_LAW2 = 6429, + MODEL_BEALANTR01_LAW01 = 6430, + MODEL_BEALANTR03_LAW2 = 6431, + MODEL_LODTAHOUSEGRP_LAW2 = 6432, + MODEL_LODTAHOUSE04_LAW2 = 6433, + MODEL_LODTAHOUSE02_LAW2 = 6434, + MODEL_LODTAHOUSE05_LAW2 = 6435, + MODEL_SANTAHOUSETR_LAW2 = 6436, + MODEL_LODCH01_LAW2 = 6437, + MODEL_LODDS32_LAW2 = 6438, + MODEL_LODDS08_LAW2 = 6439, + MODEL_LODDS29_LAW2 = 6440, + MODEL_LODCHUT01_LAW2 = 6441, + MODEL_LODCH02_LAW2 = 6442, + MODEL_BEACLIFF02_LAW2 = 6443, + MODEL_BEACLIFF02TR_LAW2 = 6444, + MODEL_LODCLIFF02_LAW2 = 6445, + MODEL_LODCLIFF03_LAW2 = 6446, + MODEL_LODCLIFF04_LAW2 = 6447, + MODEL_PIER01_LAW2 = 6448, + MODEL_PIER02_LAW2 = 6449, + MODEL_PIER03_LAW2 = 6450, + MODEL_PIER01TR_LAW2 = 6451, + MODEL_LODR01_LAW2 = 6452, + MODEL_LODR02_LAW2 = 6453, + MODEL_LODR03_LAW2 = 6454, + MODEL_LODR04_LAW2 = 6455, + MODEL_LODR02B_LAW2 = 6456, + MODEL_PIER02TR_LAW2 = 6457, + MODEL_PIER03TR_LAW2 = 6458, + MODEL_LODR03B_LAW2 = 6459, + MODEL_LODR03C_LAW2 = 6460, + MODEL_FERRIS01TR_LAW2 = 6461, + MODEL_PIER04A_LAW2 = 6462, + MODEL_LODRIS01_LAW2 = 6463, + MODEL_LODR04B_LAW2 = 6464, + MODEL_LODR04A_LAW2 = 6465, + MODEL_PIER04TR_LAW2 = 6466, + MODEL_LODDS07_LAW2 = 6467, + MODEL_LODDS18_LAW2 = 6468, + MODEL_LODDS23_LAW2 = 6469, + MODEL_LODDS25_LAW2 = 6470, + MODEL_LODDS24_LAW2 = 6471, + MODEL_LODDS26_LAW2 = 6472, + MODEL_LODDS28_LAW2 = 6473, + MODEL_LODDS30_LAW2 = 6474, + MODEL_LODTURY01_LAW2 = 6475, + MODEL_LODTURY02_LAW2 = 6476, + MODEL_LODPARK01_LAW03 = 6477, + MODEL_LODEO01_LAW2 = 6478, + MODEL_LODEO04_LAW2 = 6479, + MODEL_LODEO06_LAW2 = 6480, + MODEL_LODEO05_LAW2 = 6481, + MODEL_LODSET01_LAW2 = 6482, + MODEL_LODDS04_LAW2 = 6483, + MODEL_LODDS15_LAW2 = 6484, + MODEL_LODDS17_LAW2 = 6485, + MODEL_LODDS12_LAW2 = 6486, + MODEL_COUNTCLUB01_LAW2 = 6487, + MODEL_COUNTCLUB02_LAW2 = 6488, + MODEL_COUNTCLUBTR_LAW2 = 6489, + MODEL_TVSTUDIO01_LAW2 = 6490, + MODEL_LODTUDIO01_LAW2 = 6491, + MODEL_LODNTCLUB02_LAW2 = 6492, + MODEL_LODNTCLUB01_LAW2 = 6493, + MODEL_LODSET06_LAW2 = 6494, + MODEL_LODSET09_LAW2 = 6495, + MODEL_LODSET12_LAW2 = 6496, + MODEL_SUNSET10_LAW2 = 6497, + MODEL_LODSET10_LAW2 = 6498, + MODEL_SUNSET12TR_LAW2 = 6499, + MODEL_LODDS11_LAW2 = 6500, + MODEL_RAILTUNN03_LAW2 = 6501, + MODEL_RAILTUNN04_LAW2 = 6502, + MODEL_LODLTUNN01_LAW2 = 6503, + MODEL_LODLTUNN03_LAW2 = 6504, + MODEL_LODLTUNN02_LAW2 = 6505, + MODEL_LODLTUNN04_LAW2 = 6506, + MODEL_ROADS09_LAW2 = 6507, + MODEL_ROADS10_LAW2 = 6508, + MODEL_ROADS36_LAW2 = 6509, + MODEL_LODDS36_LAW2 = 6510, + MODEL_LODDS10_LAW2 = 6511, + MODEL_LODDS09_LAW2 = 6512, + MODEL_TUNBLOCK_LAW2 = 6513, + MODEL_TUNENT01_LAW2 = 6514, + MODEL_LODENT01_LAW2 = 6515, + MODEL_TVSTUDIOTR_LAW2 = 6516, + MODEL_SANTAGARD_LAW2 = 6517, + MODEL_LTS01_LAW2 = 6518, + MODEL_LTS02_LAW2 = 6519, + MODEL_LTS04_LAW2 = 6520, + MODEL_LTS03_LAW2 = 6521, + MODEL_COUNTRY_LAW2 = 6522, + MODEL_LODNTRY_LAW2 = 6523, + MODEL_RDSIGN01_LAW03 = 6524, + MODEL_LODVEROPOLICE_LAW = 6525, + MODEL_VGSNBUILD07 = 6863, + MODEL_VROCKCAFE = 6864, + MODEL_STEERSKULL = 6865, + MODEL_CIRCUSCONSTRUCT03 = 6866, + MODEL_VEGASPLANT06 = 6867, + MODEL_SMLBUILDVGAS05 = 6868, + MODEL_VEGASTEMP1 = 6869, + MODEL_LODCKCAFE = 6870, + MODEL_COURTHSE_VGN = 6871, + MODEL_VGN_CORPBUILD1 = 6872, + MODEL_VGN_CORPBUILD3 = 6873, + MODEL_VGN_CORPBUILD2 = 6874, + MODEL_VGN_CORPBUILD4 = 6875, + MODEL_VEGASNEDGE12 = 6876, + MODEL_VEGASNEDGE02 = 6877, + MODEL_VEGASNROAD055 = 6878, + MODEL_VEGASNROAD070 = 6879, + MODEL_VEGASNROAD071 = 6880, + MODEL_VEGASNROAD072 = 6881, + MODEL_VGNORTHLAND04 = 6882, + MODEL_VGNORTHLAND06 = 6883, + MODEL_VGNORTHLAND07 = 6884, + MODEL_VEGASNEDGE03 = 6885, + MODEL_VEGASNEDGE04 = 6886, + MODEL_VEGASNEDGE05 = 6887, + MODEL_VEGASNEDGE06 = 6888, + MODEL_LODASNEDGE02 = 6889, + MODEL_LODASNROAD055 = 6890, + MODEL_LODASNROAD070 = 6891, + MODEL_LODASNROAD072 = 6892, + MODEL_LODASNEDGE05 = 6893, + MODEL_LODORTHLAND04 = 6894, + MODEL_LODORTHLAND05 = 6895, + MODEL_LODORTHLAND07 = 6896, + MODEL_VEGASNROAD622 = 6897, + MODEL_VEGASNROAD623 = 6898, + MODEL_VEGASNROAD624 = 6899, + MODEL_VEGASNROAD625 = 6900, + MODEL_LODASNROAD625 = 6901, + MODEL_LODASNROAD622 = 6902, + MODEL_LODASNROAD623 = 6903, + MODEL_LODASNROAD624 = 6904, + MODEL_LODINOBLOCK5 = 6905, + MODEL_LODINOBLOCK4 = 6906, + MODEL_VGNDWNTWNSHOP1 = 6907, + MODEL_VGNDWNTWNSHOP2 = 6908, + MODEL_VGNPRTLSTATION = 6909, + MODEL_VGNPRTLSTATION_01 = 6910, + MODEL_LODASNEDGE04 = 6911, + MODEL_VGSNRAILROAD02 = 6912, + MODEL_VGSNRAILROAD03 = 6913, + MODEL_VGSNRAILROAD05 = 6914, + MODEL_VGSNRAILROAD12 = 6915, + MODEL_VEGASNEDGE07 = 6916, + MODEL_VGSNRAILROAD25 = 6917, + MODEL_LOD_CORPBUILD3 = 6918, + MODEL_VGNLOWBUILD01 = 6919, + MODEL_VGNLOWBUILD11 = 6920, + MODEL_VGNLOWBUILD12 = 6921, + MODEL_VGNLOWBUILD13 = 6922, + MODEL_VGNLOWBUILD14 = 6923, + MODEL_VGNLOWBUILD21 = 6924, + MODEL_VGNLOWBUILD235 = 6925, + MODEL_VGNHSEING68 = 6926, + MODEL_LODNBUILD07 = 6927, + MODEL_VEGASPLANT03 = 6928, + MODEL_VEGASPLANT04 = 6929, + MODEL_VEGASPLANT05 = 6930, + MODEL_VEGASPLANT01 = 6931, + MODEL_VEGASPLANT07 = 6932, + MODEL_VEGASPLANT08 = 6933, + MODEL_VEGASPLANT09 = 6934, + MODEL_LODASPLANT01 = 6935, + MODEL_LODASPLANT03 = 6936, + MODEL_LODASPLANT04 = 6937, + MODEL_LODASPLANT05 = 6938, + MODEL_LODASPLANT06 = 6939, + MODEL_LODASPLANT07 = 6940, + MODEL_LODASPLANT08 = 6941, + MODEL_LODASPLANT09 = 6942, + MODEL_LODASPLANT10 = 6943, + MODEL_VGNSHOPNMALL02 = 6944, + MODEL_VEGASNROAD0711 = 6945, + MODEL_VGNWALGREN1 = 6946, + MODEL_VGNMALL258 = 6947, + MODEL_VEGASNEDGE08 = 6948, + MODEL_VEGASNEDGE09 = 6949, + MODEL_VEGASNROAD096 = 6950, + MODEL_VEGASNROAD032 = 6951, + MODEL_VEGASNROAD027 = 6952, + MODEL_VEGASNROAD026 = 6953, + MODEL_VROCKGLASS = 6954, + MODEL_VGNLOWWALL03 = 6955, + MODEL_VEGASNROAD712 = 6956, + MODEL_VGNSHOPNMALL03 = 6957, + MODEL_VGNMALLSIGNS14 = 6958, + MODEL_VEGASNBBALL1 = 6959, + MODEL_VEGASNBBALL2 = 6960, + MODEL_VGSNWEDCHAP3 = 6961, + MODEL_VGSNWEDCHAP1 = 6962, + MODEL_VGSNWEDCHAP2 = 6963, + MODEL_VENEFOUNTWAT02 = 6964, + MODEL_VENEFOUNTAIN02 = 6965, + MODEL_VEGASNBANK1 = 6966, + MODEL_VGNSQREFNCE1 = 6967, + MODEL_VGNSQREFNCE2 = 6968, + MODEL_VGNSQREFNCE3 = 6969, + MODEL_VGSNBNKMSH = 6970, + MODEL_VGN_CORPBUILD31 = 6971, + MODEL_SHAMPARKLVL1 = 6972, + MODEL_SHAMHELIPRT1 = 6973, + MODEL_VEGASNEDGE10 = 6974, + MODEL_SHAMHELIPRT2 = 6975, + MODEL_SHAMHELIPRT04 = 6976, + MODEL_STRIPSHOPN1 = 6977, + MODEL_STARBOATSIGN1 = 6978, + MODEL_VGNORTHLAND13 = 6979, + MODEL_TRAINSTUFF07_SFS02 = 6980, + MODEL_VGSNTRAINTUNNEL04 = 6981, + MODEL_VGSNTRAINTUNNEL01 = 6982, + MODEL_VGSNTRAINTUNNEL02 = 6983, + MODEL_VGSNTRAINTUNNEL03 = 6984, + MODEL_CASINOBLOCK2 = 6985, + MODEL_VGNGAMBLSIGN1 = 6986, + MODEL_CASINOBLOCK5 = 6987, + MODEL_CASINOBLOCK3 = 6988, + MODEL_CASINOBLOCK4 = 6989, + MODEL_VEGASNROAD797 = 6990, + MODEL_VEGASNROAD798 = 6991, + MODEL_LODINOBLOCK3 = 6992, + MODEL_VGNCIRCUS2 = 6993, + MODEL_VGNCIRCUS1 = 6994, + MODEL_LODASTEMP1 = 6995, + MODEL_LODCIRCUS1 = 6996, + MODEL_STRFSHCPARK69 = 6997, + MODEL_LODFSHCPARK69 = 6998, + MODEL_VEGASNROAD08202 = 6999, + MODEL_LODASNEDGE09 = 7000, + MODEL_LODASNROAD096 = 7001, + MODEL_LODASNROAD032 = 7002, + MODEL_LODASNROAD027 = 7003, + MODEL_LODASNROAD026 = 7004, + MODEL_LODASNEDGE08 = 7005, + MODEL_LODORTHLAND13 = 7006, + MODEL_LODASNEDGE03 = 7007, + MODEL_LODASNROAD797 = 7008, + MODEL_VGNPOLICEBUILD2 = 7009, + MODEL_VGNPOLICECPARK = 7010, + MODEL_COURTHSE_VGN01 = 7011, + MODEL_CIRCUSCONSTRUCT01 = 7012, + MODEL_CIRCUSCONSTRUCT02 = 7013, + MODEL_CIRCUSCONSTRUCT04 = 7014, + MODEL_CIRCUSCONSTRUCT05 = 7015, + MODEL_CIRCUSCONSTRUCT06 = 7016, + MODEL_CIRCUSCONSTRUCT07 = 7017, + MODEL_CIRCUSCONSTRUCT08 = 7018, + MODEL_VGNHSEING111 = 7019, + MODEL_VGNHSEING112 = 7020, + MODEL_VGNHSEING113 = 7021, + MODEL_VEGASNNEWFENCE2 = 7022, + MODEL_VGNGATESECURITY = 7023, + MODEL_VEGASPLANT069 = 7024, + MODEL_PLANTBOX1 = 7025, + MODEL_VEGNEWHOUSEWAL05 = 7026, + MODEL_VGNAMUNATION1 = 7027, + MODEL_VEGNEWHOUSEWAL01 = 7028, + MODEL_VEGNEWHOUSEWAL02 = 7029, + MODEL_VEGNEWHOUSEWAL03 = 7030, + MODEL_VEGNEWHOUSEWAL04 = 7031, + MODEL_VGNHSELAND04 = 7032, + MODEL_VGNHSEGATE02 = 7033, + MODEL_VGNHSEWALL04 = 7034, + MODEL_VGSNWREHSE17 = 7035, + MODEL_VEGASNROAD0162 = 7036, + MODEL_VGNWALBURGER1 = 7037, + MODEL_VEGASPLANTWAL1 = 7038, + MODEL_VEGASPLANTWAL02 = 7039, + MODEL_VGNPLCEHLDBOX01 = 7040, + MODEL_VEGASNROAD004 = 7041, + MODEL_VEGASNEDGE11 = 7042, + MODEL_VEGASNEDGE01 = 7043, + MODEL_VGNORTHCOAST07 = 7044, + MODEL_VGNORTHCOAST06 = 7045, + MODEL_VGNORTHCOAST05 = 7046, + MODEL_VGNORTHCOAST04 = 7047, + MODEL_VGNORTHCOAST03 = 7048, + MODEL_VGNORTHCOAST02 = 7049, + MODEL_VEGASNEDGE13 = 7050, + MODEL_VEGASNEDGE14 = 7051, + MODEL_VEGASNROAD079 = 7052, + MODEL_VEGASNEDGE15 = 7053, + MODEL_VEGASNROAD083 = 7054, + MODEL_VEGASNROAD084 = 7055, + MODEL_VEGASNROAD085 = 7056, + MODEL_VEGASNROAD086 = 7057, + MODEL_LODASNROAD004 = 7058, + MODEL_LODASNEDGE01 = 7059, + MODEL_LODASNEDGE14 = 7060, + MODEL_LODORTHCOAST04 = 7061, + MODEL_LODORTHCOAST05 = 7062, + MODEL_LODORTHCOAST06 = 7063, + MODEL_VEGASNROAD08204 = 7064, + MODEL_LODASNEDGE13 = 7065, + MODEL_LODASNEDGE11 = 7066, + MODEL_LODASNEDGE15 = 7067, + MODEL_LODASNROAD08204 = 7068, + MODEL_VEGASNEDGE16 = 7069, + MODEL_LODASNEDGE16 = 7070, + MODEL_CASINOBLOCK41_DY = 7071, + MODEL_VEGASCOWBOY3 = 7072, + MODEL_VEGASCOWBOY1 = 7073, + MODEL_LODCIRCUS2 = 7074, + MODEL_VGSN_TELEWIRE01 = 7075, + MODEL_VGSN_TELEWIRE02 = 7076, + MODEL_VGSN_TELEWIRE03 = 7077, + MODEL_VGSN_TELEWIRE07 = 7078, + MODEL_VGSN_TELEWIRE08 = 7079, + MODEL_VGSN_TELEWIRE09 = 7080, + MODEL_VGSN_TELEWIRE10 = 7081, + MODEL_VGSN_TELEWIRE12 = 7082, + MODEL_VGSN_TELEWIRE13 = 7083, + MODEL_VGSN_TELEWIRE14 = 7084, + MODEL_VGSN_TELEWIRE15 = 7085, + MODEL_VGSN_TELEWIRE16 = 7086, + MODEL_VGSN_TELEWIRE17 = 7087, + MODEL_CASINOSHOPS1 = 7088, + MODEL_NEWSCAFLDVEGS02 = 7089, + MODEL_VEGASFLAG1 = 7090, + MODEL_VEGASFLAG02 = 7091, + MODEL_VEGASFLAG03 = 7092, + MODEL_WEDDINGSIFGN1 = 7093, + MODEL_VEGASCHURCHY1 = 7094, + MODEL_VGSPLNTGROUND = 7095, + MODEL_VROCKSTAIRS = 7096, + MODEL_VROCKNEON = 7097, + MODEL_VEGASNEDGE17 = 7098, + MODEL_VEGASNEDGE18 = 7099, + MODEL_VEGASNEDGE19 = 7100, + MODEL_VEGASNEDGE20 = 7101, + MODEL_PLANTBOX12 = 7102, + MODEL_VGNPLANTWALK = 7103, + MODEL_PLANTBOX13 = 7104, + MODEL_VEGASPLANT0692 = 7105, + MODEL_LODASNROAD071 = 7106, + MODEL_LODORTHCOAST03 = 7107, + MODEL_LODORTHCOAST02 = 7108, + MODEL_LODASNROAD0711 = 7109, + MODEL_LODASNROAD712 = 7110, + MODEL_LODSHOPNMALL02 = 7111, + MODEL_LODASNEDGE18 = 7112, + MODEL_LODASNEDGE10 = 7113, + MODEL_LODORTHLAND06 = 7114, + MODEL_LOD_CORPBUILD1 = 7115, + MODEL_LODASNROAD084 = 7116, + MODEL_LODDWNTWNSHOP2 = 7117, + MODEL_LODWALGREN1 = 7118, + MODEL_LODASNROADSLPT004 = 7119, + MODEL_LODASNROAD08202 = 7120, + MODEL_LODRTHSE_VGN01 = 7121, + MODEL_LODRTHSE_VGN = 7122, + MODEL_LODPOLICEBUILD2 = 7123, + MODEL_LODPOLICEBUILD1 = 7124, + MODEL_LODASNROAD085 = 7125, + MODEL_LODASNROAD086 = 7126, + MODEL_LODPOLICECPARK = 7127, + MODEL_LODASNBANK1 = 7128, + MODEL_LODASNROAD079 = 7129, + MODEL_LODORTHLAND08 = 7130, + MODEL_LODNWEDCHAP1 = 7131, + MODEL_LODNWEDCHAP3 = 7132, + MODEL_LOD_CORPBUILD4 = 7133, + MODEL_LODNWREHSE17 = 7134, + MODEL_LODASNEDGE12 = 7135, + MODEL_LODASNEDGE21 = 7136, + MODEL_LODASNROAD0162 = 7137, + MODEL_LODASNEDGE06 = 7138, + MODEL_LODCUSCONSTRUCT03 = 7139, + MODEL_LODCUSCONSTRUCT02B = 7140, + MODEL_LODCUSCONSTRUCT01 = 7141, + MODEL_LODASNEDGE20 = 7142, + MODEL_LODASNEDGE19 = 7143, + MODEL_LODHSEING111 = 7144, + MODEL_LODHSEING113 = 7145, + MODEL_LODHSEING112 = 7146, + MODEL_LODBUILDVGAS05 = 7147, + MODEL_LODASPLANT069 = 7148, + MODEL_LOD_CORPBUILD2 = 7149, + MODEL_LODMALL258 = 7150, + MODEL_LODASCHURCHY1 = 7151, + MODEL_LODASNEDGE17 = 7152, + MODEL_SHAMHELIPRT05 = 7153, + MODEL_LODPRTLSTATION = 7154, + MODEL_LODPRTLSTATION_01 = 7155, + MODEL_LODLOWBUILD235 = 7156, + MODEL_LODLOWBUILD11 = 7157, + MODEL_LODLOWBUILD14 = 7158, + MODEL_LODLOWBUILD12 = 7159, + MODEL_LODBOIGASHOT15 = 7160, + MODEL_LODDWNTWNSHOP1 = 7161, + MODEL_LODBOIGASHOT25 = 7162, + MODEL_LODLOWBUILD13 = 7163, + MODEL_LODLOWBUILD01 = 7164, + MODEL_LODHSEING68 = 7165, + MODEL_LODHSEGATE02 = 7166, + MODEL_LODAMUNATION1 = 7167, + MODEL_LODORTHCOAST07 = 7168, + MODEL_LODNTBOX12 = 7169, + MODEL_LODNTBOX13 = 7170, + MODEL_LODNTBOX1 = 7171, + MODEL_PLANTBOX_04 = 7172, + MODEL_LODIPSHOPN1 = 7173, + MODEL_LOD_CORPBUILD31 = 7174, + MODEL_LODCUSCONSTRUCT05 = 7175, + MODEL_LODASNROAD798 = 7176, + MODEL_LODNRAILROAD02 = 7177, + MODEL_LODNRAILROAD03 = 7178, + MODEL_LODNRAILROAD05 = 7179, + MODEL_LODNRAILROAD25 = 7180, + MODEL_LODNRAILROAD12 = 7181, + MODEL_LODINOBLOCK41_NT = 7182, + MODEL_LODINOBLOCK41_DY = 7183, + MODEL_VGNPOLICEBUILD1 = 7184, + MODEL_LODNTBOX15 = 7185, + MODEL_PLANTBOX15 = 7186, + MODEL_VGSN_WHSE_POST = 7187, + MODEL_VGSN_WHSE_POST01 = 7188, + MODEL_VGSN_WHSE_POST02 = 7189, + MODEL_VGSN_WHSE_POST03 = 7190, + MODEL_VEGASNNEWFENCE2B = 7191, + MODEL_VEGASNNEWFENCE2C = 7192, + MODEL_LODASNNEWFENCE2 = 7193, + MODEL_LODASNNEWFENCE2C = 7194, + MODEL_LODASNNEWFENCE2B = 7195, + MODEL_VGNNTRAINFENCE01 = 7196, + MODEL_VGNNTRAINFENCE02 = 7197, + MODEL_VGNNTRAINFENCE03 = 7198, + MODEL_LODLOWBUILD239 = 7199, + MODEL_VGNLOWBUILD239 = 7200, + MODEL_VEGASPLANT_MSH1 = 7201, + MODEL_VGNNMALLFENCE01 = 7202, + MODEL_VGNORTHLAND05 = 7203, + MODEL_VGNMALL258_RAIL = 7204, + MODEL_VEGASCHURCHY1_RAIL = 7205, + MODEL_VGSNNITLIT02 = 7206, + MODEL_VGSNNITLIT03 = 7207, + MODEL_VGSNNITLIT04 = 7208, + MODEL_VGNNTRAINFENCE04 = 7209, + MODEL_VGNNTRAINFENCE05 = 7210, + MODEL_LODLOWBUILD21 = 7211, + MODEL_VGNLOWWALL03_AL = 7212, + MODEL_VGNPOLICECPARK3 = 7213, + MODEL_LODINOBLOCK2 = 7214, + MODEL_LODWALBURGER1 = 7215, + MODEL_LODINOSHOPS1 = 7216, + MODEL_VGNORTHLAND08 = 7217, + MODEL_VEGASNEDGE21 = 7218, + MODEL_LODSCAFLDVEGS02 = 7219, + MODEL_CASINOBLOCK41_NT = 7220, + MODEL_VGSNNITLIT01 = 7221, + MODEL_VGSNNITLIT05 = 7222, + MODEL_VGNLOWBUILD01FNC = 7223, + MODEL_VGNHSEING68FNC = 7224, + MODEL_LODASNEDGE07 = 7225, + MODEL_VGNCIRCUS2NEON = 7226, + MODEL_STRIPSHOPN1FNC = 7227, + MODEL_SMLBUILDVGAS05FNC = 7228, + MODEL_VEGASPLANTWAL02FNC = 7229, + MODEL_CLWNPOCKSGN_N = 7230, + MODEL_CLWNPOCKSGN_D = 7231, + MODEL_CLWNPOCKSGN = 7232, + MODEL_RINGMASTER = 7233, + MODEL_VGSNSHOPCHAP1 = 7234, + MODEL_LODNSHOPCHAP1 = 7235, + MODEL_VEGASPLANT03B = 7236, + MODEL_LODASPLANT03B = 7237, + MODEL_VEGASPLANT02 = 7238, + MODEL_LODASPLANT01B = 7239, + MODEL_VROCKCAFEHTL = 7240, + MODEL_LODCKCAFEHTL = 7241, + MODEL_CIRCUSCONSTRUCT02B = 7242, + MODEL_VGNCIRCUS1B = 7243, + MODEL_VGNPOLICECPARKUG = 7244, + MODEL_VEGASNBANK1UG = 7245, + MODEL_VGS_ROADSIGN03 = 7246, + MODEL_VEGASNEDGE22 = 7247, + MODEL_VGNORTHCOAST02B = 7248, + MODEL_VGNORTHCOAST03B = 7249, + MODEL_VGNORTHCOAST04B = 7250, + MODEL_VGNORTHCOAST05B = 7251, + MODEL_VGNORTHCOAST06B = 7252, + MODEL_VGNORTHCOAST07B = 7253, + MODEL_VEGASNEDGE23 = 7254, + MODEL_LODASNEDGE22 = 7255, + MODEL_LODORTHCOAST02B = 7256, + MODEL_LODORTHCOAST03B = 7257, + MODEL_LODORTHCOAST04B = 7258, + MODEL_LODORTHCOAST05B = 7259, + MODEL_LODORTHCOAST06B = 7260, + MODEL_LODORTHCOAST07B = 7261, + MODEL_LODASNEDGE23 = 7262, + MODEL_CASINOBLOCK3_DY = 7263, + MODEL_CASINOBLOCK3_NT = 7264, + MODEL_CASINOBLOCK5_DY = 7265, + MODEL_CASINOBLOCK5_NT = 7266, + MODEL_LODNPOCKSGN_D = 7267, + MODEL_VGSN_FRNTNEON_NT = 7268, + MODEL_SMLBUILDVGAS05B = 7269, + MODEL_LODBUILDVGAS05B = 7270, + MODEL_VGSN_CASADD01 = 7271, + MODEL_VGSN_CASADD02 = 7272, + MODEL_VGSN_FRENT_SHPS = 7273, + MODEL_LODINOBLOCK5_DY = 7274, + MODEL_LODINOBLOCK5_NT = 7275, + MODEL_VEGASPLANT01AL = 7276, + MODEL_VGNLOWBUILD239_AL = 7277, + MODEL_LODINOBLOCK3_NT = 7278, + MODEL_LODINOBLOCK3_DY = 7279, + MODEL_VGSNNITLIT06 = 7280, + MODEL_LODNTRAINTUNNEL04 = 7281, + MODEL_LODNTRAINTUNNEL03 = 7282, + MODEL_LODNTRAINTUNNEL02 = 7283, + MODEL_LODNTRAINTUNNEL01 = 7284, + MODEL_LODCKPOLE = 7285, + MODEL_LODN_SAFEHSE_RES = 7286, + MODEL_VGSN_SAFEHSE_RES = 7287, + MODEL_VGS_FMTCASGN = 7288, + MODEL_CASINOBLOCK2_DY = 7289, + MODEL_CASINOBLOCK2_NT = 7290, + MODEL_VEGASPLANT10 = 7291, + MODEL_VGSN_MALLWALL = 7292, + MODEL_LODSHOPNMALL03 = 7293, + MODEL_VGSN_POLNB01 = 7294, + MODEL_VGNNTRAINFENCE05B = 7295, + MODEL_VGNNTRAINFENCE04B = 7296, + MODEL_VGNNTRAINFENCE03B = 7297, + MODEL_VGNNTRAINFENCE01B = 7298, + MODEL_VGNNTRAINFENCE02B = 7299, + MODEL_VGSN_ADDBOARD01 = 7300, + MODEL_VGSN_ADDBOARD03 = 7301, + MODEL_VGSN_ADDBOARD04 = 7302, + MODEL_VGSN_ADDBOARD05 = 7303, + MODEL_VGNMALLSIGNS02 = 7304, + MODEL_VGNMALLSIGNS03 = 7305, + MODEL_VGNMALLSIGNS04 = 7306, + MODEL_VGNMALLSIGNS05 = 7307, + MODEL_VGNMALLSIGNS06 = 7308, + MODEL_VGSN_ADDBOARD02 = 7309, + MODEL_VGSN_ADDBOARD06 = 7310, + MODEL_VGSN_CARWASH = 7311, + MODEL_VGSN_CARWASH01 = 7312, + MODEL_VGSN_SCROLLSGN01 = 7313, + MODEL_VGSN_FRNTNEON_DY = 7314, + MODEL_VGSN_BLUCASIGN = 7315, + MODEL_LODN_BLUCASIGN = 7316, + MODEL_PLANTBOX17 = 7317, + MODEL_LODNTBOX17 = 7318, + MODEL_VGNLOWBUILD12A = 7319, + MODEL_VEGASNROADSP08202 = 7320, + MODEL_VEGASNROADSP08203 = 7321, + MODEL_LODASNROADSP08202 = 7322, + MODEL_LODASNROADSP08203 = 7323, + MODEL_VEGASNROADSP079 = 7324, + MODEL_LODASNROADSP079 = 7325, + MODEL_VEGASNROADVRKRBT = 7326, + MODEL_VEGASNROADSPL079 = 7327, + MODEL_LODASNROADSPL079 = 7328, + MODEL_LODASNROADVRKRBT = 7329, + MODEL_LODEFOUNTAIN02 = 7330, + MODEL_VGSN_BURGSHT_NEON = 7331, + MODEL_VGSN_BURGSHT_NEON01 = 7332, + MODEL_VGSNNITLIT08 = 7333, + MODEL_VEGASNROADSLPT002 = 7334, + MODEL_VEGASNROADSLPT003 = 7335, + MODEL_VEGASNROADSLPT004 = 7336, + MODEL_VEGASNROADSLPT001 = 7337, + MODEL_LODASNROADSLPT001 = 7338, + MODEL_LODASNROAD083 = 7339, + MODEL_LODASNROADSLPT002 = 7340, + MODEL_LODASNROADSLPT003 = 7341, + MODEL_LODCANDYSIGN1 = 7342, + MODEL_LODASNBBALL1 = 7343, + MODEL_VGSN_PIPEWORKS = 7344, + MODEL_LODN_PIPEWORKS = 7345, + MODEL_LODN_PIPEWORKS01 = 7346, + MODEL_VGSN_PIPEWORKS01 = 7347, + MODEL_LODCUSCONSTRUCT02 = 7348, + MODEL_LODSQREFNCE3 = 7349, + MODEL_LODSQREFNCE2 = 7350, + MODEL_LODSQREFNCE1 = 7351, + MODEL_LODHSEWALL04 = 7352, + MODEL_VEGASN_MOTORWAY = 7353, + MODEL_LODASN_MOTORWAY = 7354, + MODEL_VEGASN_MOTORWAY1 = 7355, + MODEL_LODASN_MOTORWAY1 = 7356, + MODEL_VEGASN_NLAND = 7357, + MODEL_LODASN_NLAND = 7358, + MODEL_VEGASN_NLAND2 = 7359, + MODEL_LODASN_NLAND2 = 7360, + MODEL_CASINOBLOCK4AL = 7361, + MODEL_VEGASNROAD096B = 7362, + MODEL_LODASNROAD096B = 7363, + MODEL_VEGASN_MOTWAY5 = 7364, + MODEL_LODASN_MOTWAY5 = 7365, + MODEL_SHAM_SUPERLOD = 7366, + MODEL_VGSNELEC_FENCE_01 = 7367, + MODEL_VGSNELEC_FENCE_05 = 7368, + MODEL_VGSNELEC_FENCE_04 = 7369, + MODEL_VGSNELEC_FENCE_03 = 7370, + MODEL_VGSNELEC_FENCE_02 = 7371, + MODEL_LODNELEC_FENCE_01 = 7372, + MODEL_LODNELEC_FENCE_02 = 7373, + MODEL_LODNELEC_FENCE_03 = 7374, + MODEL_LODNELEC_FENCE_04 = 7375, + MODEL_LODNELEC_FENCE_05 = 7376, + MODEL_VGSNELEC_FENCE_04A = 7377, + MODEL_VGSNELEC_FENCE_03A = 7378, + MODEL_VGSNELEC_FENCE_02A = 7379, + MODEL_VGSNELEC_FENCE_01A = 7380, + MODEL_VGSNELEC_FENCE_05A = 7381, + MODEL_LODN_FRENT_SHPS = 7382, + MODEL_VEGASNROAD071B = 7383, + MODEL_LODASNROAD071B = 7384, + MODEL_LODMHELIPRT1 = 7385, + MODEL_LODMHELIPRT05 = 7386, + MODEL_VGNBOIGASHOT15 = 7387, + MODEL_VROCKPOLE = 7388, + MODEL_VGNBOIGASHOT25 = 7389, + MODEL_VGNGASSIGN96 = 7390, + MODEL_VGNGASSIGN102 = 7391, + MODEL_VEGCANDYSIGN1 = 7392, + MODEL_VGSWLCMSIGN1 = 7415, + MODEL_VEGASSTADGRND = 7416, + MODEL_VEGASTADIUM = 7417, + MODEL_BALLPARKBARRIER = 7418, + MODEL_MALLCARPARK_VGN01 = 7419, + MODEL_VEGASGOLFCRS08 = 7420, + MODEL_VEGASGOLFCRS01 = 7421, + MODEL_VEGASGOLFCRS02 = 7422, + MODEL_GLFCRSGATE1_VGS = 7423, + MODEL_VGNMALL1 = 7424, + MODEL_GOLFSIGN1_VGN = 7425, + MODEL_ELCIDHOTEL_VGN = 7426, + MODEL_VEGASWEDGE16 = 7427, + MODEL_VEGASNROAD03 = 7428, + MODEL_VEGASNROAD04 = 7429, + MODEL_VEGASNROAD05 = 7430, + MODEL_VEGASNROAD06 = 7431, + MODEL_VEGASNROAD07 = 7432, + MODEL_VEGASNROAD09 = 7433, + MODEL_VEGASWEDGE02 = 7434, + MODEL_VEGASNROAD15 = 7435, + MODEL_VEGASNROAD24 = 7436, + MODEL_VEGASNROAD25 = 7437, + MODEL_VEGASWEDGE03 = 7438, + MODEL_VEGASWEDGE04 = 7439, + MODEL_VEGASNROAD34 = 7440, + MODEL_VEGASNROAD35 = 7441, + MODEL_VEGASNROAD36 = 7442, + MODEL_VEGASNROAD37 = 7443, + MODEL_VGSWINDUSTROAD05 = 7444, + MODEL_VEGASNROAD39 = 7445, + MODEL_VEGASNROAD40 = 7446, + MODEL_VEGASWEDGE05 = 7447, + MODEL_VEGASWCOAST05 = 7448, + MODEL_VEGASWCOAST01 = 7449, + MODEL_VEGASWCOAST02 = 7450, + MODEL_VEGASWEDGE06 = 7451, + MODEL_VEGASWEDGE07 = 7452, + MODEL_VEGASNLAND02 = 7453, + MODEL_VEGASNLAND03 = 7454, + MODEL_VEGASNLAND04 = 7455, + MODEL_VEGASNLAND05 = 7456, + MODEL_VEGASWEDGE08 = 7457, + MODEL_VEGASWEDGE09 = 7458, + MODEL_VEGASNLAND08 = 7459, + MODEL_VEGASNLAND09 = 7460, + MODEL_VEGASNLAND10 = 7461, + MODEL_VEGASNLAND11 = 7462, + MODEL_VEGASNLAND12 = 7463, + MODEL_VEGASNLAND13 = 7464, + MODEL_VEGASNLAND14 = 7465, + MODEL_VEGASNLAND15 = 7466, + MODEL_VEGASNLAND16 = 7467, + MODEL_VEGASNLAND17 = 7468, + MODEL_VEGASNLAND18 = 7469, + MODEL_VEGASWEDGE10 = 7470, + MODEL_VEGASWEDGE31 = 7471, + MODEL_VEGASWEDGE12 = 7472, + MODEL_VEGASWEDGE13 = 7473, + MODEL_VEGASNLAND23 = 7474, + MODEL_VEGASWEDGE14 = 7475, + MODEL_VEGASNROAD43 = 7476, + MODEL_VEGASNROAD44 = 7477, + MODEL_VEGASNROAD45 = 7478, + MODEL_VEGASNROAD46 = 7479, + MODEL_VEGASWEDGE15 = 7480, + MODEL_VEGASNROAD48 = 7481, + MODEL_VEGASNROAD49 = 7482, + MODEL_VEGASNROAD50 = 7483, + MODEL_VEGASNROAD51 = 7484, + MODEL_VEGASWEDGE01 = 7485, + MODEL_VGSWINDUSTROAD01 = 7486, + MODEL_LODLCARPARK_VGN01 = 7487, + MODEL_VGNCARPARK1 = 7488, + MODEL_VGNHSEING34 = 7489, + MODEL_VEGASNORTHWREHSE1 = 7490, + MODEL_VGNHSEING25 = 7491, + MODEL_VGNHSEING40 = 7492, + MODEL_VGNABATBUILD = 7493, + MODEL_VGNHSEING42 = 7494, + MODEL_VGNHSEING43 = 7495, + MODEL_VGNHSEING44 = 7496, + MODEL_VGNORTHWREHSE14 = 7497, + MODEL_VEGASWRAILROAD01 = 7498, + MODEL_VEGASWRAILROAD02 = 7499, + MODEL_VEGASWRAILROAD03 = 7500, + MODEL_VEGASWRAILROAD04 = 7501, + MODEL_VEGASWRAILROAD05 = 7502, + MODEL_VEGASWRAILROAD06 = 7503, + MODEL_GLFCRSGATE2_VGN = 7504, + MODEL_GLFCRSGATE3_VGN = 7505, + MODEL_VGNLOWBUILD057 = 7506, + MODEL_VGNLOWBUILD09 = 7507, + MODEL_VGNLOWBUILD17 = 7508, + MODEL_VGNLOWBUILD20 = 7509, + MODEL_VGNLOWBUILD236 = 7510, + MODEL_VEGASWTRAINSTAT = 7511, + MODEL_VEGASWTRAINSTAT2 = 7512, + MODEL_VGNWREHSE69 = 7513, + MODEL_VGNWREWALL1 = 7514, + MODEL_VEGASNFRATES1 = 7515, + MODEL_VEGASNFRATES02 = 7516, + MODEL_VGNWRELAND1 = 7517, + MODEL_VGNHSEING82 = 7518, + MODEL_VGNHSELAND1 = 7519, + MODEL_VGNLOWBUILD203 = 7520, + MODEL_VGNLOWBUILD202 = 7521, + MODEL_VGNHSEGATE1 = 7522, + MODEL_VGNHSELAND2 = 7523, + MODEL_VGNHSEWALL3 = 7524, + MODEL_VGNFIRESTAT = 7525, + MODEL_VGNCARSHOW1 = 7526, + MODEL_VEGASNFRATES03 = 7527, + MODEL_DOWNVGNBILD1 = 7528, + MODEL_VGNLOWBUILD18 = 7529, + MODEL_VGNGEBUILD1 = 7530, + MODEL_VGNLOWMALL2 = 7531, + MODEL_VGNLOWWALL1 = 7532, + MODEL_NEWAPRTMNTSVGN08 = 7533, + MODEL_NEWAPRTMNTSVGN07 = 7534, + MODEL_NEWAPRTMNTSVGN03 = 7535, + MODEL_NEWAPRTMNTSVGN14 = 7536, + MODEL_NEWAPRTMNTSVGN09 = 7537, + MODEL_NEWAPRTMNTSVGN16 = 7538, + MODEL_BURGERLAND1 = 7539, + MODEL_BURGERLAND02 = 7540, + MODEL_VGNTELWIRES04 = 7541, + MODEL_VGNTELWIRES05 = 7542, + MODEL_VGNTELWIRES08 = 7543, + MODEL_VEGASNROAD22 = 7544, + MODEL_VEGASNROAD17 = 7545, + MODEL_VEGASNROAD01 = 7546, + MODEL_VEGASNROAD18 = 7547, + MODEL_VEGASWEDGE17 = 7548, + MODEL_VEGASNROAD23 = 7549, + MODEL_VEGASNROAD21 = 7550, + MODEL_VEGASNROAD20 = 7551, + MODEL_VEGASNROAD19 = 7552, + MODEL_VEGASWEDGE18 = 7553, + MODEL_VGNHSEING89 = 7554, + MODEL_BBALLCPARK1 = 7555, + MODEL_BBALLCPARK2 = 7556, + MODEL_VEGASWCOAST04 = 7557, + MODEL_VEGASWEDGE19 = 7558, + MODEL_VEGASWEDGE20 = 7559, + MODEL_VGNFRSTTFENCE = 7560, + MODEL_VEGASNFRATES04 = 7561, + MODEL_VEGASTWIRES01 = 7562, + MODEL_VEGASTWIRES02 = 7563, + MODEL_VEGASTWIRES03 = 7564, + MODEL_VEGASTWIRES04 = 7565, + MODEL_VEGASTWIRES05 = 7566, + MODEL_VEGASTWIRES06 = 7567, + MODEL_VEGASTWIRES07 = 7568, + MODEL_VEGASTWIRES08 = 7569, + MODEL_VGNTELWIRES17 = 7570, + MODEL_VEGASTWIRES09 = 7571, + MODEL_VEGASTWIRES10 = 7572, + MODEL_VEGASTWIRES11 = 7573, + MODEL_VEGASTWIRES12 = 7574, + MODEL_VEGASTWIRES13 = 7575, + MODEL_VEGASTWIRES14 = 7576, + MODEL_VEGASTWIRES15 = 7577, + MODEL_VEGASTWIRES16 = 7578, + MODEL_VGNCNSTRUCTLND = 7579, + MODEL_VEGASNROAD57 = 7580, + MODEL_MIRAGEROAD1 = 7581, + MODEL_MIRAGEBUILD04 = 7582, + MODEL_VISAGESIGN1 = 7583, + MODEL_MIRAGEBUILD01 = 7584, + MODEL_MIRAGEBUILD05 = 7585, + MODEL_MIRAGEBUILD07 = 7586, + MODEL_MIRAGEBUILD03 = 7587, + MODEL_MIRAGEBUILD02 = 7588, + MODEL_MIRAGEBUILD08 = 7589, + MODEL_MIRAGEBUILD09 = 7590, + MODEL_MIRAGEBUILD10 = 7591, + MODEL_MIRAGEBUILD11 = 7592, + MODEL_MIRAGEBUILD12 = 7593, + MODEL_LODAGEBUILD05 = 7594, + MODEL_MIRAGEHEDGE1 = 7595, + MODEL_TAMOMOTEL1 = 7596, + MODEL_GINGERSIGN1 = 7597, + MODEL_VGNTELWIRES18 = 7598, + MODEL_STRIPSHOPSTAT = 7599, + MODEL_VEGASGOLFCRS03 = 7600, + MODEL_VEGASGOLFCRS04 = 7601, + MODEL_VEGASGOLFCRS05 = 7602, + MODEL_VEGASGOLFCRS06 = 7603, + MODEL_VEGASGOLFCRS07 = 7604, + MODEL_VEGASNROAD08 = 7605, + MODEL_VEGASBIGSIGN1 = 7606, + MODEL_VGNTELWIRES19 = 7607, + MODEL_VGNTELWIRES20 = 7608, + MODEL_VGNTELWIRES21 = 7609, + MODEL_VGSMALLSIGN1 = 7610, + MODEL_VEGASSTADWALL01 = 7611, + MODEL_VEGASSTADWALL05 = 7612, + MODEL_VEGASSTADWALL04 = 7613, + MODEL_VEGASSTADWALL03 = 7614, + MODEL_VEGASSTADWALL02 = 7615, + MODEL_VGNBALLPARKLAND = 7616, + MODEL_VGNBBALLSCOREBRD = 7617, + MODEL_VGNWREHSE14BARB = 7618, + MODEL_VGNABARTOIRINTER2 = 7619, + MODEL_VEGASNFRATES05 = 7620, + MODEL_VEGASNFRATES06 = 7621, + MODEL_VEGASNFRATES07 = 7622, + MODEL_VEGASWTRAINFENCE06 = 7623, + MODEL_VEGASWTRAINFENCE07 = 7624, + MODEL_VGNHSEING129 = 7625, + MODEL_VGNHSELAND03 = 7626, + MODEL_VGNABATOIR = 7627, + MODEL_VGNWREHSE14BARB01 = 7628, + MODEL_VEGASNROAD56 = 7629, + MODEL_VENETIANCPARK01 = 7630, + MODEL_VEGASWEDGE11 = 7631, + MODEL_VEGASWEDGE22 = 7632, + MODEL_VEGASWEDGE23 = 7633, + MODEL_VEGASWEDGE24 = 7634, + MODEL_VENETIANCPARK02 = 7635, + MODEL_VENETIANCPARK03 = 7636, + MODEL_VEGASTWIRES18 = 7637, + MODEL_VEGASTWIRES19 = 7638, + MODEL_VEGASTWIRES21 = 7639, + MODEL_VEGASTWIRES31 = 7640, + MODEL_VEGASTWIRES32 = 7641, + MODEL_VEGASTWIRES33 = 7642, + MODEL_VEGASTWIRES34 = 7643, + MODEL_VEGASTWIRES35 = 7644, + MODEL_VEGASTWIRES36 = 7645, + MODEL_VEGASTWIRES45 = 7646, + MODEL_VEGASTWIRES46 = 7647, + MODEL_VEGASTWIRES47 = 7648, + MODEL_VEGASTWIRES48 = 7649, + MODEL_VGNUSEDCAR2 = 7650, + MODEL_VGNUSEDCAR1 = 7651, + MODEL_BUNTING1 = 7652, + MODEL_BUNTING02 = 7653, + MODEL_BUNTING04 = 7654, + MODEL_BUNTING06 = 7655, + MODEL_BUNTING08 = 7656, + MODEL_PLASTICSGATE1 = 7657, + MODEL_VGNBUILD1NEW = 7658, + MODEL_VGNGYMSTEPS = 7659, + MODEL_VENETIANCPARK04 = 7660, + MODEL_VENETIANCPARK05 = 7661, + MODEL_MIRAGEHEDGE14 = 7662, + MODEL_VGNCARSHOW2 = 7663, + MODEL_GLFCRSGATE5_VGS = 7664, + MODEL_GLFCRSGATE4_VGS = 7665, + MODEL_VGSWLCMSIGN2 = 7666, + MODEL_LODASNFRATES06 = 7667, + MODEL_LODLLCPARK1 = 7668, + MODEL_LODHSEING42 = 7669, + MODEL_LODHSEING40 = 7670, + MODEL_LODORTHWREHSE14 = 7671, + MODEL_LODABATOIR = 7672, + MODEL_LODABATBUILD = 7673, + MODEL_LODASNFRATES05 = 7674, + MODEL_LODASNFRATES07 = 7675, + MODEL_LODASNFRATES1 = 7676, + MODEL_LODASNFRATES02 = 7677, + MODEL_LODASNFRATES03 = 7678, + MODEL_LODASNFRATES04 = 7679, + MODEL_LODWREWALL1 = 7680, + MODEL_VEGASNOTXREFHSE1 = 7681, + MODEL_LODHSEING43 = 7682, + MODEL_LODHSEING44 = 7683, + MODEL_LODBOIGASHOT23 = 7684, + MODEL_LODASNORTHWREHSE1 = 7685, + MODEL_LODLOWBUILD20 = 7686, + MODEL_LODLOWBUILD202 = 7687, + MODEL_LODOWWALL1 = 7688, + MODEL_LODPRTLSTATION03 = 7689, + MODEL_LODLOWBUILD203 = 7690, + MODEL_LODHSEGATE1 = 7691, + MODEL_VGNHSEING8282 = 7692, + MODEL_LODWREHSE69 = 7693, + MODEL_LODHSEING89 = 7694, + MODEL_LODFIRESTAT = 7695, + MODEL_VGNGEBUILD102 = 7696, + MODEL_LODGEBUILD102 = 7697, + MODEL_LODGEBUILD1 = 7698, + MODEL_LODUSEDCAR1 = 7699, + MODEL_LODUSEDCAR2 = 7700, + MODEL_LODBOIGASHOT10 = 7701, + MODEL_LODMALL1 = 7702, + MODEL_LODHSEING25 = 7703, + MODEL_LODNVGNBILD1 = 7704, + MODEL_LODCARPARK1 = 7705, + MODEL_LODBUILD1NEW = 7706, + MODEL_VGWBOM2 = 7707, + MODEL_VEGASWESTBMB02 = 7708, + MODEL_VGWBOM1 = 7709, + MODEL_LODLOWBUILD17 = 7710, + MODEL_LODLOWBUILD18 = 7711, + MODEL_LODIDHOTEL_VGN = 7712, + MODEL_LODLOWBUILD057 = 7713, + MODEL_LODLOWBUILD09 = 7714, + MODEL_LODHSEING34 = 7715, + MODEL_LODAGEBUILD01 = 7716, + MODEL_LODOMOTEL1 = 7717, + MODEL_LODIPSHOPSTAT = 7718, + MODEL_LODCARSHOW1 = 7719, + MODEL_LODLOWMALL2 = 7720, + MODEL_LODETIANCPARK04 = 7721, + MODEL_LODETIANCPARK01 = 7722, + MODEL_LODETIANCPARK05 = 7723, + MODEL_LODETIANCPARK03 = 7724, + MODEL_LODETIANCPARK02 = 7725, + MODEL_LODASTADIUM = 7726, + MODEL_LODASSTADGRND = 7727, + MODEL_LODBALLPARKLAND = 7728, + MODEL_VEGASWEDGE25 = 7729, + MODEL_VEGASWEDGE21 = 7730, + MODEL_VEGASWEDGE26 = 7731, + MODEL_LODASNROAD01 = 7732, + MODEL_LODASWEDGE16 = 7733, + MODEL_LODASNROAD03 = 7734, + MODEL_LODASNROAD04 = 7735, + MODEL_LODASNROAD05 = 7736, + MODEL_LODASNROAD06 = 7737, + MODEL_LODASNROAD07 = 7738, + MODEL_LODASNROAD08 = 7739, + MODEL_LODASNROAD09 = 7740, + MODEL_LODASWEDGE02 = 7741, + MODEL_LODASWEDGE19 = 7742, + MODEL_LODASWEDGE20 = 7743, + MODEL_LODASWEDGE11 = 7744, + MODEL_LODASWEDGE22 = 7745, + MODEL_LODASNROAD15 = 7746, + MODEL_LODASNROAD17 = 7747, + MODEL_LODASNROAD18 = 7748, + MODEL_LODASNROAD19 = 7749, + MODEL_LODASNROAD20 = 7750, + MODEL_LODASNROAD21 = 7751, + MODEL_LODASNROAD22 = 7752, + MODEL_LODASNROAD23 = 7753, + MODEL_LODASNROAD25 = 7754, + MODEL_VEGASNROAD31 = 7755, + MODEL_LODASWEDGE03 = 7756, + MODEL_LODASWEDGE04 = 7757, + MODEL_LODASNROAD34 = 7758, + MODEL_LODASNROAD35 = 7759, + MODEL_LODASNROAD36 = 7760, + MODEL_LODASNROAD39 = 7761, + MODEL_LODASNROAD40 = 7762, + MODEL_LODASWEDGE05 = 7763, + MODEL_LODASWEDGE23 = 7764, + MODEL_LODASNROAD43 = 7765, + MODEL_LODASNROAD44 = 7766, + MODEL_LODASNROAD45 = 7767, + MODEL_LODASNROAD46 = 7768, + MODEL_LODASWEDGE15 = 7769, + MODEL_LODASNROAD48 = 7770, + MODEL_LODASNROAD49 = 7771, + MODEL_LODASNROAD50 = 7772, + MODEL_LODASNROAD51 = 7773, + MODEL_LODASWEDGE17 = 7774, + MODEL_LODASWEDGE24 = 7775, + MODEL_LODASWEDGE01 = 7776, + MODEL_LODASNROAD56 = 7777, + MODEL_LODASNROAD57 = 7778, + MODEL_LODASWEDGE25 = 7779, + MODEL_LODASWEDGE21 = 7780, + MODEL_LODASWEDGE26 = 7781, + MODEL_LODASNLAND01 = 7782, + MODEL_LODASNLAND02 = 7783, + MODEL_LODASNLAND03 = 7784, + MODEL_LODASNLAND04 = 7785, + MODEL_LODASNLAND05 = 7786, + MODEL_LODASWEDGE08 = 7787, + MODEL_LODASWEDGE9 = 7788, + MODEL_LODASNLAND08 = 7789, + MODEL_LODASNLAND09 = 7790, + MODEL_LODASNLAND10 = 7791, + MODEL_LODASNLAND11 = 7792, + MODEL_LODASNLAND12 = 7793, + MODEL_LODASWEDGE07 = 7794, + MODEL_LODASNLAND14 = 7795, + MODEL_LODASNLAND15 = 7796, + MODEL_LODASNLAND16 = 7797, + MODEL_LODASNLAND18 = 7798, + MODEL_LODASWEDGE10 = 7799, + MODEL_LODASWEDGE31 = 7800, + MODEL_LODASWEDGE12 = 7801, + MODEL_LODASWEDGE13 = 7802, + MODEL_LODASNLAND23 = 7803, + MODEL_LODASWEDGE14 = 7804, + MODEL_LODASGOLFCRS02 = 7805, + MODEL_LODASGOLFCRS03 = 7806, + MODEL_LODASGOLFCRS06 = 7807, + MODEL_LODASGOLFCRS07 = 7808, + MODEL_LODASGOLFCRS01 = 7809, + MODEL_LODASGOLFCRS05 = 7810, + MODEL_LODASGOLFCRS04 = 7811, + MODEL_LODASGOLFCRS08 = 7812, + MODEL_LODASWCOAST01 = 7813, + MODEL_LODASWCOAST02 = 7814, + MODEL_LODASWEDGE06 = 7815, + MODEL_LODASWCOAST04 = 7816, + MODEL_LODASWCOAST05 = 7817, + MODEL_LODAPRTMNTSVGN08 = 7818, + MODEL_LODAPRTMNTSVGN07 = 7819, + MODEL_LODAPRTMNTSVGN03 = 7820, + MODEL_LODAPRTMNTSVGN14 = 7821, + MODEL_LODAPRTMNTSVGN09 = 7822, + MODEL_LODAGEBUILD03 = 7823, + MODEL_LODASWEDGE18 = 7824, + MODEL_LODCNSTRUCTLND = 7825, + MODEL_LODAGEROAD1 = 7826, + MODEL_LODAGEBUILD02 = 7827, + MODEL_LODAGEBUILD11 = 7828, + MODEL_LODAGEBUILD08 = 7829, + MODEL_LODAGEBUILD10 = 7830, + MODEL_LODAGEBUILD12 = 7831, + MODEL_VGNABARTOIRINTER = 7832, + MODEL_LODASNFRATES08 = 7833, + MODEL_VEGASNFRATES08 = 7834, + MODEL_LODASNFRATES09 = 7835, + MODEL_VEGASNFRATES09 = 7836, + MODEL_VEGASWTRAINFENCE08 = 7837, + MODEL_VEGASWTRAINFENCE01 = 7838, + MODEL_VEGASWTRAINFENCE02 = 7839, + MODEL_VEGASWTRAINFENCE03 = 7840, + MODEL_VEGASWTRAINFENCE04 = 7841, + MODEL_VEGASWTRAINFENCE05 = 7842, + MODEL_LODASWRAILROAD01 = 7843, + MODEL_LODASWRAILROAD04 = 7844, + MODEL_LODASWRAILROAD03 = 7845, + MODEL_LODASWRAILROAD05 = 7846, + MODEL_LODASWRAILROAD02 = 7847, + MODEL_LODASWRAILROAD06 = 7848, + MODEL_VEGASNROAD62 = 7849, + MODEL_LODASNROAD62 = 7850, + MODEL_LODASNROAD63 = 7851, + MODEL_VEGASNROAD63 = 7852, + MODEL_LODASNROAD64 = 7853, + MODEL_VEGASNROAD64 = 7854, + MODEL_LODASNROAD65 = 7855, + MODEL_LODASNROAD31 = 7856, + MODEL_LODASWTRAINSTAT = 7857, + MODEL_LODASNROAD24 = 7858, + MODEL_LODASNROAD37 = 7859, + MODEL_LODHSEING90 = 7860, + MODEL_VGNHSEING8283 = 7861, + MODEL_VGNTELWIRES22 = 7862, + MODEL_VGSWINDUSTROAD08 = 7863, + MODEL_VGSWINDUSTROAD07 = 7864, + MODEL_VEGASWEDGE27 = 7865, + MODEL_VGSWINDUSTROAD04 = 7866, + MODEL_VGSWINDUSTROAD03 = 7867, + MODEL_VEGASWEDGE28 = 7868, + MODEL_LODWINDUSTROAD01 = 7869, + MODEL_LODASWEDGE28 = 7870, + MODEL_LODWINDUSTROAD03 = 7871, + MODEL_LODWINDUSTROAD04 = 7872, + MODEL_LODWINDUSTROAD05 = 7873, + MODEL_LODASWEDGE27 = 7874, + MODEL_LODWINDUSTROAD07 = 7875, + MODEL_LODWINDUSTROAD08 = 7876, + MODEL_LODLOWBUILD236 = 7877, + MODEL_VEGASNROAD242 = 7878, + MODEL_LODASNROAD242 = 7879, + MODEL_VGSWSTBBLLGRND = 7880, + MODEL_VEGASNROAD65 = 7881, + MODEL_VEGASWEDGE30 = 7882, + MODEL_LODASWEDGE30 = 7883, + MODEL_VGNMALL1_2 = 7884, + MODEL_VEGASGLFHSE1 = 7885, + MODEL_LODASGLFHSE1 = 7886, + MODEL_LODWSTBBLLGRND = 7887, + MODEL_LODASNLAND17 = 7888, + MODEL_VEGASWEDGE29 = 7889, + MODEL_LODASWEDGE29 = 7890, + MODEL_VGWSPRY1 = 7891, + MODEL_VISAGENEON = 7892, + MODEL_VEGASCRASHBAR04 = 7893, + MODEL_VEGASCRASHBAR05 = 7894, + MODEL_LODASSTADWALL01 = 7895, + MODEL_LODASSTADWALL02 = 7896, + MODEL_LODASSTADWALL03 = 7897, + MODEL_LODASSTADWALL04 = 7898, + MODEL_LODASSTADWALL05 = 7899, + MODEL_VGWESTBILLBRD1 = 7900, + MODEL_VGWESTBILLBRD02 = 7901, + MODEL_VGWESTBILLBRD03 = 7902, + MODEL_VGWESTBILLBRD04 = 7903, + MODEL_VGWESTBILLBRD05 = 7904, + MODEL_VGWESTBILLBRD06 = 7905, + MODEL_VGWESTBILLBRD07 = 7906, + MODEL_VGWESTBILLBRD08 = 7907, + MODEL_VGWESTBILLBRD09 = 7908, + MODEL_VGWESTBILLBRD10 = 7909, + MODEL_VGWESTBILLBRD11 = 7910, + MODEL_VGWESTBILLBRD12 = 7911, + MODEL_VGWESTBILLBRD13 = 7912, + MODEL_VGWESTBILLBRD14 = 7913, + MODEL_VGWESTBILLBRD15 = 7914, + MODEL_VGWESTBILLBRD16 = 7915, + MODEL_VEGASWATERFALL02 = 7916, + MODEL_VEGASGLFHSE2 = 7917, + MODEL_VGNLOWMALL3 = 7918, + MODEL_DOWNVGNBILD12 = 7919, + MODEL_VGWSTNEWALL6903 = 7920, + MODEL_VGWSTNEWALL6904 = 7921, + MODEL_VGWSTNEWALL6905 = 7922, + MODEL_VGWSTNEWALL6902 = 7923, + MODEL_VGWSTNEWALL6901 = 7924, + MODEL_VGSTREETDIRT1 = 7925, + MODEL_VGNABATOIR2 = 7926, + MODEL_VGSWSVEHSE1 = 7927, + MODEL_LODSAVEHSE2 = 7928, + MODEL_VGWSAVEHSE2 = 7929, + MODEL_VGWSAVEHSEDOR = 7930, + MODEL_VGSWSVEHSE04 = 7931, + MODEL_VGSNOTXREFHSE02 = 7932, + MODEL_VEGASCRASHBAR06 = 7933, + MODEL_VGNBUILD1NEW2 = 7934, + MODEL_LODASNOTXREFHSE1 = 7935, + MODEL_LODNOTXREFHSE02 = 7936, + MODEL_LODASNROAD2469 = 7937, + MODEL_VEGASNROAD2469 = 7938, + MODEL_GLFCRSGATE29_VGN = 7939, + MODEL_VEGIRLFRHOUSE02 = 7940, + MODEL_LODIRLFRHOUSE02 = 7941, + MODEL_VEGSTADNEON = 7942, + MODEL_BURGERSHOTNEON1 = 7943, + MODEL_BURGERSHOTNEON02 = 7944, + MODEL_VEGASWEDGE111 = 7945, + MODEL_LODASWEDGE111 = 7946, + MODEL_VEGASPUMPHOUSE1 = 7947, + MODEL_LODASPUMPHOUSE1 = 7948, + MODEL_LODASPUMPHOUSE02 = 7949, + MODEL_VEGASPUMPHOUSE02 = 7950, + MODEL_LODAGEBUILD04 = 7951, + MODEL_MIRAGEHEDGE09 = 7952, + MODEL_MIRAGEHEDGE04 = 7953, + MODEL_MIRAGEHEDGE0436 = 7954, + MODEL_VGWBITODIRT = 7955, + MODEL_VGWCUNTWALL1 = 7956, + MODEL_LODHSEING129 = 7957, + MODEL_LODAGESIGN1 = 7958, + MODEL_LODGERLAND1 = 7959, + MODEL_LODHSEWALL3 = 7960, + MODEL_LODHSEING8282 = 7961, + MODEL_LODHSEING82 = 7962, + MODEL_VEGASWEDGE17B = 7963, + MODEL_LODASWEDGE17B = 7964, + MODEL_VEGASNROAD23B = 7965, + MODEL_LODASNROAD23B = 7966, + MODEL_VEGASNROAD22B = 7967, + MODEL_LODASNROAD22B = 7968, + MODEL_VEGASNROAD17B = 7969, + MODEL_LODASNROAD17B = 7970, + MODEL_VGNPRTLSTATION03 = 7971, + MODEL_VGNBOIGASHOT10 = 7972, + MODEL_VGNBOIGASHOT23 = 7973, + MODEL_AIRPORT01_LVS = 7978, + MODEL_BLASTDEF01_LVS = 7979, + MODEL_AIRPRTBITS12_LVS = 7980, + MODEL_SMALLRADAR02_LVS = 7981, + MODEL_GATESB_LVS = 7982, + MODEL_VEGASCOLLEGE_LVS = 7983, + MODEL_AIRPRTCRPRK01_LVS = 7984, + MODEL_SHOP13_LVS = 7985, + MODEL_PLANTS01_LVS = 7986, + MODEL_VEGASSEDGE09 = 7987, + MODEL_VEGASSROAD025 = 7988, + MODEL_VEGASSROAD026 = 7989, + MODEL_VEGASSROAD027 = 7990, + MODEL_VEGASSROAD035 = 7991, + MODEL_VEGASSROAD053 = 7992, + MODEL_VEGASSROAD060 = 7993, + MODEL_VEGASSEDGE23 = 7994, + MODEL_VEGASSROAD088 = 7995, + MODEL_VGSSAIRPORTLAND03 = 7996, + MODEL_VGSSAIRPORTLAND02 = 7997, + MODEL_VEGASSEDGE26 = 7998, + MODEL_VGSSAIRPORTLAND04 = 7999, + MODEL_VGSSAIRPORTLAND05 = 8000, + MODEL_VEGASSLAND36 = 8001, + MODEL_VEGASSEDGE20 = 8002, + MODEL_VEGASSEDGE22 = 8003, + MODEL_VEGASSLAND40 = 8004, + MODEL_VEGASSLAND41 = 8005, + MODEL_VEGASSEDGE25 = 8006, + MODEL_VEGASSLAND44 = 8007, + MODEL_VEGASSEDGE24 = 8008, + MODEL_VEGASSROAD100 = 8009, + MODEL_VEGASSROAD104 = 8010, + MODEL_LODASSEDGE03 = 8011, + MODEL_LODASSEDGE14 = 8012, + MODEL_LODASSROAD017 = 8013, + MODEL_LODASSROAD026 = 8014, + MODEL_LODASSROAD027 = 8015, + MODEL_LODASSEDGE16 = 8016, + MODEL_LODASSEDGE15 = 8017, + MODEL_LODASSEDGE17 = 8018, + MODEL_LODASSROAD046 = 8019, + MODEL_LODASSROAD047 = 8020, + MODEL_LODASSROAD052 = 8021, + MODEL_LODASSROAD053 = 8022, + MODEL_LODASSROAD060 = 8023, + MODEL_LODASSEDGE02 = 8024, + MODEL_LODASSEDGE05 = 8025, + MODEL_LODASSROAD076 = 8026, + MODEL_LODASSEDGE18 = 8027, + MODEL_LODASSEDGE19 = 8028, + MODEL_LODASSROAD088 = 8029, + MODEL_LODASSROAD100 = 8030, + MODEL_LODASSEDGE12 = 8031, + MODEL_LODASSEDGE13 = 8032, + MODEL_VGSSAIRPORTLAND01 = 8033, + MODEL_FLGHTSCHL01_LVS = 8034, + MODEL_VEGASSEDGE30 = 8035, + MODEL_VEGASSROAD106 = 8036, + MODEL_CRPRKGRND01_LVS = 8037, + MODEL_ARPRTERMNL01_LVS = 8038, + MODEL_VEGASSROAD107 = 8039, + MODEL_AIRPRTCRPRK02_LVS = 8040, + MODEL_APBARRIERGATE06_LVS = 8041, + MODEL_APBARRIERGATE07_LVS = 8042, + MODEL_VEGASSEDGE11 = 8043, + MODEL_APTCANOPY_LVS = 8044, + MODEL_VEGASSEDGE03 = 8045, + MODEL_VEGASSROAD046 = 8046, + MODEL_VEGASSROAD017 = 8047, + MODEL_VEGASSROAD047 = 8048, + MODEL_VEGASSROAD076 = 8049, + MODEL_VEGASSEDGE14 = 8050, + MODEL_VEGASSEDGE13 = 8051, + MODEL_VEGASSEDGE15 = 8052, + MODEL_VEGASSEDGE16 = 8053, + MODEL_VEGASSEDGE17 = 8054, + MODEL_VEGASSEDGE18 = 8055, + MODEL_VEGASSEDGE19 = 8056, + MODEL_HSEING01_LVS = 8057, + MODEL_VGSWREHSE06 = 8058, + MODEL_VGSWREHSE07 = 8059, + MODEL_VGSWREHSE03 = 8060, + MODEL_VGSWREHSE04 = 8061, + MODEL_VGSWREHSE17 = 8062, + MODEL_VGSWREHSE16 = 8063, + MODEL_VGSWREHSE05 = 8064, + MODEL_VGSWREHSE09 = 8065, + MODEL_HSEING03_LVS = 8066, + MODEL_HSEING02_LVS = 8067, + MODEL_HSEING04_LVS = 8068, + MODEL_HSEING05_LVS = 8069, + MODEL_VEGASSROAD122 = 8070, + MODEL_WRHSEGRND02_LVS = 8071, + MODEL_VEGASSEDGE21 = 8072, + MODEL_VGSFRATES02 = 8073, + MODEL_VGSFRATES03 = 8074, + MODEL_VGSFRATES04 = 8075, + MODEL_VGSFRATES05 = 8076, + MODEL_VGSFRATES06 = 8077, + MODEL_VGSFRATES07 = 8078, + MODEL_HOSPITAL01_LVS = 8079, + MODEL_VEGASSROAD128 = 8080, + MODEL_VGSTWIRES20_LVS = 8081, + MODEL_VGSTWIRES21_LVS = 8082, + MODEL_VGSTWIRES22_LVS = 8083, + MODEL_VGSTWIRES24_LVS = 8084, + MODEL_VGSTWIRES23_LVS = 8085, + MODEL_VGSTWIRES25_LVS = 8086, + MODEL_VGSTWIRES26_LVS = 8087, + MODEL_LODASSROAD035 = 8088, + MODEL_LODASSROAD025 = 8089, + MODEL_LODASSROAD104 = 8090, + MODEL_VEGASSLAND58 = 8091, + MODEL_LODASSEDGE22 = 8092, + MODEL_LODASSLAND36 = 8093, + MODEL_LODSAIRPORTLAND07 = 8094, + MODEL_LODASSEDGE26 = 8095, + MODEL_LODASSROAD128 = 8096, + MODEL_LODASSLAND41 = 8097, + MODEL_LODSAIRPORTLAND04 = 8098, + MODEL_LODSAIRPORTLAND03 = 8099, + MODEL_LODASSROAD107 = 8100, + MODEL_LODASSLAND58 = 8101, + MODEL_LODASSROAD106 = 8102, + MODEL_LODRKGRND01_LVS = 8103, + MODEL_LODPRTCRPRK02_LVS = 8104, + MODEL_LODSAIRPORTLAND15 = 8105, + MODEL_LODSEGRND02_LVS = 8106, + MODEL_LODASCOLLEGE_LVS = 8107, + MODEL_LODPORT01_LVS = 8108, + MODEL_LODASSEDGE09 = 8109, + MODEL_LODPITAL01_LVS = 8110, + MODEL_LODASSEDGE11 = 8111, + MODEL_LODASSEDGE30 = 8112, + MODEL_LODWREHSE10 = 8113, + MODEL_LODFRATES07 = 8114, + MODEL_LODFRATES06 = 8115, + MODEL_LODING03_LVS = 8116, + MODEL_LODING02_LVS = 8117, + MODEL_LODWREHSE09 = 8118, + MODEL_LODFRATES02 = 8119, + MODEL_LODWREHSE16 = 8120, + MODEL_LODFRATES04 = 8121, + MODEL_LODWREHSE05 = 8122, + MODEL_LODFRATES05 = 8123, + MODEL_LODPRTCRPRK01_LVS = 8124, + MODEL_LODRTERMNL01_LVS = 8125, + MODEL_LODHTSCHL01_LVS = 8126, + MODEL_LODSCHLHNGER02_LVS = 8127, + MODEL_VGSSRDBRDG_LVS = 8128, + MODEL_LODSRDBRDG_LVS = 8129, + MODEL_VGSCHURCH01_LVS = 8130, + MODEL_VGSCHURCH02_LVS = 8131, + MODEL_VGSCHURCH03_LVS = 8132, + MODEL_VEGASSLAND59 = 8133, + MODEL_VGSCHRCHGRND_LVS = 8134, + MODEL_VEGASSROAD130 = 8135, + MODEL_VGSBIKESCHL04 = 8136, + MODEL_VEGASSROAD132 = 8137, + MODEL_LODBIKESCHL04 = 8138, + MODEL_LODCHRCHGRND_LVS = 8139, + MODEL_LODASSROAD130 = 8140, + MODEL_LODASSROAD122 = 8141, + MODEL_LODASSEDGE20 = 8142, + MODEL_LODASSEDGE21 = 8143, + MODEL_LODASSLAND59 = 8144, + MODEL_LODCHURCH01_LVS = 8145, + MODEL_LODCHURCH02_LVS = 8146, + MODEL_VGSSELECFENCE01 = 8147, + MODEL_VGSSELECFENCE02 = 8148, + MODEL_VGSSELECFENCE03 = 8149, + MODEL_VGSSELECFENCE04 = 8150, + MODEL_VGSSELECFENCE05 = 8151, + MODEL_VGSSELECFENCE06 = 8152, + MODEL_VGSSELECFENCE07 = 8153, + MODEL_VGSSELECFENCE08 = 8154, + MODEL_VGSSELECFENCE09 = 8155, + MODEL_LODWREHSE70 = 8156, + MODEL_LODWREHSE71 = 8157, + MODEL_LODWREHSE72 = 8158, + MODEL_LODWREHSE13 = 8159, + MODEL_LODING05_LVS = 8160, + MODEL_LODASSLAND40 = 8161, + MODEL_LODHSEING01 = 8162, + MODEL_LODFRATES03 = 8163, + MODEL_LODSAIRPORTLAND05 = 8164, + MODEL_VGSSELECFENCE10 = 8165, + MODEL_LODWREHSE07 = 8166, + MODEL_APGATE1_VEGS01 = 8167, + MODEL_VGS_GUARDHOUSE01 = 8168, + MODEL_VGS_GUARDHSEFLR = 8169, + MODEL_LODGUARDHOUSE02 = 8170, + MODEL_VGSSAIRPORTLAND06 = 8171, + MODEL_VGSSAIRPORTLAND07 = 8172, + MODEL_VGS_CONCWALL01 = 8173, + MODEL_VGS_CONCWALL02 = 8174, + MODEL_VGS_CONCWALL03 = 8175, + MODEL_VGS_CONCWALL04 = 8176, + MODEL_VGS_CONCWALL05 = 8177, + MODEL_VGS_CONCWALL06 = 8178, + MODEL_LODVGS_CONCWALL01 = 8179, + MODEL_LOD_CONCWALL03 = 8180, + MODEL_LODVGS_CONCWALL06 = 8181, + MODEL_LODVGS_CONCWALL04 = 8182, + MODEL_LOD_CONCWALL05 = 8183, + MODEL_LOD_CONCWALL02 = 8184, + MODEL_VGSSREDBRIX02 = 8185, + MODEL_VGSSREDBRIX03 = 8186, + MODEL_VGSSREDBRIX04 = 8187, + MODEL_VGSSREDBRIX05 = 8188, + MODEL_VGSSREDBRIX06 = 8189, + MODEL_LODSREDBRIX02 = 8190, + MODEL_LODSREDBRIX03 = 8191, + MODEL_LODSREDBRIX04 = 8192, + MODEL_LODSREDBRIX06 = 8193, + MODEL_VGSSCORRAG_FENCE01 = 8194, + MODEL_LODSCORRAG_FENCE01 = 8195, + MODEL_LODSREDBRIX05 = 8196, + MODEL_LODASSROAD132 = 8197, + MODEL_VEGASSEDGE01 = 8198, + MODEL_VEGASSEDGE27 = 8199, + MODEL_VEGASSLAND12 = 8200, + MODEL_STADIUM_LVS = 8201, + MODEL_VEGASSLAND56 = 8202, + MODEL_LODASSLAND56 = 8203, + MODEL_LODASSEDGE27 = 8204, + MODEL_LODASSLAND12 = 8205, + MODEL_VGSSSTADRAIL03 = 8206, + MODEL_VGSSSTADRAIL05 = 8207, + MODEL_VGSSSTADRAIL06 = 8208, + MODEL_VGSSELECFENCE11 = 8209, + MODEL_VGSSELECFENCE12 = 8210, + MODEL_LODASSEDGE25 = 8211, + MODEL_VEGASSEDGE29 = 8212, + MODEL_VGSSSPAGJUN02 = 8213, + MODEL_VGSSSPAGJUN03 = 8214, + MODEL_VGSSSPAGJUN04 = 8215, + MODEL_VGSSSPAGJUN05 = 8216, + MODEL_VGSSSPAGJUN06 = 8217, + MODEL_VGSSSPAGJUN07 = 8218, + MODEL_VGSSSPAGJUN08 = 8219, + MODEL_LODASSEDGE29 = 8220, + MODEL_LODSSPAGJUN07 = 8221, + MODEL_LODSSPAGJUN08 = 8222, + MODEL_LODSSPAGJUN06 = 8223, + MODEL_LODSSPAGJUN02 = 8224, + MODEL_LODSSPAGJUN03 = 8225, + MODEL_LODSSPAGJUN04 = 8226, + MODEL_LODSSPAGJUN05 = 8227, + MODEL_VGSBIKESCHL03 = 8228, + MODEL_VGSBIKESCHL02 = 8229, + MODEL_VGSBIKESCHL01 = 8230, + MODEL_VGSBIKESCHL05 = 8231, + MODEL_VGSBIKESCHL06 = 8232, + MODEL_LODBIKESCHL06 = 8233, + MODEL_LODBIKESCHL03 = 8234, + MODEL_LODBIKESCHL01 = 8235, + MODEL_VEGASSROAD131 = 8236, + MODEL_VGSBIKESCHINT = 8237, + MODEL_LODASSROAD131 = 8238, + MODEL_LODDIUM_LVS = 8239, + MODEL_VGSSBIGHANGER1 = 8240, + MODEL_LODSBIGHANGER1 = 8241, + MODEL_VEGASSEDGE10 = 8242, + MODEL_LODASSEDGE10 = 8243, + MODEL_VEGASSEDGE02 = 8244, + MODEL_VEGASSEDGE05 = 8245, + MODEL_VEGASSEDGE12 = 8246, + MODEL_PLTSCHLHNGER69_LVS = 8247, + MODEL_LODSCHLHNGER70_LVS = 8248, + MODEL_PLTSCHLHNGER70_LVS = 8249, + MODEL_LODSCHLHNGER69_LVS = 8250, + MODEL_PLTSCHLHNGER02_LVS = 8251, + MODEL_LODSCHLHNGER01_LVS = 8252, + MODEL_PLTSCHLHNGER01_LVS = 8253, + MODEL_VGSWREHSE10 = 8254, + MODEL_VGSWREHSE13 = 8255, + MODEL_VEGASSEDGE28 = 8256, + MODEL_LODASSEDGE28 = 8257, + MODEL_LODP13_LVS = 8258, + MODEL_LODWREHSE17 = 8259, + MODEL_VGSWREHSE18 = 8260, + MODEL_LODWREHSE18 = 8261, + MODEL_VGSSELECFENCE13 = 8262, + MODEL_VGSSELECFENCE14 = 8263, + MODEL_VEGASSLAND34 = 8264, + MODEL_LODASSLAND34 = 8265, + MODEL_LODSELECFENCE10 = 8266, + MODEL_LODSELECFENCE14 = 8267, + MODEL_LODSELECFENCE05 = 8268, + MODEL_LODSELECFENCE11 = 8269, + MODEL_LODSELECFENCE13 = 8270, + MODEL_LODSELECFENCE01 = 8271, + MODEL_LODSELECFENCE12 = 8272, + MODEL_LODSELECFENCE02 = 8273, + MODEL_LODSELECFENCE03 = 8274, + MODEL_LODSELECFENCE04 = 8275, + MODEL_LODSELECFENCE09 = 8276, + MODEL_LODSELECFENCE07 = 8277, + MODEL_LODSELECFENCE06 = 8278, + MODEL_LODSELECFENCE08 = 8279, + MODEL_LODDIUM02_LVS = 8280, + MODEL_AIRPORT02_LVS = 8281, + MODEL_LODPORT02_LVS = 8282, + MODEL_VGSCHRCHGRND02_LVS = 8283, + MODEL_LODCHRCHGRND02_LVS = 8284, + MODEL_VGSCHRCHGRND03_LVS = 8285, + MODEL_VGSCHRCHGRND05_LVS = 8286, + MODEL_VGSCHRCHGRND04_LVS = 8287, + MODEL_VEGASSLAND56B = 8288, + MODEL_LODASSLAND56B = 8289, + MODEL_VGSSSPAGJUN09 = 8290, + MODEL_LODSSPAGJUN09 = 8291, + MODEL_VGSBBOARDSIGNS01 = 8292, + MODEL_VGSBBOARDSIGNS02 = 8293, + MODEL_VGSBBOARDSIGNS03 = 8294, + MODEL_LODASSLAND44 = 8295, + MODEL_LODASSEDGE24 = 8296, + MODEL_LODASSEDGE23 = 8297, + MODEL_LODASSEDGE01 = 8298, + MODEL_LODPRTBITS14_LVS = 8299, + MODEL_VGSWREHSE08 = 8300, + MODEL_LODWREHSE08 = 8301, + MODEL_JUMPBOX01_LVS01 = 8302, + MODEL_LODING04_LVS = 8303, + MODEL_LODASSROAD1072 = 8304, + MODEL_VEGASSROAD1072 = 8305, + MODEL_VEGASSLAND562 = 8306, + MODEL_LODASSLAND562 = 8307, + MODEL_VEGAS_GRASECT01 = 8308, + MODEL_LODAS_GRASECT02 = 8309, + MODEL_VGSBBOARDSIGNS06 = 8310, + MODEL_VGSSELECFENCE15 = 8311, + MODEL_LODSELECFENCE15 = 8312, + MODEL_VGSSELECFENCE16 = 8313, + MODEL_VGSSELECFENCE17 = 8314, + MODEL_VGSSELECFENCE18 = 8315, + MODEL_LODSELECFENCE16 = 8316, + MODEL_LODSELECFENCE17 = 8317, + MODEL_LODSELECFENCE18 = 8318, + MODEL_VEGSTADPLANTS1 = 8319, + MODEL_VEGSTADRAIL69 = 8320, + MODEL_VEGSTADPLANTS2 = 8321, + MODEL_VGSBBOARDSIGNS08 = 8322, + MODEL_VGSBBOARDSIGNS09 = 8323, + MODEL_VGSBBOARDSIGNS10 = 8324, + MODEL_VGSBBOARDSIGNS12 = 8325, + MODEL_VGSBBOARDSIGNS13 = 8326, + MODEL_VGSBBOARDSIGNS14 = 8327, + MODEL_VGSBBOARDSIGNS15 = 8328, + MODEL_VGSBBOARDSIGNS16 = 8329, + MODEL_VGSBBOARDSIGNS17 = 8330, + MODEL_VGSBBOARDSIGNS18 = 8331, + MODEL_VGSBBOARDSIGNS19 = 8332, + MODEL_STADIUM02_LVS = 8333, + MODEL_LODFRATES08 = 8334, + MODEL_VGSFRATES08 = 8335, + MODEL_LODFRATES09 = 8336, + MODEL_VGSFRATES10 = 8337, + MODEL_LODFRATES11 = 8338, + MODEL_VGSFRATES11 = 8339, + MODEL_LODFRATES12 = 8340, + MODEL_VGSFRATES12 = 8341, + MODEL_VGSSELECFENCE119 = 8342, + MODEL_VGSSAIRPORTLAND09 = 8343, + MODEL_VGSSAIRPORTLAND10 = 8344, + MODEL_GATESB_LVS01 = 8345, + MODEL_LODSAIRPORTLAND01 = 8346, + MODEL_LODSAIRPORTLAND12 = 8347, + MODEL_LODSAIRPORTLAND17 = 8348, + MODEL_LODSAIRPORTLAND18 = 8349, + MODEL_VGSSAIRPORTLAND11 = 8350, + MODEL_VGSSAIRPORTLAND12 = 8351, + MODEL_VGSSAIRPORTLAND16 = 8352, + MODEL_VGSSAIRPORTLAND13 = 8353, + MODEL_VGSSAIRPORTLAND17 = 8354, + MODEL_VGSSAIRPORTLAND18 = 8355, + MODEL_VGSSAIRPORTLAND15 = 8356, + MODEL_VGSSAIRPORTLAND14 = 8357, + MODEL_LODSAIRPORTLAND11 = 8358, + MODEL_LODSAIRPORTLAND16 = 8359, + MODEL_LODSAIRPORTLAND14 = 8360, + MODEL_LODSAIRPORTLAND06 = 8361, + MODEL_LODSAIRPORTLAND02 = 8362, + MODEL_LODSAIRPORTLAND09 = 8363, + MODEL_LODSAIRPORTLAND10 = 8364, + MODEL_LODSAIRPORTLAND13 = 8365, + MODEL_LODSELECFENCE119 = 8366, + MODEL_LODSSPAGJUN10 = 8367, + MODEL_VGSSSPAGJUN10 = 8368, + MODEL_VGSSELECFENCE05B = 8369, + MODEL_APTCANOPYDAY_LVS = 8370, + MODEL_APTCANOPYNIT_LVS01 = 8371, + MODEL_AIRPORTNEON = 8372, + MODEL_VEGASS_JETTY01 = 8373, + MODEL_LODASS_JETTY01 = 8374, + MODEL_AIRPRTBITS14_LVS = 8375, + MODEL_LODPRTBITS14_LVS01 = 8376, + MODEL_VEGASSROAD0522A = 8377, + MODEL_VGSBIGHNGRDOOR = 8378, + MODEL_LODBIGHNGRDOOR = 8379, + MODEL_VEGASSEDGE1919 = 8380, + MODEL_LODASSEDGE1919 = 8381, + MODEL_VGSSSPAGJUN06B = 8382, + MODEL_VGSSSPAGJUN06C = 8383, + MODEL_LODSSPAGJUN06B = 8384, + MODEL_LODSSPAGJUN06C = 8385, + MODEL_VGSSSPAGJUN09B = 8386, + MODEL_LODSSPAGJUN09B = 8387, + MODEL_VEGASSEDGE29B = 8388, + MODEL_LODASSEDGE29B = 8389, + MODEL_MULTICARPARK01_LVS = 8390, + MODEL_BALLYS03_LVS = 8391, + MODEL_BALLYS02_LVS = 8392, + MODEL_BALLYS01_LVS = 8393, + MODEL_VGSBOX10SGN_LVS = 8394, + MODEL_VGEPYRMD_DY = 8395, + MODEL_SPHINX02_LVS = 8396, + MODEL_LUXORPILLAR01_LVS = 8397, + MODEL_LUXORLAND01_LVS = 8398, + MODEL_NIGHTCLUB01_LVS = 8399, + MODEL_NIGHTCLUB02_LVS = 8400, + MODEL_SHOP05_LVS = 8401, + MODEL_VGSHPGRND01_LVS = 8402, + MODEL_SHOP03_LVS = 8403, + MODEL_VGSHPGRND03_LVS = 8404, + MODEL_VGSHPGRND02_LVS = 8405, + MODEL_CARPARKSIGN01_LVS = 8406, + MODEL_CARPARKHUT01_LVS = 8407, + MODEL_CARPARKSIGN02_LVS = 8408, + MODEL_GNHOTEL01_LVS = 8409, + MODEL_CARPARKHUT02_LVS = 8410, + MODEL_GNHOTEL02_LVS = 8411, + MODEL_WDDNGCHPLSIGN_LVS = 8412, + MODEL_LODOTEL02_LVS = 8413, + MODEL_LODORPILLAR01_LVS = 8414, + MODEL_LODOTEL01_LVS = 8415, + MODEL_BBALLCOURT02_LVS = 8416, + MODEL_BBALLCOURT01_LVS = 8417, + MODEL_VGSHPGRND04_LVS = 8418, + MODEL_VGSBLDNG01_LVS = 8419, + MODEL_ARPRTCRPRK04_LVS = 8420, + MODEL_PIRTEHTL02_LVS = 8421, + MODEL_PIRTEHTL01_LVS = 8422, + MODEL_PRTSKLLSGN02_LVS = 8423, + MODEL_VAGBOND01_LVS = 8424, + MODEL_VILLA_INN01_LVS = 8425, + MODEL_VLLA_INNFNC1_LVS = 8426, + MODEL_VILLA_INN03_LVS = 8427, + MODEL_VILLA_INN02_LVS = 8428, + MODEL_VLLA_INNFNC2_LVS = 8429, + MODEL_VLLA_INNFNC3_LVS = 8430, + MODEL_NUCARPARK01_LVS = 8431, + MODEL_SHOP06_LVS = 8432, + MODEL_RESIDNCE01_LVS = 8433, + MODEL_VGSOFFICE01_LVS = 8434, + MODEL_SHOP11_LVS = 8435, + MODEL_SHOP12_LVS = 8436, + MODEL_RESIDNTIAL01_LVS = 8437, + MODEL_VEGASEROAD003 = 8438, + MODEL_VGSEEDGE12 = 8439, + MODEL_VGSEEDGE15 = 8440, + MODEL_VGSEEDGE16 = 8441, + MODEL_VEGASEROAD009 = 8442, + MODEL_VEGASEROAD010 = 8443, + MODEL_VEGASEROAD011 = 8444, + MODEL_VGSEEDGE13 = 8445, + MODEL_VEGASEROAD013 = 8446, + MODEL_VEGASEROAD019 = 8447, + MODEL_VEGASEROAD020 = 8448, + MODEL_VEGASEROAD021 = 8449, + MODEL_VEGASEROAD022 = 8450, + MODEL_VEGASEROAD031 = 8451, + MODEL_VEGASEROAD032 = 8452, + MODEL_VEGASEROAD033 = 8453, + MODEL_VEGASEROAD034 = 8454, + MODEL_VEGASEROAD041 = 8455, + MODEL_VEGASEROAD058 = 8456, + MODEL_VGSEEDGE19 = 8457, + MODEL_VEGASEROAD075 = 8458, + MODEL_VGSELAND02_LVS = 8459, + MODEL_VGSELAND03_LVS = 8460, + MODEL_VGSELAND04_LVS = 8461, + MODEL_VGSELAND06_LVS = 8462, + MODEL_VGSELAND07_LVS = 8463, + MODEL_VGSELAND08_LVS = 8464, + MODEL_VGSECOAST07 = 8465, + MODEL_VGSECOAST08 = 8466, + MODEL_VGSELAND11_LVS = 8467, + MODEL_VGSELAND12_LVS = 8468, + MODEL_VGSEEDGE25 = 8469, + MODEL_VGSEEDGE27 = 8470, + MODEL_VEGASEROAD092 = 8471, + MODEL_VEGASEROAD094 = 8472, + MODEL_VEGASEROAD095 = 8473, + MODEL_VEGASEROAD096 = 8474, + MODEL_VEGASEROAD097 = 8475, + MODEL_VEGASEROAD098 = 8476, + MODEL_VEGASEROAD099 = 8477, + MODEL_LODEEDGE13 = 8478, + MODEL_LODASEROAD022 = 8479, + MODEL_CSRSPALACE01_LVS = 8480, + MODEL_CSRSFENCE01_LVS = 8481, + MODEL_CSRSPALACE02_LVS = 8482, + MODEL_PIRATELAND02_LVS = 8483, + MODEL_PIRATELAND03_LVS = 8484, + MODEL_BALLYSBASE_LVS = 8485, + MODEL_VGSEEDGE21 = 8486, + MODEL_BALLYSWTR01_LVS = 8487, + MODEL_FLAMINGO02_LVS = 8488, + MODEL_FLAMINGO01_LVS = 8489, + MODEL_FLAMINGO03_LVS = 8490, + MODEL_FLAMINGO04_LVS = 8491, + MODEL_FLAMINGO05_LVS = 8492, + MODEL_PIRTSHP01_LVS = 8493, + MODEL_LOWBUILD01_LVS = 8494, + MODEL_MALL01_LVS = 8495, + MODEL_LOWBUILD03_LVS = 8496, + MODEL_VGSELAND16_LVS = 8497, + MODEL_EXCLBR_HOTL01_LVS = 8498, + MODEL_EXCLBR_HOTL02_LVS = 8499, + MODEL_EXCALIBUR01_LVS = 8500, + MODEL_CASROYALE01_LVS = 8501, + MODEL_CASROYLDGE01_LVS = 8502, + MODEL_SHOP08_LVS = 8503, + MODEL_SHOP10_LVS = 8504, + MODEL_SHOP14_LVS = 8505, + MODEL_SHOP16_LVS = 8506, + MODEL_SHOP15_LVS = 8507, + MODEL_GENSHOP01_LVS = 8508, + MODEL_SHOP09_LVS = 8509, + MODEL_VEGASEROAD112 = 8510, + MODEL_VEGASEROAD111 = 8511, + MODEL_VEGASEROAD113 = 8512, + MODEL_RESIDNCE01_LVS01 = 8513, + MODEL_VEGASEROAD110 = 8514, + MODEL_VGSELAND01_LVS = 8515, + MODEL_SHOP07_LVS = 8516, + MODEL_VEGASEROAD114 = 8517, + MODEL_VGSEEDGE26 = 8518, + MODEL_VEGASEROAD015 = 8519, + MODEL_VEGASEROAD045 = 8520, + MODEL_VEGASEROAD071 = 8521, + MODEL_VEGASEROAD093 = 8522, + MODEL_VEGASEROAD072 = 8523, + MODEL_VEGASEROAD042 = 8524, + MODEL_VEGASEROAD043 = 8525, + MODEL_VGBNDSIGN01_LVS = 8526, + MODEL_VAGBOND02_LVS = 8527, + MODEL_VAGBOND03_LVS = 8528, + MODEL_VGSELAND17_LVS = 8529, + MODEL_VGBNDSIGN02_LVS = 8530, + MODEL_VGSELAND18_LVS = 8531, + MODEL_VGSELAND19_LVS = 8532, + MODEL_VGSEEDGE10 = 8533, + MODEL_TIKIMOTEL01_LVS = 8534, + MODEL_TIKIMOTEL02_LVS = 8535, + MODEL_TIKISIGN01_LVS = 8536, + MODEL_TIKISIGN02_LVS = 8537, + MODEL_VGSRAILROAD03 = 8538, + MODEL_VGSRAILROAD04 = 8539, + MODEL_VGSRAILROAD05 = 8540, + MODEL_VGSRAILROAD06 = 8541, + MODEL_VGSRAILROAD07 = 8542, + MODEL_VGSEEDGE11 = 8543, + MODEL_VGSEHSEING06 = 8544, + MODEL_VGSEWREHSE01 = 8545, + MODEL_VGSEWREHSE02 = 8546, + MODEL_FCTRYGRND01_LVS = 8547, + MODEL_TRAINSIGN01_LVS = 8548, + MODEL_FCTRYFNCE01_LVS = 8549, + MODEL_LACONCHA_LVS = 8550, + MODEL_LACNCHASGN_LVS = 8551, + MODEL_VEGASEROAD123 = 8552, + MODEL_VGSELAND21_LVS = 8553, + MODEL_VGSELAND22_LVS = 8554, + MODEL_VGSECRTHSE = 8555, + MODEL_VGSHSEGATE04 = 8556, + MODEL_VGSHSEING27 = 8557, + MODEL_VGSHSEING28 = 8558, + MODEL_VGSHSEWALL06 = 8559, + MODEL_VGEHSELAND05 = 8560, + MODEL_VEGASEROAD124 = 8561, + MODEL_VEGASEROAD127 = 8562, + MODEL_LACNCHASGN2_LVS = 8563, + MODEL_VGSELAND29_LVS = 8564, + MODEL_VGSEBUILD03_LVS = 8565, + MODEL_VGSEBUILD02_LVS = 8566, + MODEL_VGSEBUILD04_LVS = 8567, + MODEL_VGSEBUILD05_LVS = 8568, + MODEL_VGSEBUILD12_LVS = 8569, + MODEL_VGSEBUILD09_LVS = 8570, + MODEL_VGSEBUILD11_LVS = 8571, + MODEL_VGSSSTAIRS02_LVS = 8572, + MODEL_BALCONY01_LVS = 8573, + MODEL_SHPFRNT01_LVS = 8574, + MODEL_VGSTRAINSTATION = 8575, + MODEL_BALCONY02_LVS = 8576, + MODEL_TRNSTNGRND01_LVS = 8577, + MODEL_VGSTRAINSTATION3 = 8578, + MODEL_BALCONY03_LVS = 8579, + MODEL_VGSSSTAIRS05_LVS = 8580, + MODEL_VGSEBUILD06_LVS = 8581, + MODEL_VGSEEDGE01 = 8582, + MODEL_VGSECOAST02 = 8583, + MODEL_VGSECOAST03 = 8584, + MODEL_VGSECOAST04 = 8585, + MODEL_VGSRAILROAD11 = 8586, + MODEL_VGSRAILROAD13 = 8587, + MODEL_VGSRAILROAD15 = 8588, + MODEL_LWBLDSTUFF03_LVS = 8589, + MODEL_FILMRLLPROP01_LVS = 8590, + MODEL_OLYMPIC01_LVS = 8591, + MODEL_OLYMPCRAIL01_LVS = 8592, + MODEL_VGSEWIRES01_LVS = 8593, + MODEL_VGSEWIRES02_LVS = 8594, + MODEL_VGSEWIRES19_LVS = 8595, + MODEL_VGSEWIRES03_LVS = 8596, + MODEL_TIKIMTL02RAIL_LVS = 8597, + MODEL_LODASEROAD075 = 8598, + MODEL_LODASEROAD034 = 8599, + MODEL_LODASEROAD092 = 8600, + MODEL_LODASEROAD019 = 8601, + MODEL_LODASEROAD099 = 8602, + MODEL_LODASEROAD033 = 8603, + MODEL_LODEEDGE11 = 8604, + MODEL_LODASEROAD013 = 8605, + MODEL_LODASEROAD032 = 8606, + MODEL_VGSEWIRES05_LVS = 8607, + MODEL_VGSEWIRES04_LVS = 8608, + MODEL_VEGASEROAD008 = 8609, + MODEL_VEGASEROAD023 = 8610, + MODEL_VEGASEROAD036 = 8611, + MODEL_VEGASEROAD037 = 8612, + MODEL_VGSSSTAIRS03_LVS = 8613, + MODEL_VGSSSTAIRS01_LVS = 8614, + MODEL_VGSSSTAIRS04_LVS = 8615, + MODEL_VEGASEROAD130 = 8616, + MODEL_BUSH01_LVS = 8617, + MODEL_CEASERSIGN_LVS = 8618, + MODEL_BUSH02_LVS = 8619, + MODEL_EXCLBRSIGN01_LVS = 8620, + MODEL_EXCLBRSIGN02_DY = 8621, + MODEL_VEGASEROAD131 = 8622, + MODEL_BUSH03_LVS = 8623, + MODEL_VGSRAILROAD16 = 8624, + MODEL_VGSEEDGE04 = 8625, + MODEL_VGSEEDGE03 = 8626, + MODEL_VGSRAILROAD23 = 8627, + MODEL_VGSRAILROAD22 = 8628, + MODEL_VGSRAILROAD19 = 8629, + MODEL_VGSRAILROAD20 = 8630, + MODEL_VGSRAILROAD21 = 8631, + MODEL_VGSRAILROAD24 = 8632, + MODEL_VGSRAILROAD26 = 8633, + MODEL_VGSRAILROAD25 = 8634, + MODEL_VGSRAILBUILD01 = 8635, + MODEL_TIKIMTLWALL01_LVS = 8636, + MODEL_VEGASEROAD134 = 8637, + MODEL_VGSEEDGE09 = 8638, + MODEL_CHNATWNMLL01_LVS = 8639, + MODEL_CHNATWNMLL02_LVS = 8640, + MODEL_CHNATWNMLL03_LVS = 8641, + MODEL_CHNATWNMLL04_LVS = 8642, + MODEL_VGSEBUILD01_LVS = 8643, + MODEL_EXCLBRSIGN03_LVS = 8644, + MODEL_SHBBYHSWALL01_LVS = 8645, + MODEL_SHBBYHSWALL02_LVS = 8646, + MODEL_SHBBYHSWALL03_LVS = 8647, + MODEL_SHBBYHSWALL04_LVS = 8648, + MODEL_SHBBYHSWALL05_LVS = 8649, + MODEL_SHBBYHSWALL06_LVS = 8650, + MODEL_SHBBYHSWALL07_LVS = 8651, + MODEL_SHBBYHSWALL12_LVS = 8652, + MODEL_SHBBYHSWALL08_LVS = 8653, + MODEL_VGSELAND23_LVS = 8654, + MODEL_VGSELAND24_LVS = 8655, + MODEL_SHBBYHSWALL09_LVS = 8656, + MODEL_SHBBYHSWALL10_LVS = 8657, + MODEL_SHABBYHOUSE11_LVS = 8658, + MODEL_SHBBYHSWALL11_LVS = 8659, + MODEL_BUSH04_LVS = 8660, + MODEL_GNHTELGRND_LVS = 8661, + MODEL_NUCRPRKWALL_LVS = 8662, + MODEL_TRIADCASNO01_LVS = 8663, + MODEL_CASRYLEGRND_LVS = 8664, + MODEL_CHNATWNMLL06_LVS = 8665, + MODEL_CHNATWNMLL07_LVS = 8666, + MODEL_CHNATWNMLL08_LVS = 8667, + MODEL_CHNATWNMLL11_LVS = 8668, + MODEL_CHNATWNMLL13_LVS = 8669, + MODEL_CHNATWNMLL12_LVS = 8670, + MODEL_VGSELAND26_LVS = 8671, + MODEL_VGSEEDGE06 = 8672, + MODEL_CSRSFENCE03_LVS = 8673, + MODEL_CSRSFENCE02_LVS = 8674, + MODEL_WDDNGCHPL02_LVS = 8675, + MODEL_WDNGCHPLSGN2_LVS = 8676, + MODEL_VGSELAND09_LVS = 8677, + MODEL_WDNGCHPLGRND01_LVS = 8678, + MODEL_BUSH05_LVS = 8679, + MODEL_CHNATWNFNC02_LVS = 8680, + MODEL_CHNATWNFNC03_LVS = 8681, + MODEL_CHNATWNFNC04_LVS = 8682, + MODEL_CHNATWNFNC05_LVS = 8683, + MODEL_CHNATWNFNC06_LVS = 8684, + MODEL_CHNATWNFNC07_LVS = 8685, + MODEL_CHNATWNFNC01_LVS = 8686, + MODEL_VGELWBLD15_LVS = 8687, + MODEL_VGELWBLD16_LVS = 8688, + MODEL_VGELWBLD17_LVS = 8689, + MODEL_LODSPALACE01_LVS = 8690, + MODEL_LODSPALACE02_LVS = 8691, + MODEL_LODTEHTL02_LVS = 8692, + MODEL_LODTEHTL01_LVS = 8693, + MODEL_LODROYALE04_LVS = 8694, + MODEL_LODTICARPARK01_LVS = 8695, + MODEL_LODLYS03_LVS = 8696, + MODEL_LODLYS01_LVS = 8697, + MODEL_LODLYS02_LVS = 8698, + MODEL_LODLYSBASE_LVS = 8699, + MODEL_LODMINGO01_LVS = 8700, + MODEL_LODPYRMD_DY = 8701, + MODEL_LODMINGO02_LVS = 8702, + MODEL_LODMINGO03_LVS = 8703, + MODEL_LODADCASNO01_LVS = 8704, + MODEL_LODLBR_HOTL01_LVS = 8705, + MODEL_LODALIBUR02_LVS = 8706, + MODEL_LODLBRSIGN01_LVS = 8707, + MODEL_LODINX02_LVS = 8708, + MODEL_LODECRTHSE = 8709, + MODEL_BNUHOTEL01_LVS = 8710, + MODEL_LODHOTEL01_LVS = 8711, + MODEL_LODBLDNG01_LVS = 8712, + MODEL_LODARPARK01_LVS = 8713, + MODEL_LODEBUILD06_LVS = 8714, + MODEL_LODEBUILD05_LVS = 8715, + MODEL_LODEBUILD04_LVS = 8716, + MODEL_LODEBUILD12_LVS = 8717, + MODEL_LODLWBLD15_LVS = 8718, + MODEL_LODLWBLD16_LVS = 8719, + MODEL_LODIDNTIAL01_LVS = 8720, + MODEL_LODMPIC01_LVS = 8721, + MODEL_LODEBUILD09_LVS = 8722, + MODEL_LODEBUILD03_LVS = 8723, + MODEL_LODEBUILD02_LVS = 8724, + MODEL_LODEBUILD11_LVS = 8725, + MODEL_LODEBUILD01_LVS = 8726, + MODEL_LODP11_LVS = 8727, + MODEL_LODNGCHPL02_LVS = 8728, + MODEL_LODP06_LVS = 8729, + MODEL_LODEEDGE01 = 8730, + MODEL_LODECOAST02 = 8731, + MODEL_LODECOAST03 = 8732, + MODEL_LODECOAST04 = 8733, + MODEL_LODATWNMLL01_LVS = 8734, + MODEL_LODATWNMLL11_LVS = 8735, + MODEL_LODIDNCE01_LVS = 8736, + MODEL_LODEWREHSE02 = 8737, + MODEL_LODEWREHSE01 = 8738, + MODEL_LODEHSEING06 = 8739, + MODEL_LODTRAINSTATION3 = 8740, + MODEL_LODTRAINSTATION = 8741, + MODEL_LODRYGRND01_LVS = 8742, + MODEL_LODSTNGRND01_LVS = 8743, + MODEL_LODECOAST07 = 8744, + MODEL_LODECOAST08 = 8745, + MODEL_LODEEDGE27 = 8746, + MODEL_LODEEDGE25 = 8747, + MODEL_LODELAND16_LVS = 8748, + MODEL_LODEEDGE21 = 8749, + MODEL_LODEEDGE18 = 8750, + MODEL_LODELAND23_LVS = 8751, + MODEL_LODELAND09_LVS = 8752, + MODEL_LODELAND11_LVS = 8753, + MODEL_LODELAND01_LVS = 8754, + MODEL_LODELAND25_LVS = 8755, + MODEL_LODELAND03_LVS = 8756, + MODEL_LODELAND06_LVS = 8757, + MODEL_LODASEROAD058 = 8758, + MODEL_LODASEROAD113 = 8759, + MODEL_LODASEROAD112 = 8760, + MODEL_LODASEROAD111 = 8761, + MODEL_LODELAND24_LVS = 8762, + MODEL_LODASEROAD123 = 8763, + MODEL_LODELAND21_LVS = 8764, + MODEL_LODELAND07_LVS = 8765, + MODEL_LODELAND04_LVS = 8766, + MODEL_LODELAND02_LVS = 8767, + MODEL_LODEEDGE06 = 8768, + MODEL_LODELAND26_LVS = 8769, + MODEL_LODASEROAD003 = 8770, + MODEL_LODELAND19_LVS = 8771, + MODEL_LODASEROAD134 = 8772, + MODEL_LODRTCRPRK05_LVS = 8773, + MODEL_LODELAND17_LVS = 8774, + MODEL_LODELAND18_LVS = 8775, + MODEL_LODASEROAD110 = 8776, + MODEL_LODGCHPLGRND01_LVS = 8777, + MODEL_LODORLAND01_LVS = 8778, + MODEL_LODASEROAD037 = 8779, + MODEL_LODASEROAD131 = 8780, + MODEL_LODATELAND03_LVS = 8781, + MODEL_LODATELAND02_LVS = 8782, + MODEL_LODASEROAD124 = 8783, + MODEL_LODASEROAD127 = 8784, + MODEL_LODRAILROAD07 = 8785, + MODEL_LODRAILROAD15 = 8786, + MODEL_LODRAILROAD06 = 8787, + MODEL_LODRAILROAD13 = 8788, + MODEL_LODRAILROAD11 = 8789, + MODEL_LODRAILROAD04 = 8790, + MODEL_LODRAILROAD05 = 8791, + MODEL_LODRAILROAD03 = 8792, + MODEL_LODRAILROAD16 = 8793, + MODEL_LODEEDGE04 = 8794, + MODEL_LODRAILBUILD01 = 8795, + MODEL_LODRAILROAD19 = 8796, + MODEL_LODEEDGE03 = 8797, + MODEL_LODRAILROAD20 = 8798, + MODEL_LODRAILROAD22 = 8799, + MODEL_LODRAILROAD21 = 8800, + MODEL_LODRAILROAD24 = 8801, + MODEL_LODRAILROAD26 = 8802, + MODEL_LODELAND29_LVS = 8803, + MODEL_LODELAND22_LVS = 8804, + MODEL_LODHPGRND03_LVS = 8805, + MODEL_LODHPGRND01_LVS = 8806, + MODEL_LODP01_LVS = 8807, + MODEL_LODLA_INN02_LVS = 8808, + MODEL_LODHTCLUB01_LVS = 8809, + MODEL_LODHTCLUB02_LVS = 8810, + MODEL_LODHPGRND04_LVS = 8811, + MODEL_LODLLCOURT01_LVS = 8812, + MODEL_LODHPGRND02_LVS = 8813, + MODEL_LODL01_LVS = 8814, + MODEL_LODBUILD03_LVS = 8815, + MODEL_LODBUILD01_LVS = 8816, + MODEL_LODEEDGE10 = 8817, + MODEL_LODOFFICE01_LVS = 8818, + MODEL_LODP08_LVS = 8819, + MODEL_LODIDNCE01_LVS01 = 8820, + MODEL_LODSHOP01_LVS = 8821, + MODEL_LODP15_LVS = 8822, + MODEL_LODBOX10SGN_LVS = 8823, + MODEL_VGSEEDGE05 = 8824, + MODEL_VGSESTRPHDGE01 = 8825, + MODEL_VGSESTRPHDGE02 = 8826, + MODEL_VGSESTRPHDGE03 = 8827, + MODEL_VGSESTRPHDGE04 = 8828, + MODEL_LODASEROAD045 = 8829, + MODEL_LODASEROAD071 = 8830, + MODEL_LODLANDBRDGE01_LVS = 8831, + MODEL_PIRTEBRDG01_LVS = 8832, + MODEL_PRTBRDGROPE_LVS = 8833, + MODEL_PRTBRDGROPE2_LVS = 8834, + MODEL_PIRTETREES01_LVS = 8835, + MODEL_PIRTETREES02_LVS = 8836, + MODEL_PIRTETREES03_LVS = 8837, + MODEL_VGEHSHADE01_LVS = 8838, + MODEL_VGSECARSHOW1 = 8839, + MODEL_VGSEFLGS1_LVS = 8840, + MODEL_RSDNCARPRK01_LVS = 8841, + MODEL_VGSE24HR_LVS = 8842, + MODEL_ARROWS01_LVS = 8843, + MODEL_VGSEEDGE23 = 8844, + MODEL_FLAMINGRND_LVS = 8845, + MODEL_BUSH06_LVS = 8846, + MODEL_LODEEDGE23 = 8847, + MODEL_LODMINGRND_LVS = 8848, + MODEL_VGELWBLD18_LVS = 8849, + MODEL_VGELWBLDGRD_LVS = 8850, + MODEL_VGEPLNTR01_LVS = 8851, + MODEL_BUSH07_LVS = 8852, + MODEL_VGEPLNTR02_LVS = 8853, + MODEL_VGEPLNTR03_LVS = 8854, + MODEL_VGEPLNTR04_LVS = 8855, + MODEL_VGEPLNTR06_LVS = 8856, + MODEL_VGSECOAST06 = 8857, + MODEL_VGSRAILROAD09 = 8858, + MODEL_VGSECOAST05 = 8859, + MODEL_VGSRAILROAD14 = 8860, + MODEL_LODECOAST05 = 8861, + MODEL_LODECOAST06 = 8862, + MODEL_LODRAILROAD14 = 8863, + MODEL_LODRAILROAD09 = 8864, + MODEL_VGEPLNTR07_LVS = 8865, + MODEL_VGEPLNTR08_LVS = 8866, + MODEL_VGSECNSTRCT01 = 8867, + MODEL_VGSECNSTRCT02 = 8868, + MODEL_VGSECNSTRCT05 = 8869, + MODEL_VGSECNSTRCT03 = 8870, + MODEL_VGSECNSTRCT04 = 8871, + MODEL_VGESCFLDPLES01 = 8872, + MODEL_VGSECNSTRCT12 = 8873, + MODEL_VGSECNSTRCT13 = 8874, + MODEL_VGSECNSTRCT14 = 8875, + MODEL_VGSECNSTRCT15 = 8876, + MODEL_VGSECNSTRCT10 = 8877, + MODEL_VGSECNSTRCT11 = 8878, + MODEL_VGSECNSTRCT08 = 8879, + MODEL_VGSECNSTRCT09 = 8880, + MODEL_EXCALIBUR02_LVS = 8881, + MODEL_EXCALIBUR03_LVS = 8882, + MODEL_VGSEFRGHT01 = 8883, + MODEL_VGSEFRGHT02 = 8884, + MODEL_VGSEFRGHT03 = 8885, + MODEL_VGSEFRGHT04 = 8886, + MODEL_BUSH08_LVS = 8887, + MODEL_BUSH09_LVS = 8888, + MODEL_VGSESTRPHDGE33 = 8889, + MODEL_LODBOND01_LVS = 8890, + MODEL_LODBOND02_LVS = 8891, + MODEL_LODBOND03_LVS = 8892, + MODEL_LODHSEGATE04 = 8893, + MODEL_LODASEROAD041 = 8894, + MODEL_LODEEDGE16 = 8895, + MODEL_LODEEDGE26 = 8896, + MODEL_LODASEROAD015 = 8897, + MODEL_LODASEROAD114 = 8898, + MODEL_LODASEROAD093 = 8899, + MODEL_LODASEROAD072 = 8900, + MODEL_LODASEROAD042 = 8901, + MODEL_LODASEROAD043 = 8902, + MODEL_LODEEDGE05 = 8903, + MODEL_LODEEDGE19 = 8904, + MODEL_LODASEROAD098 = 8905, + MODEL_LODASEROAD020 = 8906, + MODEL_LODASEROAD021 = 8907, + MODEL_LODASEROAD011 = 8908, + MODEL_LODASEROAD009 = 8909, + MODEL_LODEEDGE12 = 8910, + MODEL_LODEEDGE09 = 8911, + MODEL_LODASEROAD094 = 8912, + MODEL_LODASEROAD095 = 8913, + MODEL_LODASEROAD010 = 8914, + MODEL_LODASEROAD097 = 8915, + MODEL_LODASEROAD096 = 8916, + MODEL_LODASEROAD036 = 8917, + MODEL_LODASEROAD023 = 8918, + MODEL_LODASEROAD008 = 8919, + MODEL_LODEEDGE15 = 8920, + MODEL_LODP07_LVS = 8921, + MODEL_LODP12_LVS = 8922, + MODEL_LODALIBUR01_LVS = 8923, + MODEL_LODALIBUR03_LVS = 8924, + MODEL_LODP09_LVS = 8925, + MODEL_LODP10_LVS = 8926, + MODEL_LODP14_LVS = 8927, + MODEL_LODP16_LVS = 8928, + MODEL_LODLBR_HOTL02_LVS = 8929, + MODEL_LODE24HR_LVS = 8930, + MODEL_LODECARSHOW1 = 8931, + MODEL_VEGASEROAD136 = 8932, + MODEL_LODASEROAD136 = 8933, + MODEL_LODLWBLD17_LVS = 8934, + MODEL_LODP03_LVS = 8935, + MODEL_LODP04_LVS = 8936, + MODEL_LODLA_INN03_LVS = 8937, + MODEL_LODLA_INN01_LVS = 8938, + MODEL_LODP05_LVS = 8939, + MODEL_LODRAILBUILD02 = 8940, + MODEL_LODRAILBUILD03 = 8941, + MODEL_LODRAILBUILD04 = 8942, + MODEL_LODRAILBUILD05 = 8943, + MODEL_LODRAILBUILD06 = 8944, + MODEL_LODATWNMLL02_LVS = 8945, + MODEL_LODATWNMLL12_LVS = 8946, + MODEL_VGELKUP = 8947, + MODEL_LCKUPGRGDOOR_LVS = 8948, + MODEL_LODECNSTRCT17 = 8949, + MODEL_LODECNSTRCT01 = 8950, + MODEL_LODECNSTRCT03 = 8951, + MODEL_LODECNSTRCT05 = 8952, + MODEL_LODECNSTRCT04 = 8953, + MODEL_VGSESPRAS01 = 8954, + MODEL_VGSESPRAY01 = 8955, + MODEL_LODESPRAS01 = 8956, + MODEL_VGSESPDR01 = 8957, + MODEL_LODELOCKUP_01 = 8958, + MODEL_LODESVHSE01 = 8959, + MODEL_LODEFRGHT02 = 8960, + MODEL_LODEFRGHT03 = 8961, + MODEL_LODEFRGHT04 = 8962, + MODEL_LODEFRGHT01 = 8963, + MODEL_LODLWBLD18_LVS = 8964, + MODEL_LODLWBLDGRD_LVS = 8965, + MODEL_LODONCHA_LVS = 8966, + MODEL_LODRAILROAD25 = 8967, + MODEL_LODRAILROAD23 = 8968, + MODEL_VGSEWIRES06_LVS = 8969, + MODEL_LODIMOTEL02_LVS = 8970, + MODEL_LODSERSIGN_LVS = 8971, + MODEL_LODELAND12_LVS = 8972, + MODEL_LODASEROAD031 = 8973, + MODEL_LODASEROAD130 = 8974, + MODEL_LODIMOTEL01_LVS = 8975, + MODEL_LODNGCHPL01_LVS = 8976, + MODEL_LODTSHP01_LVS = 8977, + MODEL_LODSKLLSGN02_LVS = 8978, + MODEL_VGSEESC02 = 8979, + MODEL_VGSEESC01 = 8980, + MODEL_PRTWIRES_LVS = 8981, + MODEL_VGSESTRPHDGE34 = 8982, + MODEL_VGSEEDGE02 = 8983, + MODEL_LODBYHSWALL01_LVS = 8984, + MODEL_LODBYHSWALL04_LVS = 8985, + MODEL_LODBYHSWALL05_LVS = 8986, + MODEL_LODBYHSWALL02_LVS = 8987, + MODEL_LODBYHSWALL03_LVS = 8988, + MODEL_BUSH10_LVS = 8989, + MODEL_BUSH11_LVS = 8990, + MODEL_BUSH12_LVS = 8991, + MODEL_LODBYHSWALL12_LVS = 8992, + MODEL_LODBYHSWALL06_LVS = 8993, + MODEL_LODBYHSWALL08_LVS = 8994, + MODEL_LODBYHSWALL07_LVS = 8995, + MODEL_LODBYHSWALL09_LVS = 8996, + MODEL_LODBYHSWALL10_LVS = 8997, + MODEL_LODBYHSWALL11_LVS = 8998, + MODEL_LODBBYHOUSE11_LVS = 8999, + MODEL_VGSEEDGE17 = 9000, + MODEL_VGSEEDGE20 = 9001, + MODEL_VGSEEDGE22 = 9002, + MODEL_VGSEEDGE24 = 9003, + MODEL_VEGASEROAD051 = 9004, + MODEL_VEGASEROAD050 = 9005, + MODEL_VEGASEROAD086 = 9006, + MODEL_VEGASEROAD049 = 9007, + MODEL_VEGASEROAD048 = 9008, + MODEL_LODEEDGE17 = 9009, + MODEL_LODEEDGE20 = 9010, + MODEL_LODEEDGE22 = 9011, + MODEL_LODEEDGE24 = 9012, + MODEL_LODASEROAD051 = 9013, + MODEL_LODASEROAD050 = 9014, + MODEL_LODASEROAD086 = 9015, + MODEL_LODASEROAD049 = 9016, + MODEL_LODASEROAD048 = 9017, + MODEL_LODEEDGE02 = 9018, + MODEL_LUXORTREES01_LVS = 9019, + MODEL_VGSECNSTFNC01 = 9020, + MODEL_VEGASEROAD068 = 9021, + MODEL_VEGASEROAD067 = 9022, + MODEL_VEGASEROAD069 = 9023, + MODEL_VEGASEROAD070 = 9024, + MODEL_VEGASEROAD065 = 9025, + MODEL_VEGASEROAD066 = 9026, + MODEL_VEGASEROAD064 = 9027, + MODEL_VEGASEROAD063 = 9028, + MODEL_VGSETRAINFENCE01 = 9029, + MODEL_VGSETRAINFENCE02 = 9030, + MODEL_VGSETRAINFENCE03 = 9031, + MODEL_VGSETRAINFENCE04 = 9032, + MODEL_VGSETRAINFENCE05 = 9033, + MODEL_TIKITREES01_LVS = 9034, + MODEL_TIKITREES02_LVS = 9035, + MODEL_TIKIBRDG01_LVS = 9036, + MODEL_CSRSPALACE03_LVS = 9037, + MODEL_LODSPALACE03_LVS = 9038, + MODEL_CSRSPALACE04_LVS = 9039, + MODEL_LODSPALACE04_LVS = 9040, + MODEL_PRTHOTELFNC01 = 9041, + MODEL_VEGASEROAD137 = 9042, + MODEL_LUXORPILLAR03_LVS = 9043, + MODEL_PIRATELAND05_LVS = 9044, + MODEL_PIRATELAND04_LVS = 9045, + MODEL_VGSELAND31_LVS = 9046, + MODEL_VGSELAND32_LVS = 9047, + MODEL_LODATELAND05_LVS = 9048, + MODEL_LODATELAND04_LVS = 9049, + MODEL_LODELAND31_LVS = 9050, + MODEL_LODELAND32_LVS = 9051, + MODEL_PIRATELAND06_LVS = 9052, + MODEL_LODATELAND06_LVS = 9053, + MODEL_CHNATWNMLL14_LVS = 9054, + MODEL_CHNATWNMLL15_LVS = 9055, + MODEL_VGSEEDGE07 = 9056, + MODEL_VGSEEDGE08 = 9057, + MODEL_LODATWNMLL14_LVS = 9058, + MODEL_LODATWNMLL15_LVS = 9059, + MODEL_LODEEDGE07 = 9060, + MODEL_LODEEDGE08 = 9061, + MODEL_ARPRTCRPRK05_LVS = 9062, + MODEL_LODRTCRPRK04_LVS = 9063, + MODEL_VGSELAND36_LVS = 9064, + MODEL_VGSELAND35_LVS = 9065, + MODEL_VGSELAND37_LVS = 9066, + MODEL_LODELAND37_LVS = 9067, + MODEL_LODELAND35_LVS = 9068, + MODEL_LODELAND36_LVS = 9069, + MODEL_CASROYALE02_LVS = 9070, + MODEL_CASROYALE03_LVS = 9071, + MODEL_CASROYALE04_LVS = 9072, + MODEL_LODROYALE03_LVS = 9073, + MODEL_LODROYALE02_LVS = 9074, + MODEL_LODROYALE01_LVS = 9075, + MODEL_SPHINX01_LVS = 9076, + MODEL_LODINX01_LVS = 9077, + MODEL_EXCALIBUR04_LVS = 9078, + MODEL_LODALIBUR04_LVS = 9079, + MODEL_EXCALIBUR05_LVS = 9080, + MODEL_LODALIBUR05_LVS = 9081, + MODEL_VGSECNSTRCT17 = 9082, + MODEL_VGSECNSTRCT18 = 9083, + MODEL_LODECNSTRCT18 = 9084, + MODEL_LODECNSTRCT02 = 9085, + MODEL_VGEHSELAND06 = 9086, + MODEL_VGEHSELAND07 = 9087, + MODEL_VGSENITLIT01 = 9088, + MODEL_VGSENITLIT02 = 9089, + MODEL_VGEFERRYLAND = 9090, + MODEL_LODFERRYLAND = 9091, + MODEL_LODRPRKWALL_LVS = 9092, + MODEL_CMDGRGDOOR_LVS = 9093, + MODEL_CSRELIGHTS_DY = 9094, + MODEL_CSRELIGHTS_NT = 9095, + MODEL_LODELIGHTS_DY = 9096, + MODEL_LODELIGHTS_NT = 9097, + MODEL_VGSESVHSE01 = 9098, + MODEL_VGSESVEHSE1 = 9099, + MODEL_LUXORLIGHT_DY = 9100, + MODEL_LUXORLIGHT_NT = 9101, + MODEL_LODORLIGHT_DY = 9102, + MODEL_LODORLIGHT_NT = 9103, + MODEL_VGEPYRMD_NT = 9104, + MODEL_LODPYRMD_NT = 9105, + MODEL_VGSEAMUNTN = 9106, + MODEL_LODTEBRDG01_LVS = 9107, + MODEL_VGSETRAINFENCE06 = 9108, + MODEL_VGSETRAINFENCE07 = 9109, + MODEL_VGSETRAINFENCE08 = 9110, + MODEL_VGSETRAINFENCE09 = 9111, + MODEL_VGSETRAINFENCE10 = 9112, + MODEL_VGBNDFNCE = 9113, + MODEL_WDDNGCHPL01_LVS = 9114, + MODEL_VEGASEROAD138 = 9115, + MODEL_VEGASEROAD139 = 9116, + MODEL_VEGASEROAD140 = 9117, + MODEL_VEGASEROAD141 = 9118, + MODEL_VGSEEDGE14 = 9119, + MODEL_VEGASEROAD143 = 9120, + MODEL_FLMNGONEON01 = 9121, + MODEL_TRIADNEON01 = 9122, + MODEL_BALLYNEON01 = 9123, + MODEL_CRSPLCNEON = 9124, + MODEL_LXORNEON = 9125, + MODEL_CMTNEON01 = 9126, + MODEL_CMTNEON02 = 9127, + MODEL_LXORNEON2 = 9128, + MODEL_PIRTNEON = 9129, + MODEL_LODEAMUNTN = 9130, + MODEL_SHBBYHSWALL13_LVS = 9131, + MODEL_TRIADCASIGN_LVS = 9132, + MODEL_LODADCASIGN_LVS = 9133, + MODEL_LODORPILLAR03_LVS = 9134, + MODEL_SBVGSESEAFLOOR01 = 9135, + MODEL_SBVGSESEAFLOOR02 = 9136, + MODEL_SBVGSESEAFLOOR04 = 9137, + MODEL_SBVGSESEAFLOOR05 = 9138, + MODEL_SBVGSESEAFLOOR06 = 9139, + MODEL_SBVGSESEAFLOOR07 = 9140, + MODEL_LODSEABED100 = 9141, + MODEL_LODSEABED101 = 9142, + MODEL_LODSEABED103 = 9143, + MODEL_LODSEABED104 = 9144, + MODEL_LODSEABED105 = 9145, + MODEL_LODSEABED106 = 9146, + MODEL_LODIBRDG01_LVS = 9147, + MODEL_LODASEROAD140 = 9148, + MODEL_LODASEROAD141 = 9149, + MODEL_VEGASEROAD144 = 9150, + MODEL_LODASEROAD144 = 9151, + MODEL_BUSH13_LVS = 9152, + MODEL_BUSH14_LVS = 9153, + MODEL_TRIADWIRES = 9154, + MODEL_LODEEDGE14 = 9155, + MODEL_LODASEROAD139 = 9156, + MODEL_LODELAND08_LVS = 9157, + MODEL_LODASEROAD137 = 9158, + MODEL_PIRTSHP02_LVS = 9159, + MODEL_LODASEROAD143 = 9160, + MODEL_LODASEROAD138 = 9161, + MODEL_SHOP01_LVS = 9162, + MODEL_SHOP04_LVS = 9163, + MODEL_VGSRAILBUILD02 = 9164, + MODEL_VGSRAILBUILD03 = 9165, + MODEL_VGSRAILBUILD04 = 9166, + MODEL_VGSRAILBUILD05 = 9167, + MODEL_VGSRAILBUILD06 = 9168, + MODEL_VGSEPRTLSTATION1 = 9169, + MODEL_LODEPRTLSTATION1 = 9170, + MODEL_VGSEPRTLSTATION2 = 9171, + MODEL_LODEPRTLSTATION2 = 9172, + MODEL_VGSEEDGE18 = 9173, + MODEL_TISLANDBRDGE01_LVS = 9174, + MODEL_VGSENITLIT03 = 9175, + MODEL_LODASEROAD064 = 9176, + MODEL_LODASEROAD065 = 9177, + MODEL_LODASEROAD066 = 9178, + MODEL_LODASEROAD063 = 9179, + MODEL_LODASEROAD069 = 9180, + MODEL_LODASEROAD068 = 9181, + MODEL_LODASEROAD067 = 9182, + MODEL_LODASEROAD070 = 9183, + MODEL_VGEASTBILLBRD08 = 9184, + MODEL_VGEASTBILLBRD07 = 9185, + MODEL_VGEASTBILLBRD05 = 9186, + MODEL_VGEASTBILLBRD04 = 9187, + MODEL_VGEASTBILLBRD02 = 9188, + MODEL_VGEASTBILLBRD06 = 9189, + MODEL_VGEASTBILLBRD01 = 9190, + MODEL_VGEASTBILLBRD03 = 9191, + MODEL_VGEGASSGN01_LVS = 9192, + MODEL_VGEGASSGN03_LVS = 9193, + MODEL_ROAD04SFN = 9205, + MODEL_LAND2_SFN10 = 9206, + MODEL_LAND2_SFN01 = 9207, + MODEL_LAND2_SFN19 = 9208, + MODEL_LAND_SFN06 = 9209, + MODEL_LAND2_SFN11 = 9210, + MODEL_LAND2_SFN09 = 9211, + MODEL_LAND2_SFN13 = 9212, + MODEL_LAND2_SFN15 = 9213, + MODEL_LAND2_SFN12 = 9214, + MODEL_LAND2_SFN17 = 9215, + MODEL_LAND_SFN13 = 9216, + MODEL_LAND2_SFN16 = 9217, + MODEL_LAND_SFN15 = 9218, + MODEL_LAND2_SFN14 = 9219, + MODEL_VILLA_SFN_CHRIS_01 = 9220, + MODEL_VILLA_SFN_CHRIS_02 = 9221, + MODEL_ROAD08SFN = 9222, + MODEL_LAND_SFN21 = 9223, + MODEL_COCK_SFN02 = 9224, + MODEL_LAND_SFN22 = 9225, + MODEL_LAND_SFN18 = 9226, + MODEL_MORESFNSHIT20 = 9227, + MODEL_MORESFNSHIT22 = 9228, + MODEL_SFN_COAST03 = 9229, + MODEL_SFN_COAST01 = 9230, + MODEL_ROAD01SFN = 9231, + MODEL_ROAD06SFN = 9232, + MODEL_ROAD07SFN = 9233, + MODEL_LAND_SFN20 = 9234, + MODEL_LAND2_SFN18 = 9235, + MODEL_COCK_SFN07 = 9236, + MODEL_LIGHHOUSE_SFN = 9237, + MODEL_MORESFNSHIT28 = 9238, + MODEL_TRACK01_SFN = 9239, + MODEL_TRACK02_SFN = 9240, + MODEL_COPBITS_SFN = 9241, + MODEL_COCK_SFN06 = 9242, + MODEL_HRBORBUILD_SFN02 = 9243, + MODEL_HRBORBUILD_SFN01 = 9244, + MODEL_CSTGUARD_SFN01 = 9245, + MODEL_COCK_SFN09 = 9246, + MODEL_HRBRMSTR_SFN01 = 9247, + MODEL_COCK_SFN08 = 9248, + MODEL_BEACH_SFN01 = 9249, + MODEL_ROAD02SFN = 9250, + MODEL_ROAD03SFN = 9251, + MODEL_ROAD05SFN = 9252, + MODEL_SFN_COAST04 = 9253, + MODEL_CARPARK_SFN01 = 9254, + MODEL_CARPARK_SFN02 = 9255, + MODEL_COCK_SFN14 = 9256, + MODEL_SFN_COAST05 = 9257, + MODEL_PRESHOOSML02_SFN = 9258, + MODEL_PRESHOOSBIG02_SFN = 9259, + MODEL_HRBORBUILD_SFN03 = 9260, + MODEL_LAND_SFN19 = 9261, + MODEL_HWAY_SFN01 = 9262, + MODEL_LOD_HWAY_SFN02 = 9263, + MODEL_HWAY_SFN03 = 9264, + MODEL_HWAY_SFN04 = 9265, + MODEL_HWAY_SFN05 = 9266, + MODEL_HWAY_SFN06 = 9267, + MODEL_GGBRIDGEEND_SFN = 9269, + MODEL_PRESHOOSBIG01_SFN01 = 9270, + MODEL_PRESHOOS03_SFN01 = 9271, + MODEL_PRESHOOS03_SFN02 = 9272, + MODEL_PRESHOOS01_SFN03 = 9273, + MODEL_PRESHOOS03_SFN03 = 9274, + MODEL_PRESHOOSML02_SFN01 = 9275, + MODEL_LAND_SFN17 = 9276, + MODEL_BIGSFNLITE02 = 9277, + MODEL_BIGSFNLITE05 = 9278, + MODEL_BIGSFNLITE08 = 9279, + MODEL_BIGSFNLITE10 = 9280, + MODEL_BIGSFNLITE12 = 9281, + MODEL_BIGSFNLITE14 = 9282, + MODEL_BIGSFNLITE16 = 9283, + MODEL_LAND2_SFN02 = 9284, + MODEL_LAND2_SFN04 = 9285, + MODEL_LAND2_SFN03 = 9286, + MODEL_LAND2_SFN06 = 9287, + MODEL_LAND2_SFN05 = 9288, + MODEL_LAND2_SFN20 = 9289, + MODEL_LAND2_SFN07 = 9290, + MODEL_LAND2_SFN08 = 9291, + MODEL_SFN_CRASHBAR06 = 9292, + MODEL_SFN_CRASHBAR01 = 9293, + MODEL_SFN_CRASHBAR02 = 9294, + MODEL_SFN_CRASHBAR03 = 9295, + MODEL_SFN_CRASHBAR04 = 9296, + MODEL_SFN_CRASHBAR05 = 9297, + MODEL_SFN_CRASHBAR07 = 9298, + MODEL_SFN_CLOTHESSHOP_CM1 = 9299, + MODEL_SFN_TOWN02 = 9300, + MODEL_TEMPOBJ_SFN04 = 9301, + MODEL_SFN_TOWN01 = 9302, + MODEL_SFN_TOWN03 = 9303, + MODEL_LAND_SFN23 = 9304, + MODEL_GROUND01_SFN_CM = 9305, + MODEL_SFN_CM_GRND02 = 9306, + MODEL_SFN_SHOPBITS01 = 9307, + MODEL_SFN_DOORWAY02 = 9308, + MODEL_SFN_CM_GRNDSHOP = 9309, + MODEL_CHAPEL_SFN = 9310, + MODEL_SFN_NEWLAND_CM02 = 9311, + MODEL_SFN_NEWLAND_CM03 = 9312, + MODEL_SFN_NEWLAND_CM01 = 9313, + MODEL_ADVERT01_SFN = 9314, + MODEL_CARPARK01_SFS_CM = 9315, + MODEL_SHOPSTAIRSSFN1 = 9316, + MODEL_HEDGE02_SFN_CM = 9317, + MODEL_HEDGE03SFN_CM = 9318, + MODEL_PRESHOOS03_SFN04 = 9319, + MODEL_PRESHOOSBIG02_SFN01 = 9320, + MODEL_GARAGE_SFN01 = 9321, + MODEL_PRESHOOS03_SFN05 = 9322, + MODEL_MORESFNSHIT29 = 9323, + MODEL_PRESHOOSBIG02_SFN02 = 9324, + MODEL_PRESHOOS03_SFN06 = 9325, + MODEL_PRESHOOS03_SFN07 = 9326, + MODEL_MORESFNSHIT30 = 9327, + MODEL_MORESFNSHIT31 = 9328, + MODEL_SFN_COAST06 = 9329, + MODEL_SFN_WALL_CM01 = 9330, + MODEL_SFN_PRESHEDGE1 = 9331, + MODEL_SFN_WALL_CM02 = 9332, + MODEL_SFNHEDGE_PRES02 = 9333, + MODEL_HEDGE09_SFN_CM = 9334, + MODEL_SFN_HEDGE_CM_010 = 9335, + MODEL_HEDGE04_SFN_CM = 9336, + MODEL_SFN_WALL_CM2 = 9337, + MODEL_LAND_SFN19B = 9338, + MODEL_SFNVILLA001_CM = 9339, + MODEL_SFNFENCE_CM01 = 9340, + MODEL_VILLA_SFN_CHRIS_04 = 9341, + MODEL_LAND2_SFN09A = 9342, + MODEL_SFN_FENCE_CM2 = 9343, + MODEL_SFNHDGE_PRESI_CM10 = 9344, + MODEL_SFN_PIER_GRASSBIT = 9345, + MODEL_SFNLAND_VILLACM1 = 9346, + MODEL_SFNPRES_HDGE_10 = 9347, + MODEL_SFN_HEDGE05_CM = 9348, + MODEL_SFNFENCE_PRES_5 = 9349, + MODEL_SFN_PRES_HEDGE9 = 9350, + MODEL_SFN_STAIRS_BIT = 9351, + MODEL_CABLES = 9352, + MODEL_LAND_SFN17A = 9353, + MODEL_LODD02SFN = 9354, + MODEL_LODD03SFN = 9355, + MODEL_LODD07SFN = 9356, + MODEL_LODD05SFN = 9357, + MODEL_LODD04SFN = 9358, + MODEL_LODD06SFN = 9359, + MODEL_LODD08SFN = 9360, + MODEL_BOATOFFICE_SFN = 9361, + MODEL_BOATOFFICE2_SFN = 9362, + MODEL_LODD01SFN = 9363, + MODEL_LODPARK_SFN01 = 9364, + MODEL_LOD_COAST05_SFN = 9365, + MODEL_LOD_COAST69_SFN = 9366, + MODEL_LOD_COAST06_SFN = 9367, + MODEL_LOD_COAST04_SFN = 9368, + MODEL_LOD_COAST03_SFN = 9369, + MODEL_LOD_TOWN02 = 9370, + MODEL_LOD_TOWN01 = 9371, + MODEL_LOD_TOWN03 = 9372, + MODEL_LODPOBJ_SFN04 = 9373, + MODEL_LOD_CLOTHESSHOP_CM1 = 9374, + MODEL_LODPARK01_SFS_CM = 9375, + MODEL_LODD_SFN23 = 9376, + MODEL_LOD_PIER_GRASSBIT = 9377, + MODEL_LODORBUILD_SFN02 = 9378, + MODEL_LODORBUILD_SFN01 = 9379, + MODEL_LODORBUILD_SFN03 = 9380, + MODEL_LODGUARD_SFN01 = 9381, + MODEL_LODRMSTR_SFN01 = 9382, + MODEL_LODBITS_SFN = 9383, + MODEL_LODTOFFICE_SFN = 9384, + MODEL_LODSHOOS03_SFN06 = 9385, + MODEL_LODSHOOSBIG02_SFN01 = 9386, + MODEL_LODLA_SFN_CHRIS_02 = 9387, + MODEL_LODLA_SFN_CHRIS_01 = 9388, + MODEL_LODLA_SFN_CHRIS_04 = 9389, + MODEL_LODPEL_SFN = 9390, + MODEL_LODSHOOSML02_SFN = 9391, + MODEL_LODPARK_SFN02 = 9392, + MODEL_LODK_SFN14 = 9393, + MODEL_LODK_SFN02 = 9394, + MODEL_LOD_NEWLAND_CM03 = 9395, + MODEL_LOD_NEWLAND_CM02 = 9396, + MODEL_LODD_SFN20 = 9397, + MODEL_LOD_CM_GRND02 = 9398, + MODEL_LODD_SFN19B = 9399, + MODEL_LODD_SFN19 = 9400, + MODEL_LODK_SFN06 = 9401, + MODEL_LODK_SFN07 = 9402, + MODEL_LODK_SFN09 = 9403, + MODEL_LODCK02_SFN = 9404, + MODEL_LODCK01_SFN = 9405, + MODEL_LODD_SFN21 = 9406, + MODEL_LODD_SFN17A = 9407, + MODEL_LODK_SFN08 = 9408, + MODEL_LODD_SFN22 = 9409, + MODEL_LODSHOOS03_SFN05 = 9410, + MODEL_LODSHOOS03_SFN04 = 9411, + MODEL_LODSHOOSBIG02_SFN02 = 9412, + MODEL_LODSHOOS03_SFN07 = 9413, + MODEL_LODESFNSHIT28 = 9414, + MODEL_LODESFNSHIT20 = 9415, + MODEL_LODESFNSHIT30 = 9416, + MODEL_LODESFNSHIT31 = 9417, + MODEL_LODESFNSHIT22 = 9418, + MODEL_LODESFNSHIT29 = 9419, + MODEL_LODSHOOSBIG01_SFN01 = 9420, + MODEL_LOD_STAIRS_BIT = 9421, + MODEL_LODSHOOSBIG02_SFN = 9422, + MODEL_LODSHOOS03_SFN03 = 9423, + MODEL_LODSHOOS03_SFN01 = 9424, + MODEL_LODSHOOS03_SFN02 = 9425, + MODEL_LODSHOOS01_SFN03 = 9426, + MODEL_LODSHOOSML02_SFN01 = 9427, + MODEL_LODPSTAIRSSFN02 = 9428, + MODEL_LOD_HEDGE05_CM = 9429, + MODEL_LODHEDGE_PRES02 = 9430, + MODEL_LODGE04_SFN_CM = 9431, + MODEL_LOD_WALL_CM01 = 9432, + MODEL_LOD_WALL_CM2 = 9433, + MODEL_LOD_PRESHEDGE1 = 9434, + MODEL_LODGE09_SFN_CM = 9435, + MODEL_LODHHOUSE_SFN = 9436, + MODEL_SBEDSFN4_SFN = 9437, + MODEL_SBEDSFN1_SFN = 9438, + MODEL_SBEDSFN2_SFN = 9439, + MODEL_SBEDSFN3_SFN = 9440, + MODEL_LODDSFN1_SFN = 9441, + MODEL_LODDSFN2_SFN = 9442, + MODEL_LODDSFN3_SFN = 9443, + MODEL_LODDSFN4_SFN = 9444, + MODEL_LOD_LAND_SFN15 = 9445, + MODEL_LOD_LAND2_SFN19 = 9446, + MODEL_LOD_LAND2_SFN08 = 9447, + MODEL_LOD_LAND2_SFN07 = 9448, + MODEL_LOD_LAND2_SFN16 = 9449, + MODEL_LOD_LAND2_SFN18 = 9450, + MODEL_LOD_BEACH_SFN01 = 9451, + MODEL_LOD_LAND2_SFN14 = 9452, + MODEL_LOD_LAND_SFN17 = 9453, + MODEL_LOD_LAND2_SFN20 = 9454, + MODEL_LOD_LAND2_SFN15 = 9455, + MODEL_LOD_LAND2_SFN13 = 9456, + MODEL_LOD_LAND_SFN13 = 9457, + MODEL_LOD_LAND2_SFN05 = 9458, + MODEL_LOD_LAND_SFN06 = 9459, + MODEL_LOD_LAND2_SFN17 = 9460, + MODEL_LOD_LAND2_SFN06 = 9461, + MODEL_LOD_LAND2_SFN04 = 9462, + MODEL_LOD_LAND2_SFN12 = 9463, + MODEL_LOD_LAND2_SFN03 = 9464, + MODEL_LOD_LAND2_SFN11 = 9465, + MODEL_LOD_LAND2_SFN09 = 9466, + MODEL_LOD_LAND2_SFN10 = 9467, + MODEL_LOD_LAND2_SFN01 = 9468, + MODEL_LOD_LAND2_SFN02 = 9469, + MODEL_LOD_LAND_SFN18 = 9470, + MODEL_LOD_LAND2_SFN09A01 = 9471, + MODEL_LOD_HWAY_SFN01 = 9472, + MODEL_LOD_HWAY_SFN04 = 9473, + MODEL_LOD_HWAY_SFN03 = 9474, + MODEL_LOD_HWAY_SFN05 = 9475, + MODEL_HWAY_SFN02 = 9476, + MODEL_LOD_HWAY_SFN06 = 9477, + MODEL_LODRIDGEEND_SFN = 9478, + MODEL_CHINAGATE = 9482, + MODEL_LAND_16_SFW = 9483, + MODEL_LAND_46_SFW = 9484, + MODEL_ROAD_SFW02 = 9485, + MODEL_ROAD_SFW03 = 9486, + MODEL_ROAD_SFW04 = 9487, + MODEL_ROAD_SFW05 = 9488, + MODEL_ROAD_SFW06 = 9489, + MODEL_ROAD_SFW07 = 9490, + MODEL_ROAD_SFW08 = 9491, + MODEL_ROAD_SFW09 = 9492, + MODEL_ROAD_SFW10 = 9493, + MODEL_TEMPBUILD_SFW41 = 9494, + MODEL_TEMPBUILD_SFW42 = 9495, + MODEL_SBOXBLD4_SFW02 = 9496, + MODEL_SBOXBLD4_SFW69 = 9497, + MODEL_SBOXBLD4_SFW70 = 9498, + MODEL_SBOXBLD4_SFW71 = 9499, + MODEL_SBOXBLD4_SFWA = 9500, + MODEL_SFWBOX_SFW27 = 9501, + MODEL_SFWBOX_SFW43 = 9502, + MODEL_SBOXBLD4_SFW72 = 9503, + MODEL_SBOXBLD4_SFW73 = 9504, + MODEL_GARD_SFW01 = 9505, + MODEL_BIGBOXTMP02 = 9506, + MODEL_BIGBOXTMP03 = 9507, + MODEL_BIGBOXTMP09 = 9508, + MODEL_BIGBOXTMP05 = 9509, + MODEL_BIGBOXTMP06 = 9510, + MODEL_BIGBOXTMP07 = 9511, + MODEL_BIGBOXTMP08 = 9512, + MODEL_BIGBOXTMP1 = 9513, + MODEL_SUPASAVE_SFW = 9514, + MODEL_BIGBOXTMP18 = 9515, + MODEL_BIGBOXTMP17 = 9516, + MODEL_BIGBOXTMP16 = 9517, + MODEL_BIGBOXTMP15 = 9518, + MODEL_BIGBOXTMP20 = 9519, + MODEL_BOXBUILDSFW_31 = 9520, + MODEL_MORBOXES03 = 9521, + MODEL_MORBOXES04 = 9522, + MODEL_NEWVIC2_SFW = 9523, + MODEL_BLOKMOD1_SFW = 9524, + MODEL_BOIGAS_SFW03 = 9525, + MODEL_BOIGAS_SFW02 = 9526, + MODEL_BOIGAS_SFW01 = 9527, + MODEL_BOIGAS_SFW04 = 9528, + MODEL_BLOKMOD3_SFW = 9529, + MODEL_SANDBCH_SFW02 = 9530, + MODEL_LODKMOD3_SFW = 9531, + MODEL_LODKMOD1_SFW = 9532, + MODEL_LODKMOD2_SFW69 = 9533, + MODEL_LODVIC1_SFW69B = 9534, + MODEL_LODVIC2_SFW = 9535, + MODEL_LODBIG_SFW1 = 9536, + MODEL_LODPBUILD_SFW22 = 9537, + MODEL_LODPBUILD_SFW41 = 9538, + MODEL_LODASAVE_SFW = 9539, + MODEL_LODPBUILD_SFW42 = 9540, + MODEL_LODXBLD4_SFW71 = 9541, + MODEL_LODXBLD4_SFW70 = 9542, + MODEL_LODXBLD4_SFW02 = 9543, + MODEL_LODXBLD4_SFW69 = 9544, + MODEL_LODBOXES04 = 9545, + MODEL_LODBOXES03 = 9546, + MODEL_BLOKCUT_SFW04 = 9547, + MODEL_LODKMOD3_SFW03 = 9548, + MODEL_SFW_BOXWEST10 = 9549, + MODEL_SFW_BOXWEST04 = 9550, + MODEL_SANDBCH_SFW04 = 9551, + MODEL_SANDBCH_SFW03 = 9552, + MODEL_SANDBCH_SFW69 = 9553, + MODEL_PARK3_SFW = 9554, + MODEL_PARK1_SFW = 9555, + MODEL_PARK2_SFW = 9556, + MODEL_LAKE_SFW = 9557, + MODEL_CABLES_SFW = 9558, + MODEL_FESCAPE_SFW07 = 9559, + MODEL_FESCAPE_SFW08 = 9560, + MODEL_FESCAPE_SFW09 = 9561, + MODEL_FESCAPE_SFW02 = 9562, + MODEL_FESCAPE_SFW04 = 9563, + MODEL_FIRSCAPE_SFW04 = 9564, + MODEL_FESCAPE_SFW06 = 9565, + MODEL_FESCAPE_SFW01 = 9566, + MODEL_CABLES_SFW01 = 9567, + MODEL_CABLES_SFW24 = 9568, + MODEL_CABLES_SFW28 = 9569, + MODEL_ROAD_SFW11 = 9570, + MODEL_ROAD_SFW12 = 9571, + MODEL_BLOKMOD3_SFW04 = 9572, + MODEL_NEWVIC1_SFW = 9573, + MODEL_LOD_NEW1SFW = 9574, + MODEL_ARCHBRIJ_SFW = 9575, + MODEL_FRWAY_BOX1 = 9576, + MODEL_FRWAY_BOX2 = 9577, + MODEL_BLOKMOD2_SFW01 = 9578, + MODEL_BLOKMOD2_SFW03 = 9579, + MODEL_SBOXBLD4_SFW83 = 9580, + MODEL_SBOXBLD4_SFW84 = 9581, + MODEL_TEMP_SFW35 = 9582, + MODEL_FREIGHT_SFW15 = 9583, + MODEL_FREIGHT_SFW31 = 9584, + MODEL_FREIGHT_SFW33 = 9585, + MODEL_FREIGHT_DECK_SFW = 9586, + MODEL_FREIGHT_BOX_SFW01 = 9587, + MODEL_FREIGHTBOX_INSFW = 9588, + MODEL_FRGHT_BOXES08 = 9589, + MODEL_FREIGHT_INTERIORSFW = 9590, + MODEL_ROAD_SFW13 = 9591, + MODEL_SFW_BOXWEST12 = 9592, + MODEL_HOSBIBAL_SFW = 9593, + MODEL_FESCAPE_SFW03 = 9594, + MODEL_TEMPBUILD_SFW22 = 9595, + MODEL_LAND_04_SFW = 9596, + MODEL_SANDBCH_SFW01 = 9597, + MODEL_SFW_BOXWEST02 = 9598, + MODEL_VICBIG_SFW1 = 9599, + MODEL_ROAD_SFW14 = 9600, + MODEL_ROAD_SFW15 = 9601, + MODEL_ROAD_SFW16 = 9602, + MODEL_ROAD_16_SFW = 9603, + MODEL_FRGHT_BOXES19 = 9604, + MODEL_LAND_01_SFW = 9605, + MODEL_LAND_34_SFW = 9606, + MODEL_LAND_22_SFW = 9607, + MODEL_GGATE_PARK_SFW = 9608, + MODEL_LAND_37_SFW = 9609, + MODEL_LAND_42_SFW = 9610, + MODEL_LAND_43_SFW = 9611, + MODEL_FERRYBIT1_SFW = 9612, + MODEL_FERRYBIT3_SFW = 9613, + MODEL_DONUTS2_SFW = 9614, + MODEL_DONUTS_SFW = 9615, + MODEL_LAND_20_SFW = 9616, + MODEL_BOIGAGR_SFW = 9617, + MODEL_SCAFF1_SFW = 9618, + MODEL_LODIGHT_SFW33 = 9619, + MODEL_LODIGHT_SFW31 = 9620, + MODEL_LODIGHT_BOX_SFW01 = 9621, + MODEL_LODRYBIT1_SFW = 9622, + MODEL_TOLL_SFW = 9623, + MODEL_SPRAYSFW = 9624, + MODEL_SPDR_SFW = 9625, + MODEL_LODKMOD2_SFW03 = 9626, + MODEL_LODKMOD2_SFW01 = 9627, + MODEL_LODXBLD4_SFW83 = 9628, + MODEL_LODXBLD4_SFW84 = 9629, + MODEL_LODAY_BOX2 = 9630, + MODEL_LODXBLD4_SFW72 = 9631, + MODEL_LODBOX_SFW43 = 9632, + MODEL_LODBOX_SFW27 = 9633, + MODEL_LODXBLD4_SFW73 = 9634, + MODEL_LODAGE_SFW = 9635, + MODEL_LODROADS_SFW03 = 9636, + MODEL_LODROADS_SFW08 = 9637, + MODEL_LODROADS_SFW07 = 9638, + MODEL_LODROADS_SFW06 = 9639, + MODEL_LODROADS_SFW09 = 9640, + MODEL_LODROADS_SFW10 = 9641, + MODEL_LODROADS_SFW11 = 9642, + MODEL_LODROADS_SFW12 = 9643, + MODEL_LODROADS_SFW14 = 9644, + MODEL_LODROADS_SFW05 = 9645, + MODEL_LODROADS_SFW04 = 9646, + MODEL_LODROADS_SFW13 = 9647, + MODEL_LODROADS_SFW15 = 9648, + MODEL_LOD_03_SFW = 9649, + MODEL_LODROADS_SFW02 = 9650, + MODEL_LODROADS_SFW01 = 9651, + MODEL_ROAD_SFW17 = 9652, + MODEL_ROAD_SFW18 = 9653, + MODEL_LODROADS_SFW18 = 9654, + MODEL_LODD_43_SFW = 9655, + MODEL_LODD_42_SFW = 9656, + MODEL_LODTE_PARK_SFW = 9657, + MODEL_LODUTS_SFW = 9658, + MODEL_LODSD_04_SFW = 9659, + MODEL_LODD_22_SFW = 9660, + MODEL_LODD_34_SFW = 9661, + MODEL_LODUTS2_SFW = 9662, + MODEL_LODKMOD3_SFW04 = 9663, + MODEL_LODBOXTMP15 = 9664, + MODEL_LODBOXTMP16 = 9665, + MODEL_LODBOXTMP17 = 9666, + MODEL_LODBOXTMP18 = 9667, + MODEL_LODBOXTMP19 = 9668, + MODEL_LODBOXTMP07 = 9669, + MODEL_LODBOXTMP05 = 9670, + MODEL_LODBOXTMP06 = 9671, + MODEL_LODBOXTMP03 = 9672, + MODEL_LODBOXTMP08 = 9673, + MODEL_LODBOXTMP1 = 9674, + MODEL_LODBOXTMP02 = 9675, + MODEL_LODBOXTMP09 = 9676, + MODEL_LODBOXTMP20 = 9677, + MODEL_LODAY_BOX1 = 9678, + MODEL_LODXBLD4_SFWA = 9679, + MODEL_TRAMSTAT_SFW = 9680, + MODEL_LODMSTAT_SFW = 9681, + MODEL_CARSPACES1_SFW = 9682, + MODEL_GGBRIG_07_SFW = 9683, + MODEL_LODRIG_02_SFW = 9684, + MODEL_GGBRIG_02_SFW = 9685, + MODEL_LODRIG_06_SFW = 9686, + MODEL_LODRIG_05_SFW = 9687, + MODEL_LOD_LOPOLBRIJ1 = 9688, + MODEL_GGBRIG_05_SFW = 9689, + MODEL_GGBRIG_06_SFW = 9690, + MODEL_LODRIG_03_SFW = 9691, + MODEL_LODRIG_01_SFW = 9692, + MODEL_GGBRIG_03_SFW = 9693, + MODEL_GGBRIG_01_SFW = 9694, + MODEL_LODRIG_04_SFW = 9695, + MODEL_GGBRIG_04_SFW = 9696, + MODEL_CARSPACES3_SFW = 9697, + MODEL_BRIDGE_ARGH = 9698, + MODEL_ROAD_SFW19 = 9699, + MODEL_ROAD_SFW20 = 9700, + MODEL_ROAD_SFW21 = 9701, + MODEL_ROAD_SFW22 = 9702, + MODEL_ROAD_SFW23 = 9703, + MODEL_ROAD_SFW24 = 9704, + MODEL_TUNNEL_SFW = 9705, + MODEL_ROAD_SFW25 = 9706, + MODEL_ROAD_SFW26 = 9707, + MODEL_ROAD_SFW27 = 9708, + MODEL_ROAD_SFW01 = 9709, + MODEL_ROAD_SFW29 = 9710, + MODEL_ROAD_SFW30 = 9711, + MODEL_ROAD_SFW31 = 9712, + MODEL_ROAD_SFW32 = 9713, + MODEL_ROAD_SFW33 = 9714, + MODEL_ROAD_SFW34 = 9715, + MODEL_ROAD_SFW55 = 9716, + MODEL_ROAD_SFW35 = 9717, + MODEL_ROAD_SFW36 = 9718, + MODEL_ROAD_SFW37 = 9719, + MODEL_ROAD_SFW38 = 9720, + MODEL_ROAD_SFW39 = 9721, + MODEL_ROAD_SFW40 = 9722, + MODEL_ROAD_SFW41 = 9723, + MODEL_ROAD_SFW42 = 9724, + MODEL_ROAD_SFW43 = 9725, + MODEL_ROAD_SFW44 = 9726, + MODEL_ROAD_SFW45 = 9727, + MODEL_ROAD_SFW46 = 9728, + MODEL_ROAD_SFW47 = 9729, + MODEL_ROAD_SFW48 = 9730, + MODEL_ROAD_SFW49 = 9731, + MODEL_ROAD_SFW50 = 9732, + MODEL_ROAD_SFW51 = 9733, + MODEL_ROAD_SFW52 = 9734, + MODEL_ROAD_SFW53 = 9735, + MODEL_ROAD_SFW54 = 9736, + MODEL_BLOKMOD3_SFW69 = 9737, + MODEL_BLOKMOD2_SFW69 = 9738, + MODEL_NEWVIC1_SFW69B = 9739, + MODEL_NEWVIC1_SFW69 = 9740, + MODEL_BLOKMOD1_SFWC = 9741, + MODEL_BLOKMOD1_SFWB = 9742, + MODEL_ROCK_COASTSFW2 = 9743, + MODEL_ROCK_COASTSFW1 = 9744, + MODEL_ROCK_COASTSFW3 = 9745, + MODEL_ROCK_COASTSFW4 = 9746, + MODEL_ROAD_SFW90 = 9747, + MODEL_SFW_BOXWEST03 = 9748, + MODEL_SFW_BOXWEST01 = 9749, + MODEL_SFW_BOXWEST05 = 9750, + MODEL_SFW_BOXWEST06 = 9751, + MODEL_SFW_BOXWEST08 = 9752, + MODEL_SFW_BOXWEST09 = 9753, + MODEL_SFW_BOXWEST11 = 9754, + MODEL_LODP_SFW35 = 9755, + MODEL_LODKMOD1_SFWB = 9756, + MODEL_LODKMOD1_SFWC = 9757, + MODEL_LODKMOD2_SFW = 9758, + MODEL_LODVIC1_SFW = 9759, + MODEL_LODVIC1_SFW69 = 9760, + MODEL_FREIGHT_ALFA_SFW = 9761, + MODEL_SFW_BOXWEST07 = 9762, + MODEL_BLOKCUT_SFW01 = 9763, + MODEL_BLOKCUT_SFW02 = 9764, + MODEL_BLOKCUT_SFW03 = 9765, + MODEL_SCAFF3_SFW = 9766, + MODEL_SCAFF2_SFW = 9767, + MODEL_LODKMOD3_SFW69 = 9768, + MODEL_LODKCUT_SFW02 = 9769, + MODEL_LODKCUT_SFW01 = 9770, + MODEL_LODKCUT_SFW04 = 9771, + MODEL_LODNEL_SFW = 9772, + MODEL_LODROADS_SFW17 = 9773, + MODEL_LODROADS_SFW16 = 9774, + MODEL_LODROADS_SFW21 = 9775, + MODEL_LODROADS_SFW22 = 9776, + MODEL_LODROADS_SFW23 = 9777, + MODEL_LODROADS_SFW19 = 9778, + MODEL_LODROADS_SFW20 = 9779, + MODEL_LODROADS_SFW24 = 9780, + MODEL_LODROADS_SFW25 = 9781, + MODEL_LODROADS_SFW26 = 9782, + MODEL_LODROADS_SFW27 = 9783, + MODEL_LODROADS_SFW28 = 9784, + MODEL_LODROADS_SFW30 = 9785, + MODEL_LODROADS_SFW29 = 9786, + MODEL_LODROADS_SFW31 = 9787, + MODEL_LODROADS_SFW32 = 9788, + MODEL_LODROADS_SFW33 = 9789, + MODEL_LODROADS_SFW36 = 9790, + MODEL_LODROADS_SFW37 = 9791, + MODEL_LODROADS_SFW38 = 9792, + MODEL_LODROADS_SFW39 = 9793, + MODEL_LODROADS_SFW40 = 9794, + MODEL_LODROADS_SFW42 = 9795, + MODEL_LODROADS_SFW41 = 9796, + MODEL_LODROADS_SFW43 = 9797, + MODEL_LODROADS_SFW44 = 9798, + MODEL_LODROADS_SFW45 = 9799, + MODEL_LODROADS_SFW46 = 9800, + MODEL_LODROADS_SFW47 = 9801, + MODEL_LODROADS_SFW48 = 9802, + MODEL_LODROADS_SFW49 = 9803, + MODEL_LODROADS_SFW50 = 9804, + MODEL_LODROADS_SFW51 = 9805, + MODEL_LODROADS_SFW52 = 9806, + MODEL_LODROADS_SFW53 = 9807, + MODEL_LODD_SFW52 = 9808, + MODEL_LODROADS_SFW54 = 9809, + MODEL_LODROADS_SFW55 = 9810, + MODEL_LODRYBIT69_SFW = 9811, + MODEL_VEG_IVY_BALCNY_KB08 = 9812, + MODEL_LODBIBAL_SFW = 9813, + MODEL_FIRSCAPE_SFW01 = 9814, + MODEL_FIRSCAPE_SFW02 = 9815, + MODEL_FIRSCAPE_SFW03 = 9816, + MODEL_SCAFF1B_SFW = 9817, + MODEL_SHPBRIDGE_SFW01 = 9818, + MODEL_SHPBRIDGE_SFW02 = 9819, + MODEL_SHPBRIDGE_SFW04 = 9820, + MODEL_SHPBRIDGE_SFW03 = 9821, + MODEL_SHPBRIDGE_SFW08 = 9822, + MODEL_SAV1SFW = 9823, + MODEL_DINER_SFW = 9824, + MODEL_CARSPACES3_SFW02 = 9825, + MODEL_LODER_SFW = 9826, + MODEL_ROAD_SFW28 = 9827, + MODEL_LODROADS_SFW35 = 9828, + MODEL_BUMBLISTER_SFW = 9829, + MODEL_GGCARPARK_SFW = 9830, + MODEL_SFW_WATERFALL = 9831, + MODEL_PARKBRIDGE_SFW = 9832, + MODEL_FOUNTAIN_SFW = 9833, + MODEL_HOSBIBAL3_SFW = 9834, + MODEL_HOSBIBAL4_SFW = 9835, + MODEL_HOSBIBAL2_SFW = 9836, + MODEL_GG_SPLIT2_SFW = 9837, + MODEL_GG_SPLIT1_SFW = 9838, + MODEL_LODBIBAL4_SFW = 9839, + MODEL_LODBIBAL3_SFW = 9840, + MODEL_LODBIBAL2_SFW = 9841, + MODEL_LODBLISTER_SFW = 9842, + MODEL_LOD_SANDBCH_SFW02 = 9843, + MODEL_LOD_SANDBCH_SFW01 = 9844, + MODEL_LOD_SANDBCH_SFW69 = 9845, + MODEL_LOD_SFW_BOXWEST12 = 9846, + MODEL_LOD_SFW_BOXWEST11 = 9847, + MODEL_LOD_SFW_BOXWEST10 = 9848, + MODEL_LOD_SFW_BOXWEST09 = 9849, + MODEL_LOD_SFW_BOXWEST08 = 9850, + MODEL_LOD_SFW_BOXWEST07 = 9851, + MODEL_LOD_SFW_BOXWEST06 = 9852, + MODEL_LOD_SFW_BOXWEST05 = 9853, + MODEL_LOD_SFW_BOXWEST04 = 9854, + MODEL_LOD_SFW_BOXWEST01 = 9855, + MODEL_LOD_SFW_BOXWEST02 = 9856, + MODEL_LOD_SFW_BOXWEST03 = 9857, + MODEL_FERRYBIT69_SFW = 9858, + MODEL_CHINAWNING69B = 9859, + MODEL_CHINAWNING69 = 9860, + MODEL_LOD_LAND_18_SFW = 9861, + MODEL_LOD_LAND_21_SFW = 9862, + MODEL_LAND_21_SFW = 9863, + MODEL_LAND_18_SFW = 9864, + MODEL_LODHBRIJ_SFW = 9865, + MODEL_LODRIG_07_SFW = 9866, + MODEL_LODROADS_SFW34 = 9867, + MODEL_LOD_TOLL_SFW = 9868, + MODEL_LODD_46_SFW = 9869, + MODEL_LOD_SCAFF_SFW = 9870, + MODEL_LOD_ROCK_COASTSFW1 = 9871, + MODEL_LOD_ROCK_COASTSFW2 = 9872, + MODEL_LOD_ROCK_COASTSFW3 = 9873, + MODEL_LOD_ROCK_COASTSFW4 = 9874, + MODEL_LOD_FERRYBIT3_SFW = 9875, + MODEL_LOD_LAND_16_SFW = 9876, + MODEL_LOD_LAND_37_SFW = 9877, + MODEL_LOD_PARK3_SFW = 9878, + MODEL_LOD_PARK2_SFW = 9879, + MODEL_LODGGCARPARK_SFW = 9880, + MODEL_LOD_PARK1_SFW = 9881, + MODEL_LOD_LAND_01_SFW = 9882, + MODEL_LOD_SANDBCH_SFW04 = 9883, + MODEL_LOD_SANDBCH_SFW03 = 9884, + MODEL_SFW_NITLITE1 = 9885, + MODEL_SFW_NITELITE2 = 9886, + MODEL_LOD_LAND_20_SFW01 = 9887, + MODEL_LOD_BOIGAGR_SFW01 = 9888, + MODEL_PARK3A_SFW = 9889, + MODEL_LOD_PARK3A_SFW = 9890, + MODEL_PARK2A_SFW = 9891, + MODEL_LOD_PARK2A_SFW = 9892, + MODEL_GARDSFW02 = 9893, + MODEL_BLOKMOD2_SFW = 9894, + MODEL_BIGBOXTMP19 = 9895, + MODEL_HOSBI2AL_SFW = 9896, + MODEL_HOSBIBAL3B_SFW = 9897, + MODEL_BOIGAS_SFW05 = 9898, + MODEL_SPRASFW = 9899, + MODEL_LANDSHIT_09_SFE = 9900, + MODEL_FERYBUILD_1 = 9901, + MODEL_FERRYLAND3 = 9902, + MODEL_PIER69_MODELS07 = 9903, + MODEL_PIER69_MODELS04 = 9904, + MODEL_PIER69_MODELS06 = 9905, + MODEL_TEMPSF_2_SFE = 9906, + MODEL_MONOLITH_SFE = 9907, + MODEL_ANOTHERBUILD091 = 9908, + MODEL_VICSTUFF_SFE33 = 9909, + MODEL_FISHWARF01 = 9910, + MODEL_FISHWARF06 = 9911, + MODEL_FISHWARF03 = 9912, + MODEL_FISHWARF04 = 9913, + MODEL_FISHWARF05 = 9914, + MODEL_SFE_PARK = 9915, + MODEL_JUMPBUILD_SFE = 9916, + MODEL_YET_ANOTHER_SFE = 9917, + MODEL_POSH2_SFE = 9918, + MODEL_GRNWHITE_SFE = 9919, + MODEL_VICSTUFF_SFE6000 = 9920, + MODEL_FERRYSHOPS1 = 9921, + MODEL_FERRYSHOPS2 = 9922, + MODEL_FERRYSHOPS3 = 9923, + MODEL_FERRYSHOPS4 = 9924, + MODEL_FERRYSHOPS5 = 9925, + MODEL_FERRYSHOPS07 = 9926, + MODEL_SFE_REDWHT2 = 9927, + MODEL_FERRYSHOPS08 = 9928, + MODEL_BORING_SFE = 9929, + MODEL_NICEPARK_SFE = 9930, + MODEL_CHURCH_SFE = 9931, + MODEL_NITELITES_SFE05 = 9932, + MODEL_NITELITES_SFE01 = 9933, + MODEL_NITELITES_SFE04 = 9934, + MODEL_LODOLITH_GROUND = 9935, + MODEL_LODA02 = 9936, + MODEL_LODA03 = 9937, + MODEL_LODA05 = 9938, + MODEL_LODA06 = 9939, + MODEL_LODA07 = 9940, + MODEL_LODA08 = 9941, + MODEL_LODA09 = 9942, + MODEL_LODA10 = 9943, + MODEL_LODA12 = 9944, + MODEL_LODA13 = 9945, + MODEL_PYRGROUND_SFE = 9946, + MODEL_LBD_HOUSE1_SFE = 9947, + MODEL_LBD_HOUSE2_SFE = 9948, + MODEL_PIER1_SFE = 9949, + MODEL_PIER2_SFE = 9950, + MODEL_PIER3_SFE = 9951, + MODEL_VICSTUFF_SFE6006 = 9952, + MODEL_OTTOS_AUTOS_SFE = 9953, + MODEL_PIER69_SFE3 = 9954, + MODEL_PIER69_SFE1 = 9955, + MODEL_PIER69_SFE2 = 9956, + MODEL_MULTUSTOR2_SFE = 9957, + MODEL_SUBMARR_SFE = 9958, + MODEL_LODA14 = 9959, + MODEL_LODA15 = 9960, + MODEL_LODA16 = 9961, + MODEL_LODA19 = 9962, + MODEL_LODA20 = 9963, + MODEL_LODA21 = 9964, + MODEL_LODA22 = 9965, + MODEL_LODA23 = 9966, + MODEL_LODA25 = 9967, + MODEL_LODA26 = 9968, + MODEL_LODA28 = 9969, + MODEL_LODA29 = 9970, + MODEL_LODA30 = 9971, + MODEL_LODA31 = 9972, + MODEL_LODA32 = 9973, + MODEL_LODA33 = 9974, + MODEL_LODA34 = 9975, + MODEL_LODA35 = 9976, + MODEL_LODA36 = 9977, + MODEL_LODA40 = 9978, + MODEL_LODA42 = 9979, + MODEL_LODA43 = 9980, + MODEL_LODA44 = 9981, + MODEL_LODSTU69B_SFE = 9982, + MODEL_LODA46 = 9983, + MODEL_LODA47 = 9984, + MODEL_LODA48 = 9985, + MODEL_LODA49 = 9986, + MODEL_LODA50 = 9987, + MODEL_LODA51 = 9988, + MODEL_LODA52 = 9989, + MODEL_LODA53 = 9990, + MODEL_LODA54 = 9991, + MODEL_LODA55 = 9992, + MODEL_LODA57 = 9993, + MODEL_LODA58 = 9994, + MODEL_LODA59 = 9995, + MODEL_LODA60 = 9996, + MODEL_LODA61 = 9997, + MODEL_LODA62 = 9998, + MODEL_LODA63 = 9999, + MODEL_LODA64 = 10000, + MODEL_LODA66 = 10001, + MODEL_LODA67 = 10002, + MODEL_LODA69 = 10003, + MODEL_LODA70 = 10004, + MODEL_LODA71 = 10005, + MODEL_LODA72 = 10006, + MODEL_LODA73 = 10007, + MODEL_FER_CARS2_SFE = 10008, + MODEL_FER_CARS3_SFE = 10009, + MODEL_UGCARPARK_SFE = 10010, + MODEL_CARSPACES_SFE14 = 10011, + MODEL_CABLES4 = 10012, + MODEL_VICSTUFF_SFE17 = 10013, + MODEL_VICSTU69_SFE = 10014, + MODEL_VICSTU69B_SFE = 10015, + MODEL_VICNEW_SFE04 = 10016, + MODEL_BIGVIC_A1 = 10017, + MODEL_TUNNEL_SFE = 10018, + MODEL_VICSTUFF_SFE45 = 10019, + MODEL_VICSTUFF_SFE22 = 10020, + MODEL_VICSTUFF_SFE06 = 10021, + MODEL_VICSTUFF_SFE04 = 10022, + MODEL_SFE_ARCHYBALD1 = 10023, + MODEL_ARCHBUILD_WINS = 10024, + MODEL_CHINATOWN_SFE2 = 10025, + MODEL_FIRE_ESC_SFE06 = 10026, + MODEL_BIGWHIETE_SFE = 10027, + MODEL_COPSHOP_SFE = 10028, + MODEL_COPBITS_SFE = 10029, + MODEL_CHINATOWN_SFE9 = 10030, + MODEL_LANDSHIT_24_SFE = 10031, + MODEL_CARSPACES_SFE = 10032, + MODEL_FIRE_ESC_SFE02 = 10033, + MODEL_LANDSHIT_18_SFE = 10034, + MODEL_CHINATOWN_SFE20 = 10035, + MODEL_CHIN_SFE1121 = 10036, + MODEL_CHBACKBIT8_SFE = 10037, + MODEL_CHINATOWN_SFE8 = 10038, + MODEL_CHINATOWN_SFE1 = 10039, + MODEL_CABLES3 = 10040, + MODEL_BIGCENTRAL_SFE = 10041, + MODEL_FESCAPE2_SFE = 10042, + MODEL_VICSTUFF_SFE6004 = 10043, + MODEL_SFE_SWANK1 = 10044, + MODEL_PINKBUILD4_SFE = 10045, + MODEL_PINKBUILD_SFE = 10046, + MODEL_MONLITH_GROUND = 10047, + MODEL_VICSTUFF_SFE66 = 10048, + MODEL_POSH_THINGSFE = 10049, + MODEL_VICSTUFF_SFE50 = 10050, + MODEL_CARIMP_SFE = 10051, + MODEL_LOWMALL = 10052, + MODEL_FISHWARF20_SFE = 10053, + MODEL_FISHWARF24_SFE = 10054, + MODEL_FISHWARF21_SFE = 10055, + MODEL_TEMPSF_4_SFE = 10056, + MODEL_NITELITES_SFE10 = 10057, + MODEL_NITELITES_SFE11 = 10058, + MODEL_LODA38 = 10059, + MODEL_APRTMNTS01_SFE = 10060, + MODEL_APRTMNTRAILGS01_SFE = 10061, + MODEL_APRTMNTRAILGS03_SFE = 10062, + MODEL_APRTMNTS02_SFE = 10063, + MODEL_APRTMNTRAILGS02_SFE = 10064, + MODEL_ROAD24_SFE = 10065, + MODEL_ROAD02_SFE = 10066, + MODEL_ROAD05_SFE = 10067, + MODEL_ROAD_07_SFE = 10068, + MODEL_ROAD06_SFE = 10069, + MODEL_ROAD08_SFE = 10070, + MODEL_ROAD09_SFE = 10071, + MODEL_ROAD10_SFE = 10072, + MODEL_ROAD11_SFE = 10073, + MODEL_ROAD12_SFE = 10074, + MODEL_ROAD_16_SFE01 = 10075, + MODEL_ROAD13_SFE = 10076, + MODEL_ROAD14_SFE = 10077, + MODEL_ROAD15_SFE = 10078, + MODEL_PYR_TOP_SFE = 10079, + MODEL_FISHWARF10_SFE = 10080, + MODEL_LODA39 = 10081, + MODEL_LODA68 = 10082, + MODEL_BACKALLEYS1_SFE = 10083, + MODEL_FISHWARF13_SFE = 10084, + MODEL_LODA01 = 10085, + MODEL_APRTMNTS03_SFE = 10086, + MODEL_LANDSL01_SFE = 10087, + MODEL_LODD21_SFE = 10088, + MODEL_LODD_16_SFE01 = 10089, + MODEL_LODD02_SFE = 10090, + MODEL_LODD32_SFE = 10091, + MODEL_LODD11_SFE = 10092, + MODEL_LODD08_SFE = 10093, + MODEL_LODD06_SFE = 10094, + MODEL_LODD44_SFE = 10095, + MODEL_LODD24_SFE = 10096, + MODEL_LODD18_SFE = 10097, + MODEL_LODD15_SFE = 10098, + MODEL_LODD13_SFE = 10099, + MODEL_LODA65 = 10100, + MODEL_VICSTUFF_SFE67 = 10101, + MODEL_LODA18 = 10102, + MODEL_LODRYLAND3 = 10103, + MODEL_LODR69_SFE1 = 10104, + MODEL_LODR69_SFE2 = 10105, + MODEL_LODR69_SFE3 = 10106, + MODEL_LODOS_AUTOS_SFE = 10107, + MODEL_LODR69_MODELS07 = 10108, + MODEL_LODR69_MODELS04 = 10109, + MODEL_ROAD16_SFE = 10110, + MODEL_ROAD17_SFE = 10111, + MODEL_ROAD18_SFE = 10112, + MODEL_ROAD19_SFE = 10113, + MODEL_ROAD20_SFE = 10114, + MODEL_ROAD21_SFE = 10115, + MODEL_ROAD22_SFE = 10116, + MODEL_ROAD23_SFE = 10117, + MODEL_ROAD01_SFE = 10118, + MODEL_ROAD25_SFE = 10119, + MODEL_ROAD26_SFE = 10120, + MODEL_ROAD27_SFE = 10121, + MODEL_ROAD28_SFE = 10122, + MODEL_ROAD29_SFE = 10123, + MODEL_ROAD30_SFE = 10124, + MODEL_ROAD32_SFE = 10125, + MODEL_ROAD33_SFE = 10126, + MODEL_ROAD34_SFE = 10127, + MODEL_ROAD35_SFE = 10128, + MODEL_ROAD36_SFE = 10129, + MODEL_ROAD37_SFE = 10130, + MODEL_ROAD38_SFE = 10131, + MODEL_ROAD39_SFE = 10132, + MODEL_ROAD40_SFE = 10133, + MODEL_ROAD41_SFE = 10134, + MODEL_ROAD43_SFE = 10135, + MODEL_ROAD44_SFE = 10136, + MODEL_ROAD45_SFE = 10137, + MODEL_ROAD46_SFE = 10138, + MODEL_ROAD47_SFE = 10139, + MODEL_FREIG2_INTSFE = 10140, + MODEL_LODIGHTER2_SFE = 10141, + MODEL_DWNTWNSL01_SFE1 = 10142, + MODEL_TEMPSF_1_SFE = 10143, + MODEL_LODA17 = 10144, + MODEL_GENOME_SFE = 10145, + MODEL_NITELITES_SFE14 = 10146, + MODEL_NITELITES_SFE15 = 10147, + MODEL_BOMBSHOP = 10148, + MODEL_BOMBDOOR02 = 10149, + MODEL_FDORSFE = 10150, + MODEL_BIGVICGRND_SFE = 10151, + MODEL_VICTIMBER1_SFE = 10152, + MODEL_VICTIMBER2_SFE = 10153, + MODEL_PIER69GDR = 10154, + MODEL_LOD_ARCHYBALD1 = 10155, + MODEL_LODA27 = 10156, + MODEL_LOD_ANOTHER_SFE2 = 10157, + MODEL_LODA74 = 10158, + MODEL_LOD_ANOTHER_SFE = 10159, + MODEL_LODSTUFF_SFE33 = 10160, + MODEL_LODVICGRND_SFE = 10161, + MODEL_LODHWARF21_SFE = 10162, + MODEL_LODACKBIT8_SFE = 10163, + MODEL_LODEPARK_SFE = 10164, + MODEL_POINTYBOT_SFE = 10165, + MODEL_P69_ROCKS = 10166, + MODEL_LODDSHIT_18_SFE = 10167, + MODEL_LODDSL01_SFE = 10168, + MODEL_LODKALLEYS1_SFE = 10169, + MODEL_LODNEL_SFE = 10170, + MODEL_LODD40_SFE = 10171, + MODEL_LODD34_SFE = 10172, + MODEL_FIRE_ESC_SFE03 = 10173, + MODEL_FIRE_ESC_SFE04 = 10174, + MODEL_FIRE_ESC_SFE05 = 10175, + MODEL_FIRE_ESC_SFE01 = 10176, + MODEL_FIRE_ESC_SFE07 = 10177, + MODEL_FIRE_ESC_SFE08 = 10178, + MODEL_FIRE_ESC_SFE09 = 10179, + MODEL_FIRE_ESC_SFE10 = 10180, + MODEL_FIRE_ESC_SFE11 = 10181, + MODEL_MICHDR = 10182, + MODEL_FERSPACES = 10183, + MODEL_SFCOPDR = 10184, + MODEL_LOMBARDSTEPS = 10185, + MODEL_LOMBARD3_SFE = 10186, + MODEL_VICNEW_SFE01 = 10187, + MODEL_VICNEW_SFE02 = 10188, + MODEL_VICNEW_SFE03 = 10189, + MODEL_LODNEW_SFE01 = 10190, + MODEL_LODNEW_SFE03 = 10191, + MODEL_LODNEW_SFE04 = 10192, + MODEL_HOTELBITS_SFE07 = 10193, + MODEL_HOTELBITS_SFE03 = 10194, + MODEL_HOTELBITS_SFE02 = 10195, + MODEL_HOTELBITS_SFE01 = 10196, + MODEL_HOTELBITS_SFE04 = 10197, + MODEL_LODD05_SFE = 10198, + MODEL_LODD38_SFE = 10199, + MODEL_LODD39_SFE = 10200, + MODEL_LODD41_SFE = 10201, + MODEL_LODD30_SFE = 10202, + MODEL_LODD10_SFE = 10203, + MODEL_LODD28_SFE = 10204, + MODEL_LODD09_SFE = 10205, + MODEL_LODD27_SFE = 10206, + MODEL_LODD29_SFE = 10207, + MODEL_LODD22_SFE = 10208, + MODEL_LODD12_SFE = 10209, + MODEL_LODD26_SFE = 10210, + MODEL_LODD01_SFE = 10211, + MODEL_LODD25_SFE = 10212, + MODEL_LODD23_SFE = 10213, + MODEL_LODD35_SFE = 10214, + MODEL_LODD36_SFE = 10215, + MODEL_LODD07_SFE = 10216, + MODEL_LODD43_SFE = 10217, + MODEL_LODD47_SFE = 10218, + MODEL_LODD46_SFE = 10219, + MODEL_LODD45_SFE = 10220, + MODEL_LODD16_SFE = 10221, + MODEL_LODD14_SFE = 10222, + MODEL_LODD17_SFE = 10223, + MODEL_LODD19_SFE = 10224, + MODEL_LODD20_SFE = 10225, + MODEL_SHIPBITS2_SFE = 10226, + MODEL_SHIPBITS1_SFE = 10227, + MODEL_FREIGHT_LITESSFE = 10228, + MODEL_FREIGHTER2B_SFE = 10229, + MODEL_FREIGHTER_SFE = 10230, + MODEL_FREIGHTBOXES = 10231, + MODEL_LODD33_SFE = 10232, + MODEL_CARSPACES_SFE15 = 10233, + MODEL_FESCAPE2B_SFE = 10234, + MODEL_POINTYBOTB_SFE = 10235, + MODEL_HOTELBITS_SFE06 = 10236, + MODEL_LODELBITS_SFE07 = 10237, + MODEL_LODELBITS_SFE03 = 10238, + MODEL_LODELBITS_SFE01 = 10239, + MODEL_LODELBITS_SFE02 = 10240, + MODEL_LODELBITS_SFE04 = 10241, + MODEL_HOTELBITS_SFE05 = 10242, + MODEL_LODELBITS_SFE05 = 10243, + MODEL_VICJUMP_SFE = 10244, + MODEL_OTTOS_RAMP = 10245, + MODEL_SAV1SFE = 10246, + MODEL_ROAD37B_SFE = 10247, + MODEL_COPCRATES_SFE = 10248, + MODEL_OTTOS_BITS = 10249, + MODEL_MASTS1_SFE = 10250, + MODEL_LODING_SFE = 10251, + MODEL_CHINA_TOWN_GATEB = 10252, + MODEL_LODD37_SFE = 10253, + MODEL_LODD37B_SFE = 10254, + MODEL_CHINAWNING07 = 10255, + MODEL_LODLITH_GROUND = 10256, + MODEL_LODGROUND_SFE = 10257, + MODEL_LODBSHOP = 10258, + MODEL_LODARPARK_SFE = 10259, + MODEL_POINTYBOT22_SFE = 10260, + MODEL_CHINAWNING01 = 10261, + MODEL_CHINAWNING02 = 10262, + MODEL_CHINAWNING03 = 10263, + MODEL_CHINAWNING04 = 10264, + MODEL_CHINAWNING05 = 10265, + MODEL_CHINAWNING06 = 10266, + MODEL_CABLES16 = 10267, + MODEL_LODPSF_4_SFE3 = 10268, + MODEL_LODPSF_4_SFE2 = 10269, + MODEL_BIGWHIETE2_SFE = 10270, + MODEL_SFE_REDWHT2B = 10271, + MODEL_LODN_SFE1121 = 10272, + MODEL_CHURCHGR_SFE = 10273, + MODEL_CHURCHGR2_SFE = 10274, + MODEL_ROAD07_SFE = 10275, + MODEL_ROAD42_SFE = 10276, + MODEL_LODD42_SFE = 10277, + MODEL_VICSTU69C_SFE = 10278, + MODEL_LODSTU69C_SFE = 10279, + MODEL_LOWBOX_SFE = 10280, + MODEL_MICHSIGN_SFE = 10281, + MODEL_MICH_INT_SFE = 10282, + MODEL_LODHSIGN_SFE = 10283, + MODEL_LODRCH_SFE = 10284, + MODEL_LODMARR_SFE = 10285, + MODEL_LOD_ROCKS = 10286, + MODEL_TEMPSF_4_SFE3 = 10287, + MODEL_TEMPSF_4_SFE2 = 10288, + MODEL_TEMPSF_3_SFE = 10289, + MODEL_GARSE_85_SFE = 10290, + MODEL_LODD_07_SFE = 10291, + MODEL_LODSE_85_SFE = 10292, + MODEL_LODD17_SFE01 = 10293, + MODEL_ROAD03_SFE = 10294, + MODEL_ROAD04_SFE = 10295, + MODEL_ROAD31_SFE = 10296, + MODEL_LODD31_SFE = 10297, + MODEL_LODD04_SFE = 10298, + MODEL_LODD03_SFE = 10299, + MODEL_FERRYLAND_SFE111 = 10300, + MODEL_FERRY_NCOAST1_SFE = 10301, + MODEL_LODRY_NCOAST1_SFE = 10302, + MODEL_LODRYLAND_SFE111 = 10303, + MODEL_LODRYLAND_SFE112 = 10304, + MODEL_FERRYLAND_SFE112 = 10305, + MODEL_VICSTUFF_SFE38 = 10306, + MODEL_LODA56 = 10307, + MODEL_YET_ANOTHER_SFE2 = 10308, + MODEL_PIER69_MODELS05 = 10309, + MODEL_BOIGAS_SFE = 10310, + MODEL_LOD_SFS065 = 10315, + MODEL_LOD_SFS066 = 10316, + MODEL_LOD_SFS068 = 10317, + MODEL_LOD_SFS069 = 10318, + MODEL_LODLTHCLUB_SFS = 10319, + MODEL_LOD_SFS152 = 10320, + MODEL_LOD_SFS153 = 10321, + MODEL_LOD_SFS154 = 10322, + MODEL_LOD_SFS155 = 10323, + MODEL_LOD_SFS156 = 10324, + MODEL_LOD_SFS157 = 10325, + MODEL_LOD_SFS158 = 10326, + MODEL_LOD_SFS159 = 10327, + MODEL_LOD_SFS162 = 10328, + MODEL_LODCUNTWLAND22SFS = 10329, + MODEL_LODUNDBIT_09_SFS = 10330, + MODEL_LODGROUNDBIT_12SFS = 10331, + MODEL_LODGROUNDBIT_13SFS = 10332, + MODEL_LODROADSSFS32 = 10333, + MODEL_LODROADSSFS08 = 10334, + MODEL_LODROADSSFS19 = 10335, + MODEL_LODROADSSFS33 = 10336, + MODEL_LODROADSSFS01 = 10337, + MODEL_LODROADSSFS10 = 10338, + MODEL_LODROADSSFS31 = 10339, + MODEL_LODROADSSFS12 = 10340, + MODEL_LODROADSSFS04 = 10341, + MODEL_LODROADSSFS13 = 10342, + MODEL_LODROADSSFS14 = 10343, + MODEL_LODROADSSFS29 = 10344, + MODEL_LODROADSSFS05 = 10345, + MODEL_LODROADSSFS36 = 10346, + MODEL_LODROADSSFS24 = 10347, + MODEL_LODROADSSFS25 = 10348, + MODEL_LODSHOP2_SFS = 10349, + MODEL_OC_FLATS_GND01_SFS = 10350, + MODEL_GROUNDBIT_10_SFS = 10351, + MODEL_GROUNDBIT_11_SFS = 10352, + MODEL_GROUNDBIT_12_SFS = 10353, + MODEL_GROUNDBIT_13_SFS = 10354, + MODEL_GROUNDBIT_48_SFS = 10355, + MODEL_HASHBURY_01_SFS = 10356, + MODEL_TRANSMITTER_SFS = 10357, + MODEL_OC_FLATS_GND02_SFS = 10358, + MODEL_SFSHILL02 = 10359, + MODEL_SFSHILL03 = 10360, + MODEL_SFSHILL04 = 10361, + MODEL_SFSHILL05 = 10362, + MODEL_SFSHILL06 = 10363, + MODEL_SFSHILL07 = 10364, + MODEL_ROADBIT21_SFS = 10365, + MODEL_GOLFTUNNEL1_SFS = 10366, + MODEL_ROADBIT38_SFS = 10367, + MODEL_CATHEDRAL_SFS = 10368, + MODEL_SMALLSHOP_10_SFS08 = 10369, + MODEL_ALLEY1_SFS = 10370, + MODEL_ALLEY1_SFS01 = 10371, + MODEL_ALLEY2_SFS01 = 10372, + MODEL_ALLEY2_SFS02 = 10373, + MODEL_ALLEY2_SFS04 = 10374, + MODEL_SUBSHOP_SFS = 10375, + MODEL_SUBSHOP2_SFS = 10376, + MODEL_CITYHALL_SFS = 10377, + MODEL_CTIYHALLSQUARE_SFS = 10378, + MODEL_CITYHALL2_SFS = 10379, + MODEL_CITYHALL2_SFS01 = 10380, + MODEL_ARTGALLERY_SFS = 10381, + MODEL_ALLEYFUCKINGWAY_SFS = 10382, + MODEL_SUBSHOPS3_SFS = 10383, + MODEL_CITYHALLSQ_SFS = 10384, + MODEL_BBGROUNDBIT_SFS = 10385, + MODEL_SFSHILL09 = 10386, + MODEL_CUNTWLAND22_SFS = 10387, + MODEL_TEMPOBJ_SFS02 = 10388, + MODEL_MISSION_07_SFS = 10389, + MODEL_MISSION_12_SFS = 10390, + MODEL_MISSION_14_SFS = 10391, + MODEL_SMALLSHOP_10_SFS07 = 10392, + MODEL_SCUM_SFS01 = 10393, + MODEL_PLOT1_SFS = 10394, + MODEL_MISSION_13_SFS = 10395, + MODEL_HC_TENFENCE_SFS = 10396, + MODEL_HC_STADLIGHT1_SFS = 10397, + MODEL_HEALTHCLUB_SFS = 10398, + MODEL_HEALTHCL69_SFS = 10399, + MODEL_HC_GROUNDS02_SFS = 10400, + MODEL_HC_SHED02_SFS = 10401, + MODEL_HC_SECFENCE_SFS = 10402, + MODEL_HC_TRACK02_SFS = 10403, + MODEL_HC_LAYBYLAND_SFS = 10404, + MODEL_HC_GOLFCRSE02_SFS = 10405, + MODEL_HC_GROUNDS04_SFS = 10406, + MODEL_HC_GOLFCRSE03_SFS = 10407, + MODEL_HC_GOLFCRSE05_SFS = 10408, + MODEL_HC_GOLFCRSE09_SFS = 10409, + MODEL_HC_GOLFCRSE10_SFS = 10410, + MODEL_SHITEYBIT_SFS = 10411, + MODEL_POSHOTEL1_SFS = 10412, + MODEL_GROUNDBIT_09_SFS = 10413, + MODEL_OC_FLATS_GND03_SFS = 10414, + MODEL_OC_FLATS_GND17_SFS = 10415, + MODEL_OC_FLATS_GND16_SFS = 10416, + MODEL_OC_FLATS_GND06_SFS = 10417, + MODEL_SFSHILL13 = 10418, + MODEL_OC_FLATS_GND07_SFS = 10419, + MODEL_OC_FLATS_GND08_SFS = 10420, + MODEL_OC_FLATS_GND09_SFS = 10421, + MODEL_OC_FLATS_GND19_SFS = 10422, + MODEL_MISSION_15_SFS = 10423, + MODEL_ROADSSFS01 = 10424, + MODEL_TEMPHOTEL1_SFS = 10425, + MODEL_BACKROAD_SFS = 10426, + MODEL_HAIGHT_52_SFS = 10427, + MODEL_HASHBLOCK1_02_SFS = 10428, + MODEL_HASHBLOCK1_10_SFS = 10429, + MODEL_HASHBLOCK1_08_SFS = 10430, + MODEL_HASHBURY_03_SFS = 10431, + MODEL_HAIGHT_17_SFS = 10432, + MODEL_HASHBURY_04_SFS = 10433, + MODEL_HASHBURY_05_SFS = 10434, + MODEL_SHOPPIE6_SFS04 = 10435, + MODEL_HASHBLOCK1_09_SFS = 10436, + MODEL_HASHFENCE_09_SFS = 10437, + MODEL_HASHBURY_07_SFS = 10438, + MODEL_HASHBURY_08_SFS = 10439, + MODEL_ROADSSFS09 = 10440, + MODEL_HASHBURY_10_SFS = 10441, + MODEL_GRAVEYARDWALL_SFS = 10442, + MODEL_GRAVEYARD_SFS = 10443, + MODEL_POOLWATER_SFS = 10444, + MODEL_HOTELBACK2 = 10445, + MODEL_HOTELBACK1 = 10446, + MODEL_HASHUPASS_SFS = 10447, + MODEL_LASTBIT_08_SFS = 10448, + MODEL_ROADSSFS17 = 10449, + MODEL_ROADSSFS16 = 10450, + MODEL_SFSHILL12 = 10451, + MODEL_ROADSSFS39 = 10452, + MODEL_SFSHILL14 = 10453, + MODEL_SFSHILL15 = 10454, + MODEL_ROADSSFS19 = 10455, + MODEL_ROADSSFS02 = 10456, + MODEL_ROADSSFS03 = 10457, + MODEL_ROADSSFS04 = 10458, + MODEL_ROADSSFS05 = 10459, + MODEL_ROADSSFS06 = 10460, + MODEL_ROADSSFS07 = 10461, + MODEL_ROADSSFS08 = 10462, + MODEL_ROADSSFS23 = 10463, + MODEL_ROADSSFS10 = 10464, + MODEL_ROADSSFS11 = 10465, + MODEL_ROADSSFS12 = 10466, + MODEL_ROADSSFS13 = 10467, + MODEL_ROADSSFS14 = 10468, + MODEL_ROADSSFS15 = 10469, + MODEL_ROADSSFS38 = 10470, + MODEL_ROADSSFS27 = 10471, + MODEL_ROADSSFS18 = 10472, + MODEL_ROADSSFS28 = 10473, + MODEL_ROADSSFS20 = 10474, + MODEL_ROADSSFS21 = 10475, + MODEL_ROADSSFS22 = 10476, + MODEL_ROADSSFS30 = 10477, + MODEL_ROADSSFS24 = 10478, + MODEL_ROADSSFS25 = 10479, + MODEL_ROADSSFS26 = 10480, + MODEL_ROADSSFS33 = 10481, + MODEL_ROADSSFS29 = 10482, + MODEL_ROADSSFS36 = 10483, + MODEL_ROADSSFS32 = 10484, + MODEL_ROADSSFS35 = 10485, + MODEL_ROADSSFS34 = 10486, + MODEL_PARKTUNNEL_SFS = 10487, + MODEL_SFSHILL08 = 10488, + MODEL_CUNTWLAND18_SFS = 10489, + MODEL_SFSHILL01 = 10490, + MODEL_SFSHILL11_SFS = 10491, + MODEL_SFSHILL10 = 10492, + MODEL_SV_GROUND_04_SFS = 10493, + MODEL_LODLTHCL69_SFS = 10494, + MODEL_LODGOLFCRSE09_SFS = 10495, + MODEL_LODNSMITTER_SFS01 = 10496, + MODEL_LODGROUNDS04_SFS = 10497, + MODEL_LODEY1_SFS = 10498, + MODEL_LODEY1_SFS01 = 10499, + MODEL_LODEY2_SFS01 = 10500, + MODEL_LODEY2_SFS02 = 10501, + MODEL_LODGROUNDS02_SFS = 10502, + MODEL_LODEY2_SFS04 = 10503, + MODEL_LODEYFUCKINGWAY_SFS = 10504, + MODEL_LOD_SFS038 = 10505, + MODEL_LOD_SFS039 = 10506, + MODEL_LOD_SFS041 = 10507, + MODEL_LOD_SFS042 = 10508, + MODEL_LOD_SFS043 = 10509, + MODEL_LOD_SFS044 = 10510, + MODEL_LOD_SFS045 = 10511, + MODEL_LOD_SFS046 = 10512, + MODEL_LOD_SFS050 = 10513, + MODEL_LOD_SFS051 = 10514, + MODEL_LOD_SFS052 = 10515, + MODEL_LOD_SFS053 = 10516, + MODEL_LOD_SFS054 = 10517, + MODEL_LOD_SFS055 = 10518, + MODEL_LOD_SFS056 = 10519, + MODEL_LOD_SFS059 = 10520, + MODEL_LOD_SFS060 = 10521, + MODEL_LOD_SFS061 = 10522, + MODEL_LOD_SFS062 = 10523, + MODEL_LOD_SFS063 = 10524, + MODEL_LOD_SFS064 = 10525, + MODEL_LOD_SFS57B = 10526, + MODEL_LODROADSSFS07 = 10527, + MODEL_LODROADSSFS17 = 10528, + MODEL_LODROADSSFS18 = 10529, + MODEL_LODROADSSFS30 = 10530, + MODEL_LODROADSSFS09 = 10531, + MODEL_LODROADSSFS28 = 10532, + MODEL_LODROADSSFS35 = 10533, + MODEL_LODROADSSFS02 = 10534, + MODEL_LODROADSSFS03 = 10535, + MODEL_LODROADSSFS11 = 10536, + MODEL_LODROADSSFS20 = 10537, + MODEL_LODROADSSFS23 = 10538, + MODEL_LODROADSSFS15 = 10539, + MODEL_LODROADSSFS37 = 10540, + MODEL_LODROADSSFS16 = 10541, + MODEL_LODROADSSFS38 = 10542, + MODEL_LODROADSSFS34 = 10543, + MODEL_LODROADSSFS26 = 10544, + MODEL_LODROADSSFS22 = 10545, + MODEL_LODROADSSFS06 = 10546, + MODEL_LODCITYHALLSQUARE = 10547, + MODEL_LODPLANE01 = 10548, + MODEL_LODROADSSFS40 = 10549, + MODEL_LODHOTELBACK03_SFS = 10550, + MODEL_LODROADSSFS40B = 10551, + MODEL_LODMISSION_13_SFS01 = 10552, + MODEL_LODPLOT1_SFS01 = 10553, + MODEL_LODSHITEYBIT_SFS01 = 10554, + MODEL_LODHA_07_SFS01 = 10555, + MODEL_LODLANE03ACMSFS = 10556, + MODEL_LODMEMORIAL = 10557, + MODEL_TBNSFS = 10558, + MODEL_SFSHILL11BEACH = 10559, + MODEL_BBGROUNDBITB_SFS = 10560, + MODEL_BBGROUNDBITC_SFS = 10561, + MODEL_BBGROUNDBITD_SFS = 10562, + MODEL_OC_FLATS_GND18_SFS = 10563, + MODEL_OC_FLATS_GND11_SFS = 10564, + MODEL_OC_FLATS_GND12_SFS = 10565, + MODEL_OC_FLATS_GND13_SFS = 10566, + MODEL_OC_FLATS_GND14_SFS = 10567, + MODEL_OC_FLATS_GND15_SFS = 10568, + MODEL_OC_FLATS_GND10_SFS = 10569, + MODEL_OC_FLATS_GND05_SFS = 10570, + MODEL_OC_FLATS_GND04_SFS = 10571, + MODEL_GOLFTUNNEL3_SFS = 10572, + MODEL_GOLFTUNNEL2_SFS = 10573, + MODEL_GOLFTUNNEL4_SFS = 10574, + MODEL_MODSHOPDOOR1_SFS = 10575, + MODEL_MODSHOPINT1_SFS = 10576, + MODEL_LODLAYBYLAND_SFS = 10577, + MODEL_LODFLATSGND16_SFS = 10578, + MODEL_LODFLATSGND02_SFS = 10579, + MODEL_LODFLATSGND14_SFS = 10580, + MODEL_LODFLATSGND04_SFS = 10581, + MODEL_LODFLATSGND05_SFS = 10582, + MODEL_LODFLATSGND06_SFS = 10583, + MODEL_LODFLATSGND07_SFS = 10584, + MODEL_LODFLATSGND08_SFS = 10585, + MODEL_LODFLATSGND09_SFS = 10586, + MODEL_LODFLATSGND01_SFS = 10587, + MODEL_LODFLATSGND03_SFS = 10588, + MODEL_LODFLATSGND11_SFS = 10589, + MODEL_LODFLATSGND15_SFS = 10590, + MODEL_LODFLATSGND13_SFS = 10591, + MODEL_LODFLATSGND10_SFS = 10592, + MODEL_LODFLATSGND12_SFS = 10593, + MODEL_LODFLATSGND17_SFS = 10594, + MODEL_LODFLATSGND18_SFS = 10595, + MODEL_LODFLATSGND19_SFS = 10596, + MODEL_LODROADSSFS31B = 10597, + MODEL_LODBBGNDBITD_SFS = 10598, + MODEL_LODGROUNDBIT_48_SFS = 10599, + MODEL_LODMISSION_07_SFS = 10600, + MODEL_SFSHILL10B = 10601, + MODEL_LODTWLAND18X_SFS = 10602, + MODEL_LODGOLFTUNNEL4_SFS = 10603, + MODEL_LODRD38B2 = 10604, + MODEL_LODBUILDSFS38B = 10605, + MODEL_CLUCKBELL_SFS = 10606, + MODEL_LODCKBELL_SFS = 10607, + MODEL_LASTBIT_GND01_SFS = 10608, + MODEL_LASTBIT_GND02_SFS = 10609, + MODEL_FEDMINT_SFS = 10610, + MODEL_FEDMINTFENCE_SFS = 10611, + MODEL_FEDMINTLAND_SFS = 10612, + MODEL_LASTBIT_07_SFS = 10613, + MODEL_LASTBIT_06_SFS = 10614, + MODEL_LASTBIT_04_SFS = 10615, + MODEL_LASTBIT_03_SFS = 10616, + MODEL_LASTBIT_01_SFS = 10617, + MODEL_LASTBIT_02_SFS = 10618, + MODEL_OFFICYMIRRORD_SFS = 10619, + MODEL_LODICYMIRRORD_SFS = 10620, + MODEL_PINKCARPARK_SFS = 10621, + MODEL_PINKCARPARKRD1_SFS = 10622, + MODEL_PINKCARPARKRD2_SFS = 10623, + MODEL_LOWQUEENS1_SFS = 10624, + MODEL_LOWQUEENS2_SFS = 10625, + MODEL_QUEENS_09_SFS = 10626, + MODEL_QUEENS_02_SFS = 10627, + MODEL_QUEENS_03_SFS = 10628, + MODEL_QUEENS_04_SFS = 10629, + MODEL_QUEENS_10_SFS = 10630, + MODEL_AMMUNATION_SFS = 10631, + MODEL_AMMUWINDOWS_SFS = 10632, + MODEL_QUEENS_01_SFS = 10633, + MODEL_QUEENS_06_SFS = 10634, + MODEL_QUEENS_07_SFS = 10635, + MODEL_QUEENS_05_SFS = 10636, + MODEL_QUEENS_08_SFS = 10637, + MODEL_CITYHALLSQ2_SFS = 10638, + MODEL_LASTBIT_06B_SFS = 10639, + MODEL_LODPLANE01B = 10640, + MODEL_LODTBIT_06_SFS = 10641, + MODEL_LODTBIT_06B_SFS = 10642, + MODEL_LODKCARPARKRD1_SFS = 10643, + MODEL_LODKCARPARKRD2_SFS = 10644, + MODEL_LODTBIT_08_SFS = 10645, + MODEL_LODENS_05_SFS = 10646, + MODEL_LODTBIT_01_SFS = 10647, + MODEL_LODTBIT_01B_SFS = 10648, + MODEL_LASTBIT_01B_SFS = 10649, + MODEL_LODKCARPARKRD1B_SFS = 10650, + MODEL_PINKCARPARKRD1B_SFS = 10651, + MODEL_LODTBIT_07_SFS = 10652, + MODEL_LODENS_08_SFS = 10653, + MODEL_LODENS_07_SFS = 10654, + MODEL_LODTBIT_GND02_SFS = 10655, + MODEL_LODTBIT_02_SFS = 10656, + MODEL_LODTBIT_GND01_SFS = 10657, + MODEL_LODENS_03_SFS = 10658, + MODEL_LODUNATION_SFS = 10659, + MODEL_LODQUEENS2_SFS = 10660, + MODEL_LODQUEENS1_SFS = 10661, + MODEL_LODMINTFENCE_SFS = 10662, + MODEL_LODMINTLAND_SFS = 10663, + MODEL_LODKCARPARK_SFS = 10664, + MODEL_LODMINT_SFS = 10665, + MODEL_LODENS_09_SFS = 10666, + MODEL_LODENS_02_SFS = 10667, + MODEL_LODENS_01_SFS = 10668, + MODEL_LODENS_06_SFS = 10669, + MODEL_LODENS_10_SFS = 10670, + MODEL_SAVEHOUSEGDOOR_SFS = 10671, + MODEL_FESCAPE_SFS01 = 10672, + MODEL_LODENS_04_SFS = 10673, + MODEL_LODTBIT_04_SFS = 10674, + MODEL_ELECSTIONV_SFS = 10675, + MODEL_TRANSMITBLDG_SFS = 10676, + MODEL_LODPARKTUNNEL_SFS = 10677, + MODEL_LODTBIT_03_SFS = 10678, + MODEL_LODHBURY_01_SFS = 10679, + MODEL_LODROUNDBITB_SFS = 10680, + MODEL_LODROUNDBITC_SFS = 10681, + MODEL_SHITFENCE1_SFS = 10682, + MODEL_SHITFENCE2_SFS = 10683, + MODEL_LODGOLFTUNNEL3_SFS = 10684, + MODEL_LODGOLFTUNNEL2_SFS = 10685, + MODEL_LODGOLFTUNNEL1_SFS = 10686, + MODEL_LODGOLFCRSE02_SFS = 10687, + MODEL_LODGOLFCRSE03_SFS = 10688, + MODEL_LODGOLFCRSE05_SFS = 10689, + MODEL_LODTRACK02_SFS = 10690, + MODEL_LODGOLFCRSE10_SFS = 10691, + MODEL_LOD_SFSHILL02 = 10692, + MODEL_LODNSMITBLDG_SFS = 10693, + MODEL_SFSHILL11Z_SFS = 10694, + MODEL_WIRES_02_SFS = 10695, + MODEL_WIRES_18_SFS = 10696, + MODEL_WIRES_03_SFS = 10697, + MODEL_WIRES_04_SFS = 10698, + MODEL_WIRES_05_SFS = 10699, + MODEL_WIRES_06_SFS = 10700, + MODEL_WIRES_07_SFS = 10701, + MODEL_WIRES_08_SFS = 10702, + MODEL_WIRES_09_SFS = 10703, + MODEL_WIRES_01_SFS = 10704, + MODEL_WIRES_11_SFS = 10705, + MODEL_WIRES_12_SFS = 10706, + MODEL_WIRES_13_SFS = 10707, + MODEL_WIRES_10_SFS = 10708, + MODEL_WIRES_14_SFS = 10709, + MODEL_WIRES_15_SFS = 10710, + MODEL_WIRES_16_SFS = 10711, + MODEL_WIRES_17_SFS = 10712, + MODEL_GAYCLUB_SFS = 10713, + MODEL_LODGAYCLUB_SFS = 10714, + MODEL_LODGROUNDBIT_11SFS = 10715, + MODEL_CATH_HEDGE_SFS = 10716, + MODEL_LOD_SFS060B = 10717, + MODEL_POSHOTEL1B_SFS = 10718, + MODEL_LODUNDBIT_10_SFS = 10719, + MODEL_LOD_SFS071 = 10720, + MODEL_LODBBGNDBIT_SFS01 = 10721, + MODEL_SHOPPIE6_SFS03 = 10722, + MODEL_LODBS_BUILDING_SFS = 10723, + MODEL_LODSFSHILL11BEACH = 10724, + MODEL_LOD_SFSHILL11_SFS = 10725, + MODEL_LOD_SFSHILL12 = 10726, + MODEL_LOD_SFSHILL13 = 10727, + MODEL_LOD_SFSHILL11Z_SFS = 10728, + MODEL_LOD_SFSHILL10 = 10729, + MODEL_LOD_SFSHILL10B = 10730, + MODEL_LOD_SFSHILL09 = 10731, + MODEL_LOD_SFSHILL15 = 10732, + MODEL_LOD_SFSHILL14 = 10733, + MODEL_WIRES_07B_SFS = 10734, + MODEL_WIRES_07C_SFS = 10735, + MODEL_WIRES_07D_SFS = 10736, + MODEL_WIRES_04B_SFS = 10737, + MODEL_WIRES_04C_SFS = 10738, + MODEL_WIRES_04D_SFS = 10739, + MODEL_WIRES_03B_SFS = 10740, + MODEL_WIRES_15B_SFS = 10741, + MODEL_WIRES_01B_SFS = 10742, + MODEL_WIRES_01C_SFS = 10743, + MODEL_BS_BUILDING_SFS = 10744, + MODEL_ROADSSFSE01 = 10750, + MODEL_ROADSSFSE02 = 10751, + MODEL_JUST_STUFF07_SFSE = 10752, + MODEL_ROADSSFSE03 = 10753, + MODEL_ROAD_SFSE12 = 10754, + MODEL_AIRPORT_02_SFSE = 10755, + MODEL_AIRPORT_03_SFSE = 10756, + MODEL_AIRPORT_04_SFSE = 10757, + MODEL_AIRPORT_05_SFSE = 10758, + MODEL_ROADSSFSE04 = 10759, + MODEL_AIRPORT_07_SFSE = 10760, + MODEL_AIRPORT_08_SFSE = 10761, + MODEL_AIRPORT_09_SFSE = 10762, + MODEL_CONTROLTOWER_SFSE = 10763, + MODEL_APP_LIGHT_SFS05E = 10764, + MODEL_SKIDMARKS_SFSE = 10765, + MODEL_AIRPORT_10_SFSE = 10766, + MODEL_AIRPORT_11_SFSE = 10767, + MODEL_AIRPRTGND_06_SFSE = 10768, + MODEL_AIRPORT_14_SFSE = 10769, + MODEL_CARRIER_BRIDGE_SFSE = 10770, + MODEL_CARRIER_HULL_SFSE = 10771, + MODEL_CARRIER_LINES_SFSE = 10772, + MODEL_DK_CARGOSHP2_SFSE = 10773, + MODEL_DK_CARGOSHP1_SFS01E = 10774, + MODEL_BIGFACTORY_SFSE = 10775, + MODEL_BIGFACTORY2_SFSE = 10776, + MODEL_DDFREEWAY3_SFSE = 10777, + MODEL_AIRCARPARK_01_SFSE = 10778, + MODEL_AIRCARPARK_06_SFSE = 10779, + MODEL_AIRCARPARK_07_SFSE = 10780, + MODEL_AIRCARPARK_08_SFSE = 10781, + MODEL_AIRCARPARK_02_SFSE = 10782, + MODEL_AIRCARPARK_03_SFSE = 10783, + MODEL_AIRCARPARK_04_SFSE = 10784, + MODEL_AIRCARPARK_05_SFSE = 10785, + MODEL_AIRCARPARK_09_SFSE = 10786, + MODEL_AIRCARPARK_10_SFSE = 10787, + MODEL_AIRCARPARK_11_SFSE = 10788, + MODEL_XENONROOF_SFSE = 10789, + MODEL_ROADSSFSE05 = 10790, + MODEL_ROADSSFSE06 = 10791, + MODEL_UNDERFREEWAY_SFSE = 10792, + MODEL_CAR_SHIP_03_SFSE = 10793, + MODEL_CAR_SHIP_04_SFSE = 10794, + MODEL_CAR_SHIP_05_SFSE = 10795, + MODEL_LOD_SFS080E = 10796, + MODEL_LOD_SFS081E = 10797, + MODEL_LODROADSSFSE02 = 10798, + MODEL_LODROADSSFSE01 = 10799, + MODEL_LODROADSSFSE78 = 10800, + MODEL_LODROADSSFSE06 = 10801, + MODEL_LODROADSSFSE72 = 10802, + MODEL_LODROADSSFSE14 = 10803, + MODEL_LODROADSSFSE04 = 10804, + MODEL_LODROADSSFSE15 = 10805, + MODEL_AIRFENCE_01_SFSE = 10806, + MODEL_AIRFENCE_04_SFSE = 10807, + MODEL_AIRFENCE_03_SFSE = 10808, + MODEL_AIRFENCE_02_SFSE = 10809, + MODEL_AP_SMALLRADAR1_SFSE = 10810, + MODEL_APFUEL1_SFSE = 10811, + MODEL_LODFLARGETANK1E = 10812, + MODEL_LODSMALLRADAR1_SFSE = 10813, + MODEL_APFUEL2_SFSE = 10814, + MODEL_AIRPRTGND_02_SFSE = 10815, + MODEL_AIRPRTGND_01_SFSE = 10816, + MODEL_AIRPRTGND_03_SFSE = 10817, + MODEL_AIRPRTGND_04_SFSE = 10818, + MODEL_AIRPRTGND_05_SFSE = 10819, + MODEL_BAYBRIDGE1_SFSE = 10820, + MODEL_BAYBRIDGE2_SFSE = 10821, + MODEL_BAYBRIDGE3_SFSE = 10822, + MODEL_BAYBRIDGE4_SFSE = 10823, + MODEL_SUBPEN_INT_SFSE = 10824, + MODEL_SUBPEN_CRANE_SFSE = 10825, + MODEL_SUBPEN_EXT_SFSE = 10826, + MODEL_SUBBUNKER_EXT_SFSE = 10827, + MODEL_DRYDOCK1_SFSE = 10828, + MODEL_GATEHOUSE1_SFSE = 10829, + MODEL_DRYDOCK2_SFSE = 10830, + MODEL_DRYDOCK3_SFSE = 10831, + MODEL_GATEHOUSE2_SFSE = 10832, + MODEL_NAVYBASE_02_SFSE = 10833, + MODEL_NAVYBASE_03_SFSE = 10834, + MODEL_NAVYFENCE2_SFSE = 10835, + MODEL_APINNERFENCE3_SFSE = 10836, + MODEL_AP_BIGSIGN_SFSE = 10837, + MODEL_AIRWELCOMESIGN_SFSE = 10838, + MODEL_AIRCARPKBARIER_SFSE = 10839, + MODEL_BIGSHED_SFSE = 10840, + MODEL_DRYDOCK1_SFSE01 = 10841, + MODEL_AIRPORT_14_SFSE01 = 10842, + MODEL_BIGSHED_SFSE01 = 10843, + MODEL_GEN_WHOUSE01_SFSE = 10844, + MODEL_GEN_WHOUSE02_SFSE = 10845, + MODEL_GEN_WHOUSE03_SFSE = 10846, + MODEL_GEN_WHOUSE03_SFSE01 = 10847, + MODEL_ROADSSFSE07 = 10848, + MODEL_ROADSSFSE08 = 10849, + MODEL_LANDBIT01_SFSE = 10850, + MODEL_SFSELAND02 = 10851, + MODEL_ROADSSFSE09 = 10852, + MODEL_LODROADSSFSE08 = 10853, + MODEL_ROADSSFSE10 = 10854, + MODEL_ROADSSFSE11 = 10855, + MODEL_VIET_03B_SFSE = 10856, + MODEL_ROADSSFSE12 = 10857, + MODEL_ROADSSFSE13 = 10858, + MODEL_ROADSSFSE14 = 10859, + MODEL_ROADSSFSE15 = 10860, + MODEL_BIGJUNCTION_05_SFSE = 10861, + MODEL_BIGJUNCTION_06_SFSE = 10862, + MODEL_BIGJUNCTION_07_SFSE = 10863, + MODEL_BIGJUNCTION_08_SFSE = 10864, + MODEL_BIGJUNCT_09_SFSE = 10865, + MODEL_ROADSSFSE16 = 10866, + MODEL_ROADSSFSE18 = 10867, + MODEL_ROADSSFSE19 = 10868, + MODEL_ROADSSFSE20 = 10869, + MODEL_ROADSSFSE21 = 10870, + MODEL_BLACKSKY_SFSE = 10871, + MODEL_WC_LIFT_SFSE = 10872, + MODEL_BLACKSKYRAIL_SFSE = 10873, + MODEL_APINNERFENCE1_SFSE = 10874, + MODEL_APINNERFENCE2_SFSE = 10875, + MODEL_LODPRTGND_04_SFSE = 10876, + MODEL_LODPRTGND_03_SFSE = 10877, + MODEL_LODPRTGND_01_SFSE = 10878, + MODEL_LODPORT_11_SFSE = 10879, + MODEL_LODPORT_10_SFSE = 10880, + MODEL_LODPRTGND_05_SFSE = 10881, + MODEL_LODPRTGND_06_SFSE = 10882, + MODEL_LODPORT_02_SFSE = 10883, + MODEL_LODTROLTOWER_SFSE = 10884, + MODEL_NAVYFENCE_SFSE = 10885, + MODEL_LODYFENCE2_SFSE = 10886, + MODEL_LODYFENCE_SFSE = 10887, + MODEL_LODDOCK2_SFSE = 10888, + MODEL_DOCKBARRIER1_SFSE = 10889, + MODEL_DOCKBARRIER2_SFSE = 10890, + MODEL_BAKERY_SFSE = 10891, + MODEL_LODBIGSHED_SFSE03 = 10892, + MODEL_LODDOCK1_SFSE = 10893, + MODEL_LODPORT_14_SFSE = 10894, + MODEL_LODJUNCT_10_SFSE = 10895, + MODEL_LODYBASE_02_SFSE = 10896, + MODEL_LODBUNKER_EXT_SFSE = 10897, + MODEL_LODPEN_EXT_SFSE = 10898, + MODEL_LODYBASE_03_SFSE = 10899, + MODEL_LODPEN_INT_SFSE = 10900, + MODEL_LODRIER_HULL_SFSE = 10901, + MODEL_LODCKSKY_SFSE = 10902, + MODEL_SF_LANDBUT02 = 10903, + MODEL_SF_LANDBUT01 = 10904, + MODEL_SFSELAND01 = 10905, + MODEL_LODSFANDBUT201 = 10906, + MODEL_LODSFANDBUT202 = 10907, + MODEL_LODSFSELAND01 = 10908, + MODEL_LODSFSELAND02 = 10909, + MODEL_LOD_WHOUSE01_SFSE = 10910, + MODEL_LOD_WHOUSE02_SFSE = 10911, + MODEL_LODBIGSHED_SFSE = 10912, + MODEL_LODWHOUSE03_SFSE01 = 10913, + MODEL_LODDOCK3_SFSE = 10914, + MODEL_LOD_WHOUSE03_SFSE = 10915, + MODEL_LODBAKERY_SFSE = 10916, + MODEL_LANDBIT01B_SFSE = 10917, + MODEL_LODDBIT01B_SFSE = 10918, + MODEL_LODDBIT01_SFSE = 10919, + MODEL_LODROAD_SFSE12 = 10920, + MODEL_LOD_03_SFSE = 10921, + MODEL_LODJUNCTION_07_SFSE = 10922, + MODEL_LODPORT_05_SFSE = 10923, + MODEL_LODAIRPORT_03_SFSE = 10924, + MODEL_SHOPPIE1_SFS = 10925, + MODEL_GROUNDBIT_70_SFS = 10926, + MODEL_TRAINSTUFF37_SFS22 = 10927, + MODEL_ROADSSFSE22 = 10928, + MODEL_ROADSSFSE23 = 10929, + MODEL_ROADSSFSE24 = 10930, + MODEL_TRAINTRAX05_SFS = 10931, + MODEL_STATION03_SFS = 10932, + MODEL_TRAINTRAX01_SFS = 10933, + MODEL_TRAINTRAX03_SFS = 10934, + MODEL_TRAINTRAX04_SFS = 10935, + MODEL_LANDBIT04_SFS = 10936, + MODEL_ROADSSFSE25 = 10937, + MODEL_GROUNDBIT84_SFS = 10938, + MODEL_SILICON09B_SFS = 10939, + MODEL_ROADSSFSE26 = 10940, + MODEL_SILICON11_SFS = 10941, + MODEL_SILICON12_SFS = 10942, + MODEL_SV_GROUND_02_SFS = 10943, + MODEL_SOUTHTUNNEL_04_SFS = 10944, + MODEL_SKYSCRAP_SFS = 10945, + MODEL_FUUUUUUUCK_SFS = 10946, + MODEL_OFFICY_SFS = 10947, + MODEL_SKYSCRAPPER_SFS = 10948, + MODEL_SHOPPIE4_SFS = 10949, + MODEL_SHOPPIE2_SFS = 10950, + MODEL_SHOPPIE3_SFS = 10951, + MODEL_SHOPPIE6_SFS = 10952, + MODEL_SHOPPIE5_SFS = 10953, + MODEL_STADIUM_SFSE = 10954, + MODEL_STADIUMROOF_SFS = 10955, + MODEL_SOUTHTUNNEL_01_SFS = 10956, + MODEL_XSJMSTRAN1 = 10957, + MODEL_ROADSSFSE27 = 10958, + MODEL_CUNTWLAND36_SFS = 10959, + MODEL_CUNTWLAND37_SFS = 10960, + MODEL_CUNTWLAND39_SFS = 10961, + MODEL_CUNTWLAND26_SFS = 10962, + MODEL_LODTWLAND25_SFS = 10963, + MODEL_LODTWLAND27_SFS = 10964, + MODEL_DEPOT_SFS = 10965, + MODEL_TANKFACT03_SFS = 10966, + MODEL_ROADSSFSE28 = 10967, + MODEL_ROADSSFSE29 = 10968, + MODEL_GROUNDBIT_06_SFS = 10969, + MODEL_ROADSSFSE30 = 10970, + MODEL_ROADSSFSE31 = 10971, + MODEL_LANDBIT06_SFS = 10972, + MODEL_MALL_03_SFS = 10973, + MODEL_MALL_01_SFS = 10974, + MODEL_SHOPPIE6_SFS01 = 10975, + MODEL_DRIVINGSCH_SFS = 10976, + MODEL_SMALLSHOP_16_SFS = 10977, + MODEL_SMALLSHOP_17_SFS = 10978, + MODEL_HAIGHTSHOP_SFS = 10979, + MODEL_TEMPOBJ2_SFS02 = 10980, + MODEL_SCUM_SFS = 10981, + MODEL_SMALLSHOP_10_SFS03 = 10982, + MODEL_HUB_SFS = 10983, + MODEL_RUBBLED01_SFS = 10984, + MODEL_RUBBLED02_SFS = 10985, + MODEL_RUBBLED03_SFS = 10986, + MODEL_COVEREDPATH1_SFS = 10987, + MODEL_MISSION_01_SFS = 10988, + MODEL_MISSION_02_SFS = 10989, + MODEL_MISSION_04_SFS = 10990, + MODEL_MISSION_05_SFS = 10991, + MODEL_MISSION_03_SFS = 10992, + MODEL_MISSION_06_SFS = 10993, + MODEL_SHOPPIE6_SFS02 = 10994, + MODEL_MISSION_08_SFS = 10995, + MODEL_SMALLSHOP_10_SFS05 = 10996, + MODEL_SMALLSHOP_10_SFS06 = 10997, + MODEL_MISSION_11_SFS = 10998, + MODEL_HAIGHTSHOP_SFS02 = 10999, + MODEL_SMALLSHOP_17_SFS01 = 11000, + MODEL_MISSION_16_SFS = 11001, + MODEL_TEMPOBJ_SFS03 = 11002, + MODEL_ROADSSFSE32 = 11003, + MODEL_MISSION_18_SFS = 11004, + MODEL_MISSION_17_SFS = 11005, + MODEL_MISSION_09_SFS = 11006, + MODEL_CRACK_WINS_SFS = 11007, + MODEL_FIREHOUSE_SFS = 11008, + MODEL_DK_CARGOSHP70_SFS02 = 11009, + MODEL_CRACKBUILD_SFS = 11010, + MODEL_CRACKFACTJUMP_SFS = 11011, + MODEL_CRACKFACT_SFS = 11012, + MODEL_LANDBIT05_SFS = 11013, + MODEL_DRIVINGSCHLGRG_SFS = 11014, + MODEL_DRIVINGSCHOOLEX_SFS = 11015, + MODEL_LOD_SFS002 = 11016, + MODEL_LOD_SFS003 = 11017, + MODEL_LOD_SFS004 = 11018, + MODEL_LOD_SFS005 = 11019, + MODEL_LOD_SFS006 = 11020, + MODEL_LOD_SFS010 = 11021, + MODEL_LOD_SFS011 = 11022, + MODEL_LOD_SFS012 = 11023, + MODEL_LOD_SFS013 = 11024, + MODEL_LOD_SFS014 = 11025, + MODEL_LOD_SFS015 = 11026, + MODEL_LOD_SFS016 = 11027, + MODEL_LOD_SFS017 = 11028, + MODEL_LOD_SFS018 = 11029, + MODEL_LOD_SFS019 = 11030, + MODEL_LOD_SFS020 = 11031, + MODEL_LOD_SFS021 = 11032, + MODEL_LOD_SFS022 = 11033, + MODEL_LOD_SFS023 = 11034, + MODEL_LOD_SFS024 = 11035, + MODEL_LOD_SFS026 = 11036, + MODEL_LOD_SFS027 = 11037, + MODEL_LOD_SFS028 = 11038, + MODEL_LOD_SFS029 = 11039, + MODEL_LOD_SFS030 = 11040, + MODEL_LOD_SFS031 = 11041, + MODEL_LOD_SFS032 = 11042, + MODEL_LOD_SFS033 = 11043, + MODEL_LOD_SFS034 = 11044, + MODEL_LOD_SFS035 = 11045, + MODEL_LOD_SFS036 = 11046, + MODEL_LOD_SFS037 = 11047, + MODEL_LOD_SFS047 = 11048, + MODEL_LOD_SFS049 = 11049, + MODEL_LOD_SFS078 = 11050, + MODEL_LOD_SFS079 = 11051, + MODEL_LODROADSSFSE60 = 11052, + MODEL_LODROADSSFSE62 = 11053, + MODEL_LODROADSSFSE24 = 11054, + MODEL_LODROADSSFSE23 = 11055, + MODEL_LODROADSSFSE38 = 11056, + MODEL_LODROADSSFSE32 = 11057, + MODEL_LODROADSSFSE43 = 11058, + MODEL_LODROADSSFSE45 = 11059, + MODEL_LODROADSSFSE55 = 11060, + MODEL_LODROADSSFSE36 = 11061, + MODEL_LODROADSSFSE39 = 11062, + MODEL_LODROADSSFSE58 = 11063, + MODEL_LODROADSSFSE31 = 11064, + MODEL_LODROADSSFSE22 = 11065, + MODEL_LODROADSSFSE28 = 11066, + MODEL_LODROADSSFSE25 = 11067, + MODEL_LODROADSSFSE68 = 11068, + MODEL_LODROADSSFSE63 = 11069, + MODEL_LODROADSSFSE44 = 11070, + MODEL_ROADSSFSE33 = 11071, + MODEL_ROADSSFSE36 = 11072, + MODEL_ROADSSFSE37 = 11073, + MODEL_ROADSSFSE38 = 11074, + MODEL_ROADSSFSE39 = 11075, + MODEL_ROADSSFSE42 = 11076, + MODEL_ROADSSFSE43 = 11077, + MODEL_ROADSSFSE44 = 11078, + MODEL_ROADSSFSE45 = 11079, + MODEL_ROADSSFSE46 = 11080, + MODEL_CRACKFACTTANKS_SFS = 11081, + MODEL_LANDBIT05B_SFS = 11082, + MODEL_DRIVINGSCHLGND_SFS = 11083, + MODEL_ROADSSFSE47 = 11084, + MODEL_CRACK_INT1 = 11085, + MODEL_CRACK_INT2 = 11086, + MODEL_CRACKFACTWALK = 11087, + MODEL_CF_EXT_DEM_SFS = 11088, + MODEL_CRACKFACTTANKS2_SFS = 11089, + MODEL_CRACKFACTVATS_SFS = 11090, + MODEL_CRACKFACTFENCE_SFS = 11091, + MODEL_BURGALRYSTORE_SFS = 11092, + MODEL_GEN_WHOUSE02_SFS = 11093, + MODEL_ROADSSFSE49 = 11094, + MODEL_STADBRIDGE_SFS = 11095, + MODEL_ROADSSFSE50 = 11096, + MODEL_VIETLAND_SFS = 11097, + MODEL_ROADSSFSE52 = 11098, + MODEL_DRIVINGSCHSKID_SFS = 11099, + MODEL_ROADSSFSE53 = 11100, + MODEL_NEWTUNNELRAIL_SFS = 11101, + MODEL_BURGALRYDOOR_SFS = 11102, + MODEL_CFSMASHWIN1_SFS = 11103, + MODEL_NEWSFSROAD = 11104, + MODEL_ROADSSFSE54 = 11105, + MODEL_LANDY = 11106, + MODEL_LANDY2 = 11107, + MODEL_LODLANDY03 = 11108, + MODEL_LODLANDY04 = 11109, + MODEL_ROADSSFSE55 = 11110, + MODEL_ROADSSFSE57 = 11111, + MODEL_ROADSSFSE58 = 11112, + MODEL_ROADSSFSE59 = 11113, + MODEL_ROADSSFSE60 = 11114, + MODEL_ROADSSFSE61 = 11115, + MODEL_ROADSSFSE62 = 11116, + MODEL_ROADSSFSE63 = 11117, + MODEL_ROADSSFSE64 = 11118, + MODEL_ROADSSFSE65 = 11119, + MODEL_ROADSSFSE66 = 11120, + MODEL_ROADSSFSE68 = 11121, + MODEL_ROADSSFSE69 = 11122, + MODEL_ROADSSFSE70 = 11123, + MODEL_ROADSSFSE71 = 11124, + MODEL_ROADSSFSE72 = 11125, + MODEL_ROADSSFSE73 = 11126, + MODEL_ROADSSFSE74 = 11127, + MODEL_ROADSSFSE75 = 11128, + MODEL_ROADSSFSE76 = 11129, + MODEL_ROADSSFSE77 = 11130, + MODEL_ROADSSFSE78 = 11131, + MODEL_ROADSSFSE79 = 11132, + MODEL_ROADSSFSE80 = 11133, + MODEL_ROADSSFSE81 = 11134, + MODEL_ROADSSFSE82 = 11135, + MODEL_ROADSSFSE83 = 11136, + MODEL_ROADSSFSE84 = 11137, + MODEL_ROADSSFSE51 = 11138, + MODEL_FIREHOUSELAND_SFS = 11139, + MODEL_LODDBIT06_SFS = 11140, + MODEL_LODCON09_SFS = 11141, + MODEL_LODGROUND_02_SFS = 11142, + MODEL_LODHUB_SFS = 11143, + MODEL_LODOUNDBIT84_SFS = 11144, + MODEL_CARRIER_LOWDECK_SFS = 11145, + MODEL_CARRIER_HANGAR_SFS = 11146, + MODEL_ACPIPES1_SFS = 11147, + MODEL_ACPIPES2_SFS = 11148, + MODEL_ACCORRIDORS_SFS = 11149, + MODEL_AB_ACC_CONTROL = 11150, + MODEL_LODSION_09_SFS = 11151, + MODEL_LODADSSFSE49 = 11152, + MODEL_LODINGSCHLGND_SFS = 11153, + MODEL_LODDBIT05_SFS = 11154, + MODEL_LODDBIT05B_SFS = 11155, + MODEL_LODVINGSCH_SFS = 11156, + MODEL_LODETLAND_SFS = 11157, + MODEL_LODNDBIT04_SFS = 11158, + MODEL_LODUNCTION_06_SFSE = 11159, + MODEL_LODEHOUSELAND_SFS = 11160, + MODEL_LODSION_17_SFS = 11161, + MODEL_LOD_WHOUSE02_SFS = 11162, + MODEL_LODGALRYSTORE_SFS = 11163, + MODEL_LODPOBJ_SFS03 = 11164, + MODEL_LODUNDBIT_70_SFS = 11165, + MODEL_LODUNDBIT_06_SFS = 11166, + MODEL_LODCON11_SFS = 11167, + MODEL_LODCON12_SFS = 11168, + MODEL_LODJUNCTION_05_SFSE = 11169, + MODEL_LODROADSSFSE47 = 11170, + MODEL_LODROADSSFSE61 = 11171, + MODEL_LODROADSSFSE37 = 11172, + MODEL_LODROADSSFSE33 = 11173, + MODEL_LODROADSSFSE30 = 11174, + MODEL_LODROADSSFSE57 = 11175, + MODEL_LODROADSSFSE42 = 11176, + MODEL_LODROADSSFSE52 = 11177, + MODEL_LODROADSSFSE46 = 11178, + MODEL_LODROADSSFSE13 = 11179, + MODEL_LODROADSSFSE74 = 11180, + MODEL_LODROADSSFSE20 = 11181, + MODEL_LODROADSSFSE19 = 11182, + MODEL_LODROADSSFSE53 = 11183, + MODEL_LODROADSSFSE16 = 11184, + MODEL_LODROADSSFSE18 = 11185, + MODEL_LODROADSSFSE09 = 11186, + MODEL_LODROADSSFSE11 = 11187, + MODEL_LODROADSSFSE10 = 11188, + MODEL_LODROADSSFSE71 = 11189, + MODEL_LODROADSSFSE07 = 11190, + MODEL_LODROADSSFSE26 = 11191, + MODEL_LODROADSSFSE70 = 11192, + MODEL_LODROADSSFSE69 = 11193, + MODEL_LODROADSSFSE64 = 11194, + MODEL_LODROADSSFSE65 = 11195, + MODEL_LODROADSSFSE66 = 11196, + MODEL_LODROADSSFSE59 = 11197, + MODEL_LODROADSSFSE51 = 11198, + MODEL_LODROADSSFSE29 = 11199, + MODEL_LODROADSSFSE82 = 11200, + MODEL_LODROADSSFSE27 = 11201, + MODEL_LODROADSSFSE83 = 11202, + MODEL_LODROADSSFSE84 = 11203, + MODEL_LODROADSSFSE21 = 11204, + MODEL_LODROADSSFSE12 = 11205, + MODEL_LODROADSSFSE03 = 11206, + MODEL_LODROADSSFSE77 = 11207, + MODEL_LODROADSSFSE79 = 11208, + MODEL_LODROADSSFSE05 = 11209, + MODEL_LODROADSSFSE80 = 11210, + MODEL_LODROADSSFSE50 = 11211, + MODEL_LODROADSSFSE73 = 11212, + MODEL_LODROADSSFSE54 = 11213, + MODEL_LODAIRPORT_07_SFSE = 11214, + MODEL_LODAIRPORT_08_SFSE = 11215, + MODEL_LOD_TRAX_SFSE10 = 11216, + MODEL_LODSTATION03_SFS = 11217, + MODEL_LODERFREEWAY_SFSE = 11218, + MODEL_LOD_TRAX_SFSE02 = 11219, + MODEL_LOD_TRAX_SFSE03 = 11220, + MODEL_LOD_TRAX_SFSE04 = 11221, + MODEL_LODROADSSFSE48 = 11222, + MODEL_HUBHOLE1_SFSE = 11223, + MODEL_HUBHOLE2_SFSE = 11224, + MODEL_HUBHOLE3_SFSE = 11225, + MODEL_HUBHOLE4_SFSE = 11226, + MODEL_LODCARPARK_01_SFSE = 11227, + MODEL_TRAINTRAX01B_SFS = 11228, + MODEL_TRAINTRAX01C_SFS = 11229, + MODEL_TRAINTRAX01D_SFS = 11230, + MODEL_TRAINTRAX03B_SFS = 11231, + MODEL_TRAINTRAX03C_SFS = 11232, + MODEL_CRACKFACTWALKB = 11233, + MODEL_CRACKFACTWALKC = 11234, + MODEL_CRACKFACTWALKD = 11235, + MODEL_CRACKFACTWALKE = 11236, + MODEL_CARRIER_BITS_SFSE = 11237, + MODEL_DOCKBARRIER2Z_SFSE = 11238, + MODEL_DOCKBARRIER2ZB_SFSE = 11239, + MODEL_DOCKBARRIER2ZC_SFSE = 11240, + MODEL_DOCKBARRIER2ZD_SFSE = 11241, + MODEL_DOCKBARRIER2ZE_SFSE = 11242, + MODEL_WALL_CM_FIREHSE = 11243, + MODEL_GEN_WHOUSE02_SFS01 = 11244, + MODEL_SFSEFIREHSEFLAG = 11245, + MODEL_SFSETREEBIT = 11246, + MODEL_TREEBIT21 = 11247, + MODEL_LODBAYBRIDGE4_SFSE = 11248, + MODEL_LODBAYBRIDGE1_SFSE = 11249, + MODEL_LODBAYBRIDGE2_SFSE = 11250, + MODEL_LODBAYBRIDGE3_SFSE = 11251, + MODEL_RAILBRIDGE04_SFSE = 11252, + MODEL_RAILBRIDGE08_SFSE = 11253, + MODEL_RAILBRIDGE06_SFSE = 11254, + MODEL_RAILBRIDGE03_SFSE = 11255, + MODEL_RAILBRIDGE09_SFSE = 11256, + MODEL_RAILBRIDGE05_SFSE = 11257, + MODEL_RAILBRIDGE01_SFSE = 11258, + MODEL_RAILBRIDGE07_SFSE = 11259, + MODEL_RAILBRIDGE02_SFSE = 11260, + MODEL_RAILBRIDGE10_SFSE = 11261, + MODEL_LODBRIDGE03_SFSE = 11262, + MODEL_LODRAILBGE08_SFSE = 11263, + MODEL_LODRAILBGE09_SFSE = 11264, + MODEL_LODRAILBGE01_SFSE = 11265, + MODEL_LODRAILBGE02_SFSE = 11266, + MODEL_LODRAILBGE04_SFSE = 11267, + MODEL_LODRAILBGE06_SFSE = 11268, + MODEL_LOD_WHOUSE02_SFS01 = 11269, + MODEL_LODCRACKFACT_SFS = 11270, + MODEL_LODCKFACTTANKS_SFS = 11271, + MODEL_LOD_FIREHOUSESFSE = 11272, + MODEL_LOD_TRAX_SFSE01 = 11273, + MODEL_LOD_TRAX_SFSE06 = 11274, + MODEL_LOD_TRAX_SFSE07 = 11275, + MODEL_LOD_TRAX_SFSE05 = 11276, + MODEL_LOD_TRAX_SFSE08 = 11277, + MODEL_LODROADSSFSE81 = 11278, + MODEL_LOD_HUBGARAGE = 11279, + MODEL_CRACKHSESKID = 11280, + MODEL_LOD_GARAGE2SFSE = 11281, + MODEL_LODEXT_DEM_SFS = 11282, + MODEL_AIRPORT_14B_SFSE = 11283, + MODEL_LODPORT_14C_SFSE = 11284, + MODEL_AIRPORT_14C_SFSE = 11285, + MODEL_LODJUNCT_10B_SFSE = 11286, + MODEL_BIGJUNCT_10B_SFSE = 11287, + MODEL_BIGJUNCT_10_SFSE = 11288, + MODEL_POSTERS = 11289, + MODEL_FACTTANKS_SFSE04 = 11290, + MODEL_LODFACTTANKS_SFSE04 = 11291, + MODEL_GASSTATIOHUT = 11292, + MODEL_FACTTANKS_SFSE08 = 11293, + MODEL_LODFACTTANKS_SFSE08 = 11294, + MODEL_FACTTANKS_SFSE09 = 11295, + MODEL_LODFACTTANKS_SFSE09 = 11296, + MODEL_GROUNDBIT82_SFS = 11297, + MODEL_LODROADSSFSE40 = 11298, + MODEL_ROADSSFSE40 = 11299, + MODEL_LODUNDBIT82_SFS = 11300, + MODEL_CARSHOW4_SFSE = 11301, + MODEL_ROADSSFSE17 = 11302, + MODEL_BIGJUNCTION_15_SFSE = 11303, + MODEL_LODJUNCTION_15_SFSE = 11304, + MODEL_STATION = 11305, + MODEL_STATION05_SFS = 11306, + MODEL_LODROADSSFSE41 = 11307, + MODEL_ROADSSFSE41 = 11308, + MODEL_LODROADSSFSE17 = 11309, + MODEL_LOD_TRAX_SFSE09 = 11310, + MODEL_LODATION06_SFS = 11311, + MODEL_MODSHOP2_SFSE = 11312, + MODEL_MODSHOPDOOR_SFSE = 11313, + MODEL_MODSHOPINT2_SFSE = 11314, + MODEL_SPRAYSHOPINT_SFSE = 11315, + MODEL_CARSHOW3_SFSE = 11316, + MODEL_CARSHOW_SFSE = 11317, + MODEL_CARSHOW2_SFSE = 11318, + MODEL_SPRAYSHPDR2_SFSE = 11319, + MODEL_LOD_CARSHOW4_SFSE = 11320, + MODEL_LOD_CARSHOW_SFSE = 11321, + MODEL_LOD_CARSHOW2_SFSE = 11322, + MODEL_LOD_CARSHOW3_SFSE = 11323, + MODEL_STATION_LIGHTS = 11324, + MODEL_LOD_JUNCTXNON9SFSE = 11325, + MODEL_SFSE_HUBLOCKUP = 11326, + MODEL_SFSE_HUB_GRGDOOR02 = 11327, + MODEL_LOD_HUBLOCKUP = 11328, + MODEL_LOD_CARSHIP05 = 11329, + MODEL_LODCARSHIP_03 = 11330, + MODEL_LOD_CARSHIPBASE = 11331, + MODEL_DKGRASSBITSFSE = 11332, + MODEL_LODDKGSSSFSE = 11333, + MODEL_RECROOMSTUFF = 11334, + MODEL_SFSELANDY2 = 11335, + MODEL_LODLANDY = 11336, + MODEL_STUNNEL_1A_SFSE = 11337, + MODEL_LOD_CUNTWLND26 = 11338, + MODEL_LOD_HUBSFSE2 = 11339, + MODEL_HUB02_SFSE = 11340, + MODEL_LOD_NEWSFROAD = 11341, + MODEL_SOUTHTUNNEL_03_SFS = 11342, + MODEL_SOUTHTUNNEL_03A_SFS = 11343, + MODEL_LOD_STUNNEL_03_SFS = 11344, + MODEL_ROADSSFSE35 = 11345, + MODEL_LODROADSSFSE35 = 11346, + MODEL_LODROADSSFSE34 = 11347, + MODEL_LODROADSFSE76 = 11348, + MODEL_LODROADSSFSE75 = 11349, + MODEL_LOD_STADBRIDGE_SFS = 11350, + MODEL_ROADSSFSE48 = 11351, + MODEL_STATIONSTUFF = 11352, + MODEL_STATION5NEW = 11353, + MODEL_LODSTATION5NEW = 11354, + MODEL_LOD_STUFF07_SFSE = 11355, + MODEL_LODTRAINSTUFF37 = 11356, + MODEL_LODSTUNNEL3A = 11357, + MODEL_LODSTUNNEL1A = 11358, + MODEL_OLDGRGEDOOR3_SFSE = 11359, + MODEL_OLDGRGEDOOR4_SFSE = 11360, + MODEL_LODPORT_14B_SFSE = 11361, + MODEL_SILICON11_LAND = 11362, + MODEL_SILICON11_LAND2 = 11363, + MODEL_SILICON09A_SFS = 11364, + MODEL_ROADSSFSE67 = 11365, + MODEL_LODROADSSFSE67 = 11366, + MODEL_AIRPRTGND_CT_SFSE = 11367, + MODEL_LODPRTGND_CT_SFSE = 11368, + MODEL_LODCARPARK_11_SFSE = 11369, + MODEL_LODICON09B_SFS = 11370, + MODEL_LODVINGSCHOOLEX_SFS = 11371, + MODEL_LODVINGSCHLGRG_SFS = 11372, + MODEL_LODPRTGND_02_SFSE = 11373, + MODEL_ACCORAIL_SFS = 11374, + MODEL_LODREEWAY3_SFSE = 11375, + MODEL_LODCKFACTJUMP_SFS = 11376, + MODEL_LODTHTUNNEL_01_SFS = 11377, + MODEL_LODMSTRAN1 = 11378, + MODEL_BAYBALPHA_SFSE = 11379, + MODEL_BAYBALPH2_SFSE = 11380, + MODEL_BAYBALPH3_SFSE = 11381, + MODEL_BAYBALPH4_SFSE = 11382, + MODEL_JJCT02 = 11383, + MODEL_CUTSEEN1_SFSE = 11384, + MODEL_CTSCENE2_SFSE = 11385, + MODEL_NUROAD_SFSE = 11386, + MODEL_OLDGARAGE_SFS = 11387, + MODEL_HUBINTROOF_SFSE = 11388, + MODEL_HUBINTERIOR_SFS = 11389, + MODEL_HUBGIRDERS_SFSE = 11390, + MODEL_HUBPROPS6_SFSE = 11391, + MODEL_HUBFLOORSTAINS_SFSE = 11392, + MODEL_HUBPROPS1_SFS = 11393, + MODEL_HUBGRGBEAMS_SFSE = 11394, + MODEL_CORVINSIGN_SFSE = 11395, + MODEL_STADIUMGATES_SFSE = 11396, + MODEL_LODSTADIUMROOF_SFS = 11397, + MODEL_LODSHOD2_SFSE = 11398, + MODEL_LODSHOD1_SFSE = 11399, + MODEL_ACWINCH1B_SFS02 = 11400, + MODEL_ACWINCH1B_SFS = 11401, + MODEL_LOD_SFS014ROOF = 11402, + MODEL_LODFKUC_SFSE = 11403, + MODEL_LODASSBRIDGE_SFSE = 11404, + MODEL_LOD_03B_SFSE = 11405, + MODEL_ACWINCH1B_SFS01 = 11406, + MODEL_LODJUNCTION_08_SFSE = 11407, + MODEL_VIET_03_SFSE = 11408, + MODEL_ROADSSFSE34 = 11409, + MODEL_NIGHTLIGHTS01_SFSE = 11410, + MODEL_NIGHTLIGHTS02_SFSE = 11411, + MODEL_NIGHTLIGHTS03_SFSE = 11412, + MODEL_FOSTERFLOWERS1 = 11413, + MODEL_FOSTERFLOWERS02 = 11414, + MODEL_LOD_CUNTWLAND37_SFS = 11415, + MODEL_HBGDSFS = 11416, + MODEL_XENONSIGN2_SFSE = 11417, + MODEL_CON_LIGHTH = 11420, + MODEL_ROADSUPP1_01 = 11421, + MODEL_CON_BR1 = 11422, + MODEL_CON_BR2 = 11423, + MODEL_CON_TUNLL_SUP03 = 11424, + MODEL_DES_ADOBEHOOSES1 = 11425, + MODEL_DES_ADOBE03 = 11426, + MODEL_DES_ADOBECH = 11427, + MODEL_DES_INDRUIN02 = 11428, + MODEL_NW_BIT_31 = 11429, + MODEL_SW_BIT_13 = 11430, + MODEL_DES_TEPEOFF01 = 11431, + MODEL_DES_TEPESIGN01 = 11432, + MODEL_ADOBE_HOOSE2 = 11433, + MODEL_DES_INDIANSTORE = 11434, + MODEL_DES_INDSIGN1 = 11435, + MODEL_DES_INDSHOPS1 = 11436, + MODEL_DES_INDCHFENC = 11437, + MODEL_DES_INDTPFENC = 11438, + MODEL_DES_WOODBR_ = 11439, + MODEL_DES_PUEBLO1 = 11440, + MODEL_DES_PUEBLO5 = 11441, + MODEL_DES_PUEBLO3 = 11442, + MODEL_DES_PUEBLO4 = 11443, + MODEL_DES_PUEBLO2 = 11444, + MODEL_DES_PUEBLO06 = 11445, + MODEL_DES_PUEBLO07 = 11446, + MODEL_DES_PUEBLO08 = 11447, + MODEL_DES_RAILBR_TWR1 = 11448, + MODEL_DES_NWTSHOP2 = 11449, + MODEL_DES_NWTSHOP07 = 11450, + MODEL_DES_NWSHERRIF = 11451, + MODEL_DES_NWSHFENC = 11452, + MODEL_DES_SHERRIFSGN1 = 11453, + MODEL_DES_NWMEDCEN = 11454, + MODEL_DES_MEDCENSGN01 = 11455, + MODEL_DES_NWTSHOP10 = 11456, + MODEL_DES_PUEBLO09 = 11457, + MODEL_DES_PUEBLO10 = 11458, + MODEL_DES_PUEBLO11 = 11459, + MODEL_DES_TELEWIRES03 = 11460, + MODEL_DES_NWWTOWER = 11461, + MODEL_DES_RAILBRIDGE1 = 11462, + MODEL_DES_RAILBR_TWR05 = 11463, + MODEL_DES_TRAINLINE02 = 11464, + MODEL_DES_TRAINLINE03 = 11465, + MODEL_DES_TRAINLINE04 = 11466, + MODEL_DES_TRAINLINE05 = 11467, + MODEL_DES_RAILSTRUCT1_ = 11468, + MODEL_DES_BULLGRILL_ = 11469, + MODEL_DES_BIGBULL = 11470, + MODEL_DES_SWTSHOP14 = 11471, + MODEL_DES_SWTSTAIRS1 = 11472, + MODEL_DES_SWTFENCE1 = 11473, + MODEL_DES_SWTFENCE2 = 11474, + MODEL_DES_SWTSHOP02 = 11475, + MODEL_SWT_TELINE_02 = 11476, + MODEL_SWT_TELINE_03 = 11477, + MODEL_SWT_TELINE_01 = 11478, + MODEL_DES_NWTFESCAPE = 11479, + MODEL_DES_NWT_CARPORT = 11480, + MODEL_DES_RAILFENC1 = 11481, + MODEL_DES_RAILFENC2 = 11482, + MODEL_DES_RAILJUMP02 = 11483, + MODEL_DAM_TURBINE_4 = 11484, + MODEL_DAM_TURBINE_3 = 11485, + MODEL_DAM_TURBINE_2 = 11486, + MODEL_DAM_TURBINE_1 = 11487, + MODEL_DAM_STATAREA = 11488, + MODEL_DAM_STATUES = 11489, + MODEL_DES_RANCH = 11490, + MODEL_DES_RANCHBITS1 = 11491, + MODEL_DES_RSHED1_ = 11492, + MODEL_DES_RANCHBOT = 11493, + MODEL_DES_RNCHBHOUS = 11494, + MODEL_DES_RANCHJETTY = 11495, + MODEL_DES_WJETTY = 11496, + MODEL_DES_BAITSHOP = 11497, + MODEL_DES_ROCKGP2_27 = 11498, + MODEL_DES_DINERFENC01 = 11499, + MODEL_DES_SKELSIGNBUSH_ = 11500, + MODEL_DES_WESTRN9_03 = 11501, + MODEL_DES_WEEBARN1_ = 11502, + MODEL_DES_WESTRN11_05 = 11503, + MODEL_DES_GARAGEW = 11504, + MODEL_DES_GARWCANOPY = 11505, + MODEL_NW_BIT_02 = 11506, + MODEL_NW_BIT_03 = 11507, + MODEL_NW_BIT_04 = 11508, + MODEL_NW_BIT_07 = 11509, + MODEL_NW_BIT_08 = 11510, + MODEL_NW_BIT_09 = 11511, + MODEL_NW_BIT_10 = 11512, + MODEL_NW_BIT_11 = 11513, + MODEL_NW_BIT_12 = 11514, + MODEL_NW_BIT_13 = 11515, + MODEL_NW_BIT_14 = 11516, + MODEL_NW_BIT_15 = 11517, + MODEL_NW_BIT_16 = 11518, + MODEL_NW_BIT_17 = 11519, + MODEL_NW_BIT_18 = 11520, + MODEL_NW_BIT_19 = 11521, + MODEL_NW_BIT_20 = 11522, + MODEL_NW_BIT_21 = 11523, + MODEL_NW_BIT_22 = 11524, + MODEL_NW_BIT_23 = 11525, + MODEL_NW_BIT_24 = 11526, + MODEL_NW_BIT_25 = 11527, + MODEL_NW_BIT_26 = 11528, + MODEL_NW_BIT_27 = 11529, + MODEL_NW_BIT_28 = 11530, + MODEL_NW_BIT_30 = 11531, + MODEL_SW_BIT_03 = 11532, + MODEL_SW_BIT_04 = 11533, + MODEL_SW_BIT_05 = 11534, + MODEL_SW_BIT_06 = 11535, + MODEL_SW_BIT_08 = 11536, + MODEL_SW_BIT_11 = 11537, + MODEL_SW_BIT_12 = 11538, + MODEL_DAMBIT1 = 11539, + MODEL_DAMBIT2 = 11540, + MODEL_DAMBIT3 = 11541, + MODEL_SW_BIT_14 = 11542, + MODEL_DES_WAREHS = 11543, + MODEL_DES_NTFRESCAPE2 = 11544, + MODEL_DESN_TSBLOCK = 11545, + MODEL_DESN_FUELPAY = 11546, + MODEL_DESN_TSCANOPY = 11547, + MODEL_CNTS_LINES = 11548, + MODEL_DES_DECOCAFE = 11549, + MODEL_CN_NBRIDEGRAILS = 11550, + MODEL_CN_TUNLBARRIER = 11551, + MODEL_NW_BIT_29 = 11552, + MODEL_SW_BIT_01 = 11553, + MODEL_SW_BIT_02 = 11554, + MODEL_SW_BIT_15 = 11555, + MODEL_DES_ADROCKS = 11556, + MODEL_SW_BIT_09 = 11557, + MODEL_CN_STA_GRID_03 = 11558, + MODEL_SW_BIT_07 = 11559, + MODEL_SW_BIT_10 = 11560, + MODEL_CN_TELINE_01 = 11561, + MODEL_CN_TELINE_02 = 11562, + MODEL_CN_TELINE_03 = 11563, + MODEL_SWT_TELINE_04 = 11564, + MODEL_SWT_TELINE_05 = 11565, + MODEL_DES_TEPEOFF02 = 11566, + MODEL_DES_RVSTUFF = 11567, + MODEL_DES_CLIFFTWAL = 11568, + MODEL_LOD_SWTSHOP14 = 11569, + MODEL_LOD_SWTSHOP02 = 11570, + MODEL_SW_TELINE_05 = 11571, + MODEL_CON_BR06 = 11572, + MODEL_NW_LODBIT_26 = 11573, + MODEL_NW_LODBIT_27 = 11574, + MODEL_NW_LODBIT_28 = 11575, + MODEL_NW_LODBIT_31 = 11576, + MODEL_SW_LODBIT_11 = 11577, + MODEL_SW_LODBIT_12 = 11578, + MODEL_DES_DAMLODBIT3 = 11579, + MODEL_DAMLODBIT1 = 11580, + MODEL_DAMLODBIT2 = 11581, + MODEL_NW_LODBIT_25 = 11582, + MODEL_NW_LODBIT_30 = 11583, + MODEL_NW_LODBIT_24 = 11584, + MODEL_NW_LODBIT_11 = 11585, + MODEL_NW_LODBIT_15 = 11586, + MODEL_NW_LODBIT_16 = 11587, + MODEL_NW_LODBIT_20 = 11588, + MODEL_NW_LODBIT_07 = 11589, + MODEL_NW_LODBIT_14 = 11590, + MODEL_NW_LODBIT_17 = 11591, + MODEL_NW_LODBIT_18 = 11592, + MODEL_NW_LODBIT_19 = 11593, + MODEL_NW_LODBIT_22 = 11594, + MODEL_NW_LODBIT_23 = 11595, + MODEL_NW_LODBIT_29 = 11596, + MODEL_SW_LODBIT_01 = 11597, + MODEL_SW_LODBIT_07 = 11598, + MODEL_DES_NWMEDCEN_LOD = 11599, + MODEL_DES_NWTSHOP2_LOD = 11600, + MODEL_DES_NWSHERRIF_LOD = 11601, + MODEL_CON_BR06_LOD = 11602, + MODEL_CON_BR062_LOD = 11603, + MODEL_DES_DECOCAFE_LOD = 11604, + MODEL_DES_RAILBR2_LOD = 11605, + MODEL_DES_RAILBRA_LOD = 11606, + MODEL_SW_TELINE_06 = 11607, + MODEL_PYLON_WIRES03 = 11608, + MODEL_PYLON_WIRES11 = 11609, + MODEL_PYLONWIRES_NEW = 11610, + MODEL_DES_SHERRIFSGN02 = 11611, + MODEL_DESN_TSBLOCK_LOD = 11612, + MODEL_DESN_FUELPAY_LOD = 11613, + MODEL_DESN_TSCANOPY_LOD = 11614, + MODEL_DESN_BAITSHOP = 11615, + MODEL_DES_RANCHBOT_LOD = 11616, + MODEL_DES_RNCHBHOUS_LOD = 11617, + MODEL_DES_RANCH_LOD = 11618, + MODEL_DES_RANCHJETTY_LOD = 11619, + MODEL_DES_TRAINLINE03_LOD = 11620, + MODEL_DES_TRAINLINE04_LOD = 11621, + MODEL_DES_TRAINLINE02_LOD = 11622, + MODEL_N_DAMBARRIERS = 11623, + MODEL_DES_RAIL_LOD = 11624, + MODEL_CN_WIRES = 11625, + MODEL_CN_WIRES1 = 11626, + MODEL_CN_WIRES2 = 11627, + MODEL_NW_BIT_06 = 11628, + MODEL_NW_BIT_01 = 11629, + MODEL_CON_LIGHTH_LOD = 11630, + MODEL_RANCH_DESK = 11631, + MODEL_LOD_NW_BIT_01 = 11632, + MODEL_LOD_NW_BIT_02 = 11633, + MODEL_LOD_NW_BIT_03 = 11634, + MODEL_LOD_NW_BIT_04 = 11635, + MODEL_LOD_NW_BIT_10 = 11636, + MODEL_LOD_NW_BIT_09 = 11637, + MODEL_LOD_SW_BIT_03 = 11638, + MODEL_LOD_SW_BIT_04 = 11639, + MODEL_LOD_DES_ROCKGP2_27 = 11640, + MODEL_LOD_DES_ADROCKS = 11641, + MODEL_LOD_NW_BIT_13 = 11642, + MODEL_LOD_NW_BIT_08 = 11643, + MODEL_LOD_NW_BIT_12 = 11644, + MODEL_LOD_NW_BIT_21 = 11645, + MODEL_LOD_NW_BIT_06 = 11646, + MODEL_NW_BIT_05 = 11647, + MODEL_NW_LODBIT_05 = 11648, + MODEL_LOD_DAM_TURBINE_4 = 11649, + MODEL_LOD_DAM_TURBINE_3 = 11650, + MODEL_LOD_DAM_TURBINE_2 = 11651, + MODEL_LOD_DAM_TURBINE_1 = 11652, + MODEL_LOD_SW_BIT_09 = 11653, + MODEL_LOD_DES_RSHED1_ = 11654, + MODEL_LOD_SW_BIT_15 = 11655, + MODEL_LOD_SW_BIT_14 = 11656, + MODEL_LOD_SW_BIT_10 = 11657, + MODEL_LOD_SW_BIT_02 = 11658, + MODEL_LOD_SW_BIT_06 = 11659, + MODEL_LOD_SW_BIT_05 = 11660, + MODEL_LOD_SW_BIT_08 = 11661, + MODEL_LOD_SW_BIT_13 = 11662, + MODEL_TORENO_SHADOW = 11663, + MODEL_KB_COUCH02EXT = 11664, + MODEL_KB_CHAIR03EXT = 11665, + MODEL_FRAME_WOOD_1EXT = 11666, + MODEL_CON_BR_LOD = 11667, + MODEL_LOD_ADOBEHOOSES1 = 11668, + MODEL_LOD_DES_INDSHOPS1 = 11669, + MODEL_LOD_DES_ADOBECH = 11670, + MODEL_LOD_DES_NWTSHOP07 = 11671, + MODEL_LOD_DES_NWTSHOP10 = 11672, + MODEL_LOD_DES_WAREHS = 11673, + MODEL_DES_CLUCKIN = 11674, + MODEL_DES_CLUCKINLOD = 11675, + MODEL_LOD_SUBST_GRID = 11676, + MODEL_XEN2_COUNTN = 11677, + MODEL_DESN_DETAIL01 = 11678, + MODEL_DESN_DETAIL02 = 11679, + MODEL_DESN_DETAIL03 = 11680, + MODEL_DESN_DETAIL04 = 11681, + MODEL_CUNTE_ROADS01 = 12800, + MODEL_CUNTE_ROADS03 = 12801, + MODEL_CUNTE_ROADS04 = 12802, + MODEL_CUNTE_ROADS06 = 12803, + MODEL_CUNTEGROUND01 = 12804, + MODEL_CE_BIGSHED1 = 12805, + MODEL_CUNTE_ROADS08 = 12806, + MODEL_SW_LOGS4 = 12807, + MODEL_SW_LOGS3 = 12808, + MODEL_CUNTE_ROADS11 = 12809, + MODEL_CUNTE_ROADS12 = 12810, + MODEL_CUNTE_ROADS13 = 12811, + MODEL_CUNTE_ROADS14 = 12812, + MODEL_CUNTE_ROADS15 = 12813, + MODEL_CUNTYELAND04 = 12814, + MODEL_CUNTE_ROADS16 = 12815, + MODEL_CUNTE_ROADS17 = 12816, + MODEL_CUNTE_ROADS19 = 12817, + MODEL_CUNTE_ROADS20 = 12818, + MODEL_CUNTE_ROADS21 = 12819, + MODEL_CUNTE_ROADS22 = 12820, + MODEL_CRATESINALLEY = 12821, + MODEL_SMALLTWNBLD05 = 12822, + MODEL_CUNTEGROUND02 = 12823, + MODEL_CEGROUNDTP104 = 12824, + MODEL_CUNTEGROUND08 = 12825, + MODEL_CUNTE_ROADS23 = 12826, + MODEL_CUNTE_ROADS24 = 12827, + MODEL_CUNTE_ROADS25 = 12828, + MODEL_CUNTE_ROADS26 = 12829, + MODEL_CUNTE_ROADS27 = 12830, + MODEL_COE_TRAINTRAX_10 = 12831, + MODEL_COE_TRAINTRAX_03 = 12832, + MODEL_COE_TRAINTRAX_04 = 12833, + MODEL_LODCOE_TRAINTRAX_05 = 12834, + MODEL_COE_TRAINTRAX_06 = 12835, + MODEL_COE_TRAINTRAX_07 = 12836, + MODEL_COE_TRAINTRAX_08 = 12837, + MODEL_COE_TRAINTRAX_09 = 12838, + MODEL_COS_SBANKSTEPS02 = 12839, + MODEL_COS_PIZSKYGLAS01 = 12840, + MODEL_COS_PIZINTERIOR = 12841, + MODEL_COS_PIZSEATS = 12842, + MODEL_COS_LIQUORSHOP = 12843, + MODEL_COS_LIQINSIDE = 12844, + MODEL_COS_LIQINSIDEBITS = 12845, + MODEL_OTB_SIGN = 12846, + MODEL_SPRUNK_FACT = 12847, + MODEL_COE_SPRUNLKFENC = 12848, + MODEL_CORNERSTORE_01 = 12849, + MODEL_SW_BLOCK01 = 12850, + MODEL_CUNTE_ROADS29 = 12851, + MODEL_CUNTE_ROADS30 = 12852, + MODEL_SW_GAS01 = 12853, + MODEL_SW_GAS01INT = 12854, + MODEL_SW_COPSHOP = 12855, + MODEL_SW_BRIDGE = 12856, + MODEL_CE_BRIDGE02 = 12857, + MODEL_SW_GATE1 = 12858, + MODEL_SW_CONT03 = 12859, + MODEL_SW_CONT04 = 12860, + MODEL_SW_CONT05 = 12861, + MODEL_SW_BLOCK03 = 12862, + MODEL_SW_GENSTORE02 = 12863, + MODEL_CUNTEGROUND11 = 12864, + MODEL_CUNTEGROUND13 = 12865, + MODEL_CEGROUNDT202 = 12866, + MODEL_CUNTE_ROADS32 = 12867, + MODEL_CUNTEGROUND26 = 12868, + MODEL_CYECUNTEGROUND28 = 12869, + MODEL_CE_GRNDPALCST06 = 12870, + MODEL_CUNTEGROUND34 = 12871, + MODEL_CUNTEGROUND43 = 12872, + MODEL_CUNTE_ROADS33 = 12873, + MODEL_CUNTE_ROADS34 = 12874, + MODEL_CUNTE_ROADS35 = 12875, + MODEL_CUNTE_ROADS39 = 12876, + MODEL_CUNTE_ROADS40 = 12877, + MODEL_CUNTE_ROADS41 = 12878, + MODEL_CUNTE_ROADS42 = 12879, + MODEL_CUNTE_ROADS43 = 12880, + MODEL_CUNTE_ROADS44 = 12881, + MODEL_CUNTE_ROADS45 = 12882, + MODEL_CUNTE_ROADS46 = 12883, + MODEL_CUNTE_ROADS47 = 12884, + MODEL_CUNTE_ROADS48 = 12885, + MODEL_CUNTE_ROADS49 = 12886, + MODEL_CUNTE_ROADS50 = 12887, + MODEL_CUNTE_ROADS51 = 12888, + MODEL_CUNTE_ROADS52 = 12889, + MODEL_CUNTE_ROADS54 = 12890, + MODEL_CUNTE_ROADS56 = 12891, + MODEL_CUNTEROADS_58 = 12892, + MODEL_CUNTE_ROADS59 = 12893, + MODEL_CUNTE_ROADS60 = 12894, + MODEL_CUNTE_ROADS61 = 12895, + MODEL_CUNTE_ROADS62 = 12896, + MODEL_CUNTE_ROADS63 = 12897, + MODEL_CUNTE_ROADS69 = 12898, + MODEL_CUNTE_ROADS71 = 12899, + MODEL_CUNTE_ROADS72 = 12900, + MODEL_CUNTE_ROADS73 = 12901, + MODEL_CUNTE_ROADS74 = 12902, + MODEL_CUNTE_ROADS75 = 12903, + MODEL_CUNTETOWNRD1 = 12904, + MODEL_CUNTETOWNRD2 = 12905, + MODEL_CUNTETOWNRD3 = 12906, + MODEL_CUNTETOWNRD4 = 12907, + MODEL_CUNTEGROUND09B = 12908, + MODEL_SW_BRIDGE03 = 12909, + MODEL_SW_TRAINBRIDGE1 = 12910, + MODEL_SW_SILO02 = 12911, + MODEL_SW_SILO04 = 12912, + MODEL_SW_FUELDRUM03 = 12913, + MODEL_SW_CORRUG01 = 12914, + MODEL_CE_BIGBARN07 = 12915, + MODEL_CE_FARMLAND04 = 12916, + MODEL_SW_HAYPILE03 = 12917, + MODEL_SW_HAYPILE05 = 12918, + MODEL_SW_TEMPBARN06 = 12919, + MODEL_SW_TEMPBARN02 = 12920, + MODEL_SW_FARMENT01 = 12921, + MODEL_SW_FARMENT02 = 12922, + MODEL_SW_BLOCKBIT05 = 12923, + MODEL_SW_BLOCK06 = 12924, + MODEL_SW_SHED01 = 12925, + MODEL_SW_SHEDS_BASE = 12926, + MODEL_SW_PIPEPILE01 = 12927, + MODEL_SW_SHEDINTERIOR04 = 12928, + MODEL_SW_SHED06 = 12929, + MODEL_SW_PIPEPILE02 = 12930, + MODEL_CE_BREWERY = 12931, + MODEL_SW_TRAILER02 = 12932, + MODEL_SW_BREWERYFENCE01 = 12933, + MODEL_SW_TRAILER03 = 12934, + MODEL_SW_SECURITYCAB03 = 12935, + MODEL_SW_BEERSIGN02 = 12936, + MODEL_CE_CATSHACK = 12937, + MODEL_SW_APARTMENTS02 = 12938, + MODEL_SW_APARTMENTSBASE = 12939, + MODEL_SW_APARTMENTS07 = 12940, + MODEL_SW_LASTDROP = 12941, + MODEL_SW_SHEDINTERIOR01 = 12942, + MODEL_SW_SHED07 = 12943, + MODEL_SW_LASERSHOP = 12944, + MODEL_SW_DRYCLEAN01 = 12945, + MODEL_SW_FURNISTORE01 = 12946, + MODEL_SW_MUSICSTORE01 = 12947, + MODEL_SW_BLOCK01A = 12948, + MODEL_SW_JAZZMAGS = 12949, + MODEL_COS_SBANKSTEPS03 = 12950, + MODEL_SW_SHOPFLAT01 = 12951, + MODEL_SW_BANKALLEY = 12952, + MODEL_SW_BLOCKBIT01 = 12953, + MODEL_SW_FURNIPILE01 = 12954, + MODEL_DOCK_PROPS01 = 12955, + MODEL_SW_TRAILERJUMP = 12956, + MODEL_SW_PICKUPWRECK01 = 12957, + MODEL_COS_SBANKSTEPS01 = 12958, + MODEL_SW_LIBRARY = 12959, + MODEL_SW_CHURCH01 = 12960, + MODEL_SW_HEDSTONES = 12961, + MODEL_SW_SHOPFLAT04 = 12962, + MODEL_SW_SHOPFLAT02 = 12963, + MODEL_SW_BLOCK07 = 12964, + MODEL_CUNTE_ROADS10 = 12965, + MODEL_CUNTE_ROADS66 = 12966, + MODEL_CUNTE_ROADS67 = 12967, + MODEL_CUNTE_ROADS68 = 12968, + MODEL_CE_GROUND08 = 12969, + MODEL_CUNTE_ROADS76 = 12970, + MODEL_CUNTE_ROADS78 = 12971, + MODEL_SW_BRIDGE01 = 12972, + MODEL_ROADFROMLAN2 = 12973, + MODEL_CUNTE_ROADS40A = 12974, + MODEL_CUNTEROADS43RAMP01 = 12975, + MODEL_SW_DINER1 = 12976, + MODEL_CRATESINALLEY01 = 12977, + MODEL_SW_SHED02 = 12978, + MODEL_SW_BLOCK09 = 12979, + MODEL_SW_BLOCK10 = 12980, + MODEL_SW_FACT01 = 12981, + MODEL_SW_SHOPFLAT06 = 12982, + MODEL_SW_MED1 = 12983, + MODEL_SW_BLOCK11 = 12984, + MODEL_COS_SBANKSTEPS05 = 12985, + MODEL_SW_WELL1 = 12986, + MODEL_COS_SBANKSTEPS06 = 12987, + MODEL_SW_FACT02 = 12988, + MODEL_CUNTEGROUND06 = 12989, + MODEL_SW_JETTY = 12990, + MODEL_SW_SHACK02 = 12991, + MODEL_CE_ARCHBRIDGE = 12992, + MODEL_CUNTE_ROADS09 = 12993, + MODEL_CUNTE_ROADS57 = 12994, + MODEL_CUNTE_ROADS64 = 12995, + MODEL_CUNTE_ROADS65 = 12996, + MODEL_CUNTE_ROADS77 = 12997, + MODEL_CUNTE_ROADS80 = 12998, + MODEL_CUNTE_ROADS82 = 12999, + MODEL_CUNTE_ROADS83 = 13000, + MODEL_CUNTE_ROADS84 = 13001, + MODEL_CUNTEBIGBARN = 13002, + MODEL_CUNTE_RACESTART = 13003, + MODEL_SW_LOGS01 = 13004, + MODEL_SW_LOGS6 = 13005, + MODEL_SW_OFFICE1 = 13006, + MODEL_SW_BANKBITS = 13007, + MODEL_SW_BLOCK02 = 13008, + MODEL_SW_BLOCK02ALPHA = 13009, + MODEL_SW_BLOCK01ALPHA = 13010, + MODEL_COS_SBANKSTEPS04 = 13011, + MODEL_SW_SHOPFLAT05 = 13012, + MODEL_SW_BLOCK12 = 13013, + MODEL_SW_BLOCK04 = 13014, + MODEL_SW_GENSTORE01 = 13015, + MODEL_SW_BLOCK04COL27 = 13016, + MODEL_CEHOLLYHIL16 = 13017, + MODEL_CEMULWIRE03 = 13018, + MODEL_CEHOLLYHIL17 = 13019, + MODEL_CEROADTEMP2 = 13020, + MODEL_CEHLLYHIL01A = 13021, + MODEL_SW_BLOCK11A = 13022, + MODEL_SW_ROCKS1 = 13023, + MODEL_SW_BREWERYFENCE02 = 13024, + MODEL_SW_FUELDRUM01 = 13025, + MODEL_LODSW_LIBRARY = 13026, + MODEL_CE_SPRAY = 13027, + MODEL_CE_SPRAYDOOR1 = 13028, + MODEL_LODSW_PIPEPILE01 = 13029, + MODEL_CUNTEGROUND34A = 13030, + MODEL_LODCUNTEGROUND34 = 13031, + MODEL_LODCUNTEGROUND09B = 13032, + MODEL_CUNTE_ROADS30BAR = 13033, + MODEL_CUNTE_ROADS30BAR01 = 13034, + MODEL_CUNTEGROUND12A = 13035, + MODEL_CUNTEGUND11A = 13036, + MODEL_LODCUNTEGROUND11A = 13037, + MODEL_CUNTE_ROADS35A = 13038, + MODEL_CE_GROUND02 = 13039, + MODEL_CE_GROUND03 = 13040, + MODEL_CE_GROUND04 = 13041, + MODEL_CE_GROUND05 = 13042, + MODEL_CE_GROUND06 = 13043, + MODEL_CE_GROUND07 = 13044, + MODEL_CUNTE_ROADS30BAR02 = 13045, + MODEL_LODCE_GROUND06 = 13046, + MODEL_LODCE_GROUND04 = 13047, + MODEL_LODCE_BREWERY = 13048, + MODEL_CE_FARMLAND01 = 13049, + MODEL_CE_FARMLAND02 = 13050, + MODEL_CE_FARMLAND03 = 13051, + MODEL_LODCE_BIGBARN07 = 13052, + MODEL_LODSW_SILO04 = 13053, + MODEL_LODSW_SILO02 = 13054, + MODEL_LODSW_TEMPBARN02 = 13055, + MODEL_LODSW_TEMPBARN06 = 13056, + MODEL_LODSWWATERTOWER02 = 13057, + MODEL_CUNTE_ROADS11A = 13058, + MODEL_CEFACT03 = 13059, + MODEL_CE_FACTCOMP1 = 13060, + MODEL_CE_FACTCOMP2 = 13061, + MODEL_LODCEFACT03 = 13062, + MODEL_LODCE_FACTCOMP2 = 13063, + MODEL_LODCE_FACTCOMP1 = 13064, + MODEL_SW_FACT03 = 13065, + MODEL_SW_FACT04 = 13066, + MODEL_LODSW_FACT04 = 13067, + MODEL_LODSW_FACT03 = 13068, + MODEL_LODSW_LASTDROP = 13069, + MODEL_CEGROUNDTP101 = 13070, + MODEL_CEGROUNDTP102 = 13071, + MODEL_CEGROUNDTP103 = 13072, + MODEL_LODCUNTEGROUND43 = 13073, + MODEL_LODCUNTEGROUND13 = 13074, + MODEL_LODCEGROUNDTP101 = 13075, + MODEL_LODCEGROUNDTP102 = 13076, + MODEL_CE_TOWNWARE = 13077, + MODEL_CEWREHSE07 = 13078, + MODEL_LODCE_TOWNWARE = 13079, + MODEL_LODCEWREHSE07 = 13080, + MODEL_CEGROUNDT206 = 13081, + MODEL_CEGROUNDT203 = 13082, + MODEL_CEGROUNDT204 = 13083, + MODEL_CEGROUNDT205 = 13084, + MODEL_LODCEGROUNDT203 = 13085, + MODEL_LODCEGROUNDT206 = 13086, + MODEL_LODCEGROUNDT204 = 13087, + MODEL_CUNTETOWNRD4A = 13088, + MODEL_LODCUNTETOWNRD4 = 13089, + MODEL_LODCUNTETOWNRD4A = 13090, + MODEL_LODCUNTETOWNRD2 = 13091, + MODEL_CUNTETOWNRD05 = 13092, + MODEL_LODCUNTETOWNRD3 = 13093, + MODEL_LODCUNTETOWNRD05 = 13094, + MODEL_CUNTE_ROADS02 = 13095, + MODEL_CUNTE_ROADSBAR01 = 13096, + MODEL_CUNTE_ROADS30BAR06 = 13097, + MODEL_CUNTE_ROADSBAR05 = 13098, + MODEL_CE_GROUNDPALO06 = 13099, + MODEL_CE_GROUNDPALO02 = 13100, + MODEL_CE_GROUNDPALO03 = 13101, + MODEL_CE_GROUNDPALO04 = 13102, + MODEL_CE_GROUNDPALO05 = 13103, + MODEL_CE_GROUNDPALO01 = 13104, + MODEL_CE_GROUNDPALO07 = 13105, + MODEL_CE_GROUNDPALO08 = 13106, + MODEL_CE_GROUNDPALO10 = 13107, + MODEL_LODSWWATERTOWER03 = 13108, + MODEL_SW_WATERTOWER04 = 13109, + MODEL_LODCE_GROUNDPALO06 = 13110, + MODEL_LODCE_GROUNDPALO02 = 13111, + MODEL_LODCEGROUNDPALO03 = 13112, + MODEL_LODCE_GROUNDPALO05 = 13113, + MODEL_LODCEGROUNDPALO01 = 13114, + MODEL_LODCE_GROUNDPALO10 = 13115, + MODEL_LODCUNTE_ROADS45 = 13116, + MODEL_LODCUNTE_ROADS44 = 13117, + MODEL_CUNTE_ROADSBAR02 = 13118, + MODEL_CUNTE_ROADS37 = 13119, + MODEL_CE_GRNDPALCST03 = 13120, + MODEL_CE_GRNDPALCST04 = 13121, + MODEL_CE_GRNDPALCST01 = 13122, + MODEL_CE_GRNDPALCST07 = 13123, + MODEL_CE_GRNDPALCST08 = 13124, + MODEL_CE_GRNDPALCST09 = 13125, + MODEL_CE_GRNDPALCST10 = 13126, + MODEL_CUNTE_ROADS81 = 13127, + MODEL_CUNTE_ROADS79 = 13128, + MODEL_CUNTE_ROADS85 = 13129, + MODEL_LODCEPALCST10 = 13130, + MODEL_SW_BLOCK05 = 13131, + MODEL_CE_BAR01 = 13132, + MODEL_LODCE_BAR01 = 13133, + MODEL_CUNTEGROUND03 = 13134, + MODEL_CYECUNTEGROUND01 = 13135, + MODEL_CYECUNTEGROUND02 = 13136, + MODEL_CEWIRESTOWN = 13137, + MODEL_CE_ARCHBRIDGE2 = 13138, + MODEL_CUNTETUNNEL1 = 13139, + MODEL_CUNTETUNNEL1A = 13140, + MODEL_CUNTE_ROADS58B = 13141, + MODEL_CE_BBRIDGE = 13142, + MODEL_CEMULWIRE02 = 13143, + MODEL_CUNTEGROUND04 = 13144, + MODEL_CUNTEGROUND05 = 13145, + MODEL_CUNTEGROUND07 = 13146, + MODEL_CUNTEGROUND09 = 13147, + MODEL_CUNTEGROUND10 = 13148, + MODEL_CUNTEGROUND17 = 13149, + MODEL_CUNTEGROUND19 = 13150, + MODEL_LODCUNTEGROUND19 = 13151, + MODEL_LODCUNTEGROUND26 = 13152, + MODEL_CUNTE_ROADS30BAR03 = 13153, + MODEL_LODCUNTETUNNEL1 = 13154, + MODEL_LODCUNTE_ROADS63 = 13155, + MODEL_CUNTEGROUND21 = 13156, + MODEL_CUNTEGROUND22 = 13157, + MODEL_CUNTEGROUND27 = 13158, + MODEL_LODCUNTEGROUND21 = 13159, + MODEL_LODCUNTE_ROADS69 = 13160, + MODEL_LODCUNTE_ROADS02 = 13161, + MODEL_LODCUNTE_ROADS43 = 13162, + MODEL_CE_GROUNDPALO11 = 13163, + MODEL_LODCEROUNDPALO11 = 13164, + MODEL_CE_GROUNDPALO12 = 13165, + MODEL_LODCENDPALO12 = 13166, + MODEL_CYECUNTEGROUND03 = 13167, + MODEL_CUNTE_ROADS58 = 13168, + MODEL_CUNTE_ROADS86 = 13169, + MODEL_CUNTE_ROADS87 = 13170, + MODEL_CUNTEGD12A01 = 13171, + MODEL_CUNTEGD12A02 = 13172, + MODEL_CUNTE_ROADS88 = 13173, + MODEL_CUNTE_ROOTS01 = 13174, + MODEL_CUNTEGROUND18 = 13175, + MODEL_CUNTEGROUND29 = 13176, + MODEL_CUNTEGROUND30 = 13177, + MODEL_CUNTEGROUND31 = 13178, + MODEL_CUNTEGROUND32 = 13179, + MODEL_CUNTEGROUND33 = 13180, + MODEL_CUNTEGROUND35 = 13181, + MODEL_LODCUNTEGROUND29 = 13182, + MODEL_LODCUNTEGROUND30 = 13183, + MODEL_LODCUNTEGROUND32 = 13184, + MODEL_LODCUNTEGROUND35 = 13185, + MODEL_LODCUNTEGROUND33 = 13186, + MODEL_BURBDOOR = 13187, + MODEL_BURBDOOR2 = 13188, + MODEL_SW_SHED07_LOD = 13189, + MODEL_CE_BUSDEPOT = 13190, + MODEL_LODCE_BIGSHED1 = 13191, + MODEL_SW_CONT04_LOD = 13192, + MODEL_SW_CONT03_LOD = 13193, + MODEL_DK_WARETANK_LOD = 13194, + MODEL_SW_CONT05_LOD = 13195, + MODEL_LODSW_SHED01 = 13196, + MODEL_SW_SHED06_LOD = 13197, + MODEL_CE_WARETANK = 13198, + MODEL_SW_SHEDS_LOD = 13199, + MODEL_SW_BLOCKBIT05_LOD = 13200, + MODEL_LODSW_BLOCK06 = 13201, + MODEL_LODSW_BLOCK05 = 13202, + MODEL_BUSDEPOT_LOD = 13203, + MODEL_COS_LIQUORSHOP_LOD = 13204, + MODEL_CE_WIRES = 13205, + MODEL_CETRUTH_BARN02 = 13206, + MODEL_CUNTEGROUND12 = 13207, + MODEL_CUNTEGROUND15 = 13208, + MODEL_CUNTEGROUND36 = 13209, + MODEL_CUNTEGROUND37 = 13210, + MODEL_CUNTEGROUND38 = 13211, + MODEL_CUNTEGROUND39 = 13212, + MODEL_CUNTEGROUND40 = 13213, + MODEL_CUNTEGROUND41 = 13214, + MODEL_SW_OFFICE1_LOD = 13215, + MODEL_SW_BLOCK02_LOD = 13216, + MODEL_SW_FACT02_LOD = 13217, + MODEL_SW_SHOPFLAT05_LOD = 13218, + MODEL_CORNERSTORE_LOD = 13219, + MODEL_SW_BLOCK12_LOD = 13220, + MODEL_SW_MED1_LOD = 13221, + MODEL_SW_BLOCK11_LOD = 13222, + MODEL_SW_BLOCK11A_LOD = 13223, + MODEL_SPRUNK_FACT_LOD = 13224, + MODEL_SW_BLOCK04_LOD = 13225, + MODEL_SW_GENSTORE01_LOD = 13226, + MODEL_SW_BLOCK01_LOD = 13227, + MODEL_LODCUNTEGROUND15 = 13228, + MODEL_LODCUNTEGROUND36 = 13229, + MODEL_LODCUNTEGROUND12 = 13230, + MODEL_LODCUNTEGROUND41 = 13231, + MODEL_LODCUNTEROADS_58 = 13232, + MODEL_LODCUNTE_ROADS30 = 13233, + MODEL_LODCUNTE_ROADS29 = 13234, + MODEL_CUNTEHIL01 = 13235, + MODEL_CUNTEHIL02 = 13236, + MODEL_CUNTEHIL03 = 13237, + MODEL_LODCUNTEHIL01 = 13238, + MODEL_LODCUNTEHIL02 = 13239, + MODEL_LODCUNTEHIL03 = 13240, + MODEL_LOD05SW_DINER1 = 13241, + MODEL_LOD08SW_GENSTORE02 = 13242, + MODEL_LOD02SW_BLOCK09 = 13243, + MODEL_LOD01SW_BLOCK03 = 13244, + MODEL_LOD07SW_GAS01 = 13245, + MODEL_LOD09SW_SHOPFLAT02 = 13246, + MODEL_LOD10SW_SHOPFLAT06 = 13247, + MODEL_LOD03SW_BLOCK10 = 13248, + MODEL_LOD06SW_FACT01 = 13249, + MODEL_LOD04SW_COPSHOP = 13250, + MODEL_LOD04SW_BLOCK07 = 13251, + MODEL_LOD06SW_CHURCH01 = 13252, + MODEL_LOD14SW_SHOPFLAT04 = 13253, + MODEL_LOD02SW_BANKALLEY = 13254, + MODEL_LOD05SW_BLOCKBIT01 = 13255, + MODEL_LOD01SMALLTWNBLD05 = 13256, + MODEL_LOD10SW_LASERSHOP = 13257, + MODEL_LOD07SW_DRYCLEAN01 = 13258, + MODEL_LOD08SW_STORE01 = 13259, + MODEL_LOD12SW_STORE01 = 13260, + MODEL_LOD03SW_BLOCK01A = 13261, + MODEL_LOD09SW_JAZZMAGS = 13262, + MODEL_LOD13SW_SHOPFLAT01 = 13263, + MODEL_LODCUNTE_ROADS58 = 13264, + MODEL_LODCUNTE_ROADS21 = 13265, + MODEL_LODCUNTE_ROADS87 = 13266, + MODEL_LODCUNTE_ROADS22 = 13267, + MODEL_LODCUNTE_ROADS20 = 13268, + MODEL_LODCUNTE_ROADS03 = 13269, + MODEL_LODCUNTE_ROADS17 = 13270, + MODEL_LODCUNTE_ROADS19 = 13271, + MODEL_LODCUNTE_ROADS86 = 13272, + MODEL_LODCUNTE_ROADS25 = 13273, + MODEL_LODCUNTE_ROADS50 = 13274, + MODEL_LODCUNTE_ROADS83 = 13275, + MODEL_LODCUNTE_ROADS81 = 13276, + MODEL_LODCUNTE_ROADS84 = 13277, + MODEL_LODCUNTE_ROADS82 = 13278, + MODEL_LODCUNTE_ROADS79 = 13279, + MODEL_LODCUNTE_ROADS85 = 13280, + MODEL_LODCUNTE_ROADS80 = 13281, + MODEL_LODCUNTE_ROADS38 = 13282, + MODEL_LODCUNTE_ROADS14 = 13283, + MODEL_LODCUNTE_ROADS09 = 13284, + MODEL_LODCUNTE_ROADS65 = 13285, + MODEL_LODCUNTE_ROADS77 = 13286, + MODEL_LODCUNTE_ROADS06 = 13287, + MODEL_LODCUNTE_ROADS64 = 13288, + MODEL_LODCUNTE_ROADS88 = 13289, + MODEL_LODCUNTE_ROADS57 = 13290, + MODEL_LODCUNTETOWNRD1 = 13291, + MODEL_LODSW_APARTMENTS07 = 13292, + MODEL_LODSW_APARTMENTS01 = 13293, + MODEL_LODSW_APARTASE1 = 13294, + MODEL_CE_TERMINAL1 = 13295, + MODEL_CE_ROADSIDEGAS = 13296, + MODEL_CEGROUNDT201 = 13297, + MODEL_LODCE_TERMINAL1 = 13298, + MODEL_LODCEROADSIDEGAS = 13299, + MODEL_LODCEROADTEMP2 = 13300, + MODEL_LODROADFROMLAN2 = 13301, + MODEL_LODCUNTE_ROADS16 = 13302, + MODEL_LODCUNTE_ROADS13 = 13303, + MODEL_LODCUNTE_ROADS42 = 13304, + MODEL_LODCUNTE_ROADS41 = 13305, + MODEL_LODCUNTE_ROADS40A = 13306, + MODEL_LODCUNTE_ROADS40 = 13307, + MODEL_LODCUNTE_ROADS39 = 13308, + MODEL_LODCUNTE_ROADS37 = 13309, + MODEL_LODCOE_TRAINTRAX_03 = 13310, + MODEL_LODCOE_TRAINTRAX_04 = 13311, + MODEL_COE_TRAINTRAX_05 = 13312, + MODEL_LODCOE_TRAINTRAX_06 = 13313, + MODEL_LODCOE_TRAINTRAX_07 = 13314, + MODEL_LODCOE_TRAINTRAX_08 = 13315, + MODEL_LODCOE_TRAINTRAX_09 = 13316, + MODEL_LODCOE_TRAINTRAX_10 = 13317, + MODEL_LODCU43RAMP01 = 13318, + MODEL_LODCUNTE_ROADS04 = 13319, + MODEL_LODCUNTE_ROADS56 = 13320, + MODEL_CUNTE_ROADS07 = 13321, + MODEL_LODCUNTE_ROADS07 = 13322, + MODEL_CUNTE_ROADS18 = 13323, + MODEL_CUNTE_ROADS38 = 13324, + MODEL_CUNTE_ROADS89 = 13325, + MODEL_LODCUNTE_ROADS18 = 13326, + MODEL_LODCUNTE_ROADS89 = 13327, + MODEL_LODCUNTE_ROADS54 = 13328, + MODEL_LODCUNTE_ROADS66 = 13329, + MODEL_LODCUNTE_ROADS51 = 13330, + MODEL_LODCUNTE_ROADS48 = 13331, + MODEL_CE_MULTIBRIDGE1 = 13332, + MODEL_LODCE_MULTIBRIDGE1 = 13333, + MODEL_LODCUNTE_ROADS47 = 13334, + MODEL_LODCUNTE_ROADS24 = 13335, + MODEL_CUNTE_ROADS46WALLS = 13336, + MODEL_LODCUNTE_ROADS46 = 13337, + MODEL_LODTE_ROADS46WALLS = 13338, + MODEL_LODSW_TRAINBRIDGE1 = 13339, + MODEL_LODCUNTE_ROADS62 = 13340, + MODEL_LODCUNTE_ROADS58B = 13341, + MODEL_CUNTE_ROADS31 = 13342, + MODEL_LODCUNTE_ROADS31 = 13343, + MODEL_LODCUNTE_ROADS76 = 13344, + MODEL_CUNTE_ROADS36 = 13345, + MODEL_LODCUNTE_ROADS52 = 13346, + MODEL_CUNTE_ROADS26W = 13347, + MODEL_CUNTE_ROADS23W = 13348, + MODEL_CUNTE_ROADS27W = 13349, + MODEL_LODCUNTE_ROADS26 = 13350, + MODEL_LODCUNTE_ROADS49 = 13351, + MODEL_LODCUNTE_ROADS23 = 13352, + MODEL_LODCUNTE_ROADS27 = 13353, + MODEL_LODCUNTE_ROADS23W = 13354, + MODEL_LODCUNTE_ROADS36 = 13355, + MODEL_LODCUNTE_ROADS26W = 13356, + MODEL_LODCUNTE_ROADS27W = 13357, + MODEL_LODCE_BBRIDGE = 13358, + MODEL_LODCUNTE_ROADS32 = 13359, + MODEL_CE_CATSHACKDOOR = 13360, + MODEL_CE_PIZZA1 = 13361, + MODEL_LODCE_PIZZA1 = 13362, + MODEL_CE_PHOTOBLOCK = 13363, + MODEL_CE_WTOWNBLOK1 = 13364, + MODEL_LODCE_WTOWNBLOK1 = 13365, + MODEL_LODCE_PHOTOBLOCK = 13366, + MODEL_SW_WATERTOWER01 = 13367, + MODEL_CE_BRIDGEBASE1 = 13368, + MODEL_SW_LOGS07 = 13369, + MODEL_CEHLLYHIL03A = 13370, + MODEL_CEHLLYHIL02A = 13371, + MODEL_LODCELLYHIL01A = 13372, + MODEL_LODCEHLLYHIL02 = 13373, + MODEL_CEWIRESTOWN01 = 13374, + MODEL_CEWIRESTOWN02 = 13375, + MODEL_LODCUNTE_ROADS35 = 13376, + MODEL_LODCUNTE_ROADS35A = 13377, + MODEL_LODCUNTE_ROADS34 = 13378, + MODEL_LODCUNTE_ROADS12 = 13379, + MODEL_LODCUNTE_ROADS33 = 13380, + MODEL_LODCUNTE_ROADS61 = 13381, + MODEL_LODCUNTE_ROADS68 = 13382, + MODEL_LODCUNTE_ROADS67 = 13383, + MODEL_LODCUNTEGD12A01 = 13384, + MODEL_LODCUNTEGROUND12A = 13385, + MODEL_LODCUNTEGD12A02 = 13386, + MODEL_LODCE_BRIDGE02 = 13387, + MODEL_LODCUNTE_ROADS78 = 13388, + MODEL_LODSW_SHED02 = 13389, + MODEL_LODCUNTE_ROADS11A = 13390, + MODEL_LODCUNTE_ROADS15 = 13391, + MODEL_LODCUNTE_ROADS08 = 13392, + MODEL_LODCUNTE_ROADS74 = 13393, + MODEL_LODCE_ARCHBRIDGE2 = 13394, + MODEL_LODCE_ARCHBRIDGE = 13395, + MODEL_LODCUNTE_ROADS60 = 13396, + MODEL_LODCUNTE_ROADS59 = 13397, + MODEL_LODCUNTYELAND04 = 13398, + MODEL_LODCUNTE_ROADS72 = 13399, + MODEL_LODCUNTE_ROADS73 = 13400, + MODEL_LODCUNTE_ROADS10 = 13401, + MODEL_LODCUNTE_ROADS01 = 13402, + MODEL_LODCUNTE_ROADS71 = 13403, + MODEL_LODCYEEGROUND01 = 13404, + MODEL_LODCYGROUND02 = 13405, + MODEL_LODCYEGROUND28 = 13406, + MODEL_LODCYECUGROUND03 = 13407, + MODEL_LODCE_GRNDCST08 = 13408, + MODEL_LODCEPALCST06 = 13409, + MODEL_LODCEDPALCST01 = 13410, + MODEL_LODCE_GRNDPT09 = 13411, + MODEL_LODCEOUNDPALO04 = 13412, + MODEL_LODCE_FARMLAND01 = 13413, + MODEL_LODCE_FARMLAND02 = 13414, + MODEL_LODCE_FARMLAND03 = 13415, + MODEL_LODCE_FARMLAND04 = 13416, + MODEL_LODCUNTE_ROADS11 = 13417, + MODEL_LODCE_GROUND03 = 13418, + MODEL_LODCE_GROUND02 = 13419, + MODEL_LODCE_GROUND01 = 13420, + MODEL_LODCUNTE_ROADS75 = 13421, + MODEL_CUNTE_ROADS05A = 13422, + MODEL_LODCUNTE_ROADS05A = 13423, + MODEL_LODCUNTEGROUND03 = 13424, + MODEL_LODCE_GALCST07 = 13425, + MODEL_LODCE_GRLCST04 = 13426, + MODEL_LODCENDPALCST03 = 13427, + MODEL_LODCE_GROUNDPALO08 = 13428, + MODEL_LODCUNTEGROUND22 = 13429, + MODEL_LODCEHOLLYHIL17 = 13430, + MODEL_LODCUNTEGROUND05 = 13431, + MODEL_LODCUNTEGROUND04 = 13432, + MODEL_LODCUNTEGROUND02 = 13433, + MODEL_LODCUNTEGROUND07 = 13434, + MODEL_SW_LOGS08 = 13435, + MODEL_CE_WIRES01 = 13436, + MODEL_CE_WIRES02 = 13437, + MODEL_SW_CHURCH01FNCE = 13438, + MODEL_CE_WIRES03 = 13439, + MODEL_CEWIRESTOWN04 = 13440, + MODEL_CEWIRESTOWN05 = 13441, + MODEL_CEWIRESTOWN06 = 13442, + MODEL_CEWIRESTOWN03 = 13443, + MODEL_CEWIRESTOWN07 = 13444, + MODEL_CUNTEROADS05AFNCE = 13445, + MODEL_LODCEHOLLYHIL16 = 13446, + MODEL_CE_WIRES04 = 13447, + MODEL_CE_WIRES05 = 13448, + MODEL_CE_WIRES06 = 13449, + MODEL_CE_APARTSTAIRS = 13450, + MODEL_CEWIRESTOWN08 = 13451, + MODEL_CEWIRESTOWN09 = 13452, + MODEL_LODSW_BRIDGE = 13453, + MODEL_LODSW_BRIDGE01 = 13454, + MODEL_LODCUNTEGROUND01 = 13455, + MODEL_LODCUNTEGROUND08 = 13456, + MODEL_LODCE_GROUND05 = 13457, + MODEL_LODCE_GROUND08 = 13458, + MODEL_LODCUNTEGROUND27 = 13459, + MODEL_LODCEGROUNDT201 = 13460, + MODEL_CE_NITEWINDOWS1 = 13461, + MODEL_LODCEGROUNDTP103 = 13462, + MODEL_LODCEGROUNDTP104 = 13463, + MODEL_LODCE_GROUND07 = 13464, + MODEL_LODCUNTEGROUND34A = 13465, + MODEL_LODCUNTEGROUND10 = 13466, + MODEL_LODCUNTEGROUND09 = 13467, + MODEL_LODCUNTEGROUND40 = 13468, + MODEL_LODCUNTEGROUND39 = 13469, + MODEL_CUNTE_ROADS303 = 13470, + MODEL_LODCEHLLYHIL03A = 13471, + MODEL_LODCUNTEGROUND37 = 13472, + MODEL_LODCUNTEGROUND38 = 13473, + MODEL_LODCEGROUNDT202 = 13474, + MODEL_LODCEGROUNDT205 = 13475, + MODEL_LODCUNTEGUND11A = 13476, + MODEL_LODSW_FUELDRUM03 = 13477, + MODEL_LODCUNTEGROUND06 = 13478, + MODEL_LODCUNTEGROUND31 = 13479, + MODEL_LODCUNTEGROUND18 = 13480, + MODEL_LODCE_GROUALO07 = 13481, + MODEL_LODCUNTEGROUND17 = 13482, + MODEL_LODSW_JETTY = 13483, + MODEL_CE_NITEWINDOWS101 = 13484, + MODEL_CE_NITEWINDOWS10 = 13485, + MODEL_CE_GROUND09 = 13486, + MODEL_LODCE_GROUND09 = 13487, + MODEL_LODSW_FUELDRUM04 = 13488, + MODEL_SW_FUELDRUM04 = 13489, + MODEL_CE_GROUND01 = 13490, + MODEL_COE_TRAINTRAX02 = 13491, + MODEL_LODCOE_TRAINTRAX02 = 13492, + MODEL_CE_NITEWINDOWS2 = 13493, + MODEL_CE_GROUNDPALO12A = 13494, + MODEL_CE_GROUND03A = 13495, + MODEL_CE_GROUNDPALO07A = 13496, + MODEL_CE_GRNDPALCST04A = 13497, + MODEL_CE_GRNDPALCST01A = 13498, + MODEL_CE_GRNDPALCST03A = 13499, + MODEL_CUNTEGROUND21A = 13500, + MODEL_CUNTEGROUND22A = 13501, + MODEL_CUNTEGROUND07A = 13502, + MODEL_CUNTEGROUND02A = 13503, + MODEL_CE_GRNDPALCST07A = 13504, + MODEL_CUNTEGROUND03A = 13505, + MODEL_CUNTEGROUND05A = 13506, + MODEL_CUNTEGROUND04A = 13507, + MODEL_CYECUNTEGROUND02A = 13508, + MODEL_CYECUNTEGROUND28A = 13509, + MODEL_CE_GRNDPALCST08A = 13510, + MODEL_CE_GRNDPALCST09A = 13511, + MODEL_CE_GROUNDPALO03A = 13512, + MODEL_CE_GROUNDPALO04A = 13513, + MODEL_CUNTEGROUND10A = 13514, + MODEL_CUNTEGROUND09A = 13515, + MODEL_CUNTEGROUND19A = 13516, + MODEL_CUNTEGROUND26A = 13517, + MODEL_CE_GROUNDPALO06A = 13518, + MODEL_CEGROUNDT205A = 13519, + MODEL_CEGROUNDT201A = 13520, + MODEL_CEGROUNDT206A = 13521, + MODEL_CEGROUNDTP104A = 13522, + MODEL_CEGROUNDTP103A = 13523, + MODEL_CUNTEGROUND43A = 13524, + MODEL_CUNTEGROUND17A = 13525, + MODEL_CUNTEGROUND18A = 13526, + MODEL_CUNTEGROUND29A = 13527, + MODEL_CUNTEGROUND39A = 13528, + MODEL_CUNTEHIL03A = 13529, + MODEL_CUNTEHIL02A = 13530, + MODEL_CUNTEHIL01A = 13531, + MODEL_CEHLLYHIL03AA = 13532, + MODEL_CEHLLYHIL02AA = 13533, + MODEL_CEHLLYHIL01AA = 13534, + MODEL_CUNTEGROUND38A = 13535, + MODEL_CUNTEGROUND40A = 13536, + MODEL_CUNTEGROUND32A = 13537, + MODEL_CUNTEGROUND01A = 13538, + MODEL_CE_FARMLAND04A = 13539, + MODEL_CE_FARMLAND03A = 13540, + MODEL_CUNTEGROUND34A01 = 13541, + MODEL_CUNTEGROUND34AA = 13542, + MODEL_CUNTEGROUND09BA = 13543, + MODEL_CUNTEGROUND15A = 13544, + MODEL_CUNTEGROUND37A = 13545, + MODEL_CUNTEGROUND36A = 13546, + MODEL_CUNTEGUND11AA = 13547, + MODEL_CUNTEGROUND11A = 13548, + MODEL_CEHOLLYHIL17A = 13549, + MODEL_CEHOLLYHIL16A = 13550, + MODEL_CUNTEGROUND08A = 13551, + MODEL_CE_GROUND01A = 13552, + MODEL_CE_GROUND09A = 13553, + MODEL_CE_GROUND02A = 13554, + MODEL_CE_GROUND05A = 13555, + MODEL_CE_GROUND06A = 13556, + MODEL_CE_GROUND08A = 13557, + MODEL_CE_GROUND04A = 13558, + MODEL_CE_GROUND07A = 13559, + MODEL_CUNTEGROUND33A = 13560, + MODEL_CUNTEGROUND31A = 13561, + MODEL_BIGSPRUNKPOLE = 13562, + MODEL_CUNTEGROUND30A = 13563, + MODEL_KICKBUS04 = 13590, + MODEL_KICKCAR28 = 13591, + MODEL_LOOPBIG = 13592, + MODEL_KICKRAMP03 = 13593, + MODEL_FIREYFIRE = 13594, + MODEL_STAND02 = 13595, + MODEL_DESTRUCT04 = 13596, + MODEL_DESTRUCT05 = 13597, + MODEL_STAND03 = 13598, + MODEL_STANDBLACK04 = 13599, + MODEL_DESTRUCT06 = 13600, + MODEL_DESTRUCT07 = 13601, + MODEL_THEBOLLA06 = 13602, + MODEL_STAD_TAG = 13603, + MODEL_KICKRAMP05 = 13604, + MODEL_DESTRUCT1 = 13605, + MODEL_STANDBLACK02 = 13606, + MODEL_RINGWALLS = 13607, + MODEL_SUMORING = 13608, + MODEL_SUPPORTS = 13609, + MODEL_STAND04 = 13610, + MODEL_THEBOWL13 = 13611, + MODEL_STUNTMAN03 = 13612, + MODEL_THEBOWL11 = 13613, + MODEL_THEBOWL12 = 13614, + MODEL_THEBOWL10 = 13615, + MODEL_THEBOLLA04 = 13616, + MODEL_THEBOWL14 = 13617, + MODEL_THEBOWL16 = 13618, + MODEL_THEBOWL17 = 13619, + MODEL_THEBOWL15 = 13620, + MODEL_THEBOLLA03 = 13621, + MODEL_SUMOFENCE = 13622, + MODEL_MIDRINGFENCE = 13623, + MODEL_INNER = 13624, + MODEL_STANDS = 13625, + MODEL_8ROAD2 = 13626, + MODEL_STADOVAL = 13627, + MODEL_8STAD = 13628, + MODEL_8SCREEN01 = 13629, + MODEL_8SCREEN = 13630, + MODEL_DIRTSTAD = 13631, + MODEL_DIRTCROWDS = 13632, + MODEL_DIRTOUTER01 = 13633, + MODEL_DIRTSTAD02 = 13634, + MODEL_THEROCKS10 = 13635, + MODEL_LOGRAMPS = 13636, + MODEL_TUBERAMP = 13637, + MODEL_STUNT1 = 13638, + MODEL_RAMPARSE = 13639, + MODEL_ARSE = 13640, + MODEL_KICKRAMP04 = 13641, + MODEL_RINGS = 13642, + MODEL_LOGRAMPS02 = 13643, + MODEL_STEPS = 13644, + MODEL_KICKRAMP06 = 13645, + MODEL_RAMPLANDPAD = 13646, + MODEL_WALL1 = 13647, + MODEL_WALL2 = 13648, + MODEL_RAMPLANDPAD01 = 13649, + MODEL_KICKCROWD01 = 13650, + MODEL_OTUNNEL = 13651, + MODEL_OROADBIT = 13652, + MODEL_INNERFENCE = 13653, + MODEL_DARKPOLY = 13654, + MODEL_BRIDGE = 13655, + MODEL_FUCKKNOWS = 13656, + MODEL_BIT = 13657, + MODEL_BIT01 = 13658, + MODEL_8BAR5 = 13659, + MODEL_8TRACK1 = 13660, + MODEL_COCKBARS = 13661, + MODEL_DIRTCOCK = 13662, + MODEL_DIRTFENCES = 13663, + MODEL_DIRTROAD = 13664, + MODEL_DIRTFENCES2 = 13665, + MODEL_LOOPWEE = 13666, + MODEL_MONKEYMAN = 13667, + MODEL_CUNTE_ROADS05 = 13672, + MODEL_CEHOLLYHIL03 = 13673, + MODEL_CEMULLHOLDR05 = 13674, + MODEL_CUNTELUNGRDJ = 13675, + MODEL_TCELAWCUNTUN1A_LAW2 = 13676, + MODEL_TCELAWCUNTUNA_LAW2 = 13677, + MODEL_CENWHILTEST = 13678, + MODEL_TCELANDBIVF4V_03 = 13679, + MODEL_TCELAWCUNTUNB = 13680, + MODEL_TCEHILHOUSE03 = 13681, + MODEL_TCECUNTUN = 13682, + MODEL_CENWHILTEST2 = 13683, + MODEL_CENWHILTEST93 = 13684, + MODEL_TCENWHILTEST92 = 13685, + MODEL_TCEHOMULHIL10 = 13686, + MODEL_TCEHILLHSE02 = 13687, + MODEL_CENWHILTEST91 = 13688, + MODEL_CENWHILTEST6 = 13689, + MODEL_CE_ROADS38A = 13690, + MODEL_TCELALANDBIV_03 = 13691, + MODEL_CUNTE_LANDF4_03 = 13692, + MODEL_TCENWHILTEST94 = 13693, + MODEL_CEHILLHSE13 = 13694, + MODEL_CEHILLHSE05 = 13695, + MODEL_CENEWHILLHUS = 13696, + MODEL_TCELHOUSE06 = 13697, + MODEL_CEHOLLYHIL10 = 13698, + MODEL_TCEMULHILHED1_LAW2 = 13699, + MODEL_CEHOLLYHIL1 = 13700, + MODEL_TCEHILOUSE02 = 13701, + MODEL_CEHOLLYHIL09X = 13702, + MODEL_CENWHILTEST3 = 13703, + MODEL_CENWHILTEST5 = 13704, + MODEL_CEHILLBAR2B = 13705, + MODEL_CE_ROADS87 = 13706, + MODEL_CELA_ROADS62 = 13707, + MODEL_CE_ROADSCOAST08 = 13708, + MODEL_LAE2_GROUND01 = 13709, + MODEL_HILLSEAST05_LAE = 13710, + MODEL_CEHOLLYHIL06 = 13711, + MODEL_CEHOLLYHIL8A = 13712, + MODEL_ROAD_HIL03 = 13713, + MODEL_RADARMAST1_LAWN = 13714, + MODEL_CUNTE_HOLLYHIL9 = 13715, + MODEL_CE_HOLLYHIL8A = 13716, + MODEL_ROAD_HILLLAWN15 = 13717, + MODEL_CEROAD_HILL20 = 13718, + MODEL_HOLLYHIL10 = 13719, + MODEL_ROAD_HILL04B = 13720, + MODEL_MULHOUSE03_CUNTE = 13721, + MODEL_VINESIGN1_CUNTE = 13722, + MODEL_CUNTE_HOLLYHIL01 = 13723, + MODEL_DRG_NU_EXT = 13724, + MODEL_OPMANS01_CUNTE = 13725, + MODEL_ROAD_HILL08 = 13726, + MODEL_CENORTHBRIJ01 = 13727, + MODEL_CEGRAVEBUIL03_LAWN = 13728, + MODEL_CEGRAVEBUIL01 = 13729, + MODEL_CEROAD_6 = 13730, + MODEL_TCEMULWIRE01 = 13731, + MODEL_CE_ROADS37 = 13732, + MODEL_CE_ROADS42 = 13733, + MODEL_HILLCLIF06 = 13734, + MODEL_CE_ROADS41 = 13735, + MODEL_CE_ROADS40 = 13736, + MODEL_CUNTEHILL03 = 13737, + MODEL_ROADS39_CE = 13738, + MODEL_ROADS38CE = 13739, + MODEL_CNTEHILLCLIF01 = 13740, + MODEL_HILLCLIF02 = 13741, + MODEL_HILLCLIF05 = 13742, + MODEL_CEMULWIRE01 = 13743, + MODEL_DRG_NU_EXT05 = 13744, + MODEL_LODLANDBIV_01 = 13745, + MODEL_TCEHILLHOUSE07 = 13746, + MODEL_CEHILLHSE06 = 13747, + MODEL_TCEMULHILHED1_LAW01 = 13748, + MODEL_CUNTE_CURVESTEPS1 = 13749, + MODEL_LODTELLCLIF01 = 13750, + MODEL_CUNTE_FLYOVER2 = 13751, + MODEL_CUNTEBRIDGE01 = 13752, + MODEL_CEHILLHOUSE04 = 13753, + MODEL_CEMULHOUSE04 = 13754, + MODEL_CEHILLHOUSE01 = 13755, + MODEL_HOLLYHIL04A = 13756, + MODEL_HOLLYHIL05 = 13757, + MODEL_RADARMAST1_LAWN01 = 13758, + MODEL_LODVINESIGN1_CUNTE = 13759, + MODEL_LODCENORTHBRIJ01 = 13760, + MODEL_CUNTE_WHISKY = 13761, + MODEL_LODCUNTE_WHISKY = 13762, + MODEL_LODTCEHOLLYHIL10 = 13763, + MODEL_LODHILLCLIF05 = 13764, + MODEL_LODHILLCLIF02 = 13765, + MODEL_LODCUNTE_LANDF4_03 = 13766, + MODEL_LODCUNTEHILL03 = 13767, + MODEL_LODHILLCLIF06 = 13768, + MODEL_LODTCEHOMULHIL10 = 13769, + MODEL_LODCE_ROADS37 = 13770, + MODEL_LODROADS39_CE = 13771, + MODEL_LODROADS38CE = 13772, + MODEL_LODROADS38ACE = 13773, + MODEL_LODTCENWHILTEST94 = 13774, + MODEL_LODTCEHOLLYHIL1 = 13775, + MODEL_LODTCENWHILTEST93 = 13776, + MODEL_LODTCELANDBI03 = 13777, + MODEL_LODCE_ROADS40 = 13778, + MODEL_LODCE_ROADS41 = 13779, + MODEL_LODCE_ROADS42 = 13780, + MODEL_LODCUNTE_FLYOVER2 = 13781, + MODEL_LODCUNTE_HOLLYHIL9 = 13782, + MODEL_LODDRG_NU_EXT = 13783, + MODEL_ROAD_HILL01 = 13784, + MODEL_LODROAD_HILLLAWN15 = 13785, + MODEL_LODROAD_HILL08 = 13786, + MODEL_LODCEROADN = 13787, + MODEL_LODCEROAD_HILL01 = 13788, + MODEL_ROADS40_CE = 13789, + MODEL_LODTCEHILLHOUSE07 = 13790, + MODEL_LODCEHILLHSE06 = 13791, + MODEL_LODTCELHOUSE06 = 13792, + MODEL_LODCENEWHILLHUS = 13793, + MODEL_LODCEHILLHOUSE01 = 13794, + MODEL_CE_HILLSEAST06 = 13795, + MODEL_LODTEHILLSEAST06 = 13796, + MODEL_LODCEHILLHSE05 = 13797, + MODEL_LODCEHILLHSE13 = 13798, + MODEL_LODCEHILLHOUSE04 = 13799, + MODEL_LODHILLHOUSE05_LA02 = 13800, + MODEL_CUNTE_SKATETRAK = 13801, + MODEL_SKATEIVY = 13802, + MODEL_LODTCEHILHOUSE03 = 13803, + MODEL_CUNTELANDF4 = 13804, + MODEL_CELALANDBIV = 13805, + MODEL_CEHOLLYHIL8A01 = 13806, + MODEL_LODCELALANDBIV = 13807, + MODEL_LODCUNTELANDF4 = 13808, + MODEL_CE_GRNDPALCST02 = 13809, + MODEL_CE_GRNDPALCST05 = 13810, + MODEL_LODCEPALCST02 = 13811, + MODEL_LODCE_GRNDPALCST05 = 13812, + MODEL_CEGRAVEBLOK03E = 13813, + MODEL_CEROADN = 13814, + MODEL_LODCEGRAVEBLOK03E = 13815, + MODEL_CE_SAFEGROUND = 13816, + MODEL_CE_SAFEDOOR01 = 13817, + MODEL_CEHOLLYHIL01 = 13818, + MODEL_LODCUNTE_HOLLYHIL01 = 13819, + MODEL_CUNTEGROUND16 = 13820, + MODEL_CUNTEGROUND20 = 13821, + MODEL_LODCUNTEGROUND16 = 13822, + MODEL_CUNTEGROUND23 = 13823, + MODEL_CUNTEGROUND24 = 13824, + MODEL_CUNTEGROUND25 = 13825, + MODEL_CUNTEGROUND28 = 13826, + MODEL_LODCUNTEGROUND23 = 13827, + MODEL_LODCUNTEGROUND24 = 13828, + MODEL_LODCUNTEGROUND25 = 13829, + MODEL_LODCUNTEGROUND28 = 13830, + MODEL_VINESIGN1_CUNTE01 = 13831, + MODEL_LODCUNTE_ROADS05 = 13832, + MODEL_LODCE_HOLLYHIL8A = 13833, + MODEL_LODCE_ROADSCOAST08 = 13834, + MODEL_LODLAE2_GROUND01 = 13835, + MODEL_LODROAD_HILL01 = 13836, + MODEL_LODROAD_HILL04B = 13837, + MODEL_LODCE_ROADS87 = 13838, + MODEL_LODCELA_ROADS62 = 13839, + MODEL_LODHILLSEAST05_LAE = 13840, + MODEL_LODHOLLYHIL10 = 13841, + MODEL_LODROAD_HILL13 = 13842, + MODEL_LODROAD_HIL03 = 13843, + MODEL_LODCEROAD_6 = 13844, + MODEL_CENWHILTEST5BASE = 13845, + MODEL_LODCENWHILTEST5 = 13846, + MODEL_LODCENWHT5BASE = 13847, + MODEL_LODCEMULLHOLDR05 = 13848, + MODEL_LODCUNTEGROUND20 = 13849, + MODEL_LODCEHOLLYHIL03 = 13850, + MODEL_LODROADS40_CE = 13851, + MODEL_LODCUNTELUNGRDJ = 13852, + MODEL_LODCENWHILTEST = 13853, + MODEL_LODCENWHILTEST91 = 13854, + MODEL_LODOPMANS01_CUNTE = 13855, + MODEL_LODCENWHILTEST6 = 13856, + MODEL_LODCENWHILTEST3 = 13857, + MODEL_LODTCENWHILTEST92 = 13858, + MODEL_LODCENWHILTEST2 = 13859, + MODEL_LODCUNTETEPS1 = 13860, + MODEL_CE_TELEWIRES01 = 13861, + MODEL_CE_TELEWIRES02 = 13862, + MODEL_CE_TELEWIRES03 = 13863, + MODEL_CE_TELEWIRES04 = 13864, + MODEL_CENWHILTESTBRD = 13865, + MODEL_LODCENWHISTBRD = 13866, + MODEL_LOD_LAHILLSTUN_LOD = 13867, + MODEL_LOD_TCECUNTUN = 13868, + MODEL_LOD_TCELAWCUNTUNB = 13869, + MODEL_LOD_TCELAWCUNTUN1 = 13870, + MODEL_LAHILLS_BORDER1 = 13871, + MODEL_LAHILLS_BORDER2 = 13872, + MODEL_LODLAHILLS_BORDER1 = 13873, + MODEL_MULHOUSE03_LOD = 13874, + MODEL_LOD_TCEHILOUSE02 = 13875, + MODEL_LOD_CUNTEBRIDGE01 = 13876, + MODEL_CE_SAFEGROUNDLOD = 13877, + MODEL_LOD_ILHED1_LAW01 = 13878, + MODEL_LOD_HOLLYHIL04A = 13879, + MODEL_LOD_CUNTE_SKATETRAK = 13880, + MODEL_LOD_HOLLYHIL05 = 13881, + MODEL_ROAD_HILL13 = 13882, + MODEL_LODCEHOLLYHIL06 = 13883, + MODEL_LODLAHILLS_BORDER2 = 13884, + MODEL_LODCEHOLLYHIL09X = 13885, + MODEL_LODCEHOLLYHIL01 = 13886, + MODEL_CEROAD_HILL01 = 13887, + MODEL_LODCEROAD_HILL20 = 13888, + MODEL_LODRAVEBUIL02 = 13889, + MODEL_LAHBOARDS_LAH1 = 13890, + MODEL_BURG_KIT1 = 14383, + MODEL_KITCHEN_BITS = 14384, + MODEL_KB_TR_MAIN = 14385, + MODEL_KB_TR_BITS = 14386, + MODEL_DR_GSNEW02 = 14387, + MODEL_MADDDOGGS02 = 14388, + MODEL_MADDDOGGS03 = 14389, + MODEL_MADDDOGGS04 = 14390, + MODEL_DR_GSNEW07 = 14391, + MODEL_DR_GSNEW08 = 14392, + MODEL_DR_GSNEW09 = 14393, + MODEL_DR_GSNEW10 = 14394, + MODEL_DR_GSNEW11 = 14395, + MODEL_GIRDERS01 = 14396, + MODEL_GIRDERS07 = 14397, + MODEL_GIRDERS11 = 14398, + MODEL_BAR2 = 14399, + MODEL_FLOWER_BUSH08 = 14400, + MODEL_BENCH1 = 14401, + MODEL_FLOWER_BUSH09 = 14402, + MODEL_CDS = 14403, + MODEL_JET_INTERIOR = 14404, + MODEL_CHAIRS = 14405, + MODEL_MANSION_LIGHT05 = 14406, + MODEL_CARTER_STAIRS01 = 14407, + MODEL_CARTER_FLOORS04 = 14408, + MODEL_CARTER_STAIRS02 = 14409, + MODEL_CARTER_STAIRS03 = 14410, + MODEL_CARTER_STAIRS04 = 14411, + MODEL_CARTER_DRUGFLOOR = 14412, + MODEL_CARTER_COLUMN01 = 14413, + MODEL_CARTER_STAIRS05 = 14414, + MODEL_CARTER_FLOORS01 = 14415, + MODEL_CARTER_STAIRS07 = 14416, + MODEL_MADDDOGGS05 = 14417, + MODEL_MADDDOGGS07 = 14418, + MODEL_MADDDOGGS08 = 14419, + MODEL_MADDDOGGS09 = 14420, + MODEL_MADDDOGGS10 = 14421, + MODEL_MADDDOGGS01 = 14422, + MODEL_MADDDOGGS12 = 14423, + MODEL_MADDDOGGS13 = 14424, + MODEL_MADDDOGGS14 = 14425, + MODEL_MADDDOGGS15 = 14426, + MODEL_MADDDOGGS16 = 14427, + MODEL_MADDDOGGS17 = 14428, + MODEL_MADDDOGGS18 = 14429, + MODEL_MADDDOGGS19 = 14430, + MODEL_MADDDOGGS20 = 14431, + MODEL_CARTER_LIGHT01 = 14432, + MODEL_CARTER_GUBBINS = 14433, + MODEL_CARTER_SPOTLIGHT42 = 14434, + MODEL_CARTER_GIRDERS = 14435, + MODEL_CARTER_GIRDERS1 = 14436, + MODEL_CARTER_BARS = 14437, + MODEL_CARTER_LIGHT04 = 14438, + MODEL_CARTER_LIGHT12 = 14439, + MODEL_CARTER_GRILL = 14440, + MODEL_CARTER_LIGHT16 = 14441, + MODEL_SHADOW_CARTER = 14442, + MODEL_BURNING_BLINDS08 = 14443, + MODEL_CARTER_TOPFLOOR = 14444, + MODEL_CARTER_COLUMN02 = 14445, + MODEL_SMOKES_BED = 14446, + MODEL_CARTER_BALCONY = 14447, + MODEL_CARTER_GIRDERS02 = 14448, + MODEL_CARTER_TRAMPOLINE = 14449, + MODEL_CARTER_GIRDERS03 = 14450, + MODEL_CARTER_GIRDERS04 = 14451, + MODEL_CARTER_GIRDERS05 = 14452, + MODEL_GANG_EXIT = 14453, + MODEL_CARTER_DANCERS = 14454, + MODEL_GS_BOOKCASE = 14455, + MODEL_CEILING_ROSES02 = 14456, + MODEL_GS_GOLD_DISKS = 14457, + MODEL_GS_CHAIRS = 14458, + MODEL_CARTER_CAGE = 14459, + MODEL_MANSION_LIGHT05A = 14460, + MODEL_GS_PICCIES = 14461, + MODEL_GS_PICCIES1 = 14462, + MODEL_GS_BARSTUFF = 14463, + MODEL_GS_CAGES = 14464, + MODEL_CARTER_ALPHA = 14465, + MODEL_CARTER_OUTSIDE = 14466, + MODEL_CARTER_STATUE = 14467, + MODEL_FLOWER_BUSH09A = 14468, + MODEL_FLOWER_BUSH08A = 14469, + MODEL_MANSION_LIGHT05B = 14470, + MODEL_CARLS_MOMS_KIT2 = 14471, + MODEL_CARLS_MOMS_KIT1 = 14472, + MODEL_MANSIONLIGHTS2 = 14473, + MODEL_GANGHSE_INT1 = 14474, + MODEL_GANGHSE_INT2 = 14475, + MODEL_CARLSCRAP = 14476, + MODEL_CARLSBITS = 14477, + MODEL_CARLSSHADFLOOR = 14478, + MODEL_MOTEL_SKUZMAIN1 = 14479, + MODEL_MOTEL_TOILET = 14480, + MODEL_MOTEL_BATH1 = 14481, + MODEL_MOTEL_SKUZ_WIN = 14482, + MODEL_MADDOGSFAKEDOORS = 14483, + MODEL_MADDDOGGS06 = 14484, + MODEL_MADDDOGGS11 = 14485, + MODEL_MADGYM1 = 14486, + MODEL_MADLITES = 14487, + MODEL_MADGYMROOFS = 14488, + MODEL_CARLSPICS = 14489, + MODEL_CUNTCHAIR = 14490, + MODEL_IWANFUCKER = 14491, + MODEL_SWEETS_ROOM = 14492, + MODEL_ARSEHOLE = 14493, + MODEL_SWEETS_BATH = 14494, + MODEL_SWEETSHALL = 14495, + MODEL_SWEETSDAYLIGHT = 14496, + MODEL_IM_COUCHS = 14497, + MODEL_IMYS_BIGVENT = 14498, + MODEL_IMY_MOTEL_WINS = 14499, + MODEL_IMMY_ROOMS = 14500, + MODEL_MOTEL_GRILL = 14501, + MODEL_IMY_ROOMFURN = 14502, + MODEL_IMY_ROOMFURN01 = 14503, + MODEL_IMY_ROOMFURN03 = 14504, + MODEL_IMY_ROOMFURN06 = 14505, + MODEL_IMY_MOTEL_INT = 14506, + MODEL_IMY_ROOMFURN07 = 14507, + MODEL_IMY_ROOMFURN10 = 14508, + MODEL_IMY_ROOMFURN11 = 14509, + MODEL_IMY_ROOMFURN12 = 14510, + MODEL_IM_COVER_TBL = 14511, + MODEL_IMMY_ROOMS2 = 14512, + MODEL_IM_MTL_RAIL = 14513, + MODEL_HEXI_LITE = 14514, + MODEL_IM_MTEL_SCKTS = 14515, + MODEL_IM_XTRA3 = 14516, + MODEL_IM_XTRA1 = 14517, + MODEL_IM_XTRA2 = 14518, + MODEL_IM_XTRA4 = 14519, + MODEL_IMMY_CLOTHES = 14520, + MODEL_IMMY_SHOES = 14521, + MODEL_IMMY_CURTAINS02 = 14522, + MODEL_IMMY_CURTAINS05 = 14523, + MODEL_IM_COUCHSA = 14524, + MODEL_IMY_OTHERBIT = 14525, + MODEL_SWEETSMAIN = 14526, + MODEL_FANNYFAN = 14527, + MODEL_SWEETSHADOWS = 14528, + MODEL_DRIVESCHL_MAIN = 14530, + MODEL_INT_ZEROSRC01 = 14531, + MODEL_TV_STAND_DRIV = 14532, + MODEL_PLEASURE_TOP = 14533, + MODEL_AB_WOOZIES01 = 14534, + MODEL_AB_WOOZIES03 = 14535, + MODEL_PLEASURE_BOT = 14536, + MODEL_PDOMESBAR = 14537, + MODEL_PDOMES_XITBOX = 14538, + MODEL_PDOMES_LOGO = 14539, + MODEL_PDOMES_EXTRAS = 14540, + MODEL_DRIVESCHL_DAYLITE = 14541, + MODEL_WOOZIES_XITBOX = 14542, + MODEL_AB_WOOZIES04 = 14543, + MODEL_AB_WOOZIES02 = 14544, + MODEL_AB_WOOZIESGLASS = 14545, + MODEL_PLEASURE_MID = 14546, + MODEL_PLEASURE_DL = 14547, + MODEL_CARGO_TEST = 14548, + MODEL_CARGE_BARRELS = 14549, + MODEL_CARGO_NETTING = 14550, + MODEL_CARGO_STORE = 14551, + MODEL_CARGO_STUFF = 14552, + MODEL_ANDROM_DES_OBJ = 14553, + MODEL_AB_WOOZIESSHAD = 14554, + MODEL_ZEROWARDROBE = 14556, + MODEL_MODEL_BOX15 = 14558, + MODEL_PDOMECONES = 14559, + MODEL_TRIAD_BAR = 14560, + MODEL_TRIAD_NEON = 14561, + MODEL_TRIAD_LION = 14562, + MODEL_TRIAD_MAIN = 14563, + MODEL_TRIAD_LIGHTS = 14564, + MODEL_TRIAD_BAR_STUFF = 14565, + MODEL_BUDHA_WHEL1B = 14566, + MODEL_BUDHA_WHEL02B = 14567, + MODEL_BUDHA_WHEL03B = 14568, + MODEL_TR_MAN_PILLAR = 14569, + MODEL_TR_MAN_GLASS = 14570, + MODEL_CHINAFURN1 = 14571, + MODEL_MAINTENANCE16 = 14572, + MODEL_MAINTENANCE03 = 14573, + MODEL_MAINTENANCE20 = 14574, + MODEL_MAINTENANCE31 = 14575, + MODEL_VAULT_DOOR = 14576, + MODEL_MAFCASLOADBAY01 = 14577, + MODEL_MAFCASPIPES01 = 14578, + MODEL_MAFCASLITES01 = 14579, + MODEL_MAFCASGOLDBITS01 = 14580, + MODEL_AB_MAFIASUITE01ZZZ = 14581, + MODEL_MAFIACASINOBAR1 = 14582, + MODEL_AB_MAFCASLAUND = 14583, + MODEL_AB_ABBATOIR05 = 14584, + MODEL_AB_ABBATOIR04 = 14585, + MODEL_AB_ABBATOIR03 = 14586, + MODEL_AB_ABBATOIR02 = 14587, + MODEL_AB_ABBATOIR01 = 14588, + MODEL_AB_ABBATOIR06 = 14589, + MODEL_MAFCASTOPFOOR = 14590, + MODEL_MAFCASWALLLITE = 14591, + MODEL_MAFCASLOADBAY02 = 14592, + MODEL_PAPERCHASE04 = 14593, + MODEL_PAPERCHASE03 = 14594, + MODEL_PAPERCHASE02 = 14595, + MODEL_PAPERCHASE_STAIRS = 14596, + MODEL_PAPERCHASE07 = 14597, + MODEL_PAPERCHASE_GLASS = 14598, + MODEL_PAPERCHASE08 = 14599, + MODEL_PAPERCHASE_BITS2 = 14600, + MODEL_MAFCASLITES02 = 14601, + MODEL_PAPERCHASE01 = 14602, + MODEL_BIKESCHL_MAIN = 14603, + MODEL_TV_STAND_BIKE = 14604, + MODEL_TRIAD_LIGHTS2 = 14605, + MODEL_MAFCASMAIN4 = 14606, + MODEL_TRIAD_MAIN2 = 14607, + MODEL_TRIAD_BUDDHA01 = 14608, + MODEL_MAFCASLITES04 = 14609, + MODEL_MAFCASLITES05 = 14610, + MODEL_MAFIACASINOBARLITE = 14611, + MODEL_AB_ABATTOIR_BOX2 = 14612, + MODEL_AB_ABATTOIR_BOX1 = 14613, + MODEL_TRIAD_MAIN3 = 14614, + MODEL_ABATOIR_DAYLITE = 14615, + MODEL_AB_PILLARTEMP3 = 14616, + MODEL_AB_PILLARTEMP2 = 14617, + MODEL_AB_PILLARTEMP1 = 14618, + MODEL_TRICAS_SLOTTABLE2 = 14619, + MODEL_TRICAS_SLOTTABLE1 = 14620, + MODEL_MAFIACASINOGLASS = 14621, + MODEL_AB_PILLARTEMP4 = 14622, + MODEL_MAFCASMAIN1 = 14623, + MODEL_MAFCASMAIN2 = 14624, + MODEL_MAFCASMAIN3 = 14625, + MODEL_MAFCASSIGNS1 = 14626, + MODEL_MAFCAS_OPTILITE1 = 14627, + MODEL_AB_CALIGULASFRONT = 14628, + MODEL_MAFCAS_CHANDE = 14629, + MODEL_MAFCAS_XITBOX = 14630, + MODEL_PAPERCHASE_DAYLITE = 14631, + MODEL_PAPERCHASE_BITS2B = 14632, + MODEL_PAPERCHASE_BITS2C = 14633, + MODEL_BIKESCHL_DAYLITE = 14634, + MODEL_MAFCASGENSTUFF = 14635, + MODEL_MAFCAS_SIGNS = 14636, + MODEL_TRIAD_DRAGON = 14637, + MODEL_AB_MAFSUITEDOOR = 14638, + MODEL_TR_MAN_MAIN = 14639, + MODEL_CHINAFURN2 = 14640, + MODEL_TRI_MAIN_HOLES = 14641, + MODEL_MAFCAS_SPIRAL_DAD = 14642, + MODEL_TR_MAN_MAIN_TR = 14643, + MODEL_TRUKSTP04 = 14650, + MODEL_TRUKSTP05 = 14651, + MODEL_TRUKSTP02 = 14652, + MODEL_TRUKSTP03 = 14653, + MODEL_TRUKSTP06 = 14654, + MODEL_TRUKSTP01 = 14655, + MODEL_TSDINERXITBOX = 14656, + MODEL_CUNTCHAIRS = 14657, + MODEL_INT_TATOOA05 = 14660, + MODEL_INT_TATOOA01 = 14661, + MODEL_INT_TATOOA02 = 14662, + MODEL_INT_TATOOA03 = 14663, + MODEL_INT_TATOOA04 = 14664, + MODEL_INT_7_11A40 = 14665, + MODEL_CJ_SEX_COUNTER03 = 14666, + MODEL_INT_7_11A41 = 14667, + MODEL_711_C = 14668, + MODEL_711_D = 14669, + MODEL_INT_7_11A42 = 14670, + MODEL_INT_7_11A5 = 14671, + MODEL_INT_SEX01 = 14672, + MODEL_CHNSAW1 = 14673, + MODEL_HOTELFERNS1_LAN = 14674, + MODEL_HOTELATRIUM_LAN = 14675, + MODEL_INT_TATOOA06 = 14676, + MODEL_INT_TATOOA07 = 14677, + MODEL_INT_TATOOA08 = 14678, + MODEL_INT_TAT_TOOLS01 = 14679, + MODEL_INT_TAT_LIGHTS01 = 14680, + MODEL_INT_TATOOA09 = 14681, + MODEL_INT_TATOOA10 = 14682, + MODEL_INT_TATOOA11 = 14683, + MODEL_INT_TATOOA12 = 14684, + MODEL_INT_TATOOA13 = 14685, + MODEL_INT_TAT_TOOLS02 = 14686, + MODEL_INT_TAT_LIGHTS02 = 14687, + MODEL_INT_TATOOA14 = 14688, + MODEL_INT_TATOOA15 = 14689, + MODEL_INT_7_11A40_BITS = 14690, + MODEL_INT_7_11A41_BITS = 14691, + MODEL_INT_7_11A41_BITS01 = 14692, + MODEL_INT_TAT_TOOLS = 14693, + MODEL_SEX_SHOP_DET = 14694, + MODEL_INT_7_11A41_BITS02 = 14695, + MODEL_INT_TAT_LIGHTS = 14699, + MODEL_INT2SMSF01_INT01 = 14700, + MODEL_INT2HOOSE2 = 14701, + MODEL_INT2LAMID01 = 14702, + MODEL_INT2HOOSE09 = 14703, + MODEL_INT2HOOSE2_BITS = 14704, + MODEL_INT2VASE = 14705, + MODEL_INT2LABIGTWO01 = 14706, + MODEL_INT2LABIG301 = 14707, + MODEL_INT2LABIGONE01 = 14708, + MODEL_INT2LAMIDTWO01 = 14709, + MODEL_INT2VGSHM3 = 14710, + MODEL_INT2VGSHM2 = 14711, + MODEL_INT2HOOSE11 = 14712, + MODEL_INT2HOOSE16 = 14713, + MODEL_INT2HOOSE08 = 14714, + MODEL_INT2HOOSE09_BITS = 14715, + MODEL_INT2LAMID01_RAIL = 14716, + MODEL_INT2LASMTWO02 = 14717, + MODEL_INT2LASMONE04 = 14718, + MODEL_INT2LASMONE01 = 14719, + MODEL_INT2LASMONE02 = 14720, + MODEL_2LABIGONE_BITS = 14721, + MODEL_INT2HOOSE09_BITS2 = 14722, + MODEL_INT2HOOSE09_BITS3 = 14723, + MODEL_INT2HOOSE09_BITS4 = 14724, + MODEL_INT2LAMID01_RAIL2 = 14725, + MODEL_INT2LAMID01_RAIL3 = 14726, + MODEL_INT2LAMID01_RAIL4 = 14727, + MODEL_INT2LABIG302 = 14728, + MODEL_CRACKHOOSE = 14735, + MODEL_AH_CHILLER2 = 14736, + MODEL_WHOREPIX = 14737, + MODEL_BROTHELBAR = 14738, + MODEL_WHOREFURN = 14739, + MODEL_RYBLINDS = 14740, + MODEL_RYKITUNIT = 14741, + MODEL_RYDERS_WALL_STUF = 14742, + MODEL_RYDHALL = 14743, + MODEL_RYBATHROOM = 14744, + MODEL_RYBATHARSE01 = 14745, + MODEL_RYLOUNGE = 14746, + MODEL_CURSES04 = 14747, + MODEL_SFHSM1 = 14748, + MODEL_SFHSM1LIGHTS = 14749, + MODEL_SFHSM2 = 14750, + MODEL_SFHSM2BITS = 14751, + MODEL_CURSES02 = 14752, + MODEL_SFHSB2CURTS = 14753, + MODEL_BIGSANFRANHOOSE = 14754, + MODEL_SHITE = 14755, + MODEL_SHITLOBBY = 14756, + MODEL_SFMANSIONBITS = 14757, + MODEL_SFMANSION1 = 14758, + MODEL_SFHSM03 = 14759, + MODEL_OBJECT03 = 14760, + MODEL_RYSHADROOM = 14761, + MODEL_ARSEWINOWS = 14762, + MODEL_SWEETSDAYLIGHT02 = 14763, + MODEL_BALLUSTRADES = 14764, + MODEL_LACRAKBULB = 14765, + MODEL_INT_BROTHELSEATS = 14770, + MODEL_INT3INT_BROTHEL = 14771, + MODEL_INT3INT_LOW_TV = 14772, + MODEL_INT3INT_BROTHEL03 = 14773, + MODEL_INT_5KB_FLYKILLER = 14774, + MODEL_INT3INT_BROTHEL04 = 14775, + MODEL_INT3INT_CARUPG_INT = 14776, + MODEL_INT_5WEECASINO = 14777, + MODEL_INT_BOXING02 = 14778, + MODEL_INT_BOXING03 = 14779, + MODEL_IN_BXING04 = 14780, + MODEL_IN_BXING05 = 14781, + MODEL_INT3INT_BOXING30 = 14782, + MODEL_INT3INT_KBSGARAGE = 14783, + MODEL_GENINT_WAREHS = 14784, + MODEL_GEN_OTB = 14785, + MODEL_AB_SFGYMBEAMS1 = 14786, + MODEL_AB_SFGYMBITS02A = 14787, + MODEL_AB_SFGYMBITS01A = 14788, + MODEL_AB_SFGYMMAIN1 = 14789, + MODEL_AB_SFGYMBITS03A = 14790, + MODEL_A_VGSGYMBOXA = 14791, + MODEL_AB_VGSGYMBITS01A = 14792, + MODEL_AB_VEGASGYMLITESA = 14793, + MODEL_AB_VEGASGYMMAIN2 = 14794, + MODEL_GENINT3_SMASHTV = 14795, + MODEL_INT_KBSGARAGE05B = 14796, + MODEL_INT_KBSGARAGE3B = 14797, + MODEL_INT_KBSGARAGE3 = 14798, + MODEL_OTB_GLASS = 14799, + MODEL_GEN_OTB_BITS = 14800, + MODEL_BDUPS_MAIN = 14801, + MODEL_BDUPS_INTERIOR = 14802, + MODEL_BDUPSNEW = 14803, + MODEL_BDUPS_PLANT = 14804, + MODEL_BDUPSNEW_INT = 14805, + MODEL_BDUPSHIFI = 14806, + MODEL_BDUPSLIGHT01 = 14807, + MODEL_STRIP2_BUILDING = 14808, + MODEL_STRIP2_PLATFORMS = 14809, + MODEL_STRIP2_TABLES = 14810, + MODEL_STRIP2_NEON = 14811, + MODEL_STUDIOHALL_FRAMES = 14812, + MODEL_STUDIOHALL_FURN = 14813, + MODEL_STUDIOHALLBUILD = 14814, + MODEL_WHHOUSE_MAIN = 14815, + MODEL_WHHOUSE_FURN = 14816, + MODEL_WHHOUSE_RMS = 14817, + MODEL_MC_STRAPS = 14818, + MODEL_OG_DOOR = 14819, + MODEL_DJ_STUFF = 14820, + MODEL_MC_STRAPS_INT = 14821, + MODEL_GYM2_DOORWAY = 14822, + MODEL_GYM3_DOORWAY = 14823, + MODEL_GYM1_DOORWAY = 14824, + MODEL_INT_BOXING07 = 14825, + MODEL_INT_KBSGARAGE2 = 14826, + MODEL_AB_SFGYMBITS01A2 = 14827, + MODEL_LM_STRIP2PRIV = 14828, + MODEL_STRIP_SIGNS = 14829, + MODEL_STRIP_LIGHTS = 14830, + MODEL_LM_STRIPBAR = 14831, + MODEL_LM_STRIPCORNER = 14832, + MODEL_LM_STRIPCHAIRS1 = 14833, + MODEL_LM_STRIPPLANT = 14834, + MODEL_LM_STRIPCOLUMNS = 14835, + MODEL_LM_STRIPPOLES = 14836, + MODEL_LM_STRIPCHAIRS = 14837, + MODEL_INT_STRIP_CLUB = 14838, + MODEL_LM_STRIPPRIV = 14839, + MODEL_BDUPS_GRAF = 14840, + MODEL_LEE_GYMERS = 14841, + MODEL_INT_POLICEA07 = 14842, + MODEL_INT_POLICEA01 = 14843, + MODEL_INT_POLICEA02 = 14844, + MODEL_INT_POLICEA03 = 14845, + MODEL_INT_PPOL = 14846, + MODEL_MP_SFPD_BIG = 14847, + MODEL_MP_SFPD_STAIRS1 = 14848, + MODEL_MP_SFPD_LIGHTS1 = 14849, + MODEL_MP_SFPD_OBJ1 = 14850, + MODEL_MP_SFPD_SIGNA = 14851, + MODEL_MP_SFPD_WIN1 = 14852, + MODEL_VEG_POL_MAIN2 = 14853, + MODEL_COUNTERA = 14854, + MODEL_COUNTERB = 14855, + MODEL_CELLSA = 14856, + MODEL_VEG_POL_MAIN1 = 14858, + MODEL_COOCHIE_ROOM = 14859, + MODEL_COOCHIE_POSTERS = 14860, + MODEL_CHOOCHIE_BED = 14861, + MODEL_HEADBOARD = 14862, + MODEL_CLOTHES = 14863, + MODEL_SHOES = 14864, + MODEL_BOBBI_ROOM01 = 14865, + MODEL_BOBBIE_BED01 = 14866, + MODEL_BOBBIE_CUPBOARDS = 14867, + MODEL_PENNANTS01 = 14868, + MODEL_BOBBIE_TABLE = 14869, + MODEL_POMPOM01 = 14870, + MODEL_KYLIE_BARN = 14871, + MODEL_KYLIE_LOGS = 14872, + MODEL_KYLIE_HAY = 14873, + MODEL_KYLIE_STAIRS = 14874, + MODEL_KYLIE_HAY1 = 14875, + MODEL_MICHELLE_GARAGE = 14876, + MODEL_MICHELLE_STAIRS = 14877, + MODEL_MICHELLE_BARRELS = 14878, + MODEL_MICHELLE_BITS = 14879, + MODEL_MICHELLE_BED01 = 14880, + MODEL_BARBARA_COP = 14881, + MODEL_BARB_PIPES = 14882, + MODEL_PRISON_GATES = 14883, + MODEL_VEGAS_SIGNS1 = 14885, + MODEL_POLVEGSIGNS1 = 14886, + MODEL_POLVEGSIGNS3 = 14887, + MODEL_MILLIE_HEADBOARD = 14888, + MODEL_MILLIE_ROOM = 14889, + MODEL_MILLIE_VIBRATORS = 14890, + MODEL_MILLIE_SWING = 14891, + MODEL_MP_SFPD_WIN2 = 14892, + MODEL_POLICE1_EXIT = 14893, + MODEL_POLICE2_EXIT01 = 14894, + MODEL_MP_SFPD_OBJ2 = 14895, + MODEL_MP_SFPD_LIGHTS2A = 14896, + MODEL_MP_SFPD_LIGHTS1A = 14897, + MODEL_INT_POLICEA03A = 14898, + MODEL_POLICE3_EXIT01 = 14900, + MODEL_POLICE3_EXIT02 = 14901, + MODEL_VEG_POL_WINDOW = 14902, + MODEL_MP_SFPD_LIGHTS2 = 14903, + MODEL_GENMOTELFURN_SV = 15025, + MODEL_IMY_ROOMFURN12_SV = 15026, + MODEL_IMMY_CLOTHES_SV = 15027, + MODEL_GENMOTEL2SH_SV = 15028, + MODEL_GENMOTEL2_SV = 15029, + MODEL_GENMOTEL_SV = 15030, + MODEL_LASMALL1_SV = 15031, + MODEL_LASMALLFURN_SV = 15032, + MODEL_VEGASHOTEL_SV = 15033, + MODEL_HOTELGEN_SV = 15034, + MODEL_KB_BED_TEST2_SV = 15035, + MODEL_KIT_CAB_WASHIN_SV = 15036, + MODEL_MED_DINNING_2_SV = 15037, + MODEL_PLANT_POT_3_SV = 15038, + MODEL_MRK_BED02_SV = 15039, + MODEL_CUNTBITS = 15040, + MODEL_CUNTHOUSE = 15041, + MODEL_NEWHOUSE1 = 15042, + MODEL_SVCUNTFLORDAY = 15043, + MODEL_LAMIDSHADFLOOR = 15044, + MODEL_BIGLASHADOW = 15045, + MODEL_COUNTRYSAVEHOUSE = 15046, + MODEL_SVVGMDSHADFLOOR = 15047, + MODEL_LABIGSAVEHOUSE = 15048, + MODEL_SVLABIGKITCHSHAD = 15049, + MODEL_SVLABIGBITS = 15050, + MODEL_SVLASMSHAD = 15051, + MODEL_SVSFSMSHAD = 15052, + MODEL_BIGNICEVEGHOTEL = 15053, + MODEL_SVVGMEDHOOSE = 15054, + MODEL_SAVELAMID = 15055, + MODEL_SVSFSMSHADFLOOR2 = 15056, + MODEL_BIHOTELSHAD = 15057, + MODEL_MIDVEGSAVEHOUSE = 15058, + MODEL_LABIHALFHOUSE = 15059, + MODEL_SVSFMDSHADFLR1 = 15060, + MODEL_SVLAMIDSHAD = 15061, + MODEL_LAMIDSHADFLR = 15062, + MODEL_SVMIDSAVEBITS = 15063, + MODEL_SVRAILS = 15064, + MODEL_DRVIN_SCREEN = 16000, + MODEL_DRVIN_PROJHUT = 16001, + MODEL_DRVIN_SIGN = 16002, + MODEL_DRVIN_TICKET = 16003, + MODEL_DES_TEPEOFF = 16004, + MODEL_DESN2_STWNBLOK2 = 16005, + MODEL_ROS_TOWNHALL = 16006, + MODEL_DESN2_CN2BLOK1 = 16007, + MODEL_DES_NBRSTRUCT = 16008, + MODEL_DES_NBRSTRUCT2 = 16009, + MODEL_DES_RESLAB_ = 16010, + MODEL_DES_WESTRN2_ = 16011, + MODEL_DES_NTCAFE = 16012, + MODEL_DES_NTWN_LINES1_ = 16013, + MODEL_DES_NTWN_LINES2_ = 16014, + MODEL_DES_NTWN_LINES6_ = 16015, + MODEL_DES_ROADBAR01 = 16016, + MODEL_DES_ROADBAR02 = 16017, + MODEL_DES_ROADBAR03 = 16018, + MODEL_DES_ROADBAR04 = 16019, + MODEL_DES_ROADBAR05 = 16020, + MODEL_DES_GEYHOTBASE_ = 16021, + MODEL_DES_GEYWALL1 = 16022, + MODEL_DES_TRXINGSIGN02 = 16023, + MODEL_DES_LTRAINTUNNEL2 = 16024, + MODEL_DES_TRAINLINE06 = 16025, + MODEL_DES_TRAINLINE07 = 16026, + MODEL_DES_TRAINLINE08 = 16027, + MODEL_DES_TRAINLINE09 = 16028, + MODEL_DES_TRAINLINE11 = 16029, + MODEL_DES_TRAINLINE12 = 16030, + MODEL_DES_TRAINLINE13 = 16031, + MODEL_DES_TRAINLINE14 = 16032, + MODEL_DES_TRAINLINE15 = 16033, + MODEL_DES_TRAINLINE16 = 16034, + MODEL_DES_TRAINLINE10 = 16035, + MODEL_DES_TRAINLINE17 = 16036, + MODEL_DES_RAILBR_TWR10 = 16037, + MODEL_DES_POWERCABLE_01 = 16038, + MODEL_DES_POWERCABLE_03 = 16039, + MODEL_DES_POWERCABLE_04 = 16040, + MODEL_DES_POWERCABLE_07 = 16041, + MODEL_DES_POWERCABLE_08 = 16042, + MODEL_DES_POWERCABLE_09 = 16043, + MODEL_DES_POWERCABLE_10 = 16044, + MODEL_DES_POWERCABLE_11 = 16045, + MODEL_DES_POWERCABLE_12 = 16046, + MODEL_DES_POWERCABLE_19 = 16047, + MODEL_DES_POWERCABLE_20 = 16048, + MODEL_DES_POWERCABLE_21 = 16049, + MODEL_DES_POWERCABLE_22 = 16050, + MODEL_DES_WESTSALOON_01 = 16051, + MODEL_DES_GHOTFENCE = 16052, + MODEL_DES_WESTRN7_01 = 16053, + MODEL_DES_WESTRN9_01 = 16054, + MODEL_QUARRY_BIT04 = 16055, + MODEL_QUARRY_BIT02 = 16056, + MODEL_QUARRY_BIT01 = 16057, + MODEL_QUARRY_BIT05 = 16058, + MODEL_QUARRY_BIT03 = 16059, + MODEL_DES_TREELINE1 = 16060, + MODEL_DES_TREELINE2 = 16061, + MODEL_DES_NT_BUNTPOLES = 16062, + MODEL_DES_COCKBUNTING = 16063, + MODEL_DES_CN2BLOK4 = 16064, + MODEL_DES_STWNSHOP01 = 16065, + MODEL_DES_BLUECAFE01 = 16066, + MODEL_DES_STWNMOTEL02 = 16067, + MODEL_DES_STRIPBLOCK1 = 16068, + MODEL_DES_STWNYELMOT1_ = 16069, + MODEL_DES_STWNHOTEL1 = 16070, + MODEL_DES_QUARRYBELT02 = 16071, + MODEL_DES_QUARRYBELT01 = 16072, + MODEL_DES_QUARRYBELT03 = 16073, + MODEL_DES_QUARRYBELT04 = 16074, + MODEL_DES_QUARRYBELT07 = 16075, + MODEL_DES_SORTER01 = 16076, + MODEL_DES_GRAVELPILE01 = 16077, + MODEL_DES_QUARRYBELT08 = 16078, + MODEL_DES_QUARRYBELT09 = 16079, + MODEL_DES_BIGQUARYCONV01 = 16080, + MODEL_DES_BIGQUARYCONV02 = 16081, + MODEL_DES_QUARRYPLATFORM = 16082, + MODEL_DES_QUARRY_HOPPER01 = 16083, + MODEL_DES_QUARRYRAMP = 16084, + MODEL_DES_QUARSTMOUND_02 = 16085, + MODEL_DES_BIGOILPIPE01 = 16086, + MODEL_DES_OILFIELDPIPE01 = 16087, + MODEL_DES_PIPESTRUT01 = 16088, + MODEL_DES_PIPESTRUT02 = 16089, + MODEL_DES_PIPESTRUT03 = 16090, + MODEL_DES_PIPESTRUT04 = 16091, + MODEL_DES_PIPESTRUT05 = 16092, + MODEL_A51_GATECONTROL = 16093, + MODEL_DES_A51INFENC = 16094, + MODEL_DES_A51GUARDBOX02 = 16095, + MODEL_DES_A51GUARDBOX04 = 16096, + MODEL_N_BIT_16 = 16097, + MODEL_DES_BY_HANGAR_ = 16098, + MODEL_DES_POWERCABLE_END = 16099, + MODEL_DES_SUBSTA_BLDGS = 16100, + MODEL_DES_WINDSOCKPOLE = 16101, + MODEL_CEN_BIT_18 = 16102, + MODEL_NE_BIT_22 = 16103, + MODEL_DES_BOULDERS_ = 16104, + MODEL_DES_WESTRN11_04 = 16105, + MODEL_DES_NMOT_ = 16106, + MODEL_DES_NGASSTA = 16107, + MODEL_DES_SNAKEFARM_ = 16108, + MODEL_RADAR_BIT_03 = 16109, + MODEL_DES_ROCKGP1_01 = 16110, + MODEL_DES_ROCKGP1_02 = 16111, + MODEL_DES_ROCKFL1_ = 16112, + MODEL_DES_ROCKGP2_03 = 16113, + MODEL_DES_ROCKGP2_ = 16114, + MODEL_DES_ROCKGP1_03 = 16115, + MODEL_DES_ROCKGP2_04 = 16116, + MODEL_DES_ROCKGP1_04 = 16117, + MODEL_DES_ROCKGP2_05 = 16118, + MODEL_DES_ROCKGP2_06 = 16119, + MODEL_DES_ROCKGP2_07 = 16120, + MODEL_DES_ROCKGP2_09 = 16121, + MODEL_DES_ROCKGP2_11 = 16122, + MODEL_DES_ROCKGP2_13 = 16123, + MODEL_DES_ROCKGP1_06 = 16124, + MODEL_DES_ROCKGP1_07 = 16125, + MODEL_DES_ROCKGP2_15 = 16126, + MODEL_DES_ROCKGP1_08 = 16127, + MODEL_DES_ROCKGP1_09 = 16128, + MODEL_DES_ROCKGP1_12 = 16129, + MODEL_DES_ROCKGP2_16 = 16130, + MODEL_DES_ROCKGP2_17 = 16131, + MODEL_DAM_TRELLIS01 = 16132, + MODEL_DES_ROCKGP2_18 = 16133, + MODEL_DES_ROCKFL1_01 = 16134, + MODEL_DES_GEYSRWALK2 = 16135, + MODEL_DES_TELEFENC = 16136, + MODEL_DES_TELESHED2_ = 16137, + MODEL_DES_TELESHED2_01 = 16138, + MODEL_DES_ROCKGP2_19 = 16139, + MODEL_DES_ROCKGP2_20 = 16140, + MODEL_DES_ROCKGP2_21 = 16141, + MODEL_DES_ROCKGP2_22 = 16142, + MODEL_DES_TELECAFE = 16143, + MODEL_DES_TELECAFENC = 16144, + MODEL_DES_ROCKGP2_23 = 16145, + MODEL_DES_UFOINN = 16146, + MODEL_RADAR_BIT_02 = 16147, + MODEL_RADAR_BIT_01 = 16148, + MODEL_RADAR_BIT_04 = 16149, + MODEL_UFO_BARINTERIOR = 16150, + MODEL_UFO_BAR = 16151, + MODEL_UFO_BOOTHS = 16152, + MODEL_UFO_PHOTOS = 16153, + MODEL_UFO_BACKROOM = 16154, + MODEL_UFO_BACKRMSTUFF = 16155, + MODEL_VDES_TRAINLINE18 = 16156, + MODEL_N_BIT_01 = 16157, + MODEL_N_BIT_02 = 16158, + MODEL_N_BIT_03 = 16159, + MODEL_N_BIT_04 = 16160, + MODEL_N_BIT_05 = 16161, + MODEL_N_BIT_06 = 16162, + MODEL_N_BIT_07 = 16163, + MODEL_N_BIT_08 = 16164, + MODEL_N_BIT_10 = 16165, + MODEL_N_BIT_11 = 16166, + MODEL_N_BIT_12 = 16167, + MODEL_N_BIT_13 = 16168, + MODEL_N_BIT_14 = 16169, + MODEL_N_BIT_15 = 16170, + MODEL_NE_BIT_23 = 16171, + MODEL_NE_BIT_01 = 16172, + MODEL_NE_BIT_02 = 16173, + MODEL_NE_BIT_03 = 16174, + MODEL_NE_BIT_04 = 16175, + MODEL_NE_BIT_06 = 16176, + MODEL_NE_BIT_07 = 16177, + MODEL_NE_BIT_08 = 16178, + MODEL_NE_BIT_09 = 16179, + MODEL_NE_BIT_10 = 16180, + MODEL_NE_BIT_11 = 16181, + MODEL_NE_BIT_12 = 16182, + MODEL_NE_BIT_13 = 16183, + MODEL_NE_BIT_14 = 16184, + MODEL_NE_BIT_15 = 16185, + MODEL_NE_BIT_16 = 16186, + MODEL_NE_BIT_17 = 16187, + MODEL_NE_BIT_18 = 16188, + MODEL_NE_BIT_19 = 16189, + MODEL_NE_BIT_20 = 16190, + MODEL_NE_BIT_21 = 16191, + MODEL_CEN_BIT_01 = 16192, + MODEL_CEN_BIT_02 = 16193, + MODEL_CEN_BIT_03 = 16194, + MODEL_CEN_BIT_04 = 16195, + MODEL_CEN_BIT_20 = 16196, + MODEL_CEN_BIT_05 = 16197, + MODEL_CEN_BIT_06 = 16198, + MODEL_CEN_BIT_07 = 16199, + MODEL_CEN_BIT_08 = 16200, + MODEL_CEN_BIT_09 = 16201, + MODEL_CEN_BIT_10 = 16202, + MODEL_CEN_BIT_11 = 16203, + MODEL_CEN_BIT_12 = 16204, + MODEL_CEN_BIT_13 = 16205, + MODEL_CEN_BIT_14 = 16206, + MODEL_CEN_BIT_15 = 16207, + MODEL_CEN_BIT_16 = 16208, + MODEL_CEN_BIT_19 = 16209, + MODEL_CEN_BIT_17 = 16210, + MODEL_S_BIT_01 = 16211, + MODEL_S_BIT_02 = 16212, + MODEL_S_BIT_03 = 16213, + MODEL_S_BIT_04 = 16214, + MODEL_S_BIT_05 = 16215, + MODEL_S_BIT_06 = 16216, + MODEL_S_BIT_07 = 16217, + MODEL_S_BIT_08 = 16218, + MODEL_S_BIT_09 = 16219, + MODEL_S_BIT_10 = 16220, + MODEL_S_BIT_11 = 16221, + MODEL_S_BIT_12 = 16222, + MODEL_S_BIT_13 = 16223, + MODEL_S_BIT_14 = 16224, + MODEL_S_BIT_15 = 16225, + MODEL_S_BIT_16 = 16226, + MODEL_S_BIT_17 = 16227, + MODEL_S_BIT_18 = 16228, + MODEL_S_BIT_19 = 16229, + MODEL_SE_BIT_01 = 16230, + MODEL_SE_BIT_02 = 16231, + MODEL_SE_BIT_03 = 16232, + MODEL_SE_BIT_04 = 16233, + MODEL_SE_BIT_05 = 16234, + MODEL_SE_BIT_06 = 16235, + MODEL_SE_BIT_07 = 16236, + MODEL_SE_BIT_08 = 16237, + MODEL_SE_BIT_09 = 16238, + MODEL_SE_BIT_10 = 16239, + MODEL_SE_BIT_11 = 16240, + MODEL_SE_BIT_12 = 16241, + MODEL_SE_BIT_13 = 16242, + MODEL_SE_BIT_14 = 16243, + MODEL_SE_BIT_15 = 16244, + MODEL_SE_BIT_16 = 16245, + MODEL_SE_BIT_17 = 16246, + MODEL_SE_BIT_18 = 16247, + MODEL_SE_BIT_20 = 16248, + MODEL_SE_BIT_21 = 16249, + MODEL_SE_BIT_23 = 16250, + MODEL_N_BIT_17 = 16251, + MODEL_N_BIT_18 = 16252, + MODEL_N_BIT_19 = 16253, + MODEL_N_BIT_20 = 16254, + MODEL_NE_BIT_24 = 16255, + MODEL_NE_BIT_25 = 16256, + MODEL_NE_BIT_26 = 16257, + MODEL_CEN_BIT_21 = 16258, + MODEL_CEN_BIT_22 = 16259, + MODEL_CEN_BIT_23 = 16260, + MODEL_CEN_BIT_24 = 16261, + MODEL_S_BIT_21 = 16262, + MODEL_SE_BIT_24 = 16263, + MODEL_RADAR_BIT_05 = 16264, + MODEL_DES_DAMLODBIT04 = 16265, + MODEL_DES_RAILBRIDGEOIL = 16266, + MODEL_DES_OILPIPE_04 = 16267, + MODEL_DES_OILLINES01 = 16268, + MODEL_DES_OILLINES02 = 16269, + MODEL_DES_OILLINES03 = 16270, + MODEL_DES_RAILFAC02 = 16271, + MODEL_DES_RAILFAC01 = 16272, + MODEL_OILDERRICKLOD01 = 16273, + MODEL_OILDERRICKLOD02 = 16274, + MODEL_OILDERRICKLOD03 = 16275, + MODEL_OILDERRICKLOD04 = 16276, + MODEL_OILDERRICKLOD05 = 16277, + MODEL_OILDERRICKLOD06 = 16278, + MODEL_OILDERRICKLOD07 = 16279, + MODEL_DES_FARMHOUSE1_ = 16280, + MODEL_DES_FGATEWAY01 = 16281, + MODEL_CN2_SLINES02 = 16282, + MODEL_CN2_SLINES01 = 16283, + MODEL_CN2_SLINES04 = 16284, + MODEL_DES_WESTRN7_03 = 16285, + MODEL_CN2_SLINES06 = 16286, + MODEL_DES_FSHED1_ = 16287, + MODEL_CN2_SLINES03 = 16288, + MODEL_CN2_SLINES05 = 16289, + MODEL_CN2_SLINES07 = 16290, + MODEL_CN2_SLINES08 = 16291, + MODEL_CN2_SLINES09 = 16292, + MODEL_A51_EXTFENCE03 = 16293, + MODEL_A51_EXTFENCE06 = 16294, + MODEL_QUARRY_FENC01 = 16295, + MODEL_QUARRY_FENC04 = 16296, + MODEL_QUARRY_FENC06 = 16297, + MODEL_QUARRY_FENC05 = 16298, + MODEL_QUARRY_FENC02 = 16299, + MODEL_QUARRY_FENC03 = 16300, + MODEL_DES_QUARRYBELT13 = 16301, + MODEL_DES_GRAVELPILE04 = 16302, + MODEL_DES_QUARRYRAMP01 = 16303, + MODEL_DES_GRAVELPILE05 = 16304, + MODEL_DES_GRAVELPILE06 = 16305, + MODEL_CN2_YWIRE = 16306, + MODEL_DES_TELLINES01 = 16307, + MODEL_DES_SBRIDSUPPS = 16308, + MODEL_DES_QUARRYBELT11 = 16309, + MODEL_DES_QUARRYHUT1 = 16310, + MODEL_DES_QUARRYBELT15 = 16311, + MODEL_QUARRY_WALLLTHING = 16312, + MODEL_QUARRY_FENCINS = 16313, + MODEL_QUARRY_CHUTELIFT = 16314, + MODEL_QUARRY_FENCINS2 = 16315, + MODEL_DES_QUARRYBELT17 = 16316, + MODEL_DES_QUARSTMOUND_03 = 16317, + MODEL_DES_QUARRYBELT18 = 16318, + MODEL_QUARRYSTUFF4 = 16319, + MODEL_QUARRY_FENC07 = 16320, + MODEL_QUARRY_FENC08 = 16321, + MODEL_A51_PLAT = 16322, + MODEL_A51_OUTBLDGS = 16323, + MODEL_DES_QUAOLDFENC = 16324, + MODEL_DES_QUARRYHUT02 = 16325, + MODEL_DES_BYOFFICE = 16326, + MODEL_DES_BYCONTOWR = 16327, + MODEL_QUARRY_CRANE = 16328, + MODEL_QUARRY_CRANEARM = 16329, + MODEL_QUARRY_CRANEBASE = 16330, + MODEL_QUARRY_CRANECABLE = 16331, + MODEL_QUARRY_CRANHOOK = 16332, + MODEL_QUARRY_CRHOOKCBLE = 16333, + MODEL_DES_CRANELINES01 = 16334, + MODEL_DES_TRANSTOWER = 16335, + MODEL_DES_LODTRANSTWR = 16336, + MODEL_DES_CRANECONTROL = 16337, + MODEL_DAM_GENBAY01 = 16338, + MODEL_DAM_GENEND01 = 16339, + MODEL_DAM_GENTURBINE05 = 16340, + MODEL_DAM_GENALPHA01 = 16341, + MODEL_DAM_GENTURBINE04 = 16342, + MODEL_DAM_GENALPHA02 = 16343, + MODEL_DAM_GENBAY02 = 16344, + MODEL_DAM_GENTURBINE03 = 16345, + MODEL_DAM_GENTURBINE02 = 16346, + MODEL_DAM_GENALPHA04 = 16347, + MODEL_DAM_GENBAY04 = 16348, + MODEL_DAM_GENTURBINE01 = 16349, + MODEL_DAM_GENEND02 = 16350, + MODEL_DAM_GENALPHA06 = 16351, + MODEL_DAM_GENBAY06 = 16352, + MODEL_DAM_GENALPHA07 = 16353, + MODEL_DAM_GENBAY07 = 16354, + MODEL_DAM_GENCRANE01 = 16355, + MODEL_DAM_GENCRANE02 = 16356, + MODEL_DES_EBRIGROAD01 = 16357, + MODEL_DES_EBRIGROAD07 = 16358, + MODEL_DES_SHED3_01 = 16359, + MODEL_DESN2_TSFUELPAY = 16360, + MODEL_DESN2_TSBLOCK = 16361, + MODEL_DESN2_TSCANOPY = 16362, + MODEL_DES_TRSTPLINES = 16363, + MODEL_DES_QUAYBASE = 16364, + MODEL_DES_SUBSTAT_17 = 16365, + MODEL_DES_SUBSTAT_37 = 16366, + MODEL_DES_QUAYRAMP = 16367, + MODEL_BONYRD_WINDSOCK = 16368, + MODEL_DES_QUAOLDFENC01 = 16369, + MODEL_BY_FUELFENCE = 16370, + MODEL_DESN2_ALPHABIT01 = 16371, + MODEL_DESN2_ALPHABIT02 = 16372, + MODEL_DESN2_ALPHABIT04 = 16373, + MODEL_DESN2_ALPHABIT05 = 16374, + MODEL_BY_HELIMARKINGS = 16375, + MODEL_DESN2DAMBIT01 = 16376, + MODEL_TV_STAND_BY = 16377, + MODEL_DES_BYOFFICEINT = 16378, + MODEL_QUARRY_LODBIT04 = 16379, + MODEL_QUARRY_LODBIT05 = 16380, + MODEL_QUARRY_LODBIT03 = 16381, + MODEL_QUARRY_LODBIT01 = 16382, + MODEL_QUARRY_LODBIT02 = 16383, + MODEL_DES_EBRIGROAD10 = 16384, + MODEL_DESH2_WEEFACT2_ = 16385, + MODEL_DESN2_SHED3_ = 16386, + MODEL_DESN2_AMMUN = 16387, + MODEL_DES_STUDBLDG = 16388, + MODEL_DES_STUDGRND = 16389, + MODEL_DESN2_STUDBUSH = 16390, + MODEL_DES_REFFENC04 = 16391, + MODEL_DES_REFFENC01 = 16392, + MODEL_DES_REFFENC02 = 16393, + MODEL_DES_REFFENC03 = 16394, + MODEL_DESN2_MINERUN = 16395, + MODEL_DES_NTSHOP5_ = 16396, + MODEL_N_BIT_09 = 16397, + MODEL_DESN2_PECKFAC1 = 16398, + MODEL_DESN2_PECKFAC2 = 16399, + MODEL_DESN2_PECKFAC3 = 16400, + MODEL_DESN2_PECKJUMP = 16401, + MODEL_DESN2_PECKALPHA = 16402, + MODEL_DES2_BUSHYBITS = 16403, + MODEL_DESN2_HUTSKEL2 = 16404, + MODEL_DESN2_HUTSKEL03 = 16405, + MODEL_DESN2_WEEMINEB = 16406, + MODEL_AIRFIELDHUS1 = 16407, + MODEL_AIRFIELDHUS2 = 16408, + MODEL_BY_WEEHANGR = 16409, + MODEL_DESN2_GRAVES = 16410, + MODEL_DESN2_PLATROKS = 16411, + MODEL_LOD_CN2TOWNHALL = 16412, + MODEL_LOD_STWNHOTEL1 = 16413, + MODEL_N_LODBIT_17 = 16414, + MODEL_N_LODBIT_09 = 16415, + MODEL_S_LODBIT_09 = 16416, + MODEL_S_LODBIT_14 = 16417, + MODEL_S_LODBIT_15 = 16418, + MODEL_S_LODBIT_10 = 16419, + MODEL_DES_SBRIDSUPPS04 = 16420, + MODEL_S_BIT_06_2 = 16421, + MODEL_S_BIT_06_3 = 16422, + MODEL_S_BIT_06_4 = 16423, + MODEL_S_BIT_06_5 = 16424, + MODEL_S_LODBIT_06 = 16425, + MODEL_S_LODBIT_06_5 = 16426, + MODEL_S_LODBIT_06_2 = 16427, + MODEL_S_LODBIT_06_3 = 16428, + MODEL_S_LODBIT_06_4 = 16429, + MODEL_DES_EBRIGROAD02 = 16430, + MODEL_DES_LODEBROD01 = 16431, + MODEL_DES_LODEBROD02 = 16432, + MODEL__LOD_CN2BLOK1 = 16433, + MODEL_DESN2_STWNALPH1 = 16434, + MODEL__LOD_STWNBLOK2 = 16435, + MODEL_CN2_ROADBLOCK01 = 16436, + MODEL_CN2_ROADBLOCK02 = 16437, + MODEL_CN2_ROADBLOCK03 = 16438, + MODEL_CN2_ROADBLOCK04 = 16439, + MODEL__LOD_STWNYELMOT1_ = 16440, + MODEL__LOD_STRIPBLOCK1 = 16441, + MODEL_DESN2_STRIPSIGS1 = 16442, + MODEL__LOD_CN2BLOK4 = 16443, + MODEL_DES_BLACKBAGS = 16444, + MODEL_DES_QUARRYCUT = 16445, + MODEL_QUARRY_WEECRUSHR = 16446, + MODEL_LOD_STWNSHOP01 = 16447, + MODEL_DES_NT_BUNTPOLES01 = 16448, + MODEL_N_LODBIT_18 = 16449, + MODEL_N_LODBIT_12 = 16450, + MODEL_LOD_N_BIT_10 = 16451, + MODEL_LOD_N_BIT_13 = 16452, + MODEL_LOD_CEN_BIT_01 = 16453, + MODEL_LOD_NE_BIT_06 = 16454, + MODEL_LOD_NE_BIT_12 = 16455, + MODEL_LOD_CEN_BIT_02 = 16456, + MODEL_LOD_CEN_BIT_21 = 16457, + MODEL_LOD_NE_BIT_07 = 16458, + MODEL_LOD_NE_BIT_13 = 16459, + MODEL_LOD_NE_BIT_25 = 16460, + MODEL_LOD_CEN_BIT_05 = 16461, + MODEL_LOD_CEN_BIT_06 = 16462, + MODEL_LOD_NE_BIT_24 = 16463, + MODEL_LOD_NE_BIT_08 = 16464, + MODEL_LOD_NE_BIT_14 = 16465, + MODEL_LOD_CEN_BIT_03 = 16466, + MODEL_LOD_CEN_BIT_23 = 16467, + MODEL_LOD_NE_BIT_09 = 16468, + MODEL_LOD_NE_BIT_10 = 16469, + MODEL_LOD_NE_BIT_15 = 16470, + MODEL_LOD_NE_BIT_16 = 16471, + MODEL_LOD_NE_BIT_17 = 16472, + MODEL_LOD_NE_BIT_18 = 16473, + MODEL_LOD_NE_BIT_19 = 16474, + MODEL_DES_STWNBOWL = 16475, + MODEL_LOD_STWNBOWL = 16476, + MODEL_DES_STWNGAS1 = 16477, + MODEL_LOD_STWNGAS1 = 16478, + MODEL_DES_STGAS1SIG = 16479, + MODEL_FTCARSON_SIGN = 16480, + MODEL_DES_QUARRYBELT19 = 16481, + MODEL_LOD_FTCARSON_SIG = 16482, + MODEL_LOD_S_BIT_08 = 16483, + MODEL_LOD_SE_BIT_12 = 16484, + MODEL_LOD_S_BIT_12 = 16485, + MODEL_LOD_S_BIT_11 = 16486, + MODEL_LOD_S_BIT_07 = 16487, + MODEL_LOD_SE_BIT_16 = 16488, + MODEL_LOD_S_BIT_18 = 16489, + MODEL_LOD_S_BIT_17 = 16490, + MODEL_LOD_S_BIT_16 = 16491, + MODEL_LOD_S_BIT_19 = 16492, + MODEL_LOD_SE_BIT_17 = 16493, + MODEL_LOD_SE_BIT_18 = 16494, + MODEL_LOD_SE_BIT_20 = 16495, + MODEL_LOD_SE_BIT_21 = 16496, + MODEL_LOD_NE_BIT_11 = 16497, + MODEL_DES_RDALPHA01 = 16498, + MODEL_LOD_N_BIT_06 = 16499, + MODEL_CN2_SAVGARDR1_ = 16500, + MODEL_CN2_SAVGARDR2_ = 16501, + MODEL_CN2_JETTY1 = 16502, + MODEL_CN2_ROCKGPST = 16503, + MODEL_LOD_S_BIT_02 = 16504, + MODEL_LOD_S_BIT_05 = 16505, + MODEL_LOD_CN2RINGKING = 16506, + MODEL_LOD_NE_BIT_04 = 16507, + MODEL_LOD_NE_BIT_03 = 16508, + MODEL_LOD_NE_BIT_02 = 16509, + MODEL_LOD_NE_BIT_01 = 16510, + MODEL_LOD_NE_BIT_23 = 16511, + MODEL_LOD_N_BIT_05 = 16512, + MODEL_LOD_N_BIT_04 = 16513, + MODEL_LOD_N_BIT_03 = 16514, + MODEL_LOD_N_BIT_02 = 16515, + MODEL_LOD_N_BIT_01 = 16516, + MODEL_LOD_DES_TUNNEL2 = 16517, + MODEL_LOD_DES_LINE10 = 16518, + MODEL_LOD_DES_LINE16 = 16519, + MODEL_LOD_DES_LINE15 = 16520, + MODEL_LOD_DES_LINE14 = 16521, + MODEL_LOD_DES_LINE13 = 16522, + MODEL_LOD_DES_LINE12 = 16523, + MODEL_LOD_DES_LINE11 = 16524, + MODEL_LOD_DES_LINE09 = 16525, + MODEL_LOD_DES_LINE08 = 16526, + MODEL_LOD_DES_LINE07 = 16527, + MODEL_LOD_DES_LINE06 = 16528, + MODEL_LOD_DES_LINE18 = 16529, + MODEL_DES_OILFIELDPIPE02 = 16530, + MODEL_DES_OILPIPE_03 = 16531, + MODEL_DES_OILPIPE_05 = 16532, + MODEL_DES_OILPIPE_06 = 16533, + MODEL_DES_OILPIPE_01 = 16534, + MODEL_DES_OILPIPE_07 = 16535, + MODEL_LOD_SE_BIT_01 = 16536, + MODEL_LOD_SE_BIT_02 = 16537, + MODEL_LOD_SE_BIT_07 = 16538, + MODEL_LOD_SE_BIT_06 = 16539, + MODEL_LOD_SE_BIT_03 = 16540, + MODEL_LOD_SE_BIT_08 = 16541, + MODEL_LOD_SE_BIT_09 = 16542, + MODEL_LOD_SE_BIT_23 = 16543, + MODEL_LOD_SE_BIT_13 = 16544, + MODEL_LOD_SE_BIT_24 = 16545, + MODEL_LOD_SE_BIT_11 = 16546, + MODEL_LOD_SE_BIT_14 = 16547, + MODEL_LOD_SE_BIT_19 = 16548, + MODEL_LOD_SE_BIT_15 = 16549, + MODEL_LOD_SE_BIT_10 = 16550, + MODEL_LOD_NE_BIT_20 = 16551, + MODEL_LOD_NE_BIT_26 = 16552, + MODEL_LOD_NE_BIT_22 = 16553, + MODEL_LOD_NE_BIT_21 = 16554, + MODEL_LOD_SE_BIT_04 = 16555, + MODEL_LOD_SE_BIT_05 = 16556, + MODEL_LOD_CEN_BIT_12 = 16557, + MODEL_LOD_CEN_BIT_13 = 16558, + MODEL_LOD_CEN_BIT_17 = 16559, + MODEL_LOD_CEN_BIT_18 = 16560, + MODEL_LOD_CEN_BIT_07 = 16561, + MODEL_CN2_ROSMOT1 = 16562, + MODEL_CN2_POLIS = 16563, + MODEL_DES_STMEDICENTRE_ = 16564, + MODEL_LOD_STMEDICENTRE_ = 16565, + MODEL_LOD_CN2_POLIS = 16566, + MODEL_LOD_ROSMOT02 = 16567, + MODEL_CN2_ROSMOT02 = 16568, + MODEL_LOD_S_BIT_04 = 16569, + MODEL_LOD_S_BIT_03 = 16570, + MODEL_DES_RAILBRIDGEST01 = 16571, + MODEL_LOD_RADAR_BIT_04 = 16572, + MODEL_LOD_DES_BOULDERS_ = 16573, + MODEL_LOD_N_BIT_15 = 16574, + MODEL_LOD_CEN_BIT_04 = 16575, + MODEL_LOD_CEN_BIT_20 = 16576, + MODEL_LOD_CEN_BIT_22 = 16577, + MODEL_LOD_N_BIT_16 = 16578, + MODEL_LOD_CEN_BIT_08 = 16579, + MODEL_LOD_CEN_BIT_14 = 16580, + MODEL_LOD_RADAR_BIT_01 = 16581, + MODEL_LOD_RADAR_BIT_02 = 16582, + MODEL_LOD_S_BIT_21 = 16583, + MODEL_LOD_RADAR_BIT_03 = 16584, + MODEL_LOD_CEN_BIT_09 = 16585, + MODEL_LOD_CEN_BIT_10 = 16586, + MODEL_LOD_CEN_BIT_24 = 16587, + MODEL_LOD_CEN_BIT_15 = 16588, + MODEL_LOD_CEN_BIT_16 = 16589, + MODEL_LOD_CEN_BIT_11 = 16590, + MODEL_LOD_CEN_BIT_19 = 16591, + MODEL_LOD_DES_LINE17 = 16592, + MODEL_SE_BIT_19 = 16593, + MODEL_LOD_SNAKEFARM_ = 16594, + MODEL_LOD_BYOFFICE = 16595, + MODEL_LOD_BYCONTOWR = 16596, + MODEL_LOD_BY_WEEHANGR = 16597, + MODEL_LOD_WATERTWR69 = 16598, + MODEL_BY_FUEL06 = 16599, + MODEL_LOD_WATERTWR05 = 16600, + MODEL_BY_FUEL07 = 16601, + MODEL_LOD_BY_HANGAR = 16602, + MODEL_LOD_STWNMOTEL02 = 16603, + MODEL_LOD_STWNMOTEL03 = 16604, + MODEL_DES_STWNMOTEL03 = 16605, + MODEL_LOD_CN2_NMOT_ = 16606, + MODEL_LOD_NGASSTA = 16607, + MODEL_LOD_QUAYBASE = 16608, + MODEL_LOD_NBRIDGEBIT_02 = 16609, + MODEL_DES_NBRIDGEBIT_02 = 16610, + MODEL_LOD_RAILBR_TWR10 = 16611, + MODEL_LOD_RESLAB_ = 16612, + MODEL_DES_BIGTELESCOPE = 16613, + MODEL_LOD_BIGTELESCOPE = 16614, + MODEL_LOD_TELESHED2_ = 16615, + MODEL_LOD_TELESHED2_01 = 16616, + MODEL_LOD_CN2_WEEFACT2_ = 16617, + MODEL_LOD_CN2_SHED3_ = 16618, + MODEL_LOD_A51_OUTBLDGS = 16619, + MODEL_LOD_RAILFAC02 = 16620, + MODEL_LOD_RAILFAC01 = 16621, + MODEL_DES_NTWN_LINES3_ = 16622, + MODEL_DES_RDALPHA02 = 16623, + MODEL_LOD_STUDGRND = 16624, + MODEL_LOD_RADAR_BIT_05 = 16625, + MODEL_LOD_STUDBLDG = 16626, + MODEL_DES_GHOTFENC01 = 16627, + MODEL_DES_GHOTFENC02 = 16628, + MODEL_DES_GHOTFENC03 = 16629, + MODEL_DES_GHOTFENC04 = 16630, + MODEL_DES_GHOTFENC05 = 16631, + MODEL_DES_GHOTFENC06 = 16632, + MODEL_DES_GHOTFENC07 = 16633, + MODEL_DES_GHOTFENC08 = 16634, + MODEL_DES_GHOTFENC09 = 16635, + MODEL_DES_GHOTFENC10 = 16636, + MODEL_GHOSTGARDOOR = 16637, + MODEL_A51_GATECON_A = 16638, + MODEL_DES_A51_LABS = 16639, + MODEL_DES_A51_INNER3 = 16640, + MODEL_DES_A51WARHEADS = 16641, + MODEL_A51_GENROOM = 16642, + MODEL_A51_STORMECH = 16643, + MODEL_A51_VENTSOUTH = 16644, + MODEL_A51_VENTSOUTH01 = 16645, + MODEL_A51_UGSTORE1A = 16646, + MODEL_A51_STOREROOM = 16647, + MODEL_A51_FAKEROOM2 = 16648, + MODEL_A51_ENTSTAIR = 16649, + MODEL_A51_GENROOMALPHA = 16650, + MODEL_A51_GENWALKWAY = 16651, + MODEL_A51_FAKEALPHA1 = 16652, + MODEL_A51_FAKEALPHA2 = 16653, + MODEL_A51_FAKEROOM1 = 16654, + MODEL_A51_LABGLASS = 16655, + MODEL_A51_ROCKETLAB = 16656, + MODEL_DES_A51_LABS2 = 16657, + MODEL_DES_A51_LABENT = 16658, + MODEL_DES_A51_ENTALPHA = 16659, + MODEL_A51_ENTSTUFF = 16660, + MODEL_A51_SCI_STAIR = 16661, + MODEL_A51_RADAR_STUFF = 16662, + MODEL_A51_JETPSTUFF = 16663, + MODEL_A51_JETPALPHA = 16664, + MODEL_A51_RADARROOM = 16665, + MODEL_A51_MACHINES = 16666, + MODEL_DES_ROCKGP2_14 = 16667, + MODEL_A51_EXTFENCE04 = 16668, + MODEL_A51_EXTFENCE05 = 16669, + MODEL_A51_EXTFENCE02 = 16670, + MODEL_A51_EXTFENCE01 = 16671, + MODEL_LOD_CN2_NMOT_01 = 16672, + MODEL_DES_NMOT_02 = 16673, + MODEL_LOD_CN2_TSBLOCK = 16674, + MODEL_DES_ROCKGP1_13 = 16675, + MODEL_DES_QUARRYCUT3 = 16676, + MODEL_DES_QUARRYCUT2 = 16677, + MODEL_DESN2_ALPHABIT07 = 16678, + MODEL_LOD_N_BIT_08 = 16679, + MODEL_A51_LOD_JETROOM = 16680, + MODEL_A51_LAUNCHBOTTOM = 16681, + MODEL_A51_JETROOM = 16682, + MODEL_CN2_ALPHABIT01 = 16683, + MODEL_CN2_RNWAY_BIT = 16684, + MODEL_CN2_RNWAY_BIT2 = 16685, + MODEL_LOD_RNWAY_BIT2 = 16686, + MODEL_LOD_RNWAY_BIT = 16687, + MODEL_LOD_DES_EBRIGROAD07 = 16688, + MODEL_DES_WESTRN7_02 = 16689, + MODEL_DES_WESTSALOON_02 = 16690, + MODEL_LOD_N_BIT_14 = 16691, + MODEL_DES_ROCKGP1_05 = 16692, + MODEL_N_BIT_11B = 16693, + MODEL_N_BIT_11C = 16694, + MODEL_LOD_N_BIT_11B = 16695, + MODEL_LOD_N_BIT_11 = 16696, + MODEL_LOD_N_BIT_11C = 16697, + MODEL_LOD_ROCKGP2_01 = 16698, + MODEL_LOD_ROCKGP2_15 = 16699, + MODEL_LOD_ROCKGP1_12 = 16700, + MODEL_LOD_ROCKGP1_05 = 16701, + MODEL_LOD_ROCKGP2_17 = 16702, + MODEL_LOD_ROCKGP2_16 = 16703, + MODEL_LOD_ROCKGP2_13 = 16704, + MODEL_LOD_ROCKGP1_09 = 16705, + MODEL_LOD_ROCKGP1_07 = 16706, + MODEL_LOD_ROCKGP1_13 = 16707, + MODEL_LOD_ROCKGP2_11 = 16708, + MODEL_LOD_ROCKGP2_07 = 16709, + MODEL_LOD_ROCKGP1_08 = 16710, + MODEL_LOD_ROCKGP1_06 = 16711, + MODEL_LOD_ROCKGP2_06 = 16712, + MODEL_LOD_ROCKGP2_09 = 16713, + MODEL_LOD_ROCKGP1_02 = 16714, + MODEL_LOD_ROCKGP2_18 = 16715, + MODEL_LOD_ROCKGP1_03 = 16716, + MODEL_LOD_ROCKGP2_05 = 16717, + MODEL_LOD_ROCKGP2_03 = 16718, + MODEL_LOD_ROCKGP1_04 = 16719, + MODEL_LOD_ROCKGP2_04 = 16720, + MODEL_LOD_ROCKGP2_20 = 16721, + MODEL_LOD_ROCKGP2_19 = 16722, + MODEL_LOD_ROCKGP1_01 = 16723, + MODEL_LOD_ROCKGP2_ = 16724, + MODEL_LOD_ROCKGP2_21 = 16725, + MODEL_LOD_ROCKGP2_22 = 16726, + MODEL_LOD_ROCKGP2_23 = 16727, + MODEL_LOD_CN2_ROCKGPST = 16728, + MODEL_LOD_S_BIT_20 = 16729, + MODEL_LOD_S_BIT_01 = 16730, + MODEL_CXRF_A51_STAIRS08 = 16731, + MODEL_A51_VENTCOVER = 16732, + MODEL_CN2_DETAIL01 = 16733, + MODEL_CN2_DETAIL02 = 16734, + MODEL_DES_ALPHABIT08 = 16735, + MODEL_DES_ALPHABIT05 = 16736, + MODEL_DES_ALPHABIT01 = 16737, + MODEL_DES_ALPHABIT02 = 16738, + MODEL_DES_ALPHABIT03 = 16739, + MODEL_DES_ALPHABIT04 = 16740, + MODEL_DES_ALPHABIT = 16741, + MODEL_DES_ALPHABIT06 = 16742, + MODEL_DES_ALPHABIT07 = 16743, + MODEL_DES_ALPHABIT09 = 16744, + MODEL_DES_ALPHABIT10 = 16745, + MODEL_DES_ALPHABIT11 = 16746, + MODEL_DES_ALPHABIT12 = 16747, + MODEL_LOD_N_BIT_07 = 16748, + MODEL_LOD_N_BIT_19 = 16749, + MODEL_LOD_N_BIT_20 = 16750, + MODEL_LODS_CN2_TELECAFE = 16751, + MODEL_LOD_ROSMOT1 = 16752, + MODEL_DES_CN2_DETAILBIT = 16753, + MODEL_DES_CN2_DETAIL2 = 16754, + MODEL_LOD_WEEMINEB = 16755, + MODEL_DES_CN2_DETAIL3 = 16756, + MODEL_DES_CN2_DETAIL4 = 16757, + MODEL_DES_CN2_DETAILBIT2 = 16758, + MODEL_DESN2_ALPHABIT06 = 16759, + MODEL_CN2_FTCAR_SIG1 = 16760, + MODEL_LOD_PECKFAC2 = 16761, + MODEL_LOD_PECKFAC3 = 16762, + MODEL_LOD_PECKFAC1 = 16763, + MODEL_LOD_NTSHOP5_ = 16764, + MODEL_LOD_WESTRN2_ = 16765, + MODEL_DES_OILPIPE_02 = 16766, + MODEL_CLUCKINBELL1_CN2 = 16767, + MODEL_LOD1CLUKINBEL_CN2 = 16768, + MODEL_DESN2_AMMUN04 = 16769, + MODEL_DES_GUNBLDG01 = 16770, + MODEL_DES_SAVHANGR = 16771, + MODEL_LOD_SAVHANGR = 16772, + MODEL_DOOR_SAVHANGR1 = 16773, + MODEL_DES_GUNBLDG = 16774, + MODEL_DOOR_SAVHANGR2 = 16775, + MODEL_DES_COCKBODY = 16776, + MODEL_DES_STMOTSIGBAS1 = 16777, + MODEL_DES_UFOSIGN = 16778, + MODEL_UFO_LIGHT02 = 16779, + MODEL_UFO_LIGHT03 = 16780, + MODEL_CN2_RINGKING = 16781, + MODEL_A51_RADAR_SCAN = 16782, + MODEL_DES_DETAILBIT06 = 16783, + MODEL_DES_ALPHABIT13 = 16784, + MODEL_DES_AROADBIT02 = 16785, + MODEL_DES_AROADBIT03 = 16786, + MODEL_DES_AROADBIT04 = 16787, + MODEL_DES_AROADBIT08 = 16788, + MODEL_DES_AROADBIT12 = 16789, + MODEL_DESN2_AROADBIT05 = 16790, + MODEL_WT6SUPPSXC = 17000, + MODEL_CUNTGRSILOS = 17001, + MODEL_LAWESTBRIDGE_LAW = 17002, + MODEL_CUNTWCRIDGE = 17003, + MODEL_COS_PCH_BRIG_1 = 17004, + MODEL_FARMHOUSE = 17005, + MODEL_D5002WHI = 17006, + MODEL_WT6SUPPS01 = 17007, + MODEL_FARMHOUSE01 = 17008, + MODEL_TRUTH_BARN02 = 17009, + MODEL_TRUTH_BARN03 = 17010, + MODEL_TRUTH_BARN04 = 17011, + MODEL_CWSTHSEING26 = 17012, + MODEL_CUNTPLANT05 = 17013, + MODEL_CUNTWPLANT01 = 17014, + MODEL_CUNTWPLANT07 = 17015, + MODEL_CUTNWPLANT09 = 17016, + MODEL_CUNTWPLANT10 = 17017, + MODEL_CUNTSPLANTFNCE03 = 17018, + MODEL_CUNTFRATES1 = 17019, + MODEL_CUNTFRATES02 = 17020, + MODEL_CUNTPLANT06 = 17021, + MODEL_CUNTWPLANT11 = 17022, + MODEL_CUTNWPLANT10 = 17023, + MODEL_CUNTWPLANT12 = 17024, + MODEL_CUNT_ROCKGP1_ = 17025, + MODEL_CUNT_ROCKGP2_ = 17026, + MODEL_CUNT_ROCKGP1_03 = 17027, + MODEL_CUNT_ROCKGP2_04 = 17028, + MODEL_CUNT_ROCKGP2_09 = 17029, + MODEL_CUNT_ROCKGP2_11 = 17030, + MODEL_CUNT_ROCKGP2_13 = 17031, + MODEL_CUNT_ROCKGP2_14 = 17032, + MODEL_CUNT_ROCKGP2_15 = 17033, + MODEL_CUNT_ROCKGP2_16 = 17034, + MODEL_CUNT_ROCKGP2_17 = 17035, + MODEL_CUNTW_CARPORT1_ = 17036, + MODEL_CUNTW_CARPORT2_ = 17037, + MODEL_CUNTW_WEEFACTORY1_ = 17038, + MODEL_CUNTW_WEEBARN1_ = 17039, + MODEL_CUNTW_WEEFACT1_ = 17040, + MODEL_CUNTW_STWN = 17041, + MODEL_CUNTW_STWNMOTSIGN2 = 17042, + MODEL_CONCRETEARCH1 = 17043, + MODEL_CUNTW_STWNYELS = 17044, + MODEL_CUNTW_STWNYEL = 17045, + MODEL_TELEWIRESCUNTW = 17046, + MODEL_CUNTWWIRES = 17047, + MODEL_CUNTWWIRES2 = 17048, + MODEL_CW_SILO01 = 17049, + MODEL_CW_SILO02 = 17050, + MODEL_CW_SILO03 = 17051, + MODEL_CW_BIGBARN02 = 17052, + MODEL_CW_BIGBARN03 = 17053, + MODEL_CW_BIGBARN04 = 17054, + MODEL_CW_FUELDRUM03 = 17055, + MODEL_CW_CORRUG01 = 17056, + MODEL_CW_HAYPILE03 = 17057, + MODEL_CW_TEMPBARN01 = 17058, + MODEL_CW_HAYPILE05 = 17059, + MODEL_CW_HAYPILE06 = 17060, + MODEL_CW_BARNIE = 17061, + MODEL_CUNTYTUNNEL = 17062, + MODEL_CW2_WEEBARN1_01 = 17063, + MODEL_CW2_GARAGE = 17064, + MODEL_CW2_GARAGECANOPY = 17065, + MODEL_CW2_GENSTORE = 17066, + MODEL_CW2_LOGCABINS = 17067, + MODEL_XJETTY01 = 17068, + MODEL_CUNT_ROCKGP2_24 = 17069, + MODEL_CARSPACES03 = 17070, + MODEL_CUNT_ROCKGP2_25 = 17071, + MODEL_SMLTRUKEXT = 17072, + MODEL_SMLLTRUKINT = 17073, + MODEL_TRUTH_BARN05 = 17074, + MODEL_CUNTWLAND01B = 17075, + MODEL_CUNT_ROCKGP2_26 = 17076, + MODEL_CUNTWLAND02B = 17077, + MODEL_CUNTWLAND03B = 17078, + MODEL_CUNTWLAND04B = 17079, + MODEL_CUNTWLAND05B = 17080, + MODEL_CUNTWLAND06B = 17081, + MODEL_CUNTWLAND07B = 17082, + MODEL_CUNTWLAND08B = 17083, + MODEL_CUNTWLAND09B = 17084, + MODEL_CUNTWLAND10BB = 17085, + MODEL_CUNTWLAND11B = 17086, + MODEL_CUNTWLAND12B = 17087, + MODEL_CUNTWLAND13B = 17088, + MODEL_CUNTWLAND15B = 17089, + MODEL_CUNTWLAND16B = 17090, + MODEL_CUNTWLAND17_DE = 17091, + MODEL_CUNTWLAND_DE = 17092, + MODEL_CUNTWLAND19B = 17093, + MODEL_CUNTWLAND20B = 17094, + MODEL_CUNTWLAND21B = 17095, + MODEL_CUNTWLAND22B = 17096, + MODEL_CUNTWLAND23B = 17097, + MODEL_CUNTWLAND24B = 17098, + MODEL_CUNTWLAND25B = 17099, + MODEL_CUNTWLAND26B = 17100, + MODEL_CUNTWLAND29B = 17101, + MODEL_CUNTWLAND31B = 17102, + MODEL_CUNTWLAND32B = 17103, + MODEL_CUNTWLAND33B = 17104, + MODEL_CUNTWLAND34B = 17105, + MODEL_CUNTWLAND35B = 17106, + MODEL_CUNTWLAND36B = 17107, + MODEL_CUNTWLAND37B = 17108, + MODEL_CUNTWLAND38B = 17109, + MODEL_CUNTWLAND39B = 17110, + MODEL_CUNTWLAND40B = 17111, + MODEL_CUNTWLAND41B = 17112, + MODEL_CUNTWLAND42B = 17113, + MODEL_CUNTWLAND45B = 17114, + MODEL_CUNTWLAND46B = 17115, + MODEL_CUNTWLAND47B = 17116, + MODEL_CUNTWLAND48B = 17117, + MODEL_CUNTWLAND50B = 17118, + MODEL_CUNTWLAND52B = 17119, + MODEL_CUNTWLAND53B = 17120, + MODEL_CUNTWLAND54B = 17121, + MODEL_CUNTWLAND55B = 17122, + MODEL_CUNTWLAND56BX = 17123, + MODEL_CUNTWLAND58B = 17124, + MODEL_CUNTWLAND59B = 17125, + MODEL_CUNTWLAND60B = 17126, + MODEL_CUNTWLAND62B = 17127, + MODEL_CUNTWLAND63B = 17128, + MODEL_CUNTWLAND64B = 17129, + MODEL_CUNTWLAND65B = 17130, + MODEL_CUNTWLAND66B = 17131, + MODEL_CUNTWLAND67B = 17132, + MODEL_CUNTWLAND68B = 17133, + MODEL_CUNTWLAND69B = 17134, + MODEL_CUNTWLAND70B = 17135, + MODEL_CUNTWLAND71B = 17136, + MODEL_CUNTWLAND72B = 17137, + MODEL_CUNTWLAND73B = 17138, + MODEL_CUNTWLAND74B = 17139, + MODEL_CUNTWLAND75B = 17140, + MODEL_CUNTWLAND76B = 17141, + MODEL_CUNTWLAND77B = 17142, + MODEL_CUNTWLAND78B = 17143, + MODEL_CUNTWLAND79B = 17144, + MODEL_CUNTWLAND80B = 17145, + MODEL_CUNTWROAD37 = 17146, + MODEL_LODCUNTWROAD04 = 17147, + MODEL_CUNTWROAD02 = 17148, + MODEL_LODCUNTWROAD03 = 17149, + MODEL_CUNTWROAD03 = 17150, + MODEL_LODCUNTWROAD02 = 17151, + MODEL_CUNTWROAD04 = 17152, + MODEL_LODCUNTWROAD01 = 17153, + MODEL_CUNTWROAD72 = 17154, + MODEL_LODCUNTWROAD05 = 17155, + MODEL_CUNTWROAD06 = 17156, + MODEL_LODCUNTWROAD06 = 17157, + MODEL_CUNTWROAD07 = 17158, + MODEL_LODCUNTWROAD07 = 17159, + MODEL_CUNTWROAD08 = 17160, + MODEL_LODCUNTWROAD11 = 17161, + MODEL_CUNTWROAD09 = 17162, + MODEL_LODCUNTWROAD12 = 17163, + MODEL_CUNTWROAD10 = 17164, + MODEL_LODCUNTWROAD36 = 17165, + MODEL_CUNTWROAD11 = 17166, + MODEL_LODCUNTWROAD72 = 17167, + MODEL_CUNTWROAD12 = 17168, + MODEL_LODCUNTWROAD73 = 17169, + MODEL_CUNTWROAD13 = 17170, + MODEL_LODCUNTWROAD74 = 17171, + MODEL_CUNTWROAD14 = 17172, + MODEL_LODCUNTWROAD75 = 17173, + MODEL_CUNTWROAD15 = 17174, + MODEL_LODCUNTWROAD76 = 17175, + MODEL_CUNTWROAD16 = 17176, + MODEL_LODCUNTWROAD09 = 17177, + MODEL_CUNTWROAD17 = 17178, + MODEL_LODCUNTWROAD08 = 17179, + MODEL_CUNTWROAD18 = 17180, + MODEL_LODCUNTWROAD10 = 17181, + MODEL_CUNTWROAD19 = 17182, + MODEL_LODCUNTWROAD13 = 17183, + MODEL_CUNTWROAD20 = 17184, + MODEL_LODCUNTWROAD14 = 17185, + MODEL_CUNTWROAD21 = 17186, + MODEL_LODCUNTWROAD15 = 17187, + MODEL_CUNTWROAD24 = 17188, + MODEL_LODCUNTWROAD22 = 17189, + MODEL_CUNTWROAD25 = 17190, + MODEL_LODCUNTWROAD64 = 17191, + MODEL_CUNTWROAD26 = 17192, + MODEL_LODCUNTWROAD65 = 17193, + MODEL_CUNTWROAD27 = 17194, + MODEL_LODCUNTWROAD66 = 17195, + MODEL_CUNTWROAD28 = 17196, + MODEL_LODCUNTWROAD67 = 17197, + MODEL_CUNTWROAD29 = 17198, + MODEL_LODCUNTWROAD68 = 17199, + MODEL_CUNTWROAD30 = 17200, + MODEL_LODCUNTWROAD69 = 17201, + MODEL_CUNTWROAD31 = 17202, + MODEL_LODCUNTWROAD70 = 17203, + MODEL_CUNTWROAD32 = 17204, + MODEL_LODCUNTWROAD71 = 17205, + MODEL_LODCUNTWROAD54 = 17206, + MODEL_LODCUNTWROAD53 = 17207, + MODEL_CUNTWROAD74 = 17208, + MODEL_LODCUNTWROAD52 = 17209, + MODEL_CUNTWROAD73 = 17210, + MODEL_LODCUNTWROAD51 = 17211, + MODEL_CUNTWROAD34 = 17212, + MODEL_LODCUNTWROAD49 = 17213, + MODEL_CUNTWROAD35 = 17214, + MODEL_LODCUNTWROAD44 = 17215, + MODEL_CUNTWROAD36 = 17216, + MODEL_LODCUNTWROAD43 = 17217, + MODEL_CUNTWROAD01 = 17218, + MODEL_LODCUNTWROAD42 = 17219, + MODEL_CUNTWROAD38 = 17220, + MODEL_LODCUNTWROAD45 = 17221, + MODEL_CUNTWROAD05 = 17222, + MODEL_LODCUNTWROAD46 = 17223, + MODEL_CUNTWROAD40 = 17224, + MODEL_LODCUNTWROAD47 = 17225, + MODEL_CUNTWROAD41 = 17226, + MODEL_LODCUNTWROAD48 = 17227, + MODEL_CUNTWROAD42 = 17228, + MODEL_LODCUNTWROAD50 = 17229, + MODEL_CUNTWROAD43 = 17230, + MODEL_LODCUNTWROAD55 = 17231, + MODEL_CUNTWROAD44 = 17232, + MODEL_LODCUNTWROAD56 = 17233, + MODEL_CUNTWROAD45 = 17234, + MODEL_LODCUNTWROAD57 = 17235, + MODEL_CUNTWROAD46 = 17236, + MODEL_LODCUNTWROAD58 = 17237, + MODEL_CUNTWROAD47 = 17238, + MODEL_LODCUNTWROAD59 = 17239, + MODEL_CUNTWROAD48 = 17240, + MODEL_LODCUNTWROAD60 = 17241, + MODEL_CUNTWROAD49 = 17242, + MODEL_LODCUNTWROAD61 = 17243, + MODEL_CUNTWROAD50 = 17244, + MODEL_LODCUNTWROAD62 = 17245, + MODEL_CUNTWROAD51 = 17246, + MODEL_LODCUNTWROAD63 = 17247, + MODEL_CUNTWROAD52 = 17248, + MODEL_LODCUNTWROAD26 = 17249, + MODEL_CUNTWROAD33 = 17250, + MODEL_LODCUNTWROAD24 = 17251, + MODEL_CUNTWROAD54 = 17252, + MODEL_LODCUNTWROAD23 = 17253, + MODEL_CUNTWROAD55 = 17254, + MODEL_LODCUNTWROAD20 = 17255, + MODEL_CUNTWROAD39 = 17256, + MODEL_LODCUNTWROAD21 = 17257, + MODEL_CUNTWROAD57 = 17258, + MODEL_LODCUNTWROAD25 = 17259, + MODEL_CUNTWROAD58 = 17260, + MODEL_LODCUNTWROAD27 = 17261, + MODEL_CUNTWROAD59 = 17262, + MODEL_LODCUNTWROAD28 = 17263, + MODEL_LODCUNTWROAD29 = 17264, + MODEL_LODCUNTWROAD33 = 17265, + MODEL_LODCUNTWROAD34 = 17266, + MODEL_CUNTWROAD66 = 17267, + MODEL_LODCUNTWROAD35 = 17268, + MODEL_CUNTWROAD67 = 17269, + MODEL_LODCUNTWROAD37 = 17270, + MODEL_CUNTWROAD63 = 17271, + MODEL_LODCUNTWROAD38 = 17272, + MODEL_CUNTWROAD65 = 17273, + MODEL_LODCUNTWROAD39 = 17274, + MODEL_CUNTWROAD69 = 17275, + MODEL_LODCUNTWROAD40 = 17276, + MODEL_CUNTWROAD70 = 17277, + MODEL_LODCUNTWROAD41 = 17278, + MODEL_CUNTWROAD68 = 17279, + MODEL_LODCUNTWROAD17 = 17280, + MODEL_CUNTWROAD71 = 17281, + MODEL_LODCUNTWROAD16 = 17282, + MODEL_CUNTWRAIL12 = 17283, + MODEL_CUNTWRAIL11 = 17284, + MODEL_CUNTWRAIL10 = 17285, + MODEL_CUNTWRAIL09 = 17286, + MODEL_CUNTWRAIL08 = 17287, + MODEL_CUNTWRAIL07 = 17288, + MODEL_CUNTWRAIL01 = 17289, + MODEL_CUNTWRAIL02 = 17290, + MODEL_CUNTWRAIL03 = 17291, + MODEL_CUNTWRAIL04 = 17292, + MODEL_BWIDGECUNTW = 17293, + MODEL_CUNTWLAND53BD = 17294, + MODEL_CUNTWLAND53BC = 17295, + MODEL_CUNTWRAIL04V = 17296, + MODEL_CUNTWRAIL04C = 17297, + MODEL_SJMOLDBARN03 = 17298, + MODEL_CUNT_ROCKGP2_27 = 17299, + MODEL_CUNTYTUNNEL2 = 17300, + MODEL_CUNTWLAND49B = 17301, + MODEL_CUNTWLAND51B = 17302, + MODEL_CUNTWROAD22 = 17303, + MODEL_LODCUNTWROAD18 = 17304, + MODEL_CUNTWROAD23 = 17305, + MODEL_LODCUNTWROAD19 = 17306, + MODEL_CUNTWLAND40C = 17307, + MODEL_CUNTWLAND02C = 17308, + MODEL_CONCRETEARCH02 = 17309, + MODEL_CONCRETEARCH03 = 17310, + MODEL_LODCUNTRAIL12 = 17311, + MODEL_LODCUNTRAIL01 = 17312, + MODEL_LODCUNTRAIL02 = 17313, + MODEL_LODCUNTRAIL05 = 17314, + MODEL_LODCUNTRAIL09 = 17315, + MODEL_LODCUNTRAIL11 = 17316, + MODEL_LODCUNTRAIL03 = 17317, + MODEL_LODCUNTRAIL06 = 17318, + MODEL_LODCUNTRAIL10 = 17319, + MODEL_LODCUNTRAIL07 = 17320, + MODEL_LODCUNTRAIL08 = 17321, + MODEL_LODCUNTRAIL04 = 17322, + MODEL_CUNTWMOTSIGNCJ = 17323, + MODEL_CW_COMBBARN = 17324, + MODEL_LOD_COMBBARN = 17325, + MODEL_CUNTWROAD60 = 17326, + MODEL_CUNTWROAD61 = 17327, + MODEL_LODCUNTWROAD31 = 17328, + MODEL_CUNTWROAD62 = 17329, + MODEL_LODCUNTWROAD30 = 17330, + MODEL_CUNTWROAD53 = 17331, + MODEL_LODCUNTWROAD32 = 17332, + MODEL_CUNTWROAD64 = 17333, + MODEL_CUNTWROAD56 = 17334, + MODEL_FARMHOUSE02 = 17335, + MODEL_LODCUNTYTUNL = 17336, + MODEL_LODTWCRIDGE = 17337, + MODEL_LODTYTUNNEL = 17338, + MODEL_LODTWPLANT01 = 17339, + MODEL_LODTPLANT06 = 17340, + MODEL_LODDYCUNT = 17341, + MODEL_LODTPLANT07 = 17342, + MODEL_LODBIGCHIMNEY = 17343, + MODEL_LODBIGCHIMNEY01 = 17344, + MODEL_LODBIGCHIMNEY02 = 17345, + MODEL_LODBIGCHIMNEY03 = 17346, + MODEL_LODYELLCUNTCHIM = 17347, + MODEL_LODYELLCUNTCHIM01 = 17348, + MODEL_LODFACTCUNT = 17349, + MODEL_LODSMLTRUKEXT = 17350, + MODEL_LODFARMHOOS = 17351, + MODEL_LODCW_BIGBARN02 = 17352, + MODEL_LODCWBARNIE = 17353, + MODEL_LODCW_BIGBARN03 = 17354, + MODEL_LODCW_BIGBARN04 = 17355, + MODEL_LODCWBARNIE01 = 17356, + MODEL_LOD_PCH_BRIG_02 = 17357, + MODEL_LODCUNTW01 = 17358, + MODEL_LODCUNTW02 = 17359, + MODEL_LODCUNTW03 = 17360, + MODEL_LODCUNTW04 = 17361, + MODEL_LODCUNTW05 = 17362, + MODEL_LODCUNTW06 = 17363, + MODEL_LODCUNTW07 = 17364, + MODEL_LODCUNTW08 = 17365, + MODEL_LODCUNTW09 = 17366, + MODEL_LODCUNTW10 = 17367, + MODEL_LODCUNTW11 = 17368, + MODEL_LODCUNTW12 = 17369, + MODEL_LODCUNTW13 = 17370, + MODEL_LODCUNTW14 = 17371, + MODEL_LODCUNTW15 = 17372, + MODEL_LODCUNTW16 = 17373, + MODEL_LODCUNTW17 = 17374, + MODEL_LODCUNTW18 = 17375, + MODEL_LODCUNTW19 = 17376, + MODEL_LODCUNTW21 = 17377, + MODEL_LODCUNTW22 = 17378, + MODEL_LODCUNTW23 = 17379, + MODEL_LODCUNTW24 = 17380, + MODEL_LODCUNTW25 = 17381, + MODEL_LODCUNTW26 = 17382, + MODEL_LODCUNTW27 = 17383, + MODEL_LODCUNTW28 = 17384, + MODEL_LODCUNTW29 = 17385, + MODEL_LODCUNTW30 = 17386, + MODEL_LODCUNTW31 = 17387, + MODEL_LODCUNTW32 = 17388, + MODEL_LODCUNTW33 = 17389, + MODEL_LODCUNTW35 = 17390, + MODEL_LODCUNTW36 = 17391, + MODEL_LODCUNTW37 = 17392, + MODEL_LODCUNTW38 = 17393, + MODEL_LODCUNTW39 = 17394, + MODEL_LODCUNTW40 = 17395, + MODEL_LODCUNTW41 = 17396, + MODEL_LODCUNTW42 = 17397, + MODEL_LODCUNTW43 = 17398, + MODEL_LODCUNTW44 = 17399, + MODEL_LODCUNTW45 = 17400, + MODEL_LODCUNTW46 = 17401, + MODEL_LODCUNTW47 = 17402, + MODEL_LODCUNTW48 = 17403, + MODEL_LODCUNTW49 = 17404, + MODEL_LODCUNTW50 = 17405, + MODEL_LODCUNTW51 = 17406, + MODEL_LODCUNTW52 = 17407, + MODEL_LODCUNTW53 = 17408, + MODEL_LODCUNTW54 = 17409, + MODEL_LODCUNTW55 = 17410, + MODEL_LODCUNTW56 = 17411, + MODEL_LODCUNTW57 = 17412, + MODEL_LODCUNTW58 = 17413, + MODEL_LODCUNTW60 = 17414, + MODEL_LODCUNTW61 = 17415, + MODEL_LODCUNTW62 = 17416, + MODEL_LODCUNTW63 = 17417, + MODEL_LODCUNTW64 = 17418, + MODEL_LODCUNTW65 = 17419, + MODEL_LODCUNTW66 = 17420, + MODEL_LODCUNTW67 = 17421, + MODEL_LODCUNTW68 = 17422, + MODEL_LODCUNTW69 = 17423, + MODEL_LODCUNTW70 = 17424, + MODEL_LODCUNTW71 = 17425, + MODEL_CUNTWWIRESX = 17426, + MODEL_CUNTWWIRESXX = 17427, + MODEL_CUNTWWIRESXXX = 17428, + MODEL_TELEWIRESCUNTW01 = 17429, + MODEL_TELEWIRESCUNTW02 = 17430, + MODEL_TELEWIRESCUNTW03 = 17431, + MODEL_TELEWIRESCUNTW04 = 17432, + MODEL_CUNTWWIRESXX01 = 17433, + MODEL_CUNTWWIRESXZ = 17434, + MODEL_LODNTWLAND39B = 17435, + MODEL_XOVERLAYMAP01 = 17436, + MODEL_XOVERLAYMAP02 = 17437, + MODEL_XOVERLAYMAP03 = 17438, + MODEL_XOVERLAYMAP04 = 17439, + MODEL_XOVERLAYMAP05 = 17440, + MODEL_XOVERLAYMAP06 = 17441, + MODEL_XOVERLAYMAP13 = 17442, + MODEL_XOVERLAYMAP08 = 17443, + MODEL_XOVERLAY_ROCK = 17444, + MODEL_LODW_STWNYLES = 17445, + MODEL_LODW_STWNYLES01 = 17446, + MODEL_LODW_STWNYLES02 = 17447, + MODEL_XOVERLAYMAP09 = 17448, + MODEL_LODT_ROCKGP2_28 = 17449, + MODEL_XOVERLAYMAP10 = 17450, + MODEL_XOVERLAYMAP07 = 17451, + MODEL_XOVERLAYMAP07B = 17452, + MODEL_BROWNWATER = 17453, + MODEL_CUNTGRSILOSRAIL = 17454, + MODEL_DIRTOVER = 17455, + MODEL_ROCKOVERGAY = 17456, + MODEL_SJMOLDBARN04 = 17457, + MODEL_XXXXXXTRA = 17458, + MODEL_XXXTRA2 = 17459, + MODEL_XXXOVER = 17460, + MODEL_XXXE = 17461, + MODEL_XXXXXXXXA = 17462, + MODEL_XXXC01 = 17463, + MODEL_XXXD = 17464, + MODEL_XXXZC = 17465, + MODEL_XXXZA = 17466, + MODEL_XXOVR2 = 17467, + MODEL_XXCLIFFX = 17468, + MODEL_XOVERELAYA = 17469, + MODEL_XOVERLAYDRT = 17470, + MODEL_CUNTYBITX = 17471, + MODEL_CUNT_ROCGXP2_04 = 17472, + MODEL_LODCUNTW20 = 17473, + MODEL_CUNTWLAND17_DE_A = 17474, + MODEL_STORMDRAINLAE2_05 = 17500, + MODEL_RIVERBRIDGE1_LAE = 17501, + MODEL_RIVERBRIDGE2_LAE = 17502, + MODEL_FURNITURE_LAE = 17503, + MODEL_FURNITTRANS1_LAE = 17504, + MODEL_LAE2_GROUND02 = 17505, + MODEL_STORMDRAINLAE2_06 = 17506, + MODEL_STORMDRAINLAE2_03 = 17507, + MODEL_BLOCKK_LAE2 = 17508, + MODEL_LAE2_GROUND03 = 17509, + MODEL_BARRIOTRANS01_LAE = 17510, + MODEL_GWFORUM1_LAE = 17511, + MODEL_LODGWFORUM1_LAE = 17512, + MODEL_LAE2_GROUND04 = 17513, + MODEL_STARTHOOTRA1_LAE = 17514, + MODEL_SCUMGYM1_LAE = 17515, + MODEL_BLOCKITRANS_LAE = 17516, + MODEL_BARBERBLOCK1_LAE = 17517, + MODEL_TELWIRE_01_LAE2 = 17518, + MODEL_MARKET2_LAE = 17519, + MODEL_MARKET1_LAE = 17520, + MODEL_PAWNSHP_LAE2 = 17521, + MODEL_GANGSHOP7_LAE2 = 17522, + MODEL_STRIPBAR_LAE = 17523, + MODEL_LONGBEBLOK1_LAE = 17524, + MODEL_RIVERBRIDGE3_LAE2 = 17525, + MODEL_GANGSHOPS1_LAE = 17526, + MODEL_GANGBLOCK1TR_LAE = 17527, + MODEL_BARRIOTRANS01_LAE01 = 17528, + MODEL_GANGSHOPS2_LAE2 = 17529, + MODEL_PIGPENBLOK1TR_LAE = 17530, + MODEL_BARRIO03A_LAE = 17531, + MODEL_BARRIO06TRANS_LAE = 17532, + MODEL_TEMPLB1_LAE2 = 17533, + MODEL_CLUCKINBELL1_LAE = 17534, + MODEL_FURNSIGN1_LAE2 = 17535, + MODEL_DAMBUILD1_LAE2 = 17536, + MODEL_CINEBLOCK1_LAE2 = 17537, + MODEL_POWERSTAT1_LAE2 = 17538, + MODEL_RDSIGNS4_LAE03 = 17539, + MODEL_RDSIGNS4_LAE05 = 17540, + MODEL_LBEACHBLOK1Z_LAE2 = 17541, + MODEL_GANGSHOPS6_LAE2 = 17542, + MODEL_GANGSHOPS5_LAE2 = 17543, + MODEL_GANGSHOPS4_LAE2 = 17544, + MODEL_BARRIO02_LAE = 17545, + MODEL_HYDRO3_LAE = 17546, + MODEL_EBEACHAP1_LAE2 = 17547, + MODEL_LAE2_GROUND05 = 17548, + MODEL_BEACHBLOK01_LAE2 = 17549, + MODEL_EASBEBRIJ1_LAE2 = 17550, + MODEL_BEACHBLOK02_LAE2 = 17551, + MODEL_BURNHOUS1_LAE2 = 17552, + MODEL_BEACHBLOK3_LAE2 = 17553, + MODEL_BEACHBLOK5_LAE2 = 17554, + MODEL_BEACHBLOK7_LAE2 = 17555, + MODEL_MSTORCP1_LAE2 = 17556, + MODEL_MSTORCP2_LAE2 = 17557, + MODEL_MSTORCP4_LAE2 = 17558, + MODEL_MSTORCP6_LAE2 = 17559, + MODEL_EBEACHAP3_LAE2 = 17560, + MODEL_MSCPTUNN2_LAE2 = 17561, + MODEL_LONGBEBLOKX_LAE = 17562, + MODEL_WATTSPARK1_LAE2 = 17563, + MODEL_TEMPDOOR_LAE2 = 17564, + MODEL_RUSTYBRIJ01_LAE2 = 17565, + MODEL_SWEETSDOOR_LAE2 = 17566, + MODEL_STORMDRAINLAE2_07 = 17567, + MODEL_STORMDRAINLAE2_04 = 17568, + MODEL_LODRDRAI2A_LAE2 = 17569, + MODEL_LODRDRAI2B_LAE2 = 17570, + MODEL_LODRDRAI3A_LAE2 = 17571, + MODEL_LODRDRAI3B_LAE2 = 17572, + MODEL_RYDHOU01_LAE2 = 17573, + MODEL_RYDBKYAR1_LAE2 = 17574, + MODEL_BURGHO01_LAE2 = 17575, + MODEL_HUBBRIDGE1_LAE2 = 17576, + MODEL_LIQUORSTORE01_LAE2 = 17577, + MODEL_LIQUORSTORE02_LAE2 = 17578, + MODEL_LIQUORSTORE03_LAE2 = 17579, + MODEL_LOD_EBEACHAPTS3 = 17580, + MODEL_LODPWNSHP_LAE2 = 17581, + MODEL_STADTPLAZA_LAE2 = 17582, + MODEL_STADT_FENCE = 17583, + MODEL_LODBEACHBLOK3_LAE = 17584, + MODEL_LAE2TRANSBIT = 17585, + MODEL_EBEACH_ALPHABITS = 17586, + MODEL_LODEBECHA1_LAE = 17587, + MODEL_EBEACH_ALPAHBITS2 = 17588, + MODEL_EBEACHPARK = 17589, + MODEL_LODEBEACHPARK = 17590, + MODEL_EBEACHALPHA5 = 17591, + MODEL_EBEACH_VEG = 17592, + MODEL_LODBURNHOUS1_LAE = 17593, + MODEL_LAE2_GROUND06 = 17594, + MODEL_LAE2_ROADS01 = 17595, + MODEL_LAE2_ROADS02 = 17596, + MODEL_LAE2_ROADS03 = 17597, + MODEL_LAE2_ROADS04 = 17598, + MODEL_LAE2_ROADS85 = 17599, + MODEL_LAE2_ROADS05 = 17600, + MODEL_LAE2_GROUND07 = 17601, + MODEL_LAE2_ROADS07 = 17602, + MODEL_LAE2_ROADS08 = 17603, + MODEL_LAE2_ROADS09 = 17604, + MODEL_LAE2_ROADS10 = 17605, + MODEL_LAE2_ROADSCOAST04 = 17606, + MODEL_LAE2_ROADS12 = 17607, + MODEL_LAE2_ROADS13 = 17608, + MODEL_LAE2_ROADS14 = 17609, + MODEL_LAE2_ROADS15 = 17610, + MODEL_LAE2_ROADS16 = 17611, + MODEL_LAE2_ROADS88 = 17612, + MODEL_LAE2_ROADS89 = 17613, + MODEL_LAE2_LANDHUB02 = 17614, + MODEL_LAE2_LANDHUB03 = 17615, + MODEL_LAE2_LANDHUB04 = 17616, + MODEL_LAE2_LANDHUB05 = 17617, + MODEL_LAE2_LANDHUB06 = 17618, + MODEL_LAE2_LANDHUB07 = 17619, + MODEL_LAE2_LANDHUB01 = 17620, + MODEL_LAE2_ROADS17 = 17621, + MODEL_LAE2_ROADS18 = 17622, + MODEL_LAE2_ROADS19 = 17623, + MODEL_LAE2_ROADS20 = 17624, + MODEL_LAE2_ROADS21 = 17625, + MODEL_LAE2_ROADS22 = 17626, + MODEL_LAE2_ROADS23 = 17627, + MODEL_LAE2_ROADS24 = 17628, + MODEL_LAE2_ROADS25 = 17629, + MODEL_LAE2_ROADS26 = 17630, + MODEL_LAE2_ROADS27 = 17631, + MODEL_LAE2_ROADS28 = 17632, + MODEL_LAE2_GROUND08 = 17633, + MODEL_LAE2_GROUND09 = 17634, + MODEL_LAE2_GROUND10 = 17635, + MODEL_LAE2_GROUND11 = 17636, + MODEL_LAE2_ROADS29 = 17637, + MODEL_LAE2_ROADS30 = 17638, + MODEL_LAE2_ROADS31 = 17639, + MODEL_LAE2_ROADS32 = 17640, + MODEL_LAE2_ROADS33 = 17641, + MODEL_LAE2_ROADS90 = 17642, + MODEL_LAE2_ROADS34 = 17643, + MODEL_LAE2_ROADS35 = 17644, + MODEL_LAE2_GROUND12 = 17645, + MODEL_LAE2_ROADS36 = 17646, + MODEL_LAE2_ROADS37 = 17647, + MODEL_LAE2_ROADS38 = 17648, + MODEL_LAE2_ROADS39 = 17649, + MODEL_LAE2_ROADS40 = 17650, + MODEL_LAE2_ROADS41 = 17651, + MODEL_LAE2_ROADS42 = 17652, + MODEL_LAE2_ROADS43 = 17653, + MODEL_LAE2_ROADS44 = 17654, + MODEL_LAE2_ROADS46 = 17655, + MODEL_LAE2_ROADS50 = 17656, + MODEL_LAE2_ROADS52 = 17657, + MODEL_LAE2_ROADS53 = 17658, + MODEL_LAE2_ROADS54 = 17659, + MODEL_LAE2_ROADS55 = 17660, + MODEL_LAE2_ROADS56 = 17661, + MODEL_LAE2_ROADS57 = 17662, + MODEL_LAE2_ROADS58 = 17663, + MODEL_LAE2_GROUND13 = 17664, + MODEL_LAE2_GROUND14 = 17665, + MODEL_LAE2_ROADS86 = 17666, + MODEL_LAE2_ROADS59 = 17667, + MODEL_LAE2_ROADS64 = 17668, + MODEL_LAE2_ROADS65 = 17669, + MODEL_LAE2_ROADS66 = 17670, + MODEL_LAE2_ROADS67 = 17671, + MODEL_LAE2_ROADS68 = 17672, + MODEL_LAE2_ROADSCOAST06 = 17673, + MODEL_LAE2_ROADSCOAST05 = 17674, + MODEL_LAE2_ROADSCOAST03 = 17675, + MODEL_LAE2_ROADSCOAST01 = 17676, + MODEL_LAE2_GROUND15 = 17677, + MODEL_GRND05_LAE2 = 17678, + MODEL_LAE2_BIGBLOCK = 17679, + MODEL_LAE2_ROADS76 = 17680, + MODEL_LAE2_ROADS77 = 17681, + MODEL_LAE2_ROADS78 = 17682, + MODEL_LAE2_ROADS79 = 17683, + MODEL_LAE2_ROADS80 = 17684, + MODEL_LAE2_GROUND16 = 17685, + MODEL_STORMDRAINLAE2_01 = 17686, + MODEL_LAE2_ROADS81 = 17687, + MODEL_STORMDRAINLAE2_02 = 17688, + MODEL_BRGLAE2 = 17689, + MODEL_LAE2_BLOCKN = 17690, + MODEL_LAE2_GROUND17 = 17691, + MODEL_LAE2_ROADS83 = 17692, + MODEL_LAE2_ROADS84 = 17693, + MODEL_LAE2_GROUND17B = 17694, + MODEL_BRG_LAE2 = 17695, + MODEL_LAE2_GROUND18 = 17696, + MODEL_CARLSHOU1_LAE2 = 17697, + MODEL_SWEETSHOU1_LAE2 = 17698, + MODEL_MCSTRAPS_LAE2 = 17699, + MODEL_PIGPENBLOK1_LAE2 = 17700, + MODEL_LODLAE2_ROA = 17701, + MODEL_LODLAE2_ROADS31 = 17702, + MODEL_LODLAE2_ROADS84 = 17703, + MODEL_LOD1ROADS08_LAE01 = 17704, + MODEL_LODLAE2_ROADS30 = 17705, + MODEL_LODLAE2_ROADS46 = 17706, + MODEL_LODGRND05_LAE2 = 17707, + MODEL_LODLAE2_ROADS18 = 17708, + MODEL_LODSTRMDRANLAE2 = 17709, + MODEL_LODLAE2_GROUND18 = 17710, + MODEL_LOD1ROADS07_LAE01 = 17711, + MODEL_LODLAE2_GROUND07 = 17712, + MODEL_LODLAE2_ROADS16 = 17713, + MODEL_LODLAE2_ROADS15 = 17714, + MODEL_LODLAE2_ROADS01 = 17715, + MODEL_LOD1ROADS32_LAE01 = 17716, + MODEL_LOD1ROADS31_LAE01 = 17717, + MODEL_LOD1BEACH01_LAE01 = 17718, + MODEL_LODLAE2_ROADS10 = 17719, + MODEL_LODLAE2_ROADS79 = 17720, + MODEL_LODLAE2_ROADS80 = 17721, + MODEL_LODLAE2_GROUND11 = 17722, + MODEL_LODLAE2_GROUND08 = 17723, + MODEL_LOD1GANGSHOPS1_LAE = 17724, + MODEL_LOD1PGPNBLK1LAE = 17725, + MODEL_LOD1BARRIO04_LAE01 = 17726, + MODEL_LOD1BEACH02_LAE01 = 17727, + MODEL_LOD1BARRIO03_LAE01 = 17728, + MODEL_LODAE2_BIGBLOCK = 17729, + MODEL_LOD1LONGBBK1_LAE = 17730, + MODEL_LOD1BARRIO06_LAE = 17731, + MODEL_LOD1HYDRO3_LAE = 17732, + MODEL_LOD1WATTSPARK1_LAE = 17733, + MODEL_LOD1BBALLBLOK1_LAE = 17734, + MODEL_LOD1FURNITURE_LAE = 17735, + MODEL_LOD1GANGSHOP7_LAE = 17736, + MODEL_LOD1BLOCKK_LAE = 17737, + MODEL_LOD1CINEBLOCK1_LAE = 17738, + MODEL_LOD1STORMDRAI5_LAE = 17739, + MODEL_LOD1BEACHBLOK7_LAE = 17740, + MODEL_LODLAE2_GROUND17 = 17741, + MODEL_LODLAE2_GROUND16 = 17742, + MODEL_LODLAE2_ROADS55 = 17743, + MODEL_LODLANDHUB07 = 17744, + MODEL_LODSTADTPLAZA_LAE2 = 17745, + MODEL_LOD1EBECHA2LAE = 17746, + MODEL_LOD1BCHBLOK5_LAE = 17747, + MODEL_LOD1MSCPTN2_LAE = 17748, + MODEL_LOD1MSTORCP_LAE = 17749, + MODEL_LOD1LBCHBKZ_LAE = 17750, + MODEL_LOD1BCHBLK02_LAE = 17751, + MODEL_LOD1BCHBLK01_LAE = 17752, + MODEL_LOD1SRTHOOD_LAE = 17753, + MODEL_LOD1CLUKINBEL_LAE = 17754, + MODEL_LOD1LNDPRT1_LAE = 17755, + MODEL_LOD1MRKT1_LAE = 17756, + MODEL_LOD1MARKT2_LAE = 17757, + MODEL_LOD1SCMGYM1_LAE = 17758, + MODEL_LODLAE2_GROUND06 = 17759, + MODEL_LOD1BARBBLK1_LAE = 17760, + MODEL_LODLIQORSTR1_LAE = 17761, + MODEL_LOD1HUBRIDGE1_LAE = 17762, + MODEL_LOD1DAMBLD1_LAE = 17763, + MODEL_LODRVRBRDGE1_LAE = 17764, + MODEL_LOD1STRPBAR_LAE = 17765, + MODEL_LOD1GAGSHPS2_LAE = 17766, + MODEL_LOD1BARIO3A_LAE = 17767, + MODEL_LOD1CARLSHOU1_LAE = 17768, + MODEL_LOD1RYDKYR1_LAE = 17769, + MODEL_LODMCSTRAPS_LAE2 = 17770, + MODEL_LOD1SWETHO1_LAE = 17771, + MODEL_LOD1EBBRIJ1_LAE = 17772, + MODEL_LODLAE2_GROUND02 = 17773, + MODEL_LODLAE2_ROADS28 = 17774, + MODEL_LODLAE2_ROADS22 = 17775, + MODEL_LODLAE2_ROADS23 = 17776, + MODEL_LODLAE2_ROADS25 = 17777, + MODEL_LODLAE2_ROADS26 = 17778, + MODEL_LODLAE2_ROADS24 = 17779, + MODEL_LODLAE2_ROADS37 = 17780, + MODEL_LODLAE2_ROADS90 = 17781, + MODEL_LODLAE2_GRND09 = 17782, + MODEL_LODLAE2_GRND10 = 17783, + MODEL_LODLAE2_ROADS83 = 17784, + MODEL_LODLAE2_ROADS11 = 17785, + MODEL_LODLAE2_ROADS66 = 17786, + MODEL_LODLAE2_RDSCOST06 = 17787, + MODEL_LODLAE2_ROADS67 = 17788, + MODEL_LODLAE2_ROADS68 = 17789, + MODEL_LODLAE2_ROADS34 = 17790, + MODEL_LODLAE2_ROADS38 = 17791, + MODEL_LODLAE2_ROADS41 = 17792, + MODEL_LODLAE2_ROADS58 = 17793, + MODEL_LODLAE2_ROADS36 = 17794, + MODEL_LODLAE2_ROADS42 = 17795, + MODEL_LODLAE2_ROADS59 = 17796, + MODEL_LODLAE2_ROADS86 = 17797, + MODEL_LODLAE2_ROADS57 = 17798, + MODEL_LODLAE2_ROADS56 = 17799, + MODEL_LODLAE2_RDSCOST05 = 17800, + MODEL_LODLAE2_ROADS01B = 17801, + MODEL_LODLAE2_ROADS13 = 17802, + MODEL_LODLBEACHAPTS1_LAE = 17803, + MODEL_LBEACHAPTS1_LAE2 = 17804, + MODEL_BEACHAPARTAT_LAE2 = 17805, + MODEL_LOD1BCHAPTA4_LAE = 17806, + MODEL_BEACHAPARTA4_LAE2 = 17807, + MODEL_LOD1BCHAPA5_LAE = 17808, + MODEL_BEACHAPARTA5_LAE2 = 17809, + MODEL_LODLAE2_ROADS12 = 17810, + MODEL_LODLAE2_RDSCOST03 = 17811, + MODEL_LODLAE2_ROADS06 = 17812, + MODEL_LODLAE2_ROADS07 = 17813, + MODEL_LODLAE2_ROADS08 = 17814, + MODEL_LODLAE2_ROADS09 = 17815, + MODEL_LODLAE2_ROADS14 = 17816, + MODEL_LODLAE2_ROADS39 = 17817, + MODEL_LODLAE2_ROADS35 = 17818, + MODEL_LODLAE2_ROADS33 = 17819, + MODEL_LODLAE2_ROADS29 = 17820, + MODEL_LODLAE2_ROADS32 = 17821, + MODEL_LODLAE2_ROADS81 = 17822, + MODEL_LODLAE2_ROADS78 = 17823, + MODEL_LODLAE2_ROADS82 = 17824, + MODEL_LODLAE2_ROADS21 = 17825, + MODEL_LODLAE2_ROADS19 = 17826, + MODEL_LODLAE2_ROADS20 = 17827, + MODEL_LODLAE2_ROADS49 = 17828, + MODEL_LAE2_ROADS48 = 17829, + MODEL_LODLAE2_ROADS48 = 17830, + MODEL_LODLAE2_ROADS47 = 17831, + MODEL_LODLAE2_ROADS05 = 17832, + MODEL_LODLAE2_ROADS85 = 17833, + MODEL_LODLAE2_ROADS02 = 17834, + MODEL_LODLAE2_ROADS52 = 17835, + MODEL_LODLAE2_ROADS50 = 17836, + MODEL_LODLAE2_ROADS04 = 17837, + MODEL_LODLAE2_ROADS17 = 17838, + MODEL_LOD6GYMBLOK2 = 17839, + MODEL_LODBRG_LAE26 = 17840, + MODEL_GYMBLOK2_LAE2 = 17841, + MODEL_LODLAE2_LANDHUB01 = 17842, + MODEL_LODLAE2_LNDHUB02 = 17843, + MODEL_LODLAE2_LNDHUB04 = 17844, + MODEL_LODLAE2_LNDHUB05 = 17845, + MODEL_LODLAE2_LNDHUB06 = 17846, + MODEL_LODBRGLAE2 = 17847, + MODEL_PIGPEN_PROPS = 17848, + MODEL_LAE2_ROADS60 = 17849, + MODEL_LODLAE2_ROADS60 = 17850, + MODEL_CINEBLOK_ALPHA = 17851, + MODEL_AUTOSHPBLOK_LAE2 = 17852, + MODEL_CINE_MARK_LAE2 = 17853, + MODEL_CINMAMKR_ALPHA = 17854, + MODEL_LODAUTOSHPBLOK_LAE = 17855, + MODEL_LODCINE_MARK = 17856, + MODEL_LODRIVERBRIDGE2_LAE = 17857, + MODEL_LODLAE2_ROADS89 = 17858, + MODEL_CINEMARK2_LAE2 = 17859, + MODEL_AUTOSHP_ALPHA = 17860, + MODEL_LODCINEMARK2 = 17861, + MODEL_COMPOMARK_LAE2 = 17862, + MODEL_COMPMART_ALPHA = 17863, + MODEL_COMP_PUCHASE = 17864, + MODEL_COMP_GROUND = 17865, + MODEL_GRASS_BANK = 17866, + MODEL_LAE2_ROADS46B = 17867, + MODEL_LODCOMPOMARK = 17868, + MODEL_LODCOMP_GROUND = 17869, + MODEL_LODCOMP_PUCHASE = 17870, + MODEL_LODLAE2_GROUND03 = 17871, + MODEL_GRBANK_ALPHA = 17872, + MODEL_LOD_GRASSBANK = 17873, + MODEL_HUBST_ALPHA = 17874, + MODEL_HUBST2_ALPHA = 17875, + MODEL_HUBST3_ALPHA = 17876, + MODEL_LAE2_HUBGRASS = 17877, + MODEL_LAE2_HUBGRASS2 = 17878, + MODEL_HUBST4ALPHA = 17879, + MODEL_HUB_GRASS3 = 17880, + MODEL_HUB5_GRASS = 17881, + MODEL_LODLAE2_HUBGRASS = 17882, + MODEL_LODLAE2_HUBGRASS2 = 17883, + MODEL_LODBARRIO6B_LAE2 = 17884, + MODEL_LODRYDHOU_LAE2 = 17885, + MODEL_STDRAIN_ALPHA = 17886, + MODEL_STDRAIN_ALPHA2 = 17887, + MODEL_EBEACHAP2_LAE2 = 17888, + MODEL_LOD_CORNER = 17889, + MODEL_LODTEMPLB1_LAE = 17890, + MODEL_GROUND2_ALPHA = 17891, + MODEL_GRND02_LAE2 = 17892, + MODEL_SPLITAPTS01 = 17893, + MODEL_SPLITAPTS02 = 17894, + MODEL_LODSPLITAPTS = 17895, + MODEL_LODSPLITAPTS2 = 17896, + MODEL_CPARKSHIT_ALPHA = 17897, + MODEL_HUBBRDGE_ALPHAB = 17898, + MODEL_BLOCKN_ALPHA = 17899, + MODEL_LODLAE2_BLOCKN = 17900, + MODEL_COAST_APTS = 17901, + MODEL_COASTAPT_ALPHA = 17902, + MODEL_LODCOAST_APTS = 17903, + MODEL_BLOKZ_FIREESCAPE = 17904, + MODEL_BIGHILLALPHA = 17905, + MODEL_LAE2_GROUND15B = 17906, + MODEL_BIGHILLALPHA2 = 17907, + MODEL_LODLAE15_GROUND = 17908, + MODEL_LODLONGBEBLOKX_LAE = 17909, + MODEL_LODCONCBBLOK1_LAE = 17910, + MODEL_STDRAINALPHA3 = 17911, + MODEL_STDRAINALPHA3B = 17912, + MODEL_HUBBRDGE_ALPHA = 17913, + MODEL_LODSTORMDRAINLAE2 = 17914, + MODEL_LAE2BILLBRDS2 = 17915, + MODEL_LAE2BILLBRDS3 = 17916, + MODEL_LAE2BILLBRDS4 = 17917, + MODEL_LAE2BILLBRDS5 = 17918, + MODEL_LAE2BILLBRDS6 = 17919, + MODEL_LAE2_ROADS49 = 17920, + MODEL_LAE2_ROADS82 = 17921, + MODEL_COAST_APTS2 = 17922, + MODEL_LODCOAST_APTS2 = 17923, + MODEL_LODRIVERBRIDGE3 = 17924, + MODEL_CARLS_FAUX = 17925, + MODEL_SWEET_FAUX_ENT = 17926, + MODEL_LAE2_ROADS06 = 17927, + MODEL_BURNSFAKEINT = 17928, + MODEL_LOD1ROADS26_LAE01 = 17929, + MODEL_LODLAE2_ROADS53 = 17930, + MODEL_LODLAE2_ROADS76 = 17931, + MODEL_LOD1POWERSTAT1_LAE = 17932, + MODEL_CARTER_LIGHT15B = 17933, + MODEL_COOCHIEGHOUS = 17934, + MODEL_LODCOCHIEGHOS = 17935, + MODEL_RBRIDGE3_GIRDERS = 17936, + MODEL_STORMD_FILL = 17937, + MODEL_STORMD_FILLC = 17938, + MODEL_STORMD_FILLB = 17939, + MODEL_RBRIDG23_GIRDERS = 17940, + MODEL_STORMD_FILLD = 17941, + MODEL_STORMD_FILLE = 17942, + MODEL_EBEACHALPHA5B = 17943, + MODEL_LNGBEBLOK2_LAE = 17944, + MODEL_LODLNGBEBLOK2 = 17945, + MODEL_CARTER_GROUND = 17946, + MODEL_BURG_ALPHA = 17947, + MODEL_LODBURGHO_LAE = 17948, + MODEL_LODRSTYBRJ01_LAE = 17949, + MODEL_CJSAVEG = 17950, + MODEL_CJGARAGEDOOR = 17951, + MODEL_LODCJSAVEG = 17952, + MODEL_CONC_BBLOK = 17953, + MODEL_NITELITES_LAE2 = 17954, + MODEL_NITELITESB_LAE2 = 17955, + MODEL_NITELITESC_LAE2 = 17956, + MODEL_NITELITESD_LAE2 = 17957, + MODEL_BURINGD_ALPHA = 17958, + MODEL_LODLAE2_ROADS65 = 17959, + MODEL_LODLAE2_ROADS64 = 17960, + MODEL_LODLAE2_GROUND15B = 17961, + MODEL_LODLAE2_LNDHB05B = 17962, + MODEL_LODSRTHOODB_LAE = 17963, + MODEL_LODGANGSHPS1B = 17964, + MODEL_LODGANGSHPS1C = 17965, + MODEL_LODGANGSHPS1D = 17966, + MODEL_GANGSHPS1B_LOD = 17967, + MODEL_HUBRIDGE_SMASH = 17968, + MODEL_HUB_GRAFFITTI = 17969, + MODEL_LOD_BILLBRDS = 17970, + MODEL_HUB_GRND_ALPHA = 17971, + MODEL_GRND_ALPHA2 = 17972, + MODEL_GRND_ALPHA3 = 17973, + MODEL_GRND_ALPHA4 = 17974, + MODEL_GRND_ALPHA5 = 17976, + MODEL_GRND_ALPHA6 = 17978, + MODEL_AMMUNATIONWWWS01 = 18000, + MODEL_INT_BARBERA07 = 18001, + MODEL_INT_BARBERA02 = 18002, + MODEL_INT_BARBERA03 = 18003, + MODEL_INT_BARBERA05 = 18004, + MODEL_INT_BARBERA01 = 18005, + MODEL_INT_BARBERA08 = 18006, + MODEL_INT_BARBERA12 = 18007, + MODEL_INT_CLOTHINGA01 = 18008, + MODEL_INT_REST_MAIN = 18009, + MODEL_INT_3REST_LIGHTS = 18010, + MODEL_INT_REST_VEG02 = 18011, + MODEL_INT_REST_VEG01 = 18012, + MODEL_INT_REST_VEG3 = 18013, + MODEL_INT_REST_VEG03 = 18014, + MODEL_INT_REST_VEG04 = 18015, + MODEL_INT_REST_CANOPY = 18016, + MODEL_INT_REST_COUNCHS = 18017, + MODEL_INT_BARS = 18018, + MODEL_INT_BURGER_FURN = 18019, + MODEL_INT_6BURGER_MAIN = 18020, + MODEL_INT_DIN_DONUT_MAIN = 18021, + MODEL_INT_CHICK_MAIN = 18022, + MODEL_INT_PIZZAPLACE = 18023, + MODEL_INT_CLOTHE_SHIP = 18024, + MODEL_CLOTHES_SPORTS = 18025, + MODEL_CLOTHES_SHIT = 18026, + MODEL_CJ_BARB_2 = 18027, + MODEL_SMLLBARINTERIOR = 18028, + MODEL_SMLLRESTAURANT = 18029, + MODEL_GAP = 18030, + MODEL_CLOTHESEXL = 18031, + MODEL_RANGE_XTRAS2 = 18032, + MODEL_MUNATION_MAIN = 18033, + MODEL_CJ_AMMUN1_EXTRA = 18034, + MODEL_MUNATION_XTRAS2 = 18035, + MODEL_RANGE_MAIN = 18036, + MODEL_GUN_SHOP_VEGAS = 18038, + MODEL_VG_MUN_OPAC2 = 18039, + MODEL_VG_MUN_XTRAS4 = 18040, + MODEL_VG_MUN_XTRAS3 = 18041, + MODEL_GUN_COUNTER09 = 18042, + MODEL_CJ_AMMUN_BITS = 18043, + MODEL_CJ_AMMUN3_EXTRA = 18044, + MODEL_MP_AMMU01 = 18045, + MODEL_MP_AMMU03 = 18046, + MODEL_MPGUN_COUNTER06 = 18047, + MODEL_MP_AMMU02 = 18048, + MODEL_AMMU_TWOFLOOR = 18049, + MODEL_RANGE_OPAC01 = 18050, + MODEL_RANGE_XTRAS03 = 18051, + MODEL_MUNATION_XTRAS03 = 18052, + MODEL_MUNATION_XTRAS04 = 18053, + MODEL_MUNATION_XTRAS05 = 18054, + MODEL_SMLLRESTSEATS = 18055, + MODEL_MP_DINERBIG = 18056, + MODEL_TABLE_PLAIN = 18057, + MODEL_MP_DINERSMALL = 18058, + MODEL_TABLES = 18059, + MODEL_BIG_SEATS = 18060, + MODEL_CONDIMENTS07 = 18061, + MODEL_AB_SFAMMUITEMS01 = 18062, + MODEL_AB_SFAMMUITEMS02 = 18063, + MODEL_AB_SFAMMUUNITS = 18064, + MODEL_AB_SFAMMUMAIN = 18065, + MODEL_POSTERV = 18066, + MODEL_BLOOD_SPLAT = 18067, + MODEL_CLOTHES_SPOT = 18068, + MODEL_CLOTHES_SPORTS2 = 18069, + MODEL_GAP_COUNTER = 18070, + MODEL_GAP_SHADOW = 18071, + MODEL_GAP_WINDOW = 18072, + MODEL_SUB_SHADOW = 18073, + MODEL_DONUT_RAIL = 18074, + MODEL_LIGHTD = 18075, + MODEL_SHAD_1 = 18076, + MODEL_DIN_DONUT_FURN = 18077, + MODEL_CJ_BARB_2_ACC = 18078, + MODEL_BARB_CURTAIN = 18079, + MODEL_DONUT_BLINDS = 18080, + MODEL_CJ_AB_BARBER2_2 = 18081, + MODEL_CJ_BARBER2 = 18082, + MODEL_CJ_BARBER2_1 = 18083, + MODEL_BARBER_BLINDS = 18084, + MODEL_OBJECT01HJK = 18085, + MODEL_B_LIGHTS = 18086, + MODEL_DONUT_BLINDS2 = 18087, + MODEL_CJ_CHANGING_ROOM = 18088, + MODEL_DISCO_FENCE = 18089, + MODEL_BAR_BAR1 = 18090, + MODEL_CJ_BAR_2_DETAILS = 18091, + MODEL_AMMUN3_COUNTER = 18092, + MODEL_LIGHT_SHARD_ = 18093, + MODEL_CJ_SWEATER_F_71 = 18094, + MODEL_BARBER_BLINDS02 = 18095, + MODEL_LIGHT_SHARD_06 = 18096, + MODEL_LIGHT_SHARD_07 = 18097, + MODEL_BARBER_BLINDS03 = 18098, + MODEL_CJ_RUBBISH = 18099, + MODEL_CJ_RUBBISH01 = 18100, + MODEL_CJ_RUBBISH02 = 18101, + MODEL_LIGHT_BOX1 = 18102, + MODEL_CJ_AMMUN_BITS1 = 18104, + MODEL_CJ_AMMUN5_EXTRA = 18105, + MODEL_CJ_AMMUN4_EXTRA = 18109, + MODEL_SUB_SIGNS = 18112, + MODEL_W_TOWN_11 = 18200, + MODEL_WTOWN_BITS2_02 = 18201, + MODEL_WTOWN_TRAILWAL = 18202, + MODEL_WTOWN_BITS2_05 = 18203, + MODEL_W_TOWNWIRES_01 = 18204, + MODEL_W_TOWNWIRES_02 = 18205, + MODEL_W_TOWNWIRES_03 = 18206, + MODEL_W_TOWNWIRES_04 = 18207, + MODEL_W_TOWNWIRES_05 = 18208, + MODEL_W_TOWNWIRES_06 = 18209, + MODEL_W_TOWNWIRES_07 = 18210, + MODEL_W_TOWNWIRES_08 = 18211, + MODEL_W_TOWNWIRES_09 = 18212, + MODEL_W_TOWNWIRES_10 = 18213, + MODEL_W_TOWNWIRES_11 = 18214, + MODEL_W_TOWNWIRES_12 = 18215, + MODEL_MTBFENCE1 = 18216, + MODEL_MTBFENCE06 = 18217, + MODEL_MTBFENCE08 = 18218, + MODEL_MTBFENCE09 = 18219, + MODEL_MTBFENCE10 = 18220, + MODEL_MTBFENCE11 = 18221, + MODEL_MTBFENCE12 = 18222, + MODEL_MTBFENCE14 = 18223, + MODEL_MTBFENCE15 = 18224, + MODEL_CUNT_ROCKGP2_18 = 18225, + MODEL_CUNT_ROCKGP2_19 = 18226, + MODEL_CUNT_ROCKGP2_20 = 18227, + MODEL_CUNT_ROCKGP2_21 = 18228, + MODEL_W7BARK = 18229, + MODEL_LOGCABINNLOGS = 18230, + MODEL_CS_LANDBIT_81 = 18231, + MODEL_CUNTW_NGASSTA = 18232, + MODEL_CUNTW_TOWN07 = 18233, + MODEL_CUNTW_SHED2_ = 18234, + MODEL_CUNTW_WEECHURCH_ = 18235, + MODEL_CUNTW_SHED3_ = 18236, + MODEL_CUNTW_DINERWST = 18237, + MODEL_CUNTW_STWNFURN_ = 18238, + MODEL_CUNTW_RESTRNT1 = 18239, + MODEL_CUNTW_LIQUOR01 = 18240, + MODEL_CUNTW_WEEBUILD = 18241, + MODEL_CUNTW_STWNMOTEL01 = 18242, + MODEL_CUNTW_STMOTSIGBAS1 = 18243, + MODEL_CUNTW_STWNMOTSIGN1 = 18244, + MODEL_CUNTWJUNK02 = 18245, + MODEL_CUNTWJUNK04 = 18246, + MODEL_CUNTWJUNK03 = 18247, + MODEL_CUNTWJUNK01 = 18248, + MODEL_CUNTWJUNK05 = 18249, + MODEL_CUNTWJUNK06 = 18250, + MODEL_CUNTWJUNK07 = 18251, + MODEL_CUNTWJUNK08 = 18252, + MODEL_CUNTWJUNK09 = 18253, + MODEL_CUNTWJUNK10 = 18254, + MODEL_CUNTWJUNK11 = 18255, + MODEL_W7BARK01 = 18256, + MODEL_CRATES = 18257, + MODEL_LOGCABINNLOGS01 = 18258, + MODEL_LOGCABINN01 = 18259, + MODEL_CRATES01 = 18260, + MODEL_CW2_PHOTOBLOCK = 18261, + MODEL_CW2_PHROOFSTUF = 18262, + MODEL_WTOWN_BITS2_06 = 18263, + MODEL_CW2_CINEMABLOCK = 18264, + MODEL_CW2_WTOWNBLOK1 = 18265, + MODEL_WTOWN_SHOPS = 18266, + MODEL_LOGCABINN = 18267, + MODEL_CW2_MNTFIR05 = 18268, + MODEL_CW2_MNTFIR11 = 18269, + MODEL_CW2_MNTFIR13 = 18270, + MODEL_CW2_MNTFIR16 = 18271, + MODEL_CW2_MNTFIR27 = 18272, + MODEL_CW2_WEEFIRZ08 = 18273, + MODEL_CUNTW_SHED3_01 = 18274, + MODEL_CW2_MTBFINISH = 18275, + MODEL_MTB2_BARRIER1 = 18276, + MODEL_MTB2_BARRIER2 = 18277, + MODEL_MTB2_BARRIER3 = 18278, + MODEL_MTB2_BARRIER6 = 18279, + MODEL_MTB2_BARRIER4 = 18280, + MODEL_MTB2_BARRIER5 = 18281, + MODEL_CW_TSBLOCK = 18282, + MODEL_CW_FUELPAY = 18283, + MODEL_CW_TSCANOPY = 18284, + MODEL_CW_TRUCKLINES = 18285, + MODEL_CW_MOUNTBARR06 = 18286, + MODEL_CW_MOUNTBARR01 = 18287, + MODEL_CW_MOUNTBARR02 = 18288, + MODEL_CW_MOUNTBARR03 = 18289, + MODEL_CW_MOUNTBARR04 = 18290, + MODEL_CW_MOUNTBARR07 = 18291, + MODEL_CW_MOUNTBARR05 = 18292, + MODEL_CS_LANDBIT_03 = 18293, + MODEL_CS_LANDBIT_04 = 18294, + MODEL_CS_LANDBIT_05 = 18295, + MODEL_CS_LANDBIT_06 = 18296, + MODEL_CS_LANDBIT_07 = 18297, + MODEL_CS_LANDBIT_08 = 18298, + MODEL_CS_LANDBIT_09 = 18299, + MODEL_CS_LANDBIT_10 = 18300, + MODEL_CS_LANDBIT_11 = 18301, + MODEL_CS_LANDBIT_13 = 18302, + MODEL_CS_LANDBIT_14 = 18303, + MODEL_CS_LANDBIT_15 = 18304, + MODEL_CS_LANDBIT_16 = 18305, + MODEL_CS_LANDBIT_17 = 18306, + MODEL_CS_LANDBIT_18 = 18307, + MODEL_CS_LANDBIT_19 = 18308, + MODEL_CS_LANDBIT_20 = 18309, + MODEL_CS_LANDBIT_21 = 18310, + MODEL_CS_LANDBIT_22 = 18311, + MODEL_CS_LANDBIT_23 = 18312, + MODEL_CS_LANDBIT_24 = 18313, + MODEL_CS_LANDBIT_25 = 18314, + MODEL_CS_LANDBIT_26 = 18315, + MODEL_CS_LANDBIT_27 = 18316, + MODEL_CS_LANDBIT_28 = 18317, + MODEL_CS_LANDBIT_29 = 18318, + MODEL_CS_LANDBIT_30 = 18319, + MODEL_CS_LANDBIT_31 = 18320, + MODEL_CS_LANDBIT_32 = 18321, + MODEL_CS_LANDBIT_33 = 18322, + MODEL_CS_LANDBIT_34 = 18323, + MODEL_CS_LANDBIT_35 = 18324, + MODEL_CS_LANDBIT_36 = 18325, + MODEL_CS_LANDBIT_37 = 18326, + MODEL_CS_LANDBIT_38 = 18327, + MODEL_CS_LANDBIT_39 = 18328, + MODEL_CS_LANDBIT_40 = 18329, + MODEL_CS_LANDBIT_41 = 18330, + MODEL_CS_LANDBIT_42 = 18331, + MODEL_CS_LANDBIT_43 = 18332, + MODEL_CS_LANDBIT_44 = 18333, + MODEL_CS_LANDBIT_45 = 18334, + MODEL_CS_LANDBIT_47 = 18335, + MODEL_CS_LANDBIT_48 = 18336, + MODEL_CS_LANDBIT_49 = 18337, + MODEL_CS_LANDBIT_50 = 18338, + MODEL_CS_LANDBIT_51 = 18339, + MODEL_CS_LANDBIT_52 = 18340, + MODEL_CS_LANDBIT_53 = 18341, + MODEL_CS_LANDBIT_55 = 18342, + MODEL_CS_LANDBIT_56 = 18343, + MODEL_CS_LANDBIT_57 = 18344, + MODEL_CS_LANDBIT_58 = 18345, + MODEL_CS_LANDBIT_59 = 18346, + MODEL_CS_LANDBIT_60 = 18347, + MODEL_CS_LANDBIT_61 = 18348, + MODEL_CS_LANDBIT_62 = 18349, + MODEL_CS_LANDBIT_64 = 18350, + MODEL_CS_LANDBIT_65 = 18351, + MODEL_CS_LANDBIT_66 = 18352, + MODEL_CS_LANDBIT_67 = 18353, + MODEL_CS_LANDBIT_68 = 18354, + MODEL_CS_LANDBIT_69 = 18355, + MODEL_CS_LANDBIT_70 = 18356, + MODEL_CS_LANDBIT_71 = 18357, + MODEL_CS_LANDBIT_73 = 18358, + MODEL_CS_LANDBIT_74 = 18359, + MODEL_CS_LANDBIT_75 = 18360, + MODEL_CS_LANDBIT_76 = 18361, + MODEL_CS_LANDBIT_79 = 18362, + MODEL_CS_LANDBIT_80 = 18363, + MODEL_CS_LANDBIT_01 = 18364, + MODEL_SAWMILL = 18365, + MODEL_CW2_MOUNTWALK1 = 18366, + MODEL_CW2_BIKELOG = 18367, + MODEL_CS_MOUNTPLAT = 18368, + MODEL_CS_ROADS01 = 18369, + MODEL_CS_ROADS02 = 18370, + MODEL_CS_ROADS03 = 18371, + MODEL_CS_ROADS04 = 18372, + MODEL_CS_ROADS05 = 18373, + MODEL_CS_ROADS06 = 18374, + MODEL_CS_ROADS07 = 18375, + MODEL_CS_ROADS08 = 18376, + MODEL_CS_ROADS09 = 18377, + MODEL_CS_ROADS10 = 18378, + MODEL_CS_ROADS11 = 18379, + MODEL_CS_ROADS12 = 18380, + MODEL_CS_ROADS13 = 18381, + MODEL_CS_ROADS16 = 18382, + MODEL_CS_ROADS17 = 18383, + MODEL_CS_ROADS20 = 18384, + MODEL_CUNTSROD03 = 18385, + MODEL_CUNTSROD02 = 18386, + MODEL_CUNTSROD14 = 18387, + MODEL_CUNTSROD01 = 18388, + MODEL_CS_ROADS26 = 18389, + MODEL_CS_ROADS27 = 18390, + MODEL_CS_ROADS28 = 18391, + MODEL_CS_ROADS29 = 18392, + MODEL_CUNTSROD04 = 18393, + MODEL_CS_ROADS35 = 18394, + MODEL_CS_LODROADS04 = 18395, + MODEL_CS_LODROADS03 = 18396, + MODEL_CS_LODROADS02 = 18397, + MODEL_CS_LODROADS01 = 18398, + MODEL_CS_LODBIT_20 = 18399, + MODEL_CS_LODBIT_01 = 18400, + MODEL_CS_LODBIT_24 = 18401, + MODEL_CS_LODROADS05 = 18402, + MODEL_CS_LODROADS06 = 18403, + MODEL_CS_LODBIT_41 = 18404, + MODEL_CS_LODROADS07 = 18405, + MODEL_CS_LODROADS08 = 18406, + MODEL_CS_LODROADS09 = 18407, + MODEL_CS_LODBIT_55 = 18408, + MODEL_CS_LODROADS17 = 18409, + MODEL_CS_LODROADS16 = 18410, + MODEL_CS_LODBIT_64 = 18411, + MODEL_CS_LODBIT_69 = 18412, + MODEL_CS_LODBIT_70 = 18413, + MODEL_CS_LODBIT_71 = 18414, + MODEL_CS_LODBIT_73 = 18415, + MODEL_CS_LODBIT_74 = 18416, + MODEL_CS_LODBIT_76 = 18417, + MODEL_CS_LODBIT_79 = 18418, + MODEL_CS_LODBIT_81 = 18419, + MODEL_CS_LODROADS20 = 18420, + MODEL_CS_LODROADS21 = 18421, + MODEL_CS_LODROADS23 = 18422, + MODEL_CS_LODROADS24 = 18423, + MODEL_CS_LODROADS25 = 18424, + MODEL_CS_LODROADS26 = 18425, + MODEL_CS_LODROADS27 = 18426, + MODEL_CS_LODROADS28 = 18427, + MODEL_CS_LODROADS29 = 18428, + MODEL_CS_LODROADS11 = 18429, + MODEL_CS_LODROADS12 = 18430, + MODEL_CS_LODROADS13 = 18431, + MODEL_MTBFENCE17 = 18432, + MODEL_MTBFENCE21 = 18433, + MODEL_MTBFENCE24 = 18434, + MODEL_MTB_POLES01 = 18435, + MODEL_MTB_POLES02 = 18436, + MODEL_MTB_POLES03 = 18437, + MODEL_MTB_POLES04 = 18438, + MODEL_MTB_POLES05 = 18439, + MODEL_MTBFENCE26 = 18440, + MODEL_MTBFENCE29 = 18441, + MODEL_MTBFENCE31 = 18442, + MODEL_MTBFENCE32 = 18443, + MODEL_MTBFENCE39 = 18444, + MODEL_MTBFENCE40 = 18445, + MODEL_MTBFENCE43 = 18446, + MODEL_CS_MNTDETAIL01 = 18447, + MODEL_W_TOWNWIRES_13 = 18448, + MODEL_CS_ROADBRIDGE01 = 18449, + MODEL_CS_ROADBRIDGE04 = 18450, + MODEL_CS_OLDCARJMP = 18451, + MODEL_CW_TSCANOPY01 = 18452, + MODEL_CS_DETROK01 = 18453, + MODEL_CS_DETROK02 = 18454, + MODEL_CS_DETROK04 = 18455, + MODEL_CS_DETROK03 = 18456, + MODEL_CS_DETROK05 = 18457, + MODEL_CS_DETROK06 = 18458, + MODEL_CS_DETROK07 = 18459, + MODEL_CS_DETROK08 = 18460, + MODEL_CS_DETROK09 = 18461, + MODEL_CS_DETROK10 = 18462, + MODEL_CS_DETROK11 = 18463, + MODEL_CS_DETROK12 = 18464, + MODEL_CS_DETROK13 = 18465, + MODEL_CS_DETROK14 = 18466, + MODEL_CS_DETROK15 = 18467, + MODEL_CS_DETROK16 = 18468, + MODEL_CS_LANDBIT_12 = 18469, + MODEL_TELEWIRES2CS = 18470, + MODEL_TELEWIRES1CS = 18471, + MODEL_TELEWIRES3CS = 18472, + MODEL_CS_LANDBIT_50B = 18473, + MODEL_CSTWNLAND03 = 18474, + MODEL_CS_LANDBIT_50C = 18475, + MODEL_CUNTSROD12 = 18476, + MODEL_CUNTSROD11 = 18477, + MODEL_CUNTSROD09 = 18478, + MODEL_CUNTSROD10 = 18479, + MODEL_CUNTSROD06 = 18480, + MODEL_CUNTSROD08 = 18481, + MODEL_CUNTSROD05 = 18482, + MODEL_CUNTSROD07 = 18483, + MODEL_CUNTSROD13 = 18484, + MODEL_CS_LANDBIT_50D = 18485, + MODEL_LODCS01 = 18486, + MODEL_LODCS02 = 18487, + MODEL_LODCS03 = 18488, + MODEL_LODCS05 = 18489, + MODEL_LODCS06 = 18490, + MODEL_LODCS07 = 18491, + MODEL_LODCS08 = 18492, + MODEL_LODCS09 = 18493, + MODEL_LODCS10 = 18494, + MODEL_LODCUNTSROD15 = 18495, + MODEL_W_TOWN11B = 18496, + MODEL_LODWTOWN_BITS2_05 = 18497, + MODEL_LODWN_SHOPS = 18498, + MODEL_LODCRUSHERS = 18499, + MODEL_LODCUNTS01 = 18500, + MODEL_LODCUNTS02 = 18501, + MODEL_LODCUNTS03 = 18502, + MODEL_LODCUNTS04 = 18503, + MODEL_LODCUNTS05 = 18504, + MODEL_LODCUNTS06 = 18505, + MODEL_LODCUNTS07 = 18506, + MODEL_LODCUNTS08 = 18507, + MODEL_LODCUNTS09 = 18508, + MODEL_LODCUNTS10 = 18509, + MODEL_LODCUNTS11 = 18510, + MODEL_LODCUNTS12 = 18511, + MODEL_LODCUNTS13 = 18512, + MODEL_LODCUNTS14 = 18513, + MODEL_LODCUNTS15 = 18514, + MODEL_LODCUNTS16 = 18515, + MODEL_CS_ROADSLOD = 18516, + MODEL_CS_ROADS14LOD = 18517, + MODEL_CUNTSROD02NEW = 18518, + MODEL_CUNTSROD02NEWLOD = 18519, + MODEL_CUNTW_SHED2_LOD = 18520, + MODEL_CUNTW_WEECHURCH_LOD = 18521, + MODEL_CUNTW_SHED3_LOD = 18522, + MODEL_CW2_WTOWNBLOK_LOD = 18523, + MODEL_CW2_PHOTOBLOCK_LOD = 18524, + MODEL_CSTWNLAND_LOD = 18525, + MODEL_W_TOWN11B01_LOD = 18526, + MODEL_W_TOWN_LOD = 18527, + MODEL_CUNTW_LIQUOR_LOD = 18528, + MODEL_CUNTW_STWNFURN_LOD = 18529, + MODEL_CUNTW_DINERWST_LOD = 18530, + MODEL_CW2_CINEMABLOCK_LOD = 18531, + MODEL_CUNTW_RESTRNT_LOD = 18532, + MODEL_CUNTW_WEEBUILD_LOD = 18533, + MODEL_CUNTW_STWNMOTEL_LOD = 18534, + MODEL_SAWMILL_LOD = 18535, + MODEL_CUNTW_TOWN_LOD = 18536, + MODEL_CS_ROADBRIDGE_LOD = 18537, + MODEL_CS_ROADBRIDGE_LOD01 = 18538, + MODEL_CUNTSROD15_LOD = 18539, + MODEL_CUNTSROD09_LOD = 18540, + MODEL_CUNTSROD10_LOD = 18541, + MODEL_CUNTSROD08_LOD = 18542, + MODEL_CUNTSROD06_LOD = 18543, + MODEL_CUNTSROD07_LOD = 18544, + MODEL_CUNTSROD05_LOD = 18545, + MODEL_CUNTSROD12_LOD = 18546, + MODEL_CUNTSROD13_LOD = 18547, + MODEL_CW_TSBLOCK_LOD = 18548, + MODEL_CW_FUELPAY_LOD = 18549, + MODEL_CW_TSCANOPY_LOD = 18550, + MODEL_COUNTS_BARRIERS = 18551, + MODEL_CUNTS_AMMUN = 18552, + MODEL_COUNT_AMMUNDOOR = 18553, + MODEL_CUNTS_AMMUN_LOD = 18554, + MODEL_CUNTWJUNK10_LOD = 18555, + MODEL_CUNTWJUNK10_LOD01 = 18556, + MODEL_CUNTWJUNK10_LOD02 = 18557, + MODEL_W7BARK01_LOD = 18558, + MODEL_W7BARKLOD = 18559, + MODEL_CUNTWJUNK03_LOD = 18560, + MODEL_CS_NEWBRIDGE = 18561, + MODEL_CS_NEWBRIDGE_LOD = 18562, + MODEL_CS_BSUPPORT = 18563, + MODEL_CS_BSUPPORTLOD = 18564, + MODEL_CS_LOGS03 = 18565, + MODEL_CS_LOGS02 = 18566, + MODEL_CS_LOGS04 = 18567, + MODEL_CS_LOGS05 = 18568, + MODEL_CS_LOGS01 = 18569, + MODEL_LOD_CS_LANDBIT_21 = 18570, + MODEL_LOD_CS_LANDBIT_28 = 18571, + MODEL_LOD_CS_LANDBIT_38 = 18572, + MODEL_LOD_CS_LANDBIT_39 = 18573, + MODEL_LOD_CS_LANDBIT_29 = 18574, + MODEL_LOD_CS_LANDBIT_22 = 18575, + MODEL_LOD_CS_LANDBIT_14 = 18576, + MODEL_LOD_CS_LANDBIT_15 = 18577, + MODEL_LOD_CS_LANDBIT_13 = 18578, + MODEL_LOD_CS_LANDBIT_11 = 18579, + MODEL_LOD_CS_LANDBIT_18 = 18580, + MODEL_LOD_CS_LANDBIT_27 = 18581, + MODEL_LOD_CS_LANDBIT_19 = 18582, + MODEL_LOD_CS_LANDBIT_12 = 18583, + MODEL_LOD_CS_LANDBIT_08 = 18584, + MODEL_LOD_CS_LANDBIT_30 = 18585, + MODEL_LOD_CS_LANDBIT_16 = 18586, + MODEL_LOD_CS_LANDBIT_09 = 18587, + MODEL_LOD_CS_LANDBIT_05 = 18588, + MODEL_LOD_CS_LANDBIT_04 = 18589, + MODEL_LOD_CS_LANDBIT_07 = 18590, + MODEL_LOD_CS_LANDBIT_03 = 18591, + MODEL_LOD_CS_LANDBIT_06 = 18592, + MODEL_LOD_CS_LANDBIT_10 = 18593, + MODEL_LOD_CS_LANDBIT_17 = 18594, + MODEL_LOD_CS_LANDBIT_26 = 18595, + MODEL_LOD_CS_LANDBIT_37 = 18596, + MODEL_LOD_CS_LANDBIT_36 = 18597, + MODEL_LOD_CS_LANDBIT_23 = 18598, + MODEL_LOD_CS_LANDBIT_31 = 18599, + MODEL_LOD_CS_LANDBIT_40 = 18600, + MODEL_LOD_CS_LANDBIT_47 = 18601, + MODEL_LOD_CS_LANDBIT_35 = 18602, + MODEL_LOD_CS_LANDBIT_48 = 18603, + MODEL_LOD_CS_LANDBIT_65 = 18604, + MODEL_LOD_CS_LANDBIT_75 = 18605, + MODEL_LOD_CS_LANDBIT_80 = 18606, + MODEL_LOD_CS_LANDBIT_56 = 18607, + MODEL_COUNTS_LIGHTS01 = 18608, + MODEL_CS_LOGS06 = 18609, + MODEL_CS_LANDBIT_70_A = 18610, + MODEL_CS_LANDBIT_71_A = 18611, + MODEL_CS_LANDBIT_53_A = 18612, + MODEL_CS_LANDBIT_61_A = 18613, + MODEL_CS_LANDBIT_44_A = 18614, + MODEL_CS_LANDBIT_33_A = 18615, + MODEL_CS_LANDBIT_25_A = 18616, + MODEL_CS_LANDBIT_A = 18617, + MODEL_CS_LANDBIT_41_A = 18618, + MODEL_CS_LANDBIT_50_A = 18619, + MODEL_W_TOWN_11_A = 18620, + MODEL_CS_LANDBIT_58_A = 18621, + MODEL_CS_LANDBIT_50B_A = 18622, + MODEL_CS_LANDBIT_68_A = 18623, + MODEL_CS_LANDBIT_65_A = 18624, + MODEL_CS_LANDBIT_48_A = 18625, + MODEL_CS_LANDBIT_36_A = 18626, + MODEL_CS_LANDBIT_27_A = 18627, + MODEL_CS_LANDBIT_10_A = 18628, + MODEL_CS_LANDBIT_06_A = 18629, + MODEL_CS_LANDBIT_20_A = 18630, +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/ePadButtons.h b/third-party/plugin-sdk/plugin_sa/game_sa/ePadButtons.h new file mode 100644 index 00000000..2be3afb8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/ePadButtons.h @@ -0,0 +1,35 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum ePadButton : unsigned int +{ + LEFTSTICKX, // Left / Right GO_LEFT / GO_RIGHT + LEFTSTICKY, // Forward / Backward GO_FORWARD / GO_BACK + RIGHTSTICKX, // Special CTRL Left / Special CTRL Right PED_1RST_PERSON_LOOK_LEFT / PED_1RST_PERSON_LOOK_RIGHT + RIGHTSTICKY, // Special CTRL Up / Special CTRL Down PED_1RST_PERSON_LOOK_UP / PED_1RST_PERSON_LOOK_DOWN + LEFTSHOULDER1, // Action, Secondary Fire PED_ANSWER_PHONE, PED_FIREWEAPON_ALT + LEFTSHOULDER2, // Previous Weapon / Zoom In PED_CYCLE_WEAPON_LEFT / PED_SNIPER_ZOOM_IN + RIGHTSHOULDER1, // Aim Weapon PED_LOCK_TARGET + RIGHTSHOULDER2, // Next Weapon / Zoom Out PED_CYCLE_WEAPON_RIGHT / PED_SNIPER_ZOOM_OUT + DPADUP, // Group Control Forward GROUP_CONTROL_FWD + DPADDOWN, // Group Control Backward GROUP_CONTROL_BWD + DPADLEFT, // Conversation - No CONVERSATION_NO + DPADRIGHT, // Conversation - Yes CONVERSATION_YES + START, // Pause Menu + SELECT, // Change Camera CAMERA_CHANGE_VIEW_ALL_SITUATIONS + SQUARE, // Jump PED_JUMPING + TRIANGLE, // Enter Vehicle VEHICLE_ENTER_EXIT + CROSS, // Sprint PED_SPRINT + CIRCLE, // Fire Weapon PED_FIREWEAPON + LEFTSHOCK, // Crouch PED_DUCK + RIGHTSHOCK, // Look Behind PED_LOOKBEHIND + // -- Sneak SNEAK_ABOUT + // -- Cycle Target Left PED_CYCLE_TARGET_LEFT + // -- Cycle Target Right PED_CYCLE_TARGET_RIGHT + // -- Center Camera PED_CENTER_CAMERA_BEHIND_PLAYER +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/ePedAnims.h b/third-party/plugin-sdk/plugin_sa/game_sa/ePedAnims.h new file mode 100644 index 00000000..7b7389ca --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/ePedAnims.h @@ -0,0 +1,202 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum ePedAnims +{ + PED_ANIM_WALK_CIVI = 0x0, + PED_ANIM_RUN_CIVI = 0x1, + PED_ANIM_SPRINT_PANIC = 0x2, + PED_ANIM_IDLE_STANCE = 0x3, + PED_ANIM_ROADCROSS = 0x4, + PED_ANIM_WALK_START = 0x5, + PED_ANIM_RUN_STOP = 0x6, + PED_ANIM_RUN_STOPR = 0x7, + PED_ANIM_IDLE_HBHB = 0x8, + PED_ANIM_IDLE_HBHB_2 = 0x9, + PED_ANIM_IDLE_TIRED = 0xA, + PED_ANIM_IDLE_ARMED = 0xB, + PED_ANIM_IDLE_CHAT = 0xC, + PED_ANIM_IDLE_TAXI = 0xD, + PED_ANIM_SWIM_TREAD = 0xE, + PED_ANIM_KO_SHOT_FRONT = 0xF, + PED_ANIM_KO_SHOT_FRONT_2 = 0x10, + PED_ANIM_KO_SHOT_FRONT_3 = 0x11, + PED_ANIM_KO_SHOT_FRONT_4 = 0x12, + PED_ANIM_KO_SHOT_FACE = 0x13, + PED_ANIM_KO_SHOT_STOM = 0x14, + PED_ANIM_GAS_CWR = 0x15, + PED_ANIM_KD_LEFT = 0x16, + PED_ANIM_KD_RIGHT = 0x17, + PED_ANIM_KO_SKID_FRONT = 0x18, + PED_ANIM_KO_SPIN_R = 0x19, + PED_ANIM_KO_SKID_BACK = 0x1A, + PED_ANIM_KO_SPIN_L = 0x1B, + PED_ANIM_SHOT_PARTIAL = 0x1C, + PED_ANIM_SHOT_LEFTP = 0x1D, + PED_ANIM_SHOT_PARTIAL_B = 0x1E, + PED_ANIM_SHOT_RIGHTP = 0x1F, + PED_ANIM_HIT_FRONT = 0x20, + PED_ANIM_HIT_L = 0x21, + PED_ANIM_HIT_BACK = 0x22, + PED_ANIM_HIT_R = 0x23, + PED_ANIM_FLOOR_HIT = 0x24, + PED_ANIM_HIT_WALK = 0x25, + PED_ANIM_HIT_WALL = 0x26, + PED_ANIM_FLOOR_HIT_F = 0x27, + PED_ANIM_HIT_BEHIND = 0x28, + PED_ANIM_FIGHTSH_FWD = 0x29, + PED_ANIM_FIGHTSH_LEFT = 0x2A, + PED_ANIM_FIGHTSH_BWD = 0x2B, + PED_ANIM_FIGHTSH_RIGHT = 0x2C, + PED_ANIM_FIGHTSHF = 0x2D, + PED_ANIM_FIGHTSHB = 0x2E, + PED_ANIM_FIGHT2IDLE = 0x2F, + PED_ANIM_BOMBER = 0x30, + PED_ANIM_GUN_STAND = 0x31, + PED_ANIM_GUNMOVE_FWD = 0x32, + PED_ANIM_GUNMOVE_L = 0x33, + PED_ANIM_GUNMOVE_BWD = 0x34, + PED_ANIM_GUNMOVE_R = 0x35, + PED_ANIM_GUN_2_IDLE = 0x36, + PED_ANIM_WEAPON_CROUCH = 0x37, + PED_ANIM_GUNCROUCHFWD = 0x38, + PED_ANIM_CROUCH_ROLL_L = 0x39, + PED_ANIM_GUNCROUCHBWD = 0x3A, + PED_ANIM_CROUCH_ROLL_R = 0x3B, + PED_ANIM_CAR_SIT = 0x3C, + PED_ANIM_CAR_LSIT = 0x3D, + PED_ANIM_CAR_SIT_WEAK = 0x3E, + PED_ANIM_CAR_SIT_PRO = 0x3F, + PED_ANIM_CAR_SITP = 0x40, + PED_ANIM_CAR_SITPLO = 0x41, + PED_ANIM_DRIVE_L = 0x42, + PED_ANIM_DRIVE_R = 0x43, + PED_ANIM_DRIVE_LO_L = 0x44, + PED_ANIM_DRIVE_LO_R = 0x45, + PED_ANIM_DRIVE_L_WEAK = 0x46, + PED_ANIM_DRIVE_R_WEAK = 0x47, + PED_ANIM_DRIVE_L_PRO = 0x48, + PED_ANIM_DRIVE_R_PRO = 0x49, + PED_ANIM_DRIVEBY_L = 0x4A, + PED_ANIM_DRIVEBY_R = 0x4B, + PED_ANIM_DRIVEBYL_L = 0x4C, + PED_ANIM_DRIVEBYL_R = 0x4D, + PED_ANIM_CAR_LB = 0x4E, + PED_ANIM_CAR_LB_WEAK = 0x4F, + PED_ANIM_CAR_LB_PRO = 0x50, + PED_ANIM_DRIVE_BOAT = 0x51, + PED_ANIM_DRIVE_BOAT_L = 0x52, + PED_ANIM_DRIVE_BOAT_R = 0x53, + PED_ANIM_DRIVE_BOAT_BACK = 0x54, + PED_ANIM_DRIVE_L_SLOW = 0x55, + PED_ANIM_DRIVE_R_SLOW = 0x56, + PED_ANIM_DRIVE_L_WEAK_SLOW = 0x57, + PED_ANIM_DRIVE_R_WEAK_SLOW = 0x58, + PED_ANIM_DRIVE_L_PRO_SLOW = 0x59, + PED_ANIM_DRIVE_R_PRO_SLOW = 0x5A, + PED_ANIM_DRIVE_TRUCK = 0x5B, + PED_ANIM_DRIVE_TRUCK_L = 0x5C, + PED_ANIM_DRIVE_TRUCK_R = 0x5D, + PED_ANIM_DRIVE_TRUCK_BACK = 0x5E, + PED_ANIM_KART_DRIVE = 0x5F, + PED_ANIM_KART_L = 0x60, + PED_ANIM_KART_R = 0x61, + PED_ANIM_KART_LB = 0x62, + PED_ANIM_BIKE_PICKUPR = 0x63, + PED_ANIM_BIKE_PICKUPL = 0x64, + PED_ANIM_BIKE_PULLUPR = 0x65, + PED_ANIM_BIKE_PULLUPL = 0x66, + PED_ANIM_BIKE_ELBOWL = 0x67, + PED_ANIM_BIKE_ELBOWR = 0x68, + PED_ANIM_BIKE_FALL_OFF = 0x69, + PED_ANIM_BIKE_FALLR = 0x6A, + PED_ANIM_CAR_HOOKERTALK = 0x6B, + PED_ANIM_CAR_CRAWLOUTRHS = 0x6C, + PED_ANIM_CAR_CRAWLOUTRHS_2 = 0x6D, + PED_ANIM_CAR_ROLLOUT_LHS = 0x6E, + PED_ANIM_CAR_ROLLOUT_RHS = 0x6F, + PED_ANIM_GETUP = 0x70, + PED_ANIM_GETUP_2 = 0x71, + PED_ANIM_GETUP_3 = 0x72, + PED_ANIM_GETUP_FRONT = 0x73, + PED_ANIM_JUMP_LAUNCH = 0x74, + PED_ANIM_JUMP_LAUNCH_R = 0x75, + PED_ANIM_JUMP_GLIDE = 0x76, + PED_ANIM_JUMP_LAND = 0x77, + PED_ANIM_FALL_FALL = 0x78, + PED_ANIM_FALL_GLIDE = 0x79, + PED_ANIM_FALL_LAND = 0x7A, + PED_ANIM_FALL_COLLAPSE = 0x7B, + PED_ANIM_FALL_BACK = 0x7C, + PED_ANIM_FALL_FRONT = 0x7D, + PED_ANIM_EV_STEP = 0x7E, + PED_ANIM_EV_DIVE = 0x7F, + PED_ANIM_CLIMB_JUMP = 0x80, + PED_ANIM_CLIMB_IDLE = 0x81, + PED_ANIM_CLIMB_PULL = 0x82, + PED_ANIM_CLIMB_STAND = 0x83, + PED_ANIM_CLIMB_STAND_FINISH = 0x84, + PED_ANIM_CLIMB_JUMP_B = 0x85, + PED_ANIM_CLIMB_JUMP2FALL = 0x86, + PED_ANIM_XPRESSSCRATCH = 0x87, + PED_ANIM_TURN_180 = 0x88, + PED_ANIM_TURN_L = 0x89, + PED_ANIM_TURN_R = 0x8A, + PED_ANIM_ARRESTGUN = 0x8B, + PED_ANIM_DROWN = 0x8C, + PED_ANIM_DUCK_COWER = 0x8D, + PED_ANIM_HANDSUP = 0x8E, + PED_ANIM_HANDSCOWER = 0x8F, + PED_ANIM_FUCKU = 0x90, + PED_ANIM_PHONE_IN = 0x91, + PED_ANIM_PHONE_OUT = 0x92, + PED_ANIM_PHONE_TALK = 0x93, + PED_ANIM_SEAT_DOWN = 0x94, + PED_ANIM_SEAT_UP = 0x95, + PED_ANIM_SEAT_IDLE = 0x96, + PED_ANIM_ATM = 0x97, + PED_ANIM_ABSEIL = 0x98, + PED_ANIM_WALK_DOORPARTIAL = 0x99, + PED_ANIM_FACSURP = 0x9A, + PED_ANIM_FACSURPM = 0x9B, + PED_ANIM_FACURIOS = 0x9C, + PED_ANIM_FACANGER = 0x9D, + PED_ANIM_FACANGER_2 = 0x9E, + PED_ANIM_FACANGER_3 = 0x9F, + PED_ANIM_FACTALK = 0xA0, + PED_ANIM_FACGUM = 0xA1, + PED_ANIM_TAP_HAND = 0xA2, + PED_ANIM_TAP_HANDP = 0xA3, + PED_ANIM_SHOVE_PARTIAL = 0xA4, + PED_ANIM_FLEE_LKAROUND_01 = 0xA5, + PED_ANIM_ENDCHAT_01 = 0xA6, + PED_ANIM_ENDCHAT_02 = 0xA7, + PED_ANIM_ENDCHAT_03 = 0xA8, + PED_ANIM_SMOKE_IN_CAR = 0xA9, + PED_ANIM_PASS_SMOKE_IN_CAR = 0xAA, + PED_ANIM_DAM_ARML_FRMBK = 0xAB, + PED_ANIM_DAM_ARML_FRMFT = 0xAC, + PED_ANIM_DAM_ARML_FRMLT = 0xAD, + PED_ANIM_DAM_ARMR_FRMBK = 0xAE, + PED_ANIM_DAM_ARMR_FRMFT = 0xAF, + PED_ANIM_DAM_ARMR_FRMRT = 0xB0, + PED_ANIM_DAM_LEGL_FRMBK = 0xB1, + PED_ANIM_DAM_LEGL_FRMFT = 0xB2, + PED_ANIM_DAM_LEGL_FRMLT = 0xB3, + PED_ANIM_DAM_LEGR_FRMBK = 0xB4, + PED_ANIM_DAM_LEGR_FRMFT = 0xB5, + PED_ANIM_DAM_LEGR_FRMRT = 0xB6, + PED_ANIM_DAM_STOMACH_FRMBK = 0xB7, + PED_ANIM_DAM_STOMACH_FRMFT = 0xB8, + PED_ANIM_DAM_STOMACH_FRMLT = 0xB9, + PED_ANIM_DAM_STOMACH_FRMRT = 0xBA, + PED_ANIM_CAR_DEAD_LHS = 0xBB, + PED_ANIM_CAR_DEAD_RHS = 0xBC, + PED_ANIM_CAR_TUNE_RADIO = 0xBD, + PED_ANIM_GANG_GUNSTAND = 0xBE, +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/ePedBones.h b/third-party/plugin-sdk/plugin_sa/game_sa/ePedBones.h new file mode 100644 index 00000000..2b0966d7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/ePedBones.h @@ -0,0 +1,42 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum ePedBones +{ + BONE_PELVIS1 = 1, + BONE_PELVIS = 2, + BONE_SPINE1 = 3, + BONE_UPPERTORSO = 4, + BONE_NECK = 5, + BONE_HEAD2 = 6, + BONE_HEAD1 = 7, + BONE_HEAD = 8, + BONE_RIGHTUPPERTORSO = 21, + BONE_RIGHTSHOULDER = 22, + BONE_RIGHTELBOW = 23, + BONE_RIGHTWRIST = 24, + BONE_RIGHTHAND = 25, + BONE_RIGHTTHUMB = 26, + BONE_LEFTUPPERTORSO = 31, + BONE_LEFTSHOULDER = 32, + BONE_LEFTELBOW = 33, + BONE_LEFTWRIST = 34, + BONE_LEFTHAND = 35, + BONE_LEFTTHUMB = 36, + BONE_LEFTHIP = 41, + BONE_LEFTKNEE = 42, + BONE_LEFTANKLE = 43, + BONE_LEFTFOOT = 44, + BONE_RIGHTHIP = 51, + BONE_RIGHTKNEE = 52, + BONE_RIGHTANKLE = 53, + BONE_RIGHTFOOT = 54, +}; + + + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/ePedModel.h b/third-party/plugin-sdk/plugin_sa/game_sa/ePedModel.h new file mode 100644 index 00000000..ea5d96a5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/ePedModel.h @@ -0,0 +1,277 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum ePedModel : unsigned int +{ + MODEL_NULL, + MODEL_MALE01 = 7, + MODEL_BFORI = 9, + MODEL_BFOST, + MODEL_VBFYCRP, + MODEL_BFYRI, + MODEL_BFYST, + MODEL_BMORI, + MODEL_BMOST, + MODEL_BMYAP, + MODEL_BMYBU, + MODEL_BMYBE, + MODEL_BMYDJ, + MODEL_BMYRI, + MODEL_BMYCR, + MODEL_BMYST, + MODEL_WMYBMX, + MODEL_WBDYG1, + MODEL_WBDYG2, + MODEL_WMYBP, + MODEL_WMYCON, + MODEL_BMYDRUG, + MODEL_WMYDRUG, + MODEL_HMYDRUG, + MODEL_DWFOLC, + MODEL_DWMOLC1, + MODEL_DWMOLC2, + MODEL_DWMYLC1, + MODEL_HMOGAR, + MODEL_WMYGOL1, + MODEL_WMYGOL2, + MODEL_HFORI, + MODEL_HFOST, + MODEL_HFYRI, + MODEL_HFYST, + MODEL_HMORI = 43, + MODEL_HMOST, + MODEL_HMYBE, + MODEL_HMYRI, + MODEL_HMYCR, + MODEL_HMYST, + MODEL_OMOKUNG, + MODEL_WMYMECH, + MODEL_BMYMOUN, + MODEL_WMYMOUN, + MODEL_OFORI, + MODEL_OFOST, + MODEL_OFYRI, + MODEL_OFYST, + MODEL_OMORI, + MODEL_OMOST, + MODEL_OMYRI, + MODEL_OMYST, + MODEL_WMYPLT, + MODEL_WMOPJ, + MODEL_BFYPRO, + MODEL_HFYPRO, + MODEL_BMYPOL1 = 66, + MODEL_BMYPOL2, + MODEL_WMOPREA, + MODEL_SBFYST, + MODEL_WMOSCI, + MODEL_WMYSGRD, + MODEL_SWMYHP1, + MODEL_SWMYHP2, + MODEL_SWFOPRO = 75, + MODEL_WFYSTEW, + MODEL_SWMOTR1, + MODEL_WMOTR1, + MODEL_BMOTR1, + MODEL_VBMYBOX, + MODEL_VWMYBOX, + MODEL_VHMYELV, + MODEL_VBMYELV, + MODEL_VIMYELV, + MODEL_VWFYPRO, + MODEL_VWFYST1 = 87, + MODEL_WFORI, + MODEL_WFOST, + MODEL_WFYJG, + MODEL_WFYRI, + MODEL_WFYRO, + MODEL_WFYST, + MODEL_WMORI, + MODEL_WMOST, + MODEL_WMYJG, + MODEL_WMYLG, + MODEL_WMYRI, + MODEL_WMYRO, + MODEL_WMYCR, + MODEL_WMYST, + MODEL_BALLAS1, + MODEL_BALLAS2, + MODEL_BALLAS3, + MODEL_FAM1, + MODEL_FAM2, + MODEL_FAM3, + MODEL_LSV1, + MODEL_LSV2, + MODEL_LSV3, + MODEL_MAFFA, + MODEL_MAFFB, + MODEL_MAFBOSS, + MODEL_VLA1, + MODEL_VLA2, + MODEL_VLA3, + MODEL_TRIADA, + MODEL_TRIADB, + MODEL_TRIBOSS = 120, + MODEL_DNB1, + MODEL_DNB2, + MODEL_DNB3, + MODEL_VMAFF1, + MODEL_VMAFF2, + MODEL_VMAFF3, + MODEL_VMAFF4, + MODEL_DNMYLC, + MODEL_DNFOLC1, + MODEL_DNFOLC2, + MODEL_DNFYLC, + MODEL_DNMOLC1, + MODEL_DNMOLC2, + MODEL_SBMOTR2, + MODEL_SWMOTR2, + MODEL_SBMYTR3, + MODEL_SWMOTR3, + MODEL_WFYBE, + MODEL_BFYBE, + MODEL_HFYBE, + MODEL_SOFYBU, + MODEL_SBMYST, + MODEL_SBMYCR, + MODEL_BMYCG, + MODEL_WFYCRK, + MODEL_HMYCM, + MODEL_WMYBU, + MODEL_BFYBU, + MODEL_WFYBU = 150, + MODEL_DWFYLC1, + MODEL_WFYPRO, + MODEL_WMYCONB, + MODEL_WMYBE, + MODEL_WMYPIZZ, + MODEL_BMOBAR, + MODEL_CWFYHB, + MODEL_CWMOFR, + MODEL_CWMOHB1, + MODEL_CWMOHB2, + MODEL_CWMYFR, + MODEL_CWMYHB1, + MODEL_BMYBOUN, + MODEL_WMYBOUN, + MODEL_WMOMIB, + MODEL_BMYMIB, + MODEL_WMYBELL, + MODEL_BMOCHIL, + MODEL_SOFYRI, + MODEL_SOMYST, + MODEL_VWMYBJD, + MODEL_VWFYCRP, + MODEL_SFR1, + MODEL_SFR2, + MODEL_SFR3, + MODEL_BMYBAR, + MODEL_WMYBAR, + MODEL_WFYSEX, + MODEL_WMYAMMO, + MODEL_BMYTATT, + MODEL_VWMYCR, + MODEL_VBMOCD, + MODEL_VBMYCR, + MODEL_VHMYCR, + MODEL_SBMYRI, + MODEL_SOMYRI, + MODEL_SOMYBU, + MODEL_SWMYST, + MODEL_WMYVA, + MODEL_COPGRL3, + MODEL_GUNGRL3, + MODEL_MECGRL3, + MODEL_NURGRL3, + MODEL_CROGRL3, + MODEL_GANGRL3, + MODEL_CWFOFR, + MODEL_CWFOHB, + MODEL_CWFYFR1, + MODEL_CWFYFR2, + MODEL_CWMYHB2, + MODEL_DWFYLC2, + MODEL_DWMYLC2, + MODEL_OMYKARA, + MODEL_WMYKARA, + MODEL_WFYBURG, + MODEL_VWMYCD, + MODEL_VHFYPRO, + MODEL_OMONOOD = 209, + MODEL_OMOBOAT, + MODEL_WFYCLOT, + MODEL_VWMOTR1, + MODEL_VWMOTR2, + MODEL_VWFYWAI, + MODEL_SBFORI, + MODEL_SWFYRI, + MODEL_WMYCLOT, + MODEL_SBFOST, + MODEL_SBFYRI, + MODEL_SBMOCD, + MODEL_SBMORI, + MODEL_SBMOST, + MODEL_SHMYCR, + MODEL_SOFORI, + MODEL_SOFOST, + MODEL_SOFYST, + MODEL_SOMOBU, + MODEL_SOMORI, + MODEL_SOMOST, + MODEL_SWMOTR5, + MODEL_SWFORI, + MODEL_SWFOST, + MODEL_SWFYST, + MODEL_SWMOCD, + MODEL_SWMORI, + MODEL_SWMOST, + MODEL_SHFYPRO, + MODEL_SBFYPRO, + MODEL_SWMOTR4, + MODEL_SWMYRI, + MODEL_SMYST, + MODEL_SMYST2, + MODEL_SFYPRO, + MODEL_VBFYST2, + MODEL_VBFYPRO, + MODEL_VHFYST3, + MODEL_BIKERA, + MODEL_BIKERB, + MODEL_BMYPIMP, + MODEL_SWMYCR, + MODEL_WFYLG, + MODEL_WMYVA2, + MODEL_BMOSEC, + MODEL_BIKDRUG, + MODEL_WMYCH, + MODEL_SBFYSTR, + MODEL_SWFYSTR, + MODEL_HECK1, + MODEL_HECK2, + MODEL_BMYCON, + MODEL_WMYCD1, + MODEL_BMOCD, + MODEL_VWFYWA2, + MODEL_WMOICE, + MODEL_LAEMT1 = 274, + MODEL_LVEMT1, + MODEL_SFEMT1, + MODEL_LAFD1, + MODEL_LVFD1, + MODEL_SFFD1, + MODEL_LAPD1, + MODEL_SFPD1, + MODEL_LVPD1, + MODEL_CSHER, + MODEL_LAPDM1, + MODEL_SWAT, + MODEL_FBI, + MODEL_ARMY, + MODEL_DSHER +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/ePedPieceTypes.h b/third-party/plugin-sdk/plugin_sa/game_sa/ePedPieceTypes.h new file mode 100644 index 00000000..b1cba5a9 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/ePedPieceTypes.h @@ -0,0 +1,11 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum ePedPieceTypes { + +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/ePedState.h b/third-party/plugin-sdk/plugin_sa/game_sa/ePedState.h new file mode 100644 index 00000000..7011db67 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/ePedState.h @@ -0,0 +1,76 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum ePedState +{ + PEDSTATE_NONE, + PEDSTATE_IDLE, + PEDSTATE_LOOK_ENTITY, + PEDSTATE_LOOK_HEADING, + PEDSTATE_WANDER_RANGE, + PEDSTATE_WANDER_PATH, + PEDSTATE_SEEK_POSITION, + PEDSTATE_SEEK_ENTITY, + PEDSTATE_FLEE_POSITION, + PEDSTATE_FLEE_ENTITY, + PEDSTATE_PURSUE, + PEDSTATE_FOLLOW_PATH, + PEDSTATE_SNIPER_MODE, + PEDSTATE_ROCKETLAUNCHER_MODE, + PEDSTATE_DUMMY, + PEDSTATE_PAUSE, + PEDSTATE_ATTACK, + PEDSTATE_FIGHT, + PEDSTATE_FACE_PHONE, + PEDSTATE_MAKE_PHONECALL, + PEDSTATE_CHAT, + PEDSTATE_MUG, + PEDSTATE_AIMGUN, + PEDSTATE_AI_CONTROL, + PEDSTATE_SEEK_CAR, + PEDSTATE_SEEK_BOAT_POSITION, + PEDSTATE_FOLLOW_ROUTE, + PEDSTATE_CPR, + PEDSTATE_SOLICIT, + PEDSTATE_BUY_ICE_CREAM, + PEDSTATE_INVESTIGATE_EVENT, + PEDSTATE_EVADE_STEP, + PEDSTATE_ON_FIRE, + PEDSTATE_SUNBATHE, + PEDSTATE_FLASH, + PEDSTATE_JOG, + PEDSTATE_ANSWER_MOBILE, + PEDSTATE_HANG_OUT, + PEDSTATE_STATES_NO_AI, + PEDSTATE_ABSEIL_FROM_HELI, + PEDSTATE_SIT, + PEDSTATE_JUMP, + PEDSTATE_FALL, + PEDSTATE_GETUP, + PEDSTATE_STAGGER, + PEDSTATE_EVADE_DIVE, + PEDSTATE_STATES_CAN_SHOOT, + PEDSTATE_ENTER_TRAIN, + PEDSTATE_EXIT_TRAIN, + PEDSTATE_ARREST_PLAYER, + PEDSTATE_DRIVING, + PEDSTATE_PASSENGER, + PEDSTATE_TAXI_PASSENGER, + PEDSTATE_OPEN_DOOR, + PEDSTATE_DIE, + PEDSTATE_DEAD, + PEDSTATE_DIE_BY_STEALTH, + PEDSTATE_CARJACK, + PEDSTATE_DRAGGED_FROM_CAR, + PEDSTATE_ENTER_CAR, + PEDSTATE_STEAL_CAR, + PEDSTATE_EXIT_CAR, + PEDSTATE_HANDS_UP, + PEDSTATE_ARRESTED, + PEDSTATE_DEPLOY_STINGER +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/ePedType.h b/third-party/plugin-sdk/plugin_sa/game_sa/ePedType.h new file mode 100644 index 00000000..36dbc506 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/ePedType.h @@ -0,0 +1,44 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +enum PLUGIN_API ePedType : unsigned int { + PED_TYPE_PLAYER1, + PED_TYPE_PLAYER2, + PED_TYPE_PLAYER_NETWORK, + PED_TYPE_PLAYER_UNUSED, + PED_TYPE_CIVMALE, + PED_TYPE_CIVFEMALE, + PED_TYPE_COP, + PED_TYPE_GANG1, + PED_TYPE_GANG2, + PED_TYPE_GANG3, + PED_TYPE_GANG4, + PED_TYPE_GANG5, + PED_TYPE_GANG6, + PED_TYPE_GANG7, + PED_TYPE_GANG8, + PED_TYPE_GANG9, + PED_TYPE_GANG10, + PED_TYPE_DEALER, + PED_TYPE_MEDIC, + PED_TYPE_FIREMAN, + PED_TYPE_CRIMINAL, + PED_TYPE_BUM, + PED_TYPE_PROSTITUTE, + PED_TYPE_SPECIAL, + PED_TYPE_MISSION1, + PED_TYPE_MISSION2, + PED_TYPE_MISSION3, + PED_TYPE_MISSION4, + PED_TYPE_MISSION5, + PED_TYPE_MISSION6, + PED_TYPE_MISSION7, + PED_TYPE_MISSION8 +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eRadioID.h b/third-party/plugin-sdk/plugin_sa/game_sa/eRadioID.h new file mode 100644 index 00000000..2ca9ce4b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eRadioID.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +enum PLUGIN_API eRadioID : char +{ + RADIO_PLAYBACK_FM=1, + RADIO_K_ROSE, + RADIO_K_DST, + RADIO_BOUNCE_FM, + RADIO_SF_UR, + RADIO_LOS_SANTOS, + RADIO_RADIO_X, + RADIO_CSR_103_9, + RADIO_K_JAH_WEST, + RADIO_MASTER_SOUNDS_98_3, + RADIO_WCTR, + RADIO_USER_TRACKS, + RADIO_NONE +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eScriptCommands.h b/third-party/plugin-sdk/plugin_sa/game_sa/eScriptCommands.h new file mode 100644 index 00000000..def45d13 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eScriptCommands.h @@ -0,0 +1,2651 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eScriptCommands { + COMMAND_NOP = 0x0000, + COMMAND_WAIT = 0x0001, + COMMAND_GOTO = 0x0002, + COMMAND_SHAKE_CAM = 0x0003, + COMMAND_SET_VAR_INT = 0x0004, + COMMAND_SET_VAR_FLOAT = 0x0005, + COMMAND_SET_LVAR_INT = 0x0006, + COMMAND_SET_LVAR_FLOAT = 0x0007, + COMMAND_ADD_VAL_TO_INT_VAR = 0x0008, + COMMAND_ADD_VAL_TO_FLOAT_VAR = 0x0009, + COMMAND_ADD_VAL_TO_INT_LVAR = 0x000A, + COMMAND_ADD_VAL_TO_FLOAT_LVAR = 0x000B, + COMMAND_SUB_VAL_FROM_INT_VAR = 0x000C, + COMMAND_SUB_VAL_FROM_FLOAT_VAR = 0x000D, + COMMAND_SUB_VAL_FROM_INT_LVAR = 0x000E, + COMMAND_SUB_VAL_FROM_FLOAT_LVAR = 0x000F, + COMMAND_MULT_INT_VAR_BY_VAL = 0x0010, + COMMAND_MULT_FLOAT_VAR_BY_VAL = 0x0011, + COMMAND_MULT_INT_LVAR_BY_VAL = 0x0012, + COMMAND_MULT_FLOAT_LVAR_BY_VAL = 0x0013, + COMMAND_DIV_INT_VAR_BY_VAL = 0x0014, + COMMAND_DIV_FLOAT_VAR_BY_VAL = 0x0015, + COMMAND_DIV_INT_LVAR_BY_VAL = 0x0016, + COMMAND_DIV_FLOAT_LVAR_BY_VAL = 0x0017, + COMMAND_IS_INT_VAR_GREATER_THAN_NUMBER = 0x0018, + COMMAND_IS_INT_LVAR_GREATER_THAN_NUMBER = 0x0019, + COMMAND_IS_NUMBER_GREATER_THAN_INT_VAR = 0x001A, + COMMAND_IS_NUMBER_GREATER_THAN_INT_LVAR = 0x001B, + COMMAND_IS_INT_VAR_GREATER_THAN_INT_VAR = 0x001C, + COMMAND_IS_INT_LVAR_GREATER_THAN_INT_LVAR = 0x001D, + COMMAND_IS_INT_VAR_GREATER_THAN_INT_LVAR = 0x001E, + COMMAND_IS_INT_LVAR_GREATER_THAN_INT_VAR = 0x001F, + COMMAND_IS_FLOAT_VAR_GREATER_THAN_NUMBER = 0x0020, + COMMAND_IS_FLOAT_LVAR_GREATER_THAN_NUMBER = 0x0021, + COMMAND_IS_NUMBER_GREATER_THAN_FLOAT_VAR = 0x0022, + COMMAND_IS_NUMBER_GREATER_THAN_FLOAT_LVAR = 0x0023, + COMMAND_IS_FLOAT_VAR_GREATER_THAN_FLOAT_VAR = 0x0024, + COMMAND_IS_FLOAT_LVAR_GREATER_THAN_FLOAT_LVAR = 0x0025, + COMMAND_IS_FLOAT_VAR_GREATER_THAN_FLOAT_LVAR = 0x0026, + COMMAND_IS_FLOAT_LVAR_GREATER_THAN_FLOAT_VAR = 0x0027, + COMMAND_IS_INT_VAR_GREATER_OR_EQUAL_TO_NUMBER = 0x0028, + COMMAND_IS_INT_LVAR_GREATER_OR_EQUAL_TO_NUMBER = 0x0029, + COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_INT_VAR = 0x002A, + COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_INT_LVAR = 0x002B, + COMMAND_IS_INT_VAR_GREATER_OR_EQUAL_TO_INT_VAR = 0x002C, + COMMAND_IS_INT_LVAR_GREATER_OR_EQUAL_TO_INT_LVAR = 0x002D, + COMMAND_IS_INT_VAR_GREATER_OR_EQUAL_TO_INT_LVAR = 0x002E, + COMMAND_IS_INT_LVAR_GREATER_OR_EQUAL_TO_INT_VAR = 0x002F, + COMMAND_IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_NUMBER = 0x0030, + COMMAND_IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_NUMBER = 0x0031, + COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_FLOAT_VAR = 0x0032, + COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_FLOAT_LVAR = 0x0033, + COMMAND_IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_FLOAT_VAR = 0x0034, + COMMAND_IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_FLOAT_LVAR = 0x0035, + COMMAND_IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_FLOAT_LVAR = 0x0036, + COMMAND_IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_FLOAT_VAR = 0x0037, + COMMAND_IS_INT_VAR_EQUAL_TO_NUMBER = 0x0038, + COMMAND_IS_INT_LVAR_EQUAL_TO_NUMBER = 0x0039, + COMMAND_IS_INT_VAR_EQUAL_TO_INT_VAR = 0x003A, + COMMAND_IS_INT_LVAR_EQUAL_TO_INT_LVAR = 0x003B, + COMMAND_IS_INT_VAR_EQUAL_TO_INT_LVAR = 0x003C, + COMMAND_IS_INT_VAR_NOT_EQUAL_TO_NUMBER = 0x003D, + COMMAND_IS_INT_LVAR_NOT_EQUAL_TO_NUMBER = 0x003E, + COMMAND_IS_INT_VAR_NOT_EQUAL_TO_INT_VAR = 0x003F, + COMMAND_IS_INT_LVAR_NOT_EQUAL_TO_INT_LVAR = 0x0040, + COMMAND_IS_INT_VAR_NOT_EQUAL_TO_INT_LVAR = 0x0041, + COMMAND_IS_FLOAT_VAR_EQUAL_TO_NUMBER = 0x0042, + COMMAND_IS_FLOAT_LVAR_EQUAL_TO_NUMBER = 0x0043, + COMMAND_IS_FLOAT_VAR_EQUAL_TO_FLOAT_VAR = 0x0044, + COMMAND_IS_FLOAT_LVAR_EQUAL_TO_FLOAT_LVAR = 0x0045, + COMMAND_IS_FLOAT_VAR_EQUAL_TO_FLOAT_LVAR = 0x0046, + COMMAND_IS_FLOAT_VAR_NOT_EQUAL_TO_NUMBER = 0x0047, + COMMAND_IS_FLOAT_LVAR_NOT_EQUAL_TO_NUMBER = 0x0048, + COMMAND_IS_FLOAT_VAR_NOT_EQUAL_TO_FLOAT_VAR = 0x0049, + COMMAND_IS_FLOAT_LVAR_NOT_EQUAL_TO_FLOAT_LVAR = 0x004A, + COMMAND_IS_FLOAT_VAR_NOT_EQUAL_TO_FLOAT_LVAR = 0x004B, + COMMAND_GOTO_IF_TRUE = 0x004C, + COMMAND_GOTO_IF_FALSE = 0x004D, + COMMAND_TERMINATE_THIS_SCRIPT = 0x004E, + COMMAND_START_NEW_SCRIPT = 0x004F, + COMMAND_GOSUB = 0x0050, + COMMAND_RETURN = 0x0051, + COMMAND_LINE = 0x0052, + COMMAND_CREATE_PLAYER = 0x0053, + COMMAND_GET_PLAYER_COORDINATES = 0x0054, + COMMAND_SET_PLAYER_COORDINATES = 0x0055, + COMMAND_IS_PLAYER_IN_AREA_2D = 0x0056, + COMMAND_IS_PLAYER_IN_AREA_3D = 0x0057, + COMMAND_ADD_INT_VAR_TO_INT_VAR = 0x0058, + COMMAND_ADD_FLOAT_VAR_TO_FLOAT_VAR = 0x0059, + COMMAND_ADD_INT_LVAR_TO_INT_LVAR = 0x005A, + COMMAND_ADD_FLOAT_LVAR_TO_FLOAT_LVAR = 0x005B, + COMMAND_ADD_INT_VAR_TO_INT_LVAR = 0x005C, + COMMAND_ADD_FLOAT_VAR_TO_FLOAT_LVAR = 0x005D, + COMMAND_ADD_INT_LVAR_TO_INT_VAR = 0x005E, + COMMAND_ADD_FLOAT_LVAR_TO_FLOAT_VAR = 0x005F, + COMMAND_SUB_INT_VAR_FROM_INT_VAR = 0x0060, + COMMAND_SUB_FLOAT_VAR_FROM_FLOAT_VAR = 0x0061, + COMMAND_SUB_INT_LVAR_FROM_INT_LVAR = 0x0062, + COMMAND_SUB_FLOAT_LVAR_FROM_FLOAT_LVAR = 0x0063, + COMMAND_SUB_INT_VAR_FROM_INT_LVAR = 0x0064, + COMMAND_SUB_FLOAT_VAR_FROM_FLOAT_LVAR = 0x0065, + COMMAND_SUB_INT_LVAR_FROM_INT_VAR = 0x0066, + COMMAND_SUB_FLOAT_LVAR_FROM_FLOAT_VAR = 0x0067, + COMMAND_MULT_INT_VAR_BY_INT_VAR = 0x0068, + COMMAND_MULT_FLOAT_VAR_BY_FLOAT_VAR = 0x0069, + COMMAND_MULT_INT_LVAR_BY_INT_LVAR = 0x006A, + COMMAND_MULT_FLOAT_LVAR_BY_FLOAT_LVAR = 0x006B, + COMMAND_MULT_INT_VAR_BY_INT_LVAR = 0x006C, + COMMAND_MULT_FLOAT_VAR_BY_FLOAT_LVAR = 0x006D, + COMMAND_MULT_INT_LVAR_BY_INT_VAR = 0x006E, + COMMAND_MULT_FLOAT_LVAR_BY_FLOAT_VAR = 0x006F, + COMMAND_DIV_INT_VAR_BY_INT_VAR = 0x0070, + COMMAND_DIV_FLOAT_VAR_BY_FLOAT_VAR = 0x0071, + COMMAND_DIV_INT_LVAR_BY_INT_LVAR = 0x0072, + COMMAND_DIV_FLOAT_LVAR_BY_FLOAT_LVAR = 0x0073, + COMMAND_DIV_INT_VAR_BY_INT_LVAR = 0x0074, + COMMAND_DIV_FLOAT_VAR_BY_FLOAT_LVAR = 0x0075, + COMMAND_DIV_INT_LVAR_BY_INT_VAR = 0x0076, + COMMAND_DIV_FLOAT_LVAR_BY_FLOAT_VAR = 0x0077, + COMMAND_ADD_TIMED_VAL_TO_FLOAT_VAR = 0x0078, + COMMAND_ADD_TIMED_VAL_TO_FLOAT_LVAR = 0x0079, + COMMAND_ADD_TIMED_FLOAT_VAR_TO_FLOAT_VAR = 0x007A, + COMMAND_ADD_TIMED_FLOAT_LVAR_TO_FLOAT_LVAR = 0x007B, + COMMAND_ADD_TIMED_FLOAT_VAR_TO_FLOAT_LVAR = 0x007C, + COMMAND_ADD_TIMED_FLOAT_LVAR_TO_FLOAT_VAR = 0x007D, + COMMAND_SUB_TIMED_VAL_FROM_FLOAT_VAR = 0x007E, + COMMAND_SUB_TIMED_VAL_FROM_FLOAT_LVAR = 0x007F, + COMMAND_SUB_TIMED_FLOAT_VAR_FROM_FLOAT_VAR = 0x0080, + COMMAND_SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_LVAR = 0x0081, + COMMAND_SUB_TIMED_FLOAT_VAR_FROM_FLOAT_LVAR = 0x0082, + COMMAND_SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_VAR = 0x0083, + COMMAND_SET_VAR_INT_TO_VAR_INT = 0x0084, + COMMAND_SET_LVAR_INT_TO_LVAR_INT = 0x0085, + COMMAND_SET_VAR_FLOAT_TO_VAR_FLOAT = 0x0086, + COMMAND_SET_LVAR_FLOAT_TO_LVAR_FLOAT = 0x0087, + COMMAND_SET_VAR_FLOAT_TO_LVAR_FLOAT = 0x0088, + COMMAND_SET_LVAR_FLOAT_TO_VAR_FLOAT = 0x0089, + COMMAND_SET_VAR_INT_TO_LVAR_INT = 0x008A, + COMMAND_SET_LVAR_INT_TO_VAR_INT = 0x008B, + COMMAND_CSET_VAR_INT_TO_VAR_FLOAT = 0x008C, + COMMAND_CSET_VAR_FLOAT_TO_VAR_INT = 0x008D, + COMMAND_CSET_LVAR_INT_TO_VAR_FLOAT = 0x008E, + COMMAND_CSET_LVAR_FLOAT_TO_VAR_INT = 0x008F, + COMMAND_CSET_VAR_INT_TO_LVAR_FLOAT = 0x0090, + COMMAND_CSET_VAR_FLOAT_TO_LVAR_INT = 0x0091, + COMMAND_CSET_LVAR_INT_TO_LVAR_FLOAT = 0x0092, + COMMAND_CSET_LVAR_FLOAT_TO_LVAR_INT = 0x0093, + COMMAND_ABS_VAR_INT = 0x0094, + COMMAND_ABS_LVAR_INT = 0x0095, + COMMAND_ABS_VAR_FLOAT = 0x0096, + COMMAND_ABS_LVAR_FLOAT = 0x0097, + COMMAND_GENERATE_RANDOM_FLOAT = 0x0098, + COMMAND_GENERATE_RANDOM_INT = 0x0099, + COMMAND_CREATE_CHAR = 0x009A, + COMMAND_DELETE_CHAR = 0x009B, + COMMAND_CHAR_WANDER_DIR = 0x009C, + COMMAND_CHAR_WANDER_RANGE = 0x009D, + COMMAND_CHAR_FOLLOW_PATH = 0x009E, + COMMAND_CHAR_SET_IDLE = 0x009F, + COMMAND_GET_CHAR_COORDINATES = 0x00A0, + COMMAND_SET_CHAR_COORDINATES = 0x00A1, + COMMAND_IS_CHAR_STILL_ALIVE = 0x00A2, + COMMAND_IS_CHAR_IN_AREA_2D = 0x00A3, + COMMAND_IS_CHAR_IN_AREA_3D = 0x00A4, + COMMAND_CREATE_CAR = 0x00A5, + COMMAND_DELETE_CAR = 0x00A6, + COMMAND_CAR_GOTO_COORDINATES = 0x00A7, + COMMAND_CAR_WANDER_RANDOMLY = 0x00A8, + COMMAND_CAR_SET_IDLE = 0x00A9, + COMMAND_GET_CAR_COORDINATES = 0x00AA, + COMMAND_SET_CAR_COORDINATES = 0x00AB, + COMMAND_IS_CAR_STILL_ALIVE = 0x00AC, + COMMAND_SET_CAR_CRUISE_SPEED = 0x00AD, + COMMAND_SET_CAR_DRIVING_STYLE = 0x00AE, + COMMAND_SET_CAR_MISSION = 0x00AF, + COMMAND_IS_CAR_IN_AREA_2D = 0x00B0, + COMMAND_IS_CAR_IN_AREA_3D = 0x00B1, + COMMAND_SPECIAL_0 = 0x00B2, + COMMAND_SPECIAL_1 = 0x00B3, + COMMAND_SPECIAL_2 = 0x00B4, + COMMAND_SPECIAL_3 = 0x00B5, + COMMAND_SPECIAL_4 = 0x00B6, + COMMAND_SPECIAL_5 = 0x00B7, + COMMAND_SPECIAL_6 = 0x00B8, + COMMAND_SPECIAL_7 = 0x00B9, + COMMAND_PRINT_BIG = 0x00BA, + COMMAND_PRINT = 0x00BB, + COMMAND_PRINT_NOW = 0x00BC, + COMMAND_PRINT_SOON = 0x00BD, + COMMAND_CLEAR_PRINTS = 0x00BE, + COMMAND_GET_TIME_OF_DAY = 0x00BF, + COMMAND_SET_TIME_OF_DAY = 0x00C0, + COMMAND_GET_MINUTES_TO_TIME_OF_DAY = 0x00C1, + COMMAND_IS_POINT_ON_SCREEN = 0x00C2, + COMMAND_DEBUG_ON = 0x00C3, + COMMAND_DEBUG_OFF = 0x00C4, + COMMAND_RETURN_TRUE = 0x00C5, + COMMAND_RETURN_FALSE = 0x00C6, + COMMAND_VAR_INT = 0x00C7, + COMMAND_VAR_FLOAT = 0x00C8, + COMMAND_LVAR_INT = 0x00C9, + COMMAND_LVAR_FLOAT = 0x00CA, + COMMAND_START_SCOPE = 0x00CB, + COMMAND_END_SCOPE = 0x00CC, + COMMAND_REPEAT = 0x00CD, + COMMAND_ENDREPEAT = 0x00CE, + COMMAND_IF = 0x00CF, + COMMAND_IFNOT = 0x00D0, + COMMAND_ELSE = 0x00D1, + COMMAND_ENDIF = 0x00D2, + COMMAND_WHILE = 0x00D3, + COMMAND_WHILENOT = 0x00D4, + COMMAND_ENDWHILE = 0x00D5, + COMMAND_ANDOR = 0x00D6, + COMMAND_LAUNCH_MISSION = 0x00D7, + COMMAND_MISSION_HAS_FINISHED = 0x00D8, + COMMAND_STORE_CAR_CHAR_IS_IN = 0x00D9, + COMMAND_STORE_CAR_PLAYER_IS_IN = 0x00DA, + COMMAND_IS_CHAR_IN_CAR = 0x00DB, + COMMAND_IS_PLAYER_IN_CAR = 0x00DC, + COMMAND_IS_CHAR_IN_MODEL = 0x00DD, + COMMAND_IS_PLAYER_IN_MODEL = 0x00DE, + COMMAND_IS_CHAR_IN_ANY_CAR = 0x00DF, + COMMAND_IS_PLAYER_IN_ANY_CAR = 0x00E0, + COMMAND_IS_BUTTON_PRESSED = 0x00E1, + COMMAND_GET_PAD_STATE = 0x00E2, + COMMAND_LOCATE_PLAYER_ANY_MEANS_2D = 0x00E3, + COMMAND_LOCATE_PLAYER_ON_FOOT_2D = 0x00E4, + COMMAND_LOCATE_PLAYER_IN_CAR_2D = 0x00E5, + COMMAND_LOCATE_STOPPED_PLAYER_ANY_MEANS_2D = 0x00E6, + COMMAND_LOCATE_STOPPED_PLAYER_ON_FOOT_2D = 0x00E7, + COMMAND_LOCATE_STOPPED_PLAYER_IN_CAR_2D = 0x00E8, + COMMAND_LOCATE_PLAYER_ANY_MEANS_CHAR_2D = 0x00E9, + COMMAND_LOCATE_PLAYER_ON_FOOT_CHAR_2D = 0x00EA, + COMMAND_LOCATE_PLAYER_IN_CAR_CHAR_2D = 0x00EB, + COMMAND_LOCATE_CHAR_ANY_MEANS_2D = 0x00EC, + COMMAND_LOCATE_CHAR_ON_FOOT_2D = 0x00ED, + COMMAND_LOCATE_CHAR_IN_CAR_2D = 0x00EE, + COMMAND_LOCATE_STOPPED_CHAR_ANY_MEANS_2D = 0x00EF, + COMMAND_LOCATE_STOPPED_CHAR_ON_FOOT_2D = 0x00F0, + COMMAND_LOCATE_STOPPED_CHAR_IN_CAR_2D = 0x00F1, + COMMAND_LOCATE_CHAR_ANY_MEANS_CHAR_2D = 0x00F2, + COMMAND_LOCATE_CHAR_ON_FOOT_CHAR_2D = 0x00F3, + COMMAND_LOCATE_CHAR_IN_CAR_CHAR_2D = 0x00F4, + COMMAND_LOCATE_PLAYER_ANY_MEANS_3D = 0x00F5, + COMMAND_LOCATE_PLAYER_ON_FOOT_3D = 0x00F6, + COMMAND_LOCATE_PLAYER_IN_CAR_3D = 0x00F7, + COMMAND_LOCATE_STOPPED_PLAYER_ANY_MEANS_3D = 0x00F8, + COMMAND_LOCATE_STOPPED_PLAYER_ON_FOOT_3D = 0x00F9, + COMMAND_LOCATE_STOPPED_PLAYER_IN_CAR_3D = 0x00FA, + COMMAND_LOCATE_PLAYER_ANY_MEANS_CHAR_3D = 0x00FB, + COMMAND_LOCATE_PLAYER_ON_FOOT_CHAR_3D = 0x00FC, + COMMAND_LOCATE_PLAYER_IN_CAR_CHAR_3D = 0x00FD, + COMMAND_LOCATE_CHAR_ANY_MEANS_3D = 0x00FE, + COMMAND_LOCATE_CHAR_ON_FOOT_3D = 0x00FF, + COMMAND_LOCATE_CHAR_IN_CAR_3D = 0x0100, + COMMAND_LOCATE_STOPPED_CHAR_ANY_MEANS_3D = 0x0101, + COMMAND_LOCATE_STOPPED_CHAR_ON_FOOT_3D = 0x0102, + COMMAND_LOCATE_STOPPED_CHAR_IN_CAR_3D = 0x0103, + COMMAND_LOCATE_CHAR_ANY_MEANS_CHAR_3D = 0x0104, + COMMAND_LOCATE_CHAR_ON_FOOT_CHAR_3D = 0x0105, + COMMAND_LOCATE_CHAR_IN_CAR_CHAR_3D = 0x0106, + COMMAND_CREATE_OBJECT = 0x0107, + COMMAND_DELETE_OBJECT = 0x0108, + COMMAND_ADD_SCORE = 0x0109, + COMMAND_IS_SCORE_GREATER = 0x010A, + COMMAND_STORE_SCORE = 0x010B, + COMMAND_GIVE_REMOTE_CONTROLLED_CAR_TO_PLAYER = 0x010C, + COMMAND_ALTER_WANTED_LEVEL = 0x010D, + COMMAND_ALTER_WANTED_LEVEL_NO_DROP = 0x010E, + COMMAND_IS_WANTED_LEVEL_GREATER = 0x010F, + COMMAND_CLEAR_WANTED_LEVEL = 0x0110, + COMMAND_SET_DEATHARREST_STATE = 0x0111, + COMMAND_HAS_DEATHARREST_BEEN_EXECUTED = 0x0112, + COMMAND_ADD_AMMO_TO_PLAYER = 0x0113, + COMMAND_ADD_AMMO_TO_CHAR = 0x0114, + COMMAND_ADD_AMMO_TO_CAR = 0x0115, + COMMAND_IS_PLAYER_STILL_ALIVE = 0x0116, + COMMAND_IS_PLAYER_DEAD = 0x0117, + COMMAND_IS_CHAR_DEAD = 0x0118, + COMMAND_IS_CAR_DEAD = 0x0119, + COMMAND_SET_CHAR_THREAT_SEARCH = 0x011A, + COMMAND_SET_CHAR_THREAT_REACTION = 0x011B, + COMMAND_SET_CHAR_OBJ_NO_OBJ = 0x011C, + COMMAND_ORDER_DRIVER_OUT_OF_CAR = 0x011D, + COMMAND_ORDER_CHAR_TO_DRIVE_CAR = 0x011E, + COMMAND_ADD_PATROL_POINT = 0x011F, + COMMAND_IS_PLAYER_IN_GANGZONE = 0x0120, + COMMAND_IS_PLAYER_IN_ZONE = 0x0121, + COMMAND_IS_PLAYER_PRESSING_HORN = 0x0122, + COMMAND_HAS_CHAR_SPOTTED_PLAYER = 0x0123, + COMMAND_ORDER_CHAR_TO_BACKDOOR = 0x0124, + COMMAND_ADD_CHAR_TO_GANG = 0x0125, + COMMAND_IS_CHAR_OBJECTIVE_PASSED = 0x0126, + COMMAND_SET_CHAR_DRIVE_AGGRESSION = 0x0127, + COMMAND_SET_CHAR_MAX_DRIVESPEED = 0x0128, + COMMAND_CREATE_CHAR_INSIDE_CAR = 0x0129, + COMMAND_WARP_PLAYER_FROM_CAR_TO_COORD = 0x012A, + COMMAND_MAKE_CHAR_DO_NOTHING = 0x012B, + COMMAND_SET_CHAR_INVINCIBLE = 0x012C, + COMMAND_SET_PLAYER_INVINCIBLE = 0x012D, + COMMAND_SET_CHAR_GRAPHIC_TYPE = 0x012E, + COMMAND_SET_PLAYER_GRAPHIC_TYPE = 0x012F, + COMMAND_HAS_PLAYER_BEEN_ARRESTED = 0x0130, + COMMAND_STOP_CHAR_DRIVING = 0x0131, + COMMAND_KILL_CHAR = 0x0132, + COMMAND_SET_FAVOURITE_CAR_MODEL_FOR_CHAR = 0x0133, + COMMAND_SET_CHAR_OCCUPATION = 0x0134, + COMMAND_CHANGE_CAR_LOCK = 0x0135, + COMMAND_SHAKE_CAM_WITH_POINT = 0x0136, + COMMAND_IS_CAR_MODEL = 0x0137, + COMMAND_IS_CAR_REMAP = 0x0138, + COMMAND_HAS_CAR_JUST_SUNK = 0x0139, + COMMAND_SET_CAR_NO_COLLIDE = 0x013A, + COMMAND_IS_CAR_DEAD_IN_AREA_2D = 0x013B, + COMMAND_IS_CAR_DEAD_IN_AREA_3D = 0x013C, + COMMAND_IS_TRAILER_ATTACHED = 0x013D, + COMMAND_IS_CAR_ON_TRAILER = 0x013E, + COMMAND_HAS_CAR_GOT_WEAPON = 0x013F, + COMMAND_PARK = 0x0140, + COMMAND_HAS_PARK_FINISHED = 0x0141, + COMMAND_KILL_ALL_PASSENGERS = 0x0142, + COMMAND_SET_CAR_BULLETPROOF = 0x0143, + COMMAND_SET_CAR_FLAMEPROOF = 0x0144, + COMMAND_SET_CAR_ROCKETPROOF = 0x0145, + COMMAND_IS_CARBOMB_ACTIVE = 0x0146, + COMMAND_GIVE_CAR_ALARM = 0x0147, + COMMAND_PUT_CAR_ON_TRAILER = 0x0148, + COMMAND_IS_CAR_CRUSHED = 0x0149, + COMMAND_CREATE_GANG_CAR = 0x014A, + COMMAND_CREATE_CAR_GENERATOR = 0x014B, + COMMAND_SWITCH_CAR_GENERATOR = 0x014C, + COMMAND_ADD_PAGER_MESSAGE = 0x014D, + COMMAND_DISPLAY_ONSCREEN_TIMER = 0x014E, + COMMAND_CLEAR_ONSCREEN_TIMER = 0x014F, + COMMAND_DISPLAY_ONSCREEN_COUNTER = 0x0150, + COMMAND_CLEAR_ONSCREEN_COUNTER = 0x0151, + COMMAND_SET_ZONE_CAR_INFO = 0x0152, + COMMAND_IS_CHAR_IN_GANG_ZONE = 0x0153, + COMMAND_IS_CHAR_IN_ZONE = 0x0154, + COMMAND_SET_CAR_DENSITY = 0x0155, + COMMAND_SET_PED_DENSITY = 0x0156, + COMMAND_POINT_CAMERA_AT_PLAYER = 0x0157, + COMMAND_POINT_CAMERA_AT_CAR = 0x0158, + COMMAND_POINT_CAMERA_AT_CHAR = 0x0159, + COMMAND_RESTORE_CAMERA = 0x015A, + COMMAND_SHAKE_PAD = 0x015B, + COMMAND_SET_ZONE_PED_INFO = 0x015C, + COMMAND_SET_TIME_SCALE = 0x015D, + COMMAND_IS_CAR_IN_AIR = 0x015E, + COMMAND_SET_FIXED_CAMERA_POSITION = 0x015F, + COMMAND_POINT_CAMERA_AT_POINT = 0x0160, + COMMAND_ADD_BLIP_FOR_CAR_OLD = 0x0161, + COMMAND_ADD_BLIP_FOR_CHAR_OLD = 0x0162, + COMMAND_ADD_BLIP_FOR_OBJECT_OLD = 0x0163, + COMMAND_REMOVE_BLIP = 0x0164, + COMMAND_CHANGE_BLIP_COLOUR = 0x0165, + COMMAND_DIM_BLIP = 0x0166, + COMMAND_ADD_BLIP_FOR_COORD_OLD = 0x0167, + COMMAND_CHANGE_BLIP_SCALE = 0x0168, + COMMAND_SET_FADING_COLOUR = 0x0169, + COMMAND_DO_FADE = 0x016A, + COMMAND_GET_FADING_STATUS = 0x016B, + COMMAND_ADD_HOSPITAL_RESTART = 0x016C, + COMMAND_ADD_POLICE_RESTART = 0x016D, + COMMAND_OVERRIDE_NEXT_RESTART = 0x016E, + COMMAND_DRAW_SHADOW = 0x016F, + COMMAND_GET_PLAYER_HEADING = 0x0170, + COMMAND_SET_PLAYER_HEADING = 0x0171, + COMMAND_GET_CHAR_HEADING = 0x0172, + COMMAND_SET_CHAR_HEADING = 0x0173, + COMMAND_GET_CAR_HEADING = 0x0174, + COMMAND_SET_CAR_HEADING = 0x0175, + COMMAND_GET_OBJECT_HEADING = 0x0176, + COMMAND_SET_OBJECT_HEADING = 0x0177, + COMMAND_IS_PLAYER_TOUCHING_OBJECT = 0x0178, + COMMAND_IS_CHAR_TOUCHING_OBJECT = 0x0179, + COMMAND_SET_PLAYER_AMMO = 0x017A, + COMMAND_SET_CHAR_AMMO = 0x017B, + COMMAND_SET_CAR_AMMO = 0x017C, + COMMAND_LOAD_CAMERA_SPLINE = 0x017D, + COMMAND_MOVE_CAMERA_ALONG_SPLINE = 0x017E, + COMMAND_GET_CAMERA_POSITION_ALONG_SPLINE = 0x017F, + COMMAND_DECLARE_MISSION_FLAG = 0x0180, + COMMAND_DECLARE_MISSION_FLAG_FOR_CONTACT = 0x0181, + COMMAND_DECLARE_BASE_BRIEF_ID_FOR_CONTACT = 0x0182, + COMMAND_IS_PLAYER_HEALTH_GREATER = 0x0183, + COMMAND_IS_CHAR_HEALTH_GREATER = 0x0184, + COMMAND_IS_CAR_HEALTH_GREATER = 0x0185, + COMMAND_ADD_BLIP_FOR_CAR = 0x0186, + COMMAND_ADD_BLIP_FOR_CHAR = 0x0187, + COMMAND_ADD_BLIP_FOR_OBJECT = 0x0188, + COMMAND_ADD_BLIP_FOR_CONTACT_POINT = 0x0189, + COMMAND_ADD_BLIP_FOR_COORD = 0x018A, + COMMAND_CHANGE_BLIP_DISPLAY = 0x018B, + COMMAND_ADD_ONE_OFF_SOUND = 0x018C, + COMMAND_ADD_CONTINUOUS_SOUND = 0x018D, + COMMAND_REMOVE_SOUND = 0x018E, + COMMAND_IS_CAR_STUCK_ON_ROOF = 0x018F, + COMMAND_ADD_UPSIDEDOWN_CAR_CHECK = 0x0190, + COMMAND_REMOVE_UPSIDEDOWN_CAR_CHECK = 0x0191, + COMMAND_SET_CHAR_OBJ_WAIT_ON_FOOT = 0x0192, + COMMAND_SET_CHAR_OBJ_FLEE_ON_FOOT_TILL_SAFE = 0x0193, + COMMAND_SET_CHAR_OBJ_GUARD_SPOT = 0x0194, + COMMAND_SET_CHAR_OBJ_GUARD_AREA = 0x0195, + COMMAND_SET_CHAR_OBJ_WAIT_IN_CAR = 0x0196, + COMMAND_IS_PLAYER_IN_AREA_ON_FOOT_2D = 0x0197, + COMMAND_IS_PLAYER_IN_AREA_IN_CAR_2D = 0x0198, + COMMAND_IS_PLAYER_STOPPED_IN_AREA_2D = 0x0199, + COMMAND_IS_PLAYER_STOPPED_IN_AREA_ON_FOOT_2D = 0x019A, + COMMAND_IS_PLAYER_STOPPED_IN_AREA_IN_CAR_2D = 0x019B, + COMMAND_IS_PLAYER_IN_AREA_ON_FOOT_3D = 0x019C, + COMMAND_IS_PLAYER_IN_AREA_IN_CAR_3D = 0x019D, + COMMAND_IS_PLAYER_STOPPED_IN_AREA_3D = 0x019E, + COMMAND_IS_PLAYER_STOPPED_IN_AREA_ON_FOOT_3D = 0x019F, + COMMAND_IS_PLAYER_STOPPED_IN_AREA_IN_CAR_3D = 0x01A0, + COMMAND_IS_CHAR_IN_AREA_ON_FOOT_2D = 0x01A1, + COMMAND_IS_CHAR_IN_AREA_IN_CAR_2D = 0x01A2, + COMMAND_IS_CHAR_STOPPED_IN_AREA_2D = 0x01A3, + COMMAND_IS_CHAR_STOPPED_IN_AREA_ON_FOOT_2D = 0x01A4, + COMMAND_IS_CHAR_STOPPED_IN_AREA_IN_CAR_2D = 0x01A5, + COMMAND_IS_CHAR_IN_AREA_ON_FOOT_3D = 0x01A6, + COMMAND_IS_CHAR_IN_AREA_IN_CAR_3D = 0x01A7, + COMMAND_IS_CHAR_STOPPED_IN_AREA_3D = 0x01A8, + COMMAND_IS_CHAR_STOPPED_IN_AREA_ON_FOOT_3D = 0x01A9, + COMMAND_IS_CHAR_STOPPED_IN_AREA_IN_CAR_3D = 0x01AA, + COMMAND_IS_CAR_STOPPED_IN_AREA_2D = 0x01AB, + COMMAND_IS_CAR_STOPPED_IN_AREA_3D = 0x01AC, + COMMAND_LOCATE_CAR_2D = 0x01AD, + COMMAND_LOCATE_STOPPED_CAR_2D = 0x01AE, + COMMAND_LOCATE_CAR_3D = 0x01AF, + COMMAND_LOCATE_STOPPED_CAR_3D = 0x01B0, + COMMAND_GIVE_WEAPON_TO_PLAYER = 0x01B1, + COMMAND_GIVE_WEAPON_TO_CHAR = 0x01B2, + COMMAND_GIVE_WEAPON_TO_CAR = 0x01B3, + COMMAND_SET_PLAYER_CONTROL = 0x01B4, + COMMAND_FORCE_WEATHER = 0x01B5, + COMMAND_FORCE_WEATHER_NOW = 0x01B6, + COMMAND_RELEASE_WEATHER = 0x01B7, + COMMAND_SET_CURRENT_PLAYER_WEAPON = 0x01B8, + COMMAND_SET_CURRENT_CHAR_WEAPON = 0x01B9, + COMMAND_SET_CURRENT_CAR_WEAPON = 0x01BA, + COMMAND_GET_OBJECT_COORDINATES = 0x01BB, + COMMAND_SET_OBJECT_COORDINATES = 0x01BC, + COMMAND_GET_GAME_TIMER = 0x01BD, + COMMAND_TURN_CHAR_TO_FACE_COORD = 0x01BE, + COMMAND_TURN_PLAYER_TO_FACE_COORD = 0x01BF, + COMMAND_STORE_WANTED_LEVEL = 0x01C0, + COMMAND_IS_CAR_STOPPED = 0x01C1, + COMMAND_MARK_CHAR_AS_NO_LONGER_NEEDED = 0x01C2, + COMMAND_MARK_CAR_AS_NO_LONGER_NEEDED = 0x01C3, + COMMAND_MARK_OBJECT_AS_NO_LONGER_NEEDED = 0x01C4, + COMMAND_DONT_REMOVE_CHAR = 0x01C5, + COMMAND_DONT_REMOVE_CAR = 0x01C6, + COMMAND_DONT_REMOVE_OBJECT = 0x01C7, + COMMAND_CREATE_CHAR_AS_PASSENGER = 0x01C8, + COMMAND_SET_CHAR_OBJ_KILL_CHAR_ON_FOOT = 0x01C9, + COMMAND_SET_CHAR_OBJ_KILL_PLAYER_ON_FOOT = 0x01CA, + COMMAND_SET_CHAR_OBJ_KILL_CHAR_ANY_MEANS = 0x01CB, + COMMAND_SET_CHAR_OBJ_KILL_PLAYER_ANY_MEANS = 0x01CC, + COMMAND_SET_CHAR_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE = 0x01CD, + COMMAND_SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE = 0x01CE, + COMMAND_SET_CHAR_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS = 0x01CF, + COMMAND_SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS = 0x01D0, + COMMAND_SET_CHAR_OBJ_GOTO_CHAR_ON_FOOT = 0x01D1, + COMMAND_SET_CHAR_OBJ_GOTO_PLAYER_ON_FOOT = 0x01D2, + COMMAND_SET_CHAR_OBJ_LEAVE_CAR = 0x01D3, + COMMAND_SET_CHAR_OBJ_ENTER_CAR_AS_PASSENGER = 0x01D4, + COMMAND_SET_CHAR_OBJ_ENTER_CAR_AS_DRIVER = 0x01D5, + COMMAND_SET_CHAR_OBJ_FOLLOW_CAR_IN_CAR = 0x01D6, + COMMAND_SET_CHAR_OBJ_FIRE_AT_OBJECT_FROM_VEHICLE = 0x01D7, + COMMAND_SET_CHAR_OBJ_DESTROY_OBJECT = 0x01D8, + COMMAND_SET_CHAR_OBJ_DESTROY_CAR = 0x01D9, + COMMAND_SET_CHAR_OBJ_GOTO_AREA_ON_FOOT = 0x01DA, + COMMAND_SET_CHAR_OBJ_GOTO_AREA_IN_CAR = 0x01DB, + COMMAND_SET_CHAR_OBJ_FOLLOW_CAR_ON_FOOT_WITH_OFFSET = 0x01DC, + COMMAND_SET_CHAR_OBJ_GUARD_ATTACK = 0x01DD, + COMMAND_SET_CHAR_AS_LEADER = 0x01DE, + COMMAND_SET_PLAYER_AS_LEADER = 0x01DF, + COMMAND_LEAVE_GROUP = 0x01E0, + COMMAND_SET_CHAR_OBJ_FOLLOW_ROUTE = 0x01E1, + COMMAND_ADD_ROUTE_POINT = 0x01E2, + COMMAND_PRINT_WITH_NUMBER_BIG = 0x01E3, + COMMAND_PRINT_WITH_NUMBER = 0x01E4, + COMMAND_PRINT_WITH_NUMBER_NOW = 0x01E5, + COMMAND_PRINT_WITH_NUMBER_SOON = 0x01E6, + COMMAND_SWITCH_ROADS_ON = 0x01E7, + COMMAND_SWITCH_ROADS_OFF = 0x01E8, + COMMAND_GET_NUMBER_OF_PASSENGERS = 0x01E9, + COMMAND_GET_MAXIMUM_NUMBER_OF_PASSENGERS = 0x01EA, + COMMAND_SET_CAR_DENSITY_MULTIPLIER = 0x01EB, + COMMAND_SET_CAR_HEAVY = 0x01EC, + COMMAND_CLEAR_CHAR_THREAT_SEARCH = 0x01ED, + COMMAND_ACTIVATE_CRANE = 0x01EE, + COMMAND_DEACTIVATE_CRANE = 0x01EF, + COMMAND_SET_MAX_WANTED_LEVEL = 0x01F0, + COMMAND_SAVE_VAR_INT = 0x01F1, + COMMAND_SAVE_VAR_FLOAT = 0x01F2, + COMMAND_IS_CAR_IN_AIR_PROPER = 0x01F3, + COMMAND_IS_CAR_UPSIDEDOWN = 0x01F4, + COMMAND_GET_PLAYER_CHAR = 0x01F5, + COMMAND_CANCEL_OVERRIDE_RESTART = 0x01F6, + COMMAND_SET_POLICE_IGNORE_PLAYER = 0x01F7, + COMMAND_ADD_PAGER_MESSAGE_WITH_NUMBER = 0x01F8, + COMMAND_START_KILL_FRENZY = 0x01F9, + COMMAND_READ_KILL_FRENZY_STATUS = 0x01FA, + COMMAND_SQRT = 0x01FB, + COMMAND_LOCATE_PLAYER_ANY_MEANS_CAR_2D = 0x01FC, + COMMAND_LOCATE_PLAYER_ON_FOOT_CAR_2D = 0x01FD, + COMMAND_LOCATE_PLAYER_IN_CAR_CAR_2D = 0x01FE, + COMMAND_LOCATE_PLAYER_ANY_MEANS_CAR_3D = 0x01FF, + COMMAND_LOCATE_PLAYER_ON_FOOT_CAR_3D = 0x0200, + COMMAND_LOCATE_PLAYER_IN_CAR_CAR_3D = 0x0201, + COMMAND_LOCATE_CHAR_ANY_MEANS_CAR_2D = 0x0202, + COMMAND_LOCATE_CHAR_ON_FOOT_CAR_2D = 0x0203, + COMMAND_LOCATE_CHAR_IN_CAR_CAR_2D = 0x0204, + COMMAND_LOCATE_CHAR_ANY_MEANS_CAR_3D = 0x0205, + COMMAND_LOCATE_CHAR_ON_FOOT_CAR_3D = 0x0206, + COMMAND_LOCATE_CHAR_IN_CAR_CAR_3D = 0x0207, + COMMAND_GENERATE_RANDOM_FLOAT_IN_RANGE = 0x0208, + COMMAND_GENERATE_RANDOM_INT_IN_RANGE = 0x0209, + COMMAND_LOCK_CAR_DOORS = 0x020A, + COMMAND_EXPLODE_CAR = 0x020B, + COMMAND_ADD_EXPLOSION = 0x020C, + COMMAND_IS_CAR_UPRIGHT = 0x020D, + COMMAND_TURN_CHAR_TO_FACE_CHAR = 0x020E, + COMMAND_TURN_CHAR_TO_FACE_PLAYER = 0x020F, + COMMAND_TURN_PLAYER_TO_FACE_CHAR = 0x0210, + COMMAND_SET_CHAR_OBJ_GOTO_COORD_ON_FOOT = 0x0211, + COMMAND_SET_CHAR_OBJ_GOTO_COORD_IN_CAR = 0x0212, + COMMAND_CREATE_PICKUP = 0x0213, + COMMAND_HAS_PICKUP_BEEN_COLLECTED = 0x0214, + COMMAND_REMOVE_PICKUP = 0x0215, + COMMAND_SET_TAXI_LIGHTS = 0x0216, + COMMAND_PRINT_BIG_Q = 0x0217, + COMMAND_PRINT_WITH_NUMBER_BIG_Q = 0x0218, + COMMAND_SET_GARAGE = 0x0219, + COMMAND_SET_GARAGE_WITH_CAR_MODEL = 0x021A, + COMMAND_SET_TARGET_CAR_FOR_MISSION_GARAGE = 0x021B, + COMMAND_IS_CAR_IN_MISSION_GARAGE = 0x021C, + COMMAND_SET_FREE_BOMBS = 0x021D, + COMMAND_SET_POWERPOINT = 0x021E, + COMMAND_SET_ALL_TAXI_LIGHTS = 0x021F, + COMMAND_IS_CAR_ARMED_WITH_ANY_BOMB = 0x0220, + COMMAND_APPLY_BRAKES_TO_PLAYERS_CAR = 0x0221, + COMMAND_SET_PLAYER_HEALTH = 0x0222, + COMMAND_SET_CHAR_HEALTH = 0x0223, + COMMAND_SET_CAR_HEALTH = 0x0224, + COMMAND_GET_PLAYER_HEALTH = 0x0225, + COMMAND_GET_CHAR_HEALTH = 0x0226, + COMMAND_GET_CAR_HEALTH = 0x0227, + COMMAND_IS_CAR_ARMED_WITH_BOMB = 0x0228, + COMMAND_CHANGE_CAR_COLOUR = 0x0229, + COMMAND_SWITCH_PED_ROADS_ON = 0x022A, + COMMAND_SWITCH_PED_ROADS_OFF = 0x022B, + COMMAND_CHAR_LOOK_AT_CHAR_ALWAYS = 0x022C, + COMMAND_CHAR_LOOK_AT_PLAYER_ALWAYS = 0x022D, + COMMAND_PLAYER_LOOK_AT_CHAR_ALWAYS = 0x022E, + COMMAND_STOP_CHAR_LOOKING = 0x022F, + COMMAND_STOP_PLAYER_LOOKING = 0x0230, + COMMAND_SET_SCRIPT_POLICE_HELI_TO_CHASE_CHAR = 0x0231, + COMMAND_SET_GANG_ATTITUDE = 0x0232, + COMMAND_SET_GANG_GANG_ATTITUDE = 0x0233, + COMMAND_SET_GANG_PLAYER_ATTITUDE = 0x0234, + COMMAND_SET_GANG_PED_MODELS = 0x0235, + COMMAND_SET_GANG_CAR_MODEL = 0x0236, + COMMAND_SET_GANG_WEAPONS = 0x0237, + COMMAND_SET_CHAR_OBJ_RUN_TO_AREA = 0x0238, + COMMAND_SET_CHAR_OBJ_RUN_TO_COORD = 0x0239, + COMMAND_IS_PLAYER_TOUCHING_OBJECT_ON_FOOT = 0x023A, + COMMAND_IS_CHAR_TOUCHING_OBJECT_ON_FOOT = 0x023B, + COMMAND_LOAD_SPECIAL_CHARACTER = 0x023C, + COMMAND_HAS_SPECIAL_CHARACTER_LOADED = 0x023D, + COMMAND_FLASH_CAR = 0x023E, + COMMAND_FLASH_CHAR = 0x023F, + COMMAND_FLASH_OBJECT = 0x0240, + COMMAND_IS_PLAYER_IN_REMOTE_MODE = 0x0241, + COMMAND_ARM_CAR_WITH_BOMB = 0x0242, + COMMAND_SET_CHAR_PERSONALITY = 0x0243, + COMMAND_SET_CUTSCENE_OFFSET = 0x0244, + COMMAND_SET_ANIM_GROUP_FOR_CHAR = 0x0245, + COMMAND_SET_ANIM_GROUP_FOR_PLAYER = 0x0246, + COMMAND_REQUEST_MODEL = 0x0247, + COMMAND_HAS_MODEL_LOADED = 0x0248, + COMMAND_MARK_MODEL_AS_NO_LONGER_NEEDED = 0x0249, + COMMAND_GRAB_PHONE = 0x024A, + COMMAND_SET_REPEATED_PHONE_MESSAGE = 0x024B, + COMMAND_SET_PHONE_MESSAGE = 0x024C, + COMMAND_HAS_PHONE_DISPLAYED_MESSAGE = 0x024D, + COMMAND_TURN_PHONE_OFF = 0x024E, + COMMAND_DRAW_CORONA = 0x024F, + COMMAND_DRAW_LIGHT = 0x0250, + COMMAND_STORE_WEATHER = 0x0251, + COMMAND_RESTORE_WEATHER = 0x0252, + COMMAND_STORE_CLOCK = 0x0253, + COMMAND_RESTORE_CLOCK = 0x0254, + COMMAND_RESTART_CRITICAL_MISSION = 0x0255, + COMMAND_IS_PLAYER_PLAYING = 0x0256, + COMMAND_SET_COLL_OBJ_NO_OBJ = 0x0257, + COMMAND_SET_COLL_OBJ_WAIT_ON_FOOT = 0x0258, + COMMAND_SET_COLL_OBJ_FLEE_ON_FOOT_TILL_SAFE = 0x0259, + COMMAND_SET_COLL_OBJ_GUARD_SPOT = 0x025A, + COMMAND_SET_COLL_OBJ_GUARD_AREA = 0x025B, + COMMAND_SET_COLL_OBJ_WAIT_IN_CAR = 0x025C, + COMMAND_SET_COLL_OBJ_KILL_CHAR_ON_FOOT = 0x025D, + COMMAND_SET_COLL_OBJ_KILL_PLAYER_ON_FOOT = 0x025E, + COMMAND_SET_COLL_OBJ_KILL_CHAR_ANY_MEANS = 0x025F, + COMMAND_SET_COLL_OBJ_KILL_PLAYER_ANY_MEANS = 0x0260, + COMMAND_SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE = 0x0261, + COMMAND_SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE = 0x0262, + COMMAND_SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS = 0x0263, + COMMAND_SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS = 0x0264, + COMMAND_SET_COLL_OBJ_GOTO_CHAR_ON_FOOT = 0x0265, + COMMAND_SET_COLL_OBJ_GOTO_PLAYER_ON_FOOT = 0x0266, + COMMAND_SET_COLL_OBJ_LEAVE_CAR = 0x0267, + COMMAND_SET_COLL_OBJ_ENTER_CAR_AS_PASSENGER = 0x0268, + COMMAND_SET_COLL_OBJ_ENTER_CAR_AS_DRIVER = 0x0269, + COMMAND_SET_COLL_OBJ_FOLLOW_CAR_IN_CAR = 0x026A, + COMMAND_SET_COLL_OBJ_FIRE_AT_OBJECT_FROM_VEHICLE = 0x026B, + COMMAND_SET_COLL_OBJ_DESTROY_OBJECT = 0x026C, + COMMAND_SET_COLL_OBJ_DESTROY_CAR = 0x026D, + COMMAND_SET_COLL_OBJ_GOTO_AREA_ON_FOOT = 0x026E, + COMMAND_SET_COLL_OBJ_GOTO_AREA_IN_CAR = 0x026F, + COMMAND_SET_COLL_OBJ_FOLLOW_CAR_ON_FOOT_WITH_OFFSET = 0x0270, + COMMAND_SET_COLL_OBJ_GUARD_ATTACK = 0x0271, + COMMAND_SET_COLL_OBJ_FOLLOW_ROUTE = 0x0272, + COMMAND_SET_COLL_OBJ_GOTO_COORD_ON_FOOT = 0x0273, + COMMAND_SET_COLL_OBJ_GOTO_COORD_IN_CAR = 0x0274, + COMMAND_SET_COLL_OBJ_RUN_TO_AREA = 0x0275, + COMMAND_SET_COLL_OBJ_RUN_TO_COORD = 0x0276, + COMMAND_ADD_PEDS_IN_AREA_TO_COLL = 0x0277, + COMMAND_ADD_PEDS_IN_VEHICLE_TO_COLL = 0x0278, + COMMAND_CLEAR_COLL = 0x0279, + COMMAND_IS_COLL_IN_CARS = 0x027A, + COMMAND_LOCATE_COLL_ANY_MEANS_2D = 0x027B, + COMMAND_LOCATE_COLL_ON_FOOT_2D = 0x027C, + COMMAND_LOCATE_COLL_IN_CAR_2D = 0x027D, + COMMAND_LOCATE_STOPPED_COLL_ANY_MEANS_2D = 0x027E, + COMMAND_LOCATE_STOPPED_COLL_ON_FOOT_2D = 0x027F, + COMMAND_LOCATE_STOPPED_COLL_IN_CAR_2D = 0x0280, + COMMAND_LOCATE_COLL_ANY_MEANS_CHAR_2D = 0x0281, + COMMAND_LOCATE_COLL_ON_FOOT_CHAR_2D = 0x0282, + COMMAND_LOCATE_COLL_IN_CAR_CHAR_2D = 0x0283, + COMMAND_LOCATE_COLL_ANY_MEANS_CAR_2D = 0x0284, + COMMAND_LOCATE_COLL_ON_FOOT_CAR_2D = 0x0285, + COMMAND_LOCATE_COLL_IN_CAR_CAR_2D = 0x0286, + COMMAND_LOCATE_COLL_ANY_MEANS_PLAYER_2D = 0x0287, + COMMAND_LOCATE_COLL_ON_FOOT_PLAYER_2D = 0x0288, + COMMAND_LOCATE_COLL_IN_CAR_PLAYER_2D = 0x0289, + COMMAND_IS_COLL_IN_AREA_2D = 0x028A, + COMMAND_IS_COLL_IN_AREA_ON_FOOT_2D = 0x028B, + COMMAND_IS_COLL_IN_AREA_IN_CAR_2D = 0x028C, + COMMAND_IS_COLL_STOPPED_IN_AREA_2D = 0x028D, + COMMAND_IS_COLL_STOPPED_IN_AREA_ON_FOOT_2D = 0x028E, + COMMAND_IS_COLL_STOPPED_IN_AREA_IN_CAR_2D = 0x028F, + COMMAND_GET_NUMBER_OF_PEDS_IN_COLL = 0x0290, + COMMAND_SET_CHAR_HEED_THREATS = 0x0291, + COMMAND_SET_PLAYER_HEED_THREATS = 0x0292, + COMMAND_GET_CONTROLLER_MODE = 0x0293, + COMMAND_SET_CAN_RESPRAY_CAR = 0x0294, + COMMAND_IS_TAXI = 0x0295, + COMMAND_UNLOAD_SPECIAL_CHARACTER = 0x0296, + COMMAND_RESET_NUM_OF_MODELS_KILLED_BY_PLAYER = 0x0297, + COMMAND_GET_NUM_OF_MODELS_KILLED_BY_PLAYER = 0x0298, + COMMAND_ACTIVATE_GARAGE = 0x0299, + COMMAND_SWITCH_TAXI_TIMER = 0x029A, + COMMAND_CREATE_OBJECT_NO_OFFSET = 0x029B, + COMMAND_IS_BOAT = 0x029C, + COMMAND_SET_CHAR_OBJ_GOTO_AREA_ANY_MEANS = 0x029D, + COMMAND_SET_COLL_OBJ_GOTO_AREA_ANY_MEANS = 0x029E, + COMMAND_IS_PLAYER_STOPPED = 0x029F, + COMMAND_IS_CHAR_STOPPED = 0x02A0, + COMMAND_MESSAGE_WAIT = 0x02A1, + COMMAND_ADD_PARTICLE_EFFECT = 0x02A2, + COMMAND_SWITCH_WIDESCREEN = 0x02A3, + COMMAND_ADD_SPRITE_BLIP_FOR_CAR = 0x02A4, + COMMAND_ADD_SPRITE_BLIP_FOR_CHAR = 0x02A5, + COMMAND_ADD_SPRITE_BLIP_FOR_OBJECT = 0x02A6, + COMMAND_ADD_SPRITE_BLIP_FOR_CONTACT_POINT = 0x02A7, + COMMAND_ADD_SPRITE_BLIP_FOR_COORD = 0x02A8, + COMMAND_SET_CHAR_ONLY_DAMAGED_BY_PLAYER = 0x02A9, + COMMAND_SET_CAR_ONLY_DAMAGED_BY_PLAYER = 0x02AA, + COMMAND_SET_CHAR_PROOFS = 0x02AB, + COMMAND_SET_CAR_PROOFS = 0x02AC, + COMMAND_IS_PLAYER_IN_ANGLED_AREA_2D = 0x02AD, + COMMAND_IS_PLAYER_IN_ANGLED_AREA_ON_FOOT_2D = 0x02AE, + COMMAND_IS_PLAYER_IN_ANGLED_AREA_IN_CAR_2D = 0x02AF, + COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_2D = 0x02B0, + COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_2D = 0x02B1, + COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_IN_CAR_2D = 0x02B2, + COMMAND_IS_PLAYER_IN_ANGLED_AREA_3D = 0x02B3, + COMMAND_IS_PLAYER_IN_ANGLED_AREA_ON_FOOT_3D = 0x02B4, + COMMAND_IS_PLAYER_IN_ANGLED_AREA_IN_CAR_3D = 0x02B5, + COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_3D = 0x02B6, + COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_3D = 0x02B7, + COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_IN_CAR_3D = 0x02B8, + COMMAND_DEACTIVATE_GARAGE = 0x02B9, + COMMAND_GET_NUMBER_OF_CARS_COLLECTED_BY_GARAGE = 0x02BA, + COMMAND_HAS_CAR_BEEN_TAKEN_TO_GARAGE = 0x02BB, + COMMAND_SET_SWAT_REQUIRED = 0x02BC, + COMMAND_SET_FBI_REQUIRED = 0x02BD, + COMMAND_SET_ARMY_REQUIRED = 0x02BE, + COMMAND_IS_CAR_IN_WATER = 0x02BF, + COMMAND_GET_CLOSEST_CHAR_NODE = 0x02C0, + COMMAND_GET_CLOSEST_CAR_NODE = 0x02C1, + COMMAND_CAR_GOTO_COORDINATES_ACCURATE = 0x02C2, + COMMAND_START_PACMAN_RACE = 0x02C3, + COMMAND_START_PACMAN_RECORD = 0x02C4, + COMMAND_GET_NUMBER_OF_POWER_PILLS_EATEN = 0x02C5, + COMMAND_CLEAR_PACMAN = 0x02C6, + COMMAND_START_PACMAN_SCRAMBLE = 0x02C7, + COMMAND_GET_NUMBER_OF_POWER_PILLS_CARRIED = 0x02C8, + COMMAND_CLEAR_NUMBER_OF_POWER_PILLS_CARRIED = 0x02C9, + COMMAND_IS_CAR_ON_SCREEN = 0x02CA, + COMMAND_IS_CHAR_ON_SCREEN = 0x02CB, + COMMAND_IS_OBJECT_ON_SCREEN = 0x02CC, + COMMAND_GOSUB_FILE = 0x02CD, + COMMAND_GET_GROUND_Z_FOR_3D_COORD = 0x02CE, + COMMAND_START_SCRIPT_FIRE = 0x02CF, + COMMAND_IS_SCRIPT_FIRE_EXTINGUISHED = 0x02D0, + COMMAND_REMOVE_SCRIPT_FIRE = 0x02D1, + COMMAND_SET_COMEDY_CONTROLS = 0x02D2, + COMMAND_BOAT_GOTO_COORDS = 0x02D3, + COMMAND_BOAT_STOP = 0x02D4, + COMMAND_IS_PLAYER_SHOOTING_IN_AREA = 0x02D5, + COMMAND_IS_CHAR_SHOOTING_IN_AREA = 0x02D6, + COMMAND_IS_CURRENT_PLAYER_WEAPON = 0x02D7, + COMMAND_IS_CURRENT_CHAR_WEAPON = 0x02D8, + COMMAND_CLEAR_NUMBER_OF_POWER_PILLS_EATEN = 0x02D9, + COMMAND_ADD_POWER_PILL = 0x02DA, + COMMAND_SET_BOAT_CRUISE_SPEED = 0x02DB, + COMMAND_GET_RANDOM_CHAR_IN_AREA = 0x02DC, + COMMAND_GET_RANDOM_CHAR_IN_ZONE = 0x02DD, + COMMAND_IS_PLAYER_IN_TAXI = 0x02DE, + COMMAND_IS_PLAYER_SHOOTING = 0x02DF, + COMMAND_IS_CHAR_SHOOTING = 0x02E0, + COMMAND_CREATE_MONEY_PICKUP = 0x02E1, + COMMAND_SET_CHAR_ACCURACY = 0x02E2, + COMMAND_GET_CAR_SPEED = 0x02E3, + COMMAND_LOAD_CUTSCENE = 0x02E4, + COMMAND_CREATE_CUTSCENE_OBJECT = 0x02E5, + COMMAND_SET_CUTSCENE_ANIM = 0x02E6, + COMMAND_START_CUTSCENE = 0x02E7, + COMMAND_GET_CUTSCENE_TIME = 0x02E8, + COMMAND_HAS_CUTSCENE_FINISHED = 0x02E9, + COMMAND_CLEAR_CUTSCENE = 0x02EA, + COMMAND_RESTORE_CAMERA_JUMPCUT = 0x02EB, + COMMAND_CREATE_COLLECTABLE1 = 0x02EC, + COMMAND_SET_COLLECTABLE1_TOTAL = 0x02ED, + COMMAND_IS_PROJECTILE_IN_AREA = 0x02EE, + COMMAND_DESTROY_PROJECTILES_IN_AREA = 0x02EF, + COMMAND_DROP_MINE = 0x02F0, + COMMAND_DROP_NAUTICAL_MINE = 0x02F1, + COMMAND_IS_CHAR_MODEL = 0x02F2, + COMMAND_LOAD_SPECIAL_MODEL = 0x02F3, + COMMAND_CREATE_CUTSCENE_HEAD = 0x02F4, + COMMAND_SET_CUTSCENE_HEAD_ANIM = 0x02F5, + COMMAND_SIN = 0x02F6, + COMMAND_COS = 0x02F7, + COMMAND_GET_CAR_FORWARD_X = 0x02F8, + COMMAND_GET_CAR_FORWARD_Y = 0x02F9, + COMMAND_CHANGE_GARAGE_TYPE = 0x02FA, + COMMAND_ACTIVATE_CRUSHER_CRANE = 0x02FB, + COMMAND_PRINT_WITH_2_NUMBERS = 0x02FC, + COMMAND_PRINT_WITH_2_NUMBERS_NOW = 0x02FD, + COMMAND_PRINT_WITH_2_NUMBERS_SOON = 0x02FE, + COMMAND_PRINT_WITH_3_NUMBERS = 0x02FF, + COMMAND_PRINT_WITH_3_NUMBERS_NOW = 0x0300, + COMMAND_PRINT_WITH_3_NUMBERS_SOON = 0x0301, + COMMAND_PRINT_WITH_4_NUMBERS = 0x0302, + COMMAND_PRINT_WITH_4_NUMBERS_NOW = 0x0303, + COMMAND_PRINT_WITH_4_NUMBERS_SOON = 0x0304, + COMMAND_PRINT_WITH_5_NUMBERS = 0x0305, + COMMAND_PRINT_WITH_5_NUMBERS_NOW = 0x0306, + COMMAND_PRINT_WITH_5_NUMBERS_SOON = 0x0307, + COMMAND_PRINT_WITH_6_NUMBERS = 0x0308, + COMMAND_PRINT_WITH_6_NUMBERS_NOW = 0x0309, + COMMAND_PRINT_WITH_6_NUMBERS_SOON = 0x030A, + COMMAND_SET_CHAR_OBJ_FOLLOW_CHAR_IN_FORMATION = 0x030B, + COMMAND_PLAYER_MADE_PROGRESS = 0x030C, + COMMAND_SET_PROGRESS_TOTAL = 0x030D, + COMMAND_REGISTER_JUMP_DISTANCE = 0x030E, + COMMAND_REGISTER_JUMP_HEIGHT = 0x030F, + COMMAND_REGISTER_JUMP_FLIPS = 0x0310, + COMMAND_REGISTER_JUMP_SPINS = 0x0311, + COMMAND_REGISTER_JUMP_STUNT = 0x0312, + COMMAND_REGISTER_UNIQUE_JUMP_FOUND = 0x0313, + COMMAND_SET_UNIQUE_JUMPS_TOTAL = 0x0314, + COMMAND_REGISTER_PASSENGER_DROPPED_OFF_TAXI = 0x0315, + COMMAND_REGISTER_MONEY_MADE_TAXI = 0x0316, + COMMAND_REGISTER_MISSION_GIVEN = 0x0317, + COMMAND_REGISTER_MISSION_PASSED = 0x0318, + COMMAND_SET_CHAR_RUNNING = 0x0319, + COMMAND_REMOVE_ALL_SCRIPT_FIRES = 0x031A, + COMMAND_IS_FIRST_CAR_COLOUR = 0x031B, + COMMAND_IS_SECOND_CAR_COLOUR = 0x031C, + COMMAND_HAS_CHAR_BEEN_DAMAGED_BY_WEAPON = 0x031D, + COMMAND_HAS_CAR_BEEN_DAMAGED_BY_WEAPON = 0x031E, + COMMAND_IS_CHAR_IN_CHARS_GROUP = 0x031F, + COMMAND_IS_CHAR_IN_PLAYERS_GROUP = 0x0320, + COMMAND_EXPLODE_CHAR_HEAD = 0x0321, + COMMAND_EXPLODE_PLAYER_HEAD = 0x0322, + COMMAND_ANCHOR_BOAT = 0x0323, + COMMAND_SET_ZONE_GROUP = 0x0324, + COMMAND_START_CAR_FIRE = 0x0325, + COMMAND_START_CHAR_FIRE = 0x0326, + COMMAND_GET_RANDOM_CAR_OF_TYPE_IN_AREA = 0x0327, + COMMAND_GET_RANDOM_CAR_OF_TYPE_IN_ZONE = 0x0328, + COMMAND_HAS_RESPRAY_HAPPENED = 0x0329, + COMMAND_SET_CAMERA_ZOOM = 0x032A, + COMMAND_CREATE_PICKUP_WITH_AMMO = 0x032B, + COMMAND_SET_CAR_RAM_CAR = 0x032C, + COMMAND_SET_CAR_BLOCK_CAR = 0x032D, + COMMAND_SET_CHAR_OBJ_CATCH_TRAIN = 0x032E, + COMMAND_SET_COLL_OBJ_CATCH_TRAIN = 0x032F, + COMMAND_SET_PLAYER_NEVER_GETS_TIRED = 0x0330, + COMMAND_SET_PLAYER_FAST_RELOAD = 0x0331, + COMMAND_SET_CHAR_BLEEDING = 0x0332, + COMMAND_SET_CAR_FUNNY_SUSPENSION = 0x0333, + COMMAND_SET_CAR_BIG_WHEELS = 0x0334, + COMMAND_SET_FREE_RESPRAYS = 0x0335, + COMMAND_SET_PLAYER_VISIBLE = 0x0336, + COMMAND_SET_CHAR_VISIBLE = 0x0337, + COMMAND_SET_CAR_VISIBLE = 0x0338, + COMMAND_IS_AREA_OCCUPIED = 0x0339, + COMMAND_START_DRUG_RUN = 0x033A, + COMMAND_HAS_DRUG_RUN_BEEN_COMPLETED = 0x033B, + COMMAND_HAS_DRUG_PLANE_BEEN_SHOT_DOWN = 0x033C, + COMMAND_SAVE_PLAYER_FROM_FIRES = 0x033D, + COMMAND_DISPLAY_TEXT = 0x033E, + COMMAND_SET_TEXT_SCALE = 0x033F, + COMMAND_SET_TEXT_COLOUR = 0x0340, + COMMAND_SET_TEXT_JUSTIFY = 0x0341, + COMMAND_SET_TEXT_CENTRE = 0x0342, + COMMAND_SET_TEXT_WRAPX = 0x0343, + COMMAND_SET_TEXT_CENTRE_SIZE = 0x0344, + COMMAND_SET_TEXT_BACKGROUND = 0x0345, + COMMAND_SET_TEXT_BACKGROUND_COLOUR = 0x0346, + COMMAND_SET_TEXT_BACKGROUND_ONLY_TEXT = 0x0347, + COMMAND_SET_TEXT_PROPORTIONAL = 0x0348, + COMMAND_SET_TEXT_FONT = 0x0349, + COMMAND_INDUSTRIAL_PASSED = 0x034A, + COMMAND_COMMERCIAL_PASSED = 0x034B, + COMMAND_SUBURBAN_PASSED = 0x034C, + COMMAND_ROTATE_OBJECT = 0x034D, + COMMAND_SLIDE_OBJECT = 0x034E, + COMMAND_REMOVE_CHAR_ELEGANTLY = 0x034F, + COMMAND_SET_CHAR_STAY_IN_SAME_PLACE = 0x0350, + COMMAND_IS_NASTY_GAME = 0x0351, + COMMAND_UNDRESS_CHAR = 0x0352, + COMMAND_DRESS_CHAR = 0x0353, + COMMAND_START_CHASE_SCENE = 0x0354, + COMMAND_STOP_CHASE_SCENE = 0x0355, + COMMAND_IS_EXPLOSION_IN_AREA = 0x0356, + COMMAND_IS_EXPLOSION_IN_ZONE = 0x0357, + COMMAND_START_DRUG_DROP_OFF = 0x0358, + COMMAND_HAS_DROP_OFF_PLANE_BEEN_SHOT_DOWN = 0x0359, + COMMAND_FIND_DROP_OFF_PLANE_COORDINATES = 0x035A, + COMMAND_CREATE_FLOATING_PACKAGE = 0x035B, + COMMAND_PLACE_OBJECT_RELATIVE_TO_CAR = 0x035C, + COMMAND_MAKE_OBJECT_TARGETTABLE = 0x035D, + COMMAND_ADD_ARMOUR_TO_PLAYER = 0x035E, + COMMAND_ADD_ARMOUR_TO_CHAR = 0x035F, + COMMAND_OPEN_GARAGE = 0x0360, + COMMAND_CLOSE_GARAGE = 0x0361, + COMMAND_WARP_CHAR_FROM_CAR_TO_COORD = 0x0362, + COMMAND_SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE = 0x0363, + COMMAND_HAS_CHAR_SPOTTED_CHAR = 0x0364, + COMMAND_SET_CHAR_OBJ_HAIL_TAXI = 0x0365, + COMMAND_HAS_OBJECT_BEEN_DAMAGED = 0x0366, + COMMAND_START_KILL_FRENZY_HEADSHOT = 0x0367, + COMMAND_ACTIVATE_MILITARY_CRANE = 0x0368, + COMMAND_WARP_PLAYER_INTO_CAR = 0x0369, + COMMAND_WARP_CHAR_INTO_CAR = 0x036A, + COMMAND_SWITCH_CAR_RADIO = 0x036B, + COMMAND_SET_AUDIO_STREAM = 0x036C, + COMMAND_PRINT_WITH_2_NUMBERS_BIG = 0x036D, + COMMAND_PRINT_WITH_3_NUMBERS_BIG = 0x036E, + COMMAND_PRINT_WITH_4_NUMBERS_BIG = 0x036F, + COMMAND_PRINT_WITH_5_NUMBERS_BIG = 0x0370, + COMMAND_PRINT_WITH_6_NUMBERS_BIG = 0x0371, + COMMAND_SET_CHAR_WAIT_STATE = 0x0372, + COMMAND_SET_CAMERA_BEHIND_PLAYER = 0x0373, + COMMAND_SET_MOTION_BLUR = 0x0374, + COMMAND_PRINT_STRING_IN_STRING = 0x0375, + COMMAND_CREATE_RANDOM_CHAR = 0x0376, + COMMAND_SET_CHAR_OBJ_STEAL_ANY_CAR = 0x0377, + COMMAND_SET_2_REPEATED_PHONE_MESSAGES = 0x0378, + COMMAND_SET_2_PHONE_MESSAGES = 0x0379, + COMMAND_SET_3_REPEATED_PHONE_MESSAGES = 0x037A, + COMMAND_SET_3_PHONE_MESSAGES = 0x037B, + COMMAND_SET_4_REPEATED_PHONE_MESSAGES = 0x037C, + COMMAND_SET_4_PHONE_MESSAGES = 0x037D, + COMMAND_IS_SNIPER_BULLET_IN_AREA = 0x037E, + COMMAND_GIVE_PLAYER_DETONATOR = 0x037F, + COMMAND_SET_COLL_OBJ_STEAL_ANY_CAR = 0x0380, + COMMAND_SET_OBJECT_VELOCITY = 0x0381, + COMMAND_SET_OBJECT_COLLISION = 0x0382, + COMMAND_IS_ICECREAM_JINGLE_ON = 0x0383, + COMMAND_PRINT_STRING_IN_STRING_NOW = 0x0384, + COMMAND_PRINT_STRING_IN_STRING_SOON = 0x0385, + COMMAND_SET_5_REPEATED_PHONE_MESSAGES = 0x0386, + COMMAND_SET_5_PHONE_MESSAGES = 0x0387, + COMMAND_SET_6_REPEATED_PHONE_MESSAGES = 0x0388, + COMMAND_SET_6_PHONE_MESSAGES = 0x0389, + COMMAND_IS_POINT_OBSCURED_BY_A_MISSION_ENTITY = 0x038A, + COMMAND_LOAD_ALL_MODELS_NOW = 0x038B, + COMMAND_ADD_TO_OBJECT_VELOCITY = 0x038C, + COMMAND_DRAW_SPRITE = 0x038D, + COMMAND_DRAW_RECT = 0x038E, + COMMAND_LOAD_SPRITE = 0x038F, + COMMAND_LOAD_TEXTURE_DICTIONARY = 0x0390, + COMMAND_REMOVE_TEXTURE_DICTIONARY = 0x0391, + COMMAND_SET_OBJECT_DYNAMIC = 0x0392, + COMMAND_SET_CHAR_ANIM_SPEED = 0x0393, + COMMAND_PLAY_MISSION_PASSED_TUNE = 0x0394, + COMMAND_CLEAR_AREA = 0x0395, + COMMAND_FREEZE_ONSCREEN_TIMER = 0x0396, + COMMAND_SWITCH_CAR_SIREN = 0x0397, + COMMAND_SWITCH_PED_ROADS_ON_ANGLED = 0x0398, + COMMAND_SWITCH_PED_ROADS_OFF_ANGLED = 0x0399, + COMMAND_SWITCH_ROADS_ON_ANGLED = 0x039A, + COMMAND_SWITCH_ROADS_OFF_ANGLED = 0x039B, + COMMAND_SET_CAR_WATERTIGHT = 0x039C, + COMMAND_ADD_MOVING_PARTICLE_EFFECT = 0x039D, + COMMAND_SET_CHAR_CANT_BE_DRAGGED_OUT = 0x039E, + COMMAND_TURN_CAR_TO_FACE_COORD = 0x039F, + COMMAND_IS_CRANE_LIFTING_CAR = 0x03A0, + COMMAND_DRAW_SPHERE = 0x03A1, + COMMAND_SET_CAR_STATUS = 0x03A2, + COMMAND_IS_CHAR_MALE = 0x03A3, + COMMAND_SCRIPT_NAME = 0x03A4, + COMMAND_CHANGE_GARAGE_TYPE_WITH_CAR_MODEL = 0x03A5, + COMMAND_FIND_DRUG_PLANE_COORDINATES = 0x03A6, + COMMAND_SAVE_INT_TO_DEBUG_FILE = 0x03A7, + COMMAND_SAVE_FLOAT_TO_DEBUG_FILE = 0x03A8, + COMMAND_SAVE_NEWLINE_TO_DEBUG_FILE = 0x03A9, + COMMAND_POLICE_RADIO_MESSAGE = 0x03AA, + COMMAND_SET_CAR_STRONG = 0x03AB, + COMMAND_REMOVE_ROUTE = 0x03AC, + COMMAND_SWITCH_RUBBISH = 0x03AD, + COMMAND_REMOVE_PARTICLE_EFFECTS_IN_AREA = 0x03AE, + COMMAND_SWITCH_STREAMING = 0x03AF, + COMMAND_IS_GARAGE_OPEN = 0x03B0, + COMMAND_IS_GARAGE_CLOSED = 0x03B1, + COMMAND_START_CATALINA_HELI = 0x03B2, + COMMAND_CATALINA_HELI_TAKE_OFF = 0x03B3, + COMMAND_REMOVE_CATALINA_HELI = 0x03B4, + COMMAND_HAS_CATALINA_HELI_BEEN_SHOT_DOWN = 0x03B5, + COMMAND_SWAP_NEAREST_BUILDING_MODEL = 0x03B6, + COMMAND_SWITCH_WORLD_PROCESSING = 0x03B7, + COMMAND_REMOVE_ALL_PLAYER_WEAPONS = 0x03B8, + COMMAND_GRAB_CATALINA_HELI = 0x03B9, + COMMAND_CLEAR_AREA_OF_CARS = 0x03BA, + COMMAND_SET_ROTATING_GARAGE_DOOR = 0x03BB, + COMMAND_ADD_SPHERE = 0x03BC, + COMMAND_REMOVE_SPHERE = 0x03BD, + COMMAND_CATALINA_HELI_FLY_AWAY = 0x03BE, + COMMAND_SET_EVERYONE_IGNORE_PLAYER = 0x03BF, + COMMAND_STORE_CAR_CHAR_IS_IN_NO_SAVE = 0x03C0, + COMMAND_STORE_CAR_PLAYER_IS_IN_NO_SAVE = 0x03C1, + COMMAND_IS_PHONE_DISPLAYING_MESSAGE = 0x03C2, + COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_STRING = 0x03C3, + COMMAND_DISPLAY_ONSCREEN_COUNTER_WITH_STRING = 0x03C4, + COMMAND_CREATE_RANDOM_CAR_FOR_CAR_PARK = 0x03C5, + COMMAND_IS_COLLISION_IN_MEMORY = 0x03C6, + COMMAND_SET_WANTED_MULTIPLIER = 0x03C7, + COMMAND_SET_CAMERA_IN_FRONT_OF_PLAYER = 0x03C8, + COMMAND_IS_CAR_VISIBLY_DAMAGED = 0x03C9, + COMMAND_DOES_OBJECT_EXIST = 0x03CA, + COMMAND_LOAD_SCENE = 0x03CB, + COMMAND_ADD_STUCK_CAR_CHECK = 0x03CC, + COMMAND_REMOVE_STUCK_CAR_CHECK = 0x03CD, + COMMAND_IS_CAR_STUCK = 0x03CE, + COMMAND_LOAD_MISSION_AUDIO = 0x03CF, + COMMAND_HAS_MISSION_AUDIO_LOADED = 0x03D0, + COMMAND_PLAY_MISSION_AUDIO = 0x03D1, + COMMAND_HAS_MISSION_AUDIO_FINISHED = 0x03D2, + COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING = 0x03D3, + COMMAND_HAS_IMPORT_GARAGE_SLOT_BEEN_FILLED = 0x03D4, + COMMAND_CLEAR_THIS_PRINT = 0x03D5, + COMMAND_CLEAR_THIS_BIG_PRINT = 0x03D6, + COMMAND_SET_MISSION_AUDIO_POSITION = 0x03D7, + COMMAND_ACTIVATE_SAVE_MENU = 0x03D8, + COMMAND_HAS_SAVE_GAME_FINISHED = 0x03D9, + COMMAND_NO_SPECIAL_CAMERA_FOR_THIS_GARAGE = 0x03DA, + COMMAND_ADD_BLIP_FOR_PICKUP_OLD = 0x03DB, + COMMAND_ADD_BLIP_FOR_PICKUP = 0x03DC, + COMMAND_ADD_SPRITE_BLIP_FOR_PICKUP = 0x03DD, + COMMAND_SET_PED_DENSITY_MULTIPLIER = 0x03DE, + COMMAND_FORCE_RANDOM_PED_TYPE = 0x03DF, + COMMAND_SET_TEXT_DRAW_BEFORE_FADE = 0x03E0, + COMMAND_GET_COLLECTABLE1S_COLLECTED = 0x03E1, + COMMAND_SET_CHAR_OBJ_LEAVE_ANY_CAR = 0x03E2, + COMMAND_SET_SPRITES_DRAW_BEFORE_FADE = 0x03E3, + COMMAND_SET_TEXT_RIGHT_JUSTIFY = 0x03E4, + COMMAND_PRINT_HELP = 0x03E5, + COMMAND_CLEAR_HELP = 0x03E6, + COMMAND_FLASH_HUD_OBJECT = 0x03E7, + COMMAND_FLASH_RADAR_BLIP = 0x03E8, + COMMAND_IS_CHAR_IN_CONTROL = 0x03E9, + COMMAND_SET_GENERATE_CARS_AROUND_CAMERA = 0x03EA, + COMMAND_CLEAR_SMALL_PRINTS = 0x03EB, + COMMAND_HAS_MILITARY_CRANE_COLLECTED_ALL_CARS = 0x03EC, + COMMAND_SET_UPSIDEDOWN_CAR_NOT_DAMAGED = 0x03ED, + COMMAND_CAN_PLAYER_START_MISSION = 0x03EE, + COMMAND_MAKE_PLAYER_SAFE_FOR_CUTSCENE = 0x03EF, + COMMAND_USE_TEXT_COMMANDS = 0x03F0, + COMMAND_SET_THREAT_FOR_PED_TYPE = 0x03F1, + COMMAND_CLEAR_THREAT_FOR_PED_TYPE = 0x03F2, + COMMAND_GET_CAR_COLOURS = 0x03F3, + COMMAND_SET_ALL_CARS_CAN_BE_DAMAGED = 0x03F4, + COMMAND_SET_CAR_CAN_BE_DAMAGED = 0x03F5, + COMMAND_MAKE_PLAYER_UNSAFE = 0x03F6, + COMMAND_LOAD_COLLISION = 0x03F7, + COMMAND_GET_BODY_CAST_HEALTH = 0x03F8, + COMMAND_SET_CHARS_CHATTING = 0x03F9, + COMMAND_MAKE_PLAYER_SAFE = 0x03FA, + COMMAND_SET_CAR_STAYS_IN_CURRENT_LEVEL = 0x03FB, + COMMAND_SET_CHAR_STAYS_IN_CURRENT_LEVEL = 0x03FC, + COMMAND_SET_DRUNK_INPUT_DELAY = 0x03FD, + COMMAND_SET_CHAR_MONEY = 0x03FE, + COMMAND_INCREASE_CHAR_MONEY = 0x03FF, + COMMAND_GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS = 0x0400, + COMMAND_REGISTER_LIFE_SAVED = 0x0401, + COMMAND_REGISTER_CRIMINAL_CAUGHT = 0x0402, + COMMAND_REGISTER_AMBULANCE_LEVEL = 0x0403, + COMMAND_REGISTER_FIRE_EXTINGUISHED = 0x0404, + COMMAND_TURN_PHONE_ON = 0x0405, + COMMAND_REGISTER_LONGEST_DODO_FLIGHT = 0x0406, + COMMAND_GET_OFFSET_FROM_CAR_IN_WORLD_COORDS = 0x0407, + COMMAND_SET_TOTAL_NUMBER_OF_KILL_FRENZIES = 0x0408, + COMMAND_BLOW_UP_RC_BUGGY = 0x0409, + COMMAND_REMOVE_CAR_FROM_CHASE = 0x040A, + COMMAND_IS_FRENCH_GAME = 0x040B, + COMMAND_IS_GERMAN_GAME = 0x040C, + COMMAND_CLEAR_MISSION_AUDIO = 0x040D, + COMMAND_SET_FADE_IN_AFTER_NEXT_ARREST = 0x040E, + COMMAND_SET_FADE_IN_AFTER_NEXT_DEATH = 0x040F, + COMMAND_SET_GANG_PED_MODEL_PREFERENCE = 0x0410, + COMMAND_SET_CHAR_USE_PEDNODE_SEEK = 0x0411, + COMMAND_SWITCH_VEHICLE_WEAPONS = 0x0412, + COMMAND_SET_GET_OUT_OF_JAIL_FREE = 0x0413, + COMMAND_SET_FREE_HEALTH_CARE = 0x0414, + COMMAND_IS_CAR_DOOR_CLOSED = 0x0415, + COMMAND_LOAD_AND_LAUNCH_MISSION = 0x0416, + COMMAND_LOAD_AND_LAUNCH_MISSION_INTERNAL = 0x0417, + COMMAND_SET_OBJECT_DRAW_LAST = 0x0418, + COMMAND_GET_AMMO_IN_PLAYER_WEAPON = 0x0419, + COMMAND_GET_AMMO_IN_CHAR_WEAPON = 0x041A, + COMMAND_REGISTER_KILL_FRENZY_PASSED = 0x041B, + COMMAND_SET_CHAR_SAY = 0x041C, + COMMAND_SET_NEAR_CLIP = 0x041D, + COMMAND_SET_RADIO_CHANNEL = 0x041E, + COMMAND_OVERRIDE_HOSPITAL_LEVEL = 0x041F, + COMMAND_OVERRIDE_POLICE_STATION_LEVEL = 0x0420, + COMMAND_FORCE_RAIN = 0x0421, + COMMAND_DOES_GARAGE_CONTAIN_CAR = 0x0422, + COMMAND_SET_CAR_TRACTION = 0x0423, + COMMAND_ARE_MEASUREMENTS_IN_METRES = 0x0424, + COMMAND_CONVERT_METRES_TO_FEET = 0x0425, + COMMAND_MARK_ROADS_BETWEEN_LEVELS = 0x0426, + COMMAND_MARK_PED_ROADS_BETWEEN_LEVELS = 0x0427, + COMMAND_SET_CAR_AVOID_LEVEL_TRANSITIONS = 0x0428, + COMMAND_SET_CHAR_AVOID_LEVEL_TRANSITIONS = 0x0429, + COMMAND_IS_THREAT_FOR_PED_TYPE = 0x042A, + COMMAND_CLEAR_AREA_OF_CHARS = 0x042B, + COMMAND_SET_TOTAL_NUMBER_OF_MISSIONS = 0x042C, + COMMAND_CONVERT_METRES_TO_FEET_INT = 0x042D, + COMMAND_REGISTER_FASTEST_TIME = 0x042E, + COMMAND_REGISTER_HIGHEST_SCORE = 0x042F, + COMMAND_WARP_CHAR_INTO_CAR_AS_PASSENGER = 0x0430, + COMMAND_IS_CAR_PASSENGER_SEAT_FREE = 0x0431, + COMMAND_GET_CHAR_IN_CAR_PASSENGER_SEAT = 0x0432, + COMMAND_SET_CHAR_IS_CHRIS_CRIMINAL = 0x0433, + COMMAND_START_CREDITS = 0x0434, + COMMAND_STOP_CREDITS = 0x0435, + COMMAND_ARE_CREDITS_FINISHED = 0x0436, + COMMAND_CREATE_SINGLE_PARTICLE = 0x0437, + COMMAND_SET_CHAR_IGNORE_LEVEL_TRANSITIONS = 0x0438, + COMMAND_GET_CHASE_CAR = 0x0439, + COMMAND_START_BOAT_FOAM_ANIMATION = 0x043A, + COMMAND_UPDATE_BOAT_FOAM_ANIMATION = 0x043B, + COMMAND_SET_MUSIC_DOES_FADE = 0x043C, + COMMAND_SET_INTRO_IS_PLAYING = 0x043D, + COMMAND_SET_PLAYER_HOOKER = 0x043E, + COMMAND_PLAY_END_OF_GAME_TUNE = 0x043F, + COMMAND_STOP_END_OF_GAME_TUNE = 0x0440, + COMMAND_GET_CAR_MODEL = 0x0441, + COMMAND_IS_PLAYER_SITTING_IN_CAR = 0x0442, + COMMAND_IS_PLAYER_SITTING_IN_ANY_CAR = 0x0443, + COMMAND_SET_SCRIPT_FIRE_AUDIO = 0x0444, + COMMAND_ARE_ANY_CAR_CHEATS_ACTIVATED = 0x0445, + COMMAND_SET_CHAR_SUFFERS_CRITICAL_HITS = 0x0446, + COMMAND_IS_PLAYER_LIFTING_A_PHONE = 0x0447, + COMMAND_IS_CHAR_SITTING_IN_CAR = 0x0448, + COMMAND_IS_CHAR_SITTING_IN_ANY_CAR = 0x0449, + COMMAND_IS_PLAYER_ON_FOOT = 0x044A, + COMMAND_IS_CHAR_ON_FOOT = 0x044B, + COMMAND_LOAD_COLLISION_WITH_SCREEN = 0x044C, + COMMAND_LOAD_SPLASH_SCREEN = 0x044D, + COMMAND_SET_CAR_IGNORE_LEVEL_TRANSITIONS = 0x044E, + COMMAND_MAKE_CRAIGS_CAR_A_BIT_STRONGER = 0x044F, + COMMAND_SET_JAMES_CAR_ON_PATH_TO_PLAYER = 0x0450, + COMMAND_LOAD_END_OF_GAME_TUNE = 0x0451, + COMMAND_ENABLE_PLAYER_CONTROL_CAMERA = 0x0452, + COMMAND_SET_OBJECT_ROTATION = 0x0453, + COMMAND_GET_DEBUG_CAMERA_COORDINATES = 0x0454, + COMMAND_GET_DEBUG_CAMERA_FRONT_VECTOR = 0x0455, + COMMAND_IS_PLAYER_TARGETTING_ANY_CHAR = 0x0456, + COMMAND_IS_PLAYER_TARGETTING_CHAR = 0x0457, + COMMAND_IS_PLAYER_TARGETTING_OBJECT = 0x0458, + COMMAND_TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME = 0x0459, + COMMAND_DISPLAY_TEXT_WITH_NUMBER = 0x045A, + COMMAND_DISPLAY_TEXT_WITH_2_NUMBERS = 0x045B, + COMMAND_FAIL_CURRENT_MISSION = 0x045C, + COMMAND_GET_CLOSEST_OBJECT_OF_TYPE = 0x045D, + COMMAND_PLACE_OBJECT_RELATIVE_TO_OBJECT = 0x045E, + COMMAND_SET_ALL_OCCUPANTS_OF_CAR_LEAVE_CAR = 0x045F, + COMMAND_SET_INTERPOLATION_PARAMETERS = 0x0460, + COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING_TOWARDS_POINT = 0x0461, + COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING_AWAY_POINT = 0x0462, + COMMAND_GET_DEBUG_CAMERA_POINT_AT = 0x0463, + COMMAND_ATTACH_CHAR_TO_CAR = 0x0464, + COMMAND_DETACH_CHAR_FROM_CAR = 0x0465, + COMMAND_SET_CAR_STAY_IN_FAST_LANE = 0x0466, + COMMAND_CLEAR_CHAR_LAST_WEAPON_DAMAGE = 0x0467, + COMMAND_CLEAR_CAR_LAST_WEAPON_DAMAGE = 0x0468, + COMMAND_GET_RANDOM_COP_IN_AREA = 0x0469, + COMMAND_GET_RANDOM_COP_IN_ZONE = 0x046A, + COMMAND_SET_CHAR_OBJ_FLEE_CAR = 0x046B, + COMMAND_GET_DRIVER_OF_CAR = 0x046C, + COMMAND_GET_NUMBER_OF_FOLLOWERS = 0x046D, + COMMAND_GIVE_REMOTE_CONTROLLED_MODEL_TO_PLAYER = 0x046E, + COMMAND_GET_CURRENT_PLAYER_WEAPON = 0x046F, + COMMAND_GET_CURRENT_CHAR_WEAPON = 0x0470, + COMMAND_LOCATE_CHAR_ANY_MEANS_OBJECT_2D = 0x0471, + COMMAND_LOCATE_CHAR_ON_FOOT_OBJECT_2D = 0x0472, + COMMAND_LOCATE_CHAR_IN_CAR_OBJECT_2D = 0x0473, + COMMAND_LOCATE_CHAR_ANY_MEANS_OBJECT_3D = 0x0474, + COMMAND_LOCATE_CHAR_ON_FOOT_OBJECT_3D = 0x0475, + COMMAND_LOCATE_CHAR_IN_CAR_OBJECT_3D = 0x0476, + COMMAND_SET_CAR_TEMP_ACTION = 0x0477, + COMMAND_SET_CAR_HANDBRAKE_TURN_RIGHT = 0x0478, + COMMAND_SET_CAR_HANDBRAKE_STOP = 0x0479, + COMMAND_IS_CHAR_ON_ANY_BIKE = 0x047A, + COMMAND_LOCATE_SNIPER_BULLET_2D = 0x047B, + COMMAND_LOCATE_SNIPER_BULLET_3D = 0x047C, + COMMAND_GET_NUMBER_OF_SEATS_IN_MODEL = 0x047D, + COMMAND_IS_PLAYER_ON_ANY_BIKE = 0x047E, + COMMAND_IS_CHAR_LYING_DOWN = 0x047F, + COMMAND_CAN_CHAR_SEE_DEAD_CHAR = 0x0480, + COMMAND_SET_ENTER_CAR_RANGE_MULTIPLIER = 0x0481, + COMMAND_SET_THREAT_REACTION_RANGE_MULTIPLIER = 0x0482, + COMMAND_SET_CHAR_CEASE_ATTACK_TIMER = 0x0483, + COMMAND_GET_REMOTE_CONTROLLED_CAR = 0x0484, + COMMAND_IS_PC_VERSION = 0x0485, + COMMAND_REPLAY = 0x0486, + COMMAND_IS_REPLAY_PLAYING = 0x0487, + COMMAND_IS_MODEL_AVAILABLE = 0x0488, + COMMAND_SHUT_CHAR_UP = 0x0489, + COMMAND_SET_ENABLE_RC_DETONATE = 0x048A, + COMMAND_SET_CAR_RANDOM_ROUTE_SEED = 0x048B, + COMMAND_IS_ANY_PICKUP_AT_COORDS = 0x048C, + COMMAND_GET_FIRST_PICKUP_COORDS = 0x048D, + COMMAND_GET_NEXT_PICKUP_COORDS = 0x048E, + COMMAND_REMOVE_ALL_CHAR_WEAPONS = 0x048F, + COMMAND_HAS_PLAYER_GOT_WEAPON = 0x0490, + COMMAND_HAS_CHAR_GOT_WEAPON = 0x0491, + COMMAND_IS_PLAYER_FACING_CHAR = 0x0492, + COMMAND_SET_TANK_DETONATE_CARS = 0x0493, + COMMAND_GET_POSITION_OF_ANALOGUE_STICKS = 0x0494, + COMMAND_IS_CAR_ON_FIRE = 0x0495, + COMMAND_IS_CAR_TYRE_BURST = 0x0496, + COMMAND_SET_CAR_DRIVE_STRAIGHT_AHEAD = 0x0497, + COMMAND_SET_CAR_WAIT = 0x0498, + COMMAND_IS_PLAYER_STANDING_ON_A_VEHICLE = 0x0499, + COMMAND_IS_PLAYER_FOOT_DOWN = 0x049A, + COMMAND_IS_CHAR_FOOT_DOWN = 0x049B, + COMMAND_INITIALISE_OBJECT_PATH = 0x049C, + COMMAND_START_OBJECT_ON_PATH = 0x049D, + COMMAND_SET_OBJECT_PATH_SPEED = 0x049E, + COMMAND_SET_OBJECT_PATH_POSITION = 0x049F, + COMMAND_GET_OBJECT_DISTANCE_ALONG_PATH = 0x04A0, + COMMAND_CLEAR_OBJECT_PATH = 0x04A1, + COMMAND_HELI_GOTO_COORDS = 0x04A2, + COMMAND_IS_INT_VAR_EQUAL_TO_CONSTANT = 0x04A3, + COMMAND_IS_INT_LVAR_EQUAL_TO_CONSTANT = 0x04A4, + COMMAND_GET_DEAD_CHAR_PICKUP_COORDS = 0x04A5, + COMMAND_CREATE_PROTECTION_PICKUP = 0x04A6, + COMMAND_IS_CHAR_IN_ANY_BOAT = 0x04A7, + COMMAND_IS_PLAYER_IN_ANY_BOAT = 0x04A8, + COMMAND_IS_CHAR_IN_ANY_HELI = 0x04A9, + COMMAND_IS_PLAYER_IN_ANY_HELI = 0x04AA, + COMMAND_IS_CHAR_IN_ANY_PLANE = 0x04AB, + COMMAND_IS_PLAYER_IN_ANY_PLANE = 0x04AC, + COMMAND_IS_CHAR_IN_WATER = 0x04AD, + COMMAND_SET_VAR_INT_TO_CONSTANT = 0x04AE, + COMMAND_SET_LVAR_INT_TO_CONSTANT = 0x04AF, + COMMAND_IS_INT_VAR_GREATER_THAN_CONSTANT = 0x04B0, + COMMAND_IS_INT_LVAR_GREATER_THAN_CONSTANT = 0x04B1, + COMMAND_IS_CONSTANT_GREATER_THAN_INT_VAR = 0x04B2, + COMMAND_IS_CONSTANT_GREATER_THAN_INT_LVAR = 0x04B3, + COMMAND_IS_INT_VAR_GREATER_OR_EQUAL_TO_CONSTANT = 0x04B4, + COMMAND_IS_INT_LVAR_GREATER_OR_EQUAL_TO_CONSTANT = 0x04B5, + COMMAND_IS_CONSTANT_GREATER_OR_EQUAL_TO_INT_VAR = 0x04B6, + COMMAND_IS_CONSTANT_GREATER_OR_EQUAL_TO_INT_LVAR = 0x04B7, + COMMAND_GET_CHAR_WEAPON_IN_SLOT = 0x04B8, + COMMAND_GET_CLOSEST_STRAIGHT_ROAD = 0x04B9, + COMMAND_SET_CAR_FORWARD_SPEED = 0x04BA, + COMMAND_SET_AREA_VISIBLE = 0x04BB, + COMMAND_SET_CUTSCENE_ANIM_TO_LOOP = 0x04BC, + COMMAND_MARK_CAR_AS_CONVOY_CAR = 0x04BD, + COMMAND_RESET_HAVOC_CAUSED_BY_PLAYER = 0x04BE, + COMMAND_GET_HAVOC_CAUSED_BY_PLAYER = 0x04BF, + COMMAND_CREATE_SCRIPT_ROADBLOCK = 0x04C0, + COMMAND_CLEAR_ALL_SCRIPT_ROADBLOCKS = 0x04C1, + COMMAND_SET_CHAR_OBJ_WALK_TO_CHAR = 0x04C2, + COMMAND_IS_PICKUP_IN_ZONE = 0x04C3, + COMMAND_GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS = 0x04C4, + COMMAND_HAS_CHAR_BEEN_PHOTOGRAPHED = 0x04C5, + COMMAND_SET_CHAR_OBJ_AIM_GUN_AT_CHAR = 0x04C6, + COMMAND_SWITCH_SECURITY_CAMERA = 0x04C7, + COMMAND_IS_CHAR_IN_FLYING_VEHICLE = 0x04C8, + COMMAND_IS_PLAYER_IN_FLYING_VEHICLE = 0x04C9, + COMMAND_HAS_SONY_CD_BEEN_READ = 0x04CA, + COMMAND_GET_NUMBER_OF_SONY_CDS_READ = 0x04CB, + COMMAND_ADD_SHORT_RANGE_BLIP_FOR_COORD_OLD = 0x04CC, + COMMAND_ADD_SHORT_RANGE_BLIP_FOR_COORD = 0x04CD, + COMMAND_ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD = 0x04CE, + COMMAND_ADD_MONEY_SPENT_ON_CLOTHES = 0x04CF, + COMMAND_SET_HELI_ORIENTATION = 0x04D0, + COMMAND_CLEAR_HELI_ORIENTATION = 0x04D1, + COMMAND_PLANE_GOTO_COORDS = 0x04D2, + COMMAND_GET_NTH_CLOSEST_CAR_NODE = 0x04D3, + COMMAND_GET_NTH_CLOSEST_CHAR_NODE = 0x04D4, + COMMAND_DRAW_WEAPONSHOP_CORONA = 0x04D5, + COMMAND_SET_ENABLE_RC_DETONATE_ON_CONTACT = 0x04D6, + COMMAND_FREEZE_CHAR_POSITION = 0x04D7, + COMMAND_SET_CHAR_DROWNS_IN_WATER = 0x04D8, + COMMAND_SET_OBJECT_RECORDS_COLLISIONS = 0x04D9, + COMMAND_HAS_OBJECT_COLLIDED_WITH_ANYTHING = 0x04DA, + COMMAND_REMOVE_RC_BUGGY = 0x04DB, + COMMAND_HAS_PHOTOGRAPH_BEEN_TAKEN = 0x04DC, + COMMAND_GET_CHAR_ARMOUR = 0x04DD, + COMMAND_SET_CHAR_ARMOUR = 0x04DE, + COMMAND_SET_HELI_STABILISER = 0x04DF, + COMMAND_SET_CAR_STRAIGHT_LINE_DISTANCE = 0x04E0, + COMMAND_POP_CAR_BOOT = 0x04E1, + COMMAND_SHUT_PLAYER_UP = 0x04E2, + COMMAND_SET_PLAYER_MOOD = 0x04E3, + COMMAND_REQUEST_COLLISION = 0x04E4, + COMMAND_LOCATE_OBJECT_2D = 0x04E5, + COMMAND_LOCATE_OBJECT_3D = 0x04E6, + COMMAND_IS_OBJECT_IN_WATER = 0x04E7, + COMMAND_SET_CHAR_OBJ_STEAL_ANY_CAR_EVEN_MISSION_CAR = 0x04E8, + COMMAND_IS_OBJECT_IN_AREA_2D = 0x04E9, + COMMAND_IS_OBJECT_IN_AREA_3D = 0x04EA, + COMMAND_TASK_TOGGLE_DUCK = 0x04EB, + COMMAND_SET_ZONE_CIVILIAN_CAR_INFO = 0x04EC, + COMMAND_REQUEST_ANIMATION = 0x04ED, + COMMAND_HAS_ANIMATION_LOADED = 0x04EE, + COMMAND_REMOVE_ANIMATION = 0x04EF, + COMMAND_IS_CHAR_WAITING_FOR_WORLD_COLLISION = 0x04F0, + COMMAND_IS_CAR_WAITING_FOR_WORLD_COLLISION = 0x04F1, + COMMAND_IS_OBJECT_WAITING_FOR_WORLD_COLLISION = 0x04F2, + COMMAND_SET_CHAR_SHUFFLE_INTO_DRIVERS_SEAT = 0x04F3, + COMMAND_ATTACH_CHAR_TO_OBJECT = 0x04F4, + COMMAND_SET_CHAR_AS_PLAYER_FRIEND = 0x04F5, + COMMAND_DISPLAY_NTH_ONSCREEN_COUNTER = 0x04F6, + COMMAND_DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING = 0x04F7, + COMMAND_ADD_SET_PIECE = 0x04F8, + COMMAND_SET_EXTRA_COLOURS = 0x04F9, + COMMAND_CLEAR_EXTRA_COLOURS = 0x04FA, + COMMAND_CLOSE_CAR_BOOT = 0x04FB, + COMMAND_GET_WHEELIE_STATS = 0x04FC, + COMMAND_DISARM_CHAR = 0x04FD, + COMMAND_BURST_CAR_TYRE = 0x04FE, + COMMAND_IS_CHAR_OBJ_NO_OBJ = 0x04FF, + COMMAND_IS_PLAYER_WEARING = 0x0500, + COMMAND_SET_PLAYER_CAN_DO_DRIVE_BY = 0x0501, + COMMAND_SET_CHAR_OBJ_SPRINT_TO_COORD = 0x0502, + COMMAND_CREATE_SWAT_ROPE = 0x0503, + COMMAND_SET_FIRST_PERSON_CONTROL_CAMERA = 0x0504, + COMMAND_GET_NEAREST_TYRE_TO_POINT = 0x0505, + COMMAND_SET_CAR_MODEL_COMPONENTS = 0x0506, + COMMAND_SWITCH_LIFT_CAMERA = 0x0507, + COMMAND_CLOSE_ALL_CAR_DOORS = 0x0508, + COMMAND_GET_DISTANCE_BETWEEN_COORDS_2D = 0x0509, + COMMAND_GET_DISTANCE_BETWEEN_COORDS_3D = 0x050A, + COMMAND_POP_CAR_BOOT_USING_PHYSICS = 0x050B, + COMMAND_SET_FIRST_PERSON_WEAPON_CAMERA = 0x050C, + COMMAND_IS_CHAR_LEAVING_VEHICLE_TO_DIE = 0x050D, + COMMAND_SORT_OUT_OBJECT_COLLISION_WITH_CAR = 0x050E, + COMMAND_GET_MAX_WANTED_LEVEL = 0x050F, + COMMAND_IS_CHAR_WANDER_PATH_CLEAR = 0x0510, + COMMAND_PRINT_HELP_WITH_NUMBER = 0x0511, + COMMAND_PRINT_HELP_FOREVER = 0x0512, + COMMAND_PRINT_HELP_FOREVER_WITH_NUMBER = 0x0513, + COMMAND_SET_CHAR_CAN_BE_DAMAGED_BY_MEMBERS_OF_GANG = 0x0514, + COMMAND_LOAD_AND_LAUNCH_MISSION_EXCLUSIVE = 0x0515, + COMMAND_IS_MISSION_AUDIO_PLAYING = 0x0516, + COMMAND_CREATE_LOCKED_PROPERTY_PICKUP = 0x0517, + COMMAND_CREATE_FORSALE_PROPERTY_PICKUP = 0x0518, + COMMAND_FREEZE_CAR_POSITION = 0x0519, + COMMAND_HAS_CHAR_BEEN_DAMAGED_BY_CHAR = 0x051A, + COMMAND_HAS_CHAR_BEEN_DAMAGED_BY_CAR = 0x051B, + COMMAND_HAS_CAR_BEEN_DAMAGED_BY_CHAR = 0x051C, + COMMAND_HAS_CAR_BEEN_DAMAGED_BY_CAR = 0x051D, + COMMAND_GET_RADIO_CHANNEL = 0x051E, + COMMAND_DISPLAY_TEXT_WITH_3_NUMBERS = 0x051F, + COMMAND_IS_CAR_DROWNING_IN_WATER = 0x0520, + COMMAND_IS_CHAR_DROWNING_IN_WATER = 0x0521, + COMMAND_DISABLE_CUTSCENE_SHADOWS = 0x0522, + COMMAND_HAS_GLASS_BEEN_SHATTERED_NEARBY = 0x0523, + COMMAND_ATTACH_CUTSCENE_OBJECT_TO_BONE = 0x0524, + COMMAND_ATTACH_CUTSCENE_OBJECT_TO_COMPONENT = 0x0525, + COMMAND_SET_CHAR_STAY_IN_CAR_WHEN_JACKED = 0x0526, + COMMAND_IS_MISSION_AUDIO_LOADING = 0x0527, + COMMAND_ADD_MONEY_SPENT_ON_WEAPONS = 0x0528, + COMMAND_ADD_MONEY_SPENT_ON_PROPERTY = 0x0529, + COMMAND_ADD_MONEY_SPENT_ON_AUTO_PAINTING = 0x052A, + COMMAND_SET_CHAR_ANSWERING_MOBILE = 0x052B, + COMMAND_SET_PLAYER_DRUNKENNESS = 0x052C, + COMMAND_GET_PLAYER_DRUNKENNESS = 0x052D, + COMMAND_SET_PLAYER_DRUG_LEVEL = 0x052E, + COMMAND_GET_PLAYER_DRUG_LEVEL = 0x052F, + COMMAND_ADD_LOAN_SHARK_VISITS = 0x0530, + COMMAND_ADD_STORES_KNOCKED_OFF = 0x0531, + COMMAND_ADD_MOVIE_STUNTS = 0x0532, + COMMAND_ADD_NUMBER_OF_ASSASSINATIONS = 0x0533, + COMMAND_ADD_PIZZAS_DELIVERED = 0x0534, + COMMAND_ADD_GARBAGE_PICKUPS = 0x0535, + COMMAND_ADD_ICE_CREAMS_SOLD = 0x0536, + COMMAND_SET_TOP_SHOOTING_RANGE_SCORE = 0x0537, + COMMAND_ADD_SHOOTING_RANGE_RANK = 0x0538, + COMMAND_ADD_MONEY_SPENT_ON_GAMBLING = 0x0539, + COMMAND_ADD_MONEY_WON_ON_GAMBLING = 0x053A, + COMMAND_SET_LARGEST_GAMBLING_WIN = 0x053B, + COMMAND_SET_CHAR_IN_PLAYERS_GROUP_CAN_FIGHT = 0x053C, + COMMAND_CLEAR_CHAR_WAIT_STATE = 0x053D, + COMMAND_GET_RANDOM_CAR_OF_TYPE_IN_AREA_NO_SAVE = 0x053E, + COMMAND_SET_CAN_BURST_CAR_TYRES = 0x053F, + COMMAND_SET_PLAYER_AUTO_AIM = 0x0540, + COMMAND_FIRE_HUNTER_GUN = 0x0541, + COMMAND_SET_PROPERTY_AS_OWNED = 0x0542, + COMMAND_ADD_BLOOD_RING_KILLS = 0x0543, + COMMAND_SET_LONGEST_TIME_IN_BLOOD_RING = 0x0544, + COMMAND_REMOVE_EVERYTHING_FOR_HUGE_CUTSCENE = 0x0545, + COMMAND_IS_PLAYER_TOUCHING_VEHICLE = 0x0546, + COMMAND_IS_CHAR_TOUCHING_VEHICLE = 0x0547, + COMMAND_CHECK_FOR_PED_MODEL_AROUND_PLAYER = 0x0548, + COMMAND_CLEAR_CHAR_FOLLOW_PATH = 0x0549, + COMMAND_SET_CHAR_CAN_BE_SHOT_IN_VEHICLE = 0x054A, + COMMAND_ATTACH_CUTSCENE_OBJECT_TO_VEHICLE = 0x054B, + COMMAND_LOAD_MISSION_TEXT = 0x054C, + COMMAND_SET_TONIGHTS_EVENT = 0x054D, + COMMAND_CLEAR_CHAR_LAST_DAMAGE_ENTITY = 0x054E, + COMMAND_CLEAR_CAR_LAST_DAMAGE_ENTITY = 0x054F, + COMMAND_FREEZE_OBJECT_POSITION = 0x0550, + COMMAND_SET_PLAYER_HAS_MET_DEBBIE_HARRY = 0x0551, + COMMAND_SET_RIOT_INTENSITY = 0x0552, + COMMAND_IS_CAR_IN_ANGLED_AREA_2D = 0x0553, + COMMAND_IS_CAR_IN_ANGLED_AREA_3D = 0x0554, + COMMAND_REMOVE_WEAPON_FROM_CHAR = 0x0555, + COMMAND_SET_UP_TAXI_SHORTCUT = 0x0556, + COMMAND_CLEAR_TAXI_SHORTCUT = 0x0557, + COMMAND_SET_CHAR_OBJ_GOTO_CAR_ON_FOOT = 0x0558, + COMMAND_GET_CLOSEST_WATER_NODE = 0x0559, + COMMAND_ADD_PORN_LEAFLET_TO_RUBBISH = 0x055A, + COMMAND_CREATE_CLOTHES_PICKUP = 0x055B, + COMMAND_CHANGE_BLIP_THRESHOLD = 0x055C, + COMMAND_MAKE_PLAYER_FIRE_PROOF = 0x055D, + COMMAND_INCREASE_PLAYER_MAX_HEALTH = 0x055E, + COMMAND_INCREASE_PLAYER_MAX_ARMOUR = 0x055F, + COMMAND_CREATE_RANDOM_CHAR_AS_DRIVER = 0x0560, + COMMAND_CREATE_RANDOM_CHAR_AS_PASSENGER = 0x0561, + COMMAND_SET_CHAR_IGNORE_THREATS_BEHIND_OBJECTS = 0x0562, + COMMAND_ENSURE_PLAYER_HAS_DRIVE_BY_WEAPON = 0x0563, + COMMAND_MAKE_HELI_COME_CRASHING_DOWN = 0x0564, + COMMAND_ADD_EXPLOSION_NO_SOUND = 0x0565, + COMMAND_SET_OBJECT_AREA_VISIBLE = 0x0566, + COMMAND_WAS_VEHICLE_EVER_POLICE = 0x0567, + COMMAND_SET_CHAR_NEVER_TARGETTED = 0x0568, + COMMAND_LOAD_UNCOMPRESSED_ANIM = 0x0569, + COMMAND_WAS_CUTSCENE_SKIPPED = 0x056A, + COMMAND_SET_CHAR_CROUCH_WHEN_THREATENED = 0x056B, + COMMAND_IS_CHAR_IN_ANY_POLICE_VEHICLE = 0x056C, + COMMAND_DOES_CHAR_EXIST = 0x056D, + COMMAND_DOES_VEHICLE_EXIST = 0x056E, + COMMAND_ADD_SHORT_RANGE_BLIP_FOR_CONTACT_POINT = 0x056F, + COMMAND_ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT = 0x0570, + COMMAND_IS_CHAR_STUCK = 0x0571, + COMMAND_SET_ALL_TAXIS_HAVE_NITRO = 0x0572, + COMMAND_SET_CHAR_STOP_SHOOT_DONT_SEEK_ENTITY = 0x0573, + COMMAND_FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION = 0x0574, + COMMAND_FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION = 0x0575, + COMMAND_FREEZE_OBJECT_POSITION_AND_DONT_LOAD_COLLISION = 0x0576, + COMMAND_SET_FADE_AND_JUMPCUT_AFTER_RC_EXPLOSION = 0x0577, + COMMAND_REGISTER_VIGILANTE_LEVEL = 0x0578, + COMMAND_CLEAR_ALL_CHAR_ANIMS = 0x0579, + COMMAND_SET_MAXIMUM_NUMBER_OF_CARS_IN_GARAGE = 0x057A, + COMMAND_WANTED_STARS_ARE_FLASHING = 0x057B, + COMMAND_SET_ALLOW_HURRICANES = 0x057C, + COMMAND_PLAY_ANNOUNCEMENT = 0x057D, + COMMAND_SET_PLAYER_IS_IN_STADIUM = 0x057E, + COMMAND_GET_BUS_FARES_COLLECTED_BY_PLAYER = 0x057F, + COMMAND_SET_CHAR_OBJ_BUY_ICE_CREAM = 0x0580, + COMMAND_DISPLAY_RADAR = 0x0581, + COMMAND_REGISTER_BEST_POSITION = 0x0582, + COMMAND_IS_PLAYER_IN_INFO_ZONE = 0x0583, + COMMAND_CLEAR_CHAR_ICE_CREAM_PURCHASE = 0x0584, + COMMAND_IS_IN_CAR_FIRE_BUTTON_PRESSED = 0x0585, + COMMAND_HAS_CHAR_ATTEMPTED_ATTRACTOR = 0x0586, + COMMAND_SET_LOAD_COLLISION_FOR_CAR_FLAG = 0x0587, + COMMAND_SET_LOAD_COLLISION_FOR_CHAR_FLAG = 0x0588, + COMMAND_SET_LOAD_COLLISION_FOR_OBJECT_FLAG = 0x0589, + COMMAND_ADD_BIG_GUN_FLASH = 0x058A, + COMMAND_HAS_CHAR_BOUGHT_ICE_CREAM = 0x058B, + COMMAND_GET_PROGRESS_PERCENTAGE = 0x058C, + COMMAND_SET_SHORTCUT_PICKUP_POINT = 0x058D, + COMMAND_SET_SHORTCUT_DROPOFF_POINT_FOR_MISSION = 0x058E, + COMMAND_GET_RANDOM_ICE_CREAM_CUSTOMER_IN_AREA = 0x058F, + COMMAND_GET_RANDOM_ICE_CREAM_CUSTOMER_IN_ZONE = 0x0590, + COMMAND_UNLOCK_ALL_CAR_DOORS_IN_AREA = 0x0591, + COMMAND_SET_GANG_ATTACK_PLAYER_WITH_COPS = 0x0592, + COMMAND_SET_CHAR_FRIGHTENED_IN_JACKED_CAR = 0x0593, + COMMAND_SET_VEHICLE_TO_FADE_IN = 0x0594, + COMMAND_REGISTER_ODDJOB_MISSION_PASSED = 0x0595, + COMMAND_IS_PLAYER_IN_SHORTCUT_TAXI = 0x0596, + COMMAND_IS_CHAR_DUCKING = 0x0597, + COMMAND_CREATE_DUST_EFFECT_FOR_CUTSCENE_HELI = 0x0598, + COMMAND_REGISTER_FIRE_LEVEL = 0x0599, + COMMAND_IS_AUSTRALIAN_GAME = 0x059A, + COMMAND_DISARM_CAR_BOMB = 0x059B, + COMMAND_SET_ONSCREEN_COUNTER_FLASH_WHEN_FIRST_DISPLAYED = 0x059C, + COMMAND_SHUFFLE_CARD_DECKS = 0x059D, + COMMAND_FETCH_NEXT_CARD = 0x059E, + COMMAND_GET_OBJECT_VELOCITY = 0x059F, + COMMAND_IS_DEBUG_CAMERA_ON = 0x05A0, + COMMAND_ADD_TO_OBJECT_ROTATION_VELOCITY = 0x05A1, + COMMAND_SET_OBJECT_ROTATION_VELOCITY = 0x05A2, + COMMAND_IS_OBJECT_STATIC = 0x05A3, + COMMAND_GET_ANGLE_BETWEEN_2D_VECTORS = 0x05A4, + COMMAND_DO_2D_RECTANGLES_COLLIDE = 0x05A5, + COMMAND_GET_OBJECT_ROTATION_VELOCITY = 0x05A6, + COMMAND_ADD_VELOCITY_RELATIVE_TO_OBJECT_VELOCITY = 0x05A7, + COMMAND_GET_OBJECT_SPEED = 0x05A8, + COMMAND_SET_VAR_TEXT_LABEL = 0x05A9, + COMMAND_SET_LVAR_TEXT_LABEL = 0x05AA, + COMMAND_VAR_TEXT_LABEL = 0x05AB, + COMMAND_LVAR_TEXT_LABEL = 0x05AC, + COMMAND_IS_VAR_TEXT_LABEL_EQUAL_TO_TEXT_LABEL = 0x05AD, + COMMAND_IS_LVAR_TEXT_LABEL_EQUAL_TO_TEXT_LABEL = 0x05AE, + COMMAND_DO_2D_LINES_INTERSECT = 0x05AF, + COMMAND_GET_2D_LINES_INTERSECT_POINT = 0x05B0, + COMMAND_IS_2D_POINT_IN_TRIANGLE = 0x05B1, + COMMAND_IS_2D_POINT_IN_RECTANGLE_ON_LEFT_SIDE_OF_LINE = 0x05B2, + COMMAND_IS_2D_POINT_ON_LEFT_SIDE_OF_2D_LINE = 0x05B3, + COMMAND_CHAR_LOOK_AT_OBJECT_ALWAYS = 0x05B4, + COMMAND_APPLY_COLLISION_ON_OBJECT = 0x05B5, + COMMAND_SAVE_STRING_TO_DEBUG_FILE = 0x05B6, + COMMAND_TASK_PLAYER_ON_FOOT = 0x05B7, + COMMAND_TASK_PLAYER_IN_CAR = 0x05B8, + COMMAND_TASK_PAUSE = 0x05B9, + COMMAND_TASK_STAND_STILL = 0x05BA, + COMMAND_TASK_FALL_AND_GET_UP = 0x05BB, + COMMAND_TASK_JUMP = 0x05BC, + COMMAND_TASK_TIRED = 0x05BD, + COMMAND_TASK_DIE = 0x05BE, + COMMAND_TASK_LOOK_AT_CHAR = 0x05BF, + COMMAND_TASK_LOOK_AT_VEHICLE = 0x05C0, + COMMAND_TASK_SAY = 0x05C1, + COMMAND_TASK_SHAKE_FIST = 0x05C2, + COMMAND_TASK_COWER = 0x05C3, + COMMAND_TASK_HANDS_UP = 0x05C4, + COMMAND_TASK_DUCK = 0x05C5, + COMMAND_TASK_DETONATE = 0x05C6, + COMMAND_TASK_USE_ATM = 0x05C7, + COMMAND_TASK_SCRATCH_HEAD = 0x05C8, + COMMAND_TASK_LOOK_ABOUT = 0x05C9, + COMMAND_TASK_ENTER_CAR_AS_PASSENGER = 0x05CA, + COMMAND_TASK_ENTER_CAR_AS_DRIVER = 0x05CB, + COMMAND_TASK_STEAL_CAR = 0x05CC, + COMMAND_TASK_LEAVE_CAR = 0x05CD, + COMMAND_TASK_LEAVE_CAR_AND_DIE = 0x05CE, + COMMAND_TASK_LEAVE_CAR_AND_FLEE = 0x05CF, + COMMAND_TASK_CAR_DRIVE = 0x05D0, + COMMAND_TASK_CAR_DRIVE_TO_COORD = 0x05D1, + COMMAND_TASK_CAR_DRIVE_WANDER = 0x05D2, + COMMAND_TASK_GO_STRAIGHT_TO_COORD = 0x05D3, + COMMAND_TASK_ACHIEVE_HEADING = 0x05D4, + COMMAND_SET_CHAR_IN_DISGUISE = 0x05D5, + COMMAND_FLUSH_ROUTE = 0x05D6, + COMMAND_EXTEND_ROUTE = 0x05D7, + COMMAND_TASK_FOLLOW_POINT_ROUTE = 0x05D8, + COMMAND_TASK_GOTO_CHAR = 0x05D9, + COMMAND_TASK_FLEE_POINT = 0x05DA, + COMMAND_TASK_FLEE_CHAR = 0x05DB, + COMMAND_TASK_SMART_FLEE_POINT = 0x05DC, + COMMAND_TASK_SMART_FLEE_CHAR = 0x05DD, + COMMAND_TASK_WANDER_STANDARD = 0x05DE, + COMMAND_TASK_WANDER_COP = 0x05DF, + COMMAND_TASK_WANDER_CRIMINAL = 0x05E0, + COMMAND_TASK_FOLLOW_LEADER_IN_FORMATION = 0x05E1, + COMMAND_TASK_KILL_CHAR_ON_FOOT = 0x05E2, + COMMAND_START_ADDING_STUNT_POINTS = 0x05E3, + COMMAND_ADD_STUNT_POINT = 0x05E4, + COMMAND_START_PLAYING_STUNT = 0x05E5, + COMMAND_HAS_STUNT_ENDED = 0x05E6, + COMMAND_HAS_STUNT_FAILED = 0x05E7, + COMMAND_START_RECORDING_STUNT = 0x05E8, + COMMAND_START_RECORDING_CAR = 0x05E9, + COMMAND_STOP_RECORDING_CARS = 0x05EA, + COMMAND_START_PLAYBACK_RECORDED_CAR = 0x05EB, + COMMAND_STOP_PLAYBACK_RECORDED_CAR = 0x05EC, + COMMAND_PAUSE_PLAYBACK_RECORDED_CAR = 0x05ED, + COMMAND_UNPAUSE_PLAYBACK_RECORDED_CAR = 0x05EE, + COMMAND_SET_CAR_PROTECT_CAR_REAR = 0x05EF, + COMMAND_SET_CAR_PROTECT_CAR_FRONT = 0x05F0, + COMMAND_SET_CAR_ESCORT_CAR_LEFT = 0x05F1, + COMMAND_SET_CAR_ESCORT_CAR_RIGHT = 0x05F2, + COMMAND_SET_CAR_ESCORT_CAR_REAR = 0x05F3, + COMMAND_SET_CAR_ESCORT_CAR_FRONT = 0x05F4, + COMMAND_TASK_FOLLOW_PATH_NODES_TO_COORD = 0x05F5, + COMMAND_IS_CHAR_IN_ANGLED_AREA_2D = 0x05F6, + COMMAND_IS_CHAR_IN_ANGLED_AREA_ON_FOOT_2D = 0x05F7, + COMMAND_IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D = 0x05F8, + COMMAND_IS_CHAR_STOPPED_IN_ANGLED_AREA_2D = 0x05F9, + COMMAND_IS_CHAR_STOPPED_IN_ANGLED_AREA_ON_FOOT_2D = 0x05FA, + COMMAND_IS_CHAR_STOPPED_IN_ANGLED_AREA_IN_CAR_2D = 0x05FB, + COMMAND_IS_CHAR_IN_ANGLED_AREA_3D = 0x05FC, + COMMAND_IS_CHAR_IN_ANGLED_AREA_ON_FOOT_3D = 0x05FD, + COMMAND_IS_CHAR_IN_ANGLED_AREA_IN_CAR_3D = 0x05FE, + COMMAND_IS_CHAR_STOPPED_IN_ANGLED_AREA_3D = 0x05FF, + COMMAND_IS_CHAR_STOPPED_IN_ANGLED_AREA_ON_FOOT_3D = 0x0600, + COMMAND_IS_CHAR_STOPPED_IN_ANGLED_AREA_IN_CAR_3D = 0x0601, + COMMAND_IS_CHAR_IN_TAXI = 0x0602, + COMMAND_TASK_GO_TO_COORD_ANY_MEANS = 0x0603, + COMMAND_GET_HEADING_FROM_VECTOR_2D = 0x0604, + COMMAND_TASK_PLAY_ANIM = 0x0605, + COMMAND_LOAD_PATH_NODES_IN_AREA = 0x0606, + COMMAND_RELEASE_PATH_NODES = 0x0607, + COMMAND_HAVE_PATH_NODES_BEEN_LOADED = 0x0608, + COMMAND_LOAD_ALL_PATH_NODES_FOR_DEBUG = 0x0609, + COMMAND_LOAD_CHAR_DECISION_MAKER = 0x060A, + COMMAND_SET_CHAR_DECISION_MAKER = 0x060B, + COMMAND_CLEAR_ALL_DECISION_MAKERS = 0x060C, + COMMAND_SET_TEXT_DROPSHADOW = 0x060D, + COMMAND_IS_PLAYBACK_GOING_ON_FOR_CAR = 0x060E, + COMMAND_SET_SENSE_RANGE = 0x060F, + COMMAND_SET_HEARING_RANGE = 0x0610, + COMMAND_IS_CHAR_PLAYING_ANIM = 0x0611, + COMMAND_SET_CHAR_ANIM_PLAYING_FLAG = 0x0612, + COMMAND_GET_CHAR_ANIM_CURRENT_TIME = 0x0613, + COMMAND_SET_CHAR_ANIM_CURRENT_TIME = 0x0614, + COMMAND_OPEN_SEQUENCE_TASK = 0x0615, + COMMAND_CLOSE_SEQUENCE_TASK = 0x0616, + COMMAND_SCRIPT_EVENT = 0x0617, + COMMAND_PERFORM_SEQUENCE_TASK = 0x0618, + COMMAND_SET_CHAR_COLLISION = 0x0619, + COMMAND_GET_CHAR_ANIM_TOTAL_TIME = 0x061A, + COMMAND_CLEAR_SEQUENCE_TASK = 0x061B, + COMMAND_CLEAR_ALL_SEQUENCE_TASKS = 0x061C, + COMMAND_ADD_ATTRACTOR = 0x061D, + COMMAND_CLEAR_ATTRACTOR = 0x061E, + COMMAND_CLEAR_ALL_ATTRACTORS = 0x061F, + COMMAND_TASK_PLAY_ANIM_FOR_TIME = 0x0620, + COMMAND_CREATE_CHAR_AT_ATTRACTOR = 0x0621, + COMMAND_TASK_LEAVE_CAR_IMMEDIATELY = 0x0622, + COMMAND_INCREMENT_INT_STAT = 0x0623, + COMMAND_INCREMENT_FLOAT_STAT = 0x0624, + COMMAND_DECREMENT_INT_STAT = 0x0625, + COMMAND_DECREMENT_FLOAT_STAT = 0x0626, + COMMAND_REGISTER_INT_STAT = 0x0627, + COMMAND_REGISTER_FLOAT_STAT = 0x0628, + COMMAND_SET_INT_STAT = 0x0629, + COMMAND_SET_FLOAT_STAT = 0x062A, + COMMAND_GET_ATTEMPTS_FOR_THIS_MISSION = 0x062B, + COMMAND_REGISTER_THIS_MISSION_HAS_BEEN_ATTEMPTED = 0x062C, + COMMAND_REGISTER_THIS_MISSION_HAS_BEEN_PASSED = 0x062D, + COMMAND_GET_SCRIPT_TASK_STATUS = 0x062E, + COMMAND_CREATE_GROUP = 0x062F, + COMMAND_SET_GROUP_LEADER = 0x0630, + COMMAND_SET_GROUP_MEMBER = 0x0631, + COMMAND_REMOVE_GROUP = 0x0632, + COMMAND_TASK_LEAVE_ANY_CAR = 0x0633, + COMMAND_TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING = 0x0634, + COMMAND_TASK_AIM_GUN_AT_CHAR = 0x0635, + COMMAND_TASK_SIDE_STEP_AND_SHOOT = 0x0636, + COMMAND_TASK_GO_TO_COORD_WHILE_SHOOTING = 0x0637, + COMMAND_TASK_STAY_IN_SAME_PLACE = 0x0638, + COMMAND_TASK_TURN_CHAR_TO_FACE_CHAR = 0x0639, + COMMAND_OPEN_THREAT_LIST = 0x063A, + COMMAND_CLOSE_THREAT_LIST = 0x063B, + COMMAND_SET_PEDMODEL_AS_THREAT = 0x063C, + COMMAND_SET_CHAR_THREAT_LIST = 0x063D, + COMMAND_REMOVE_THREAT_LIST = 0x063E, + COMMAND_PERFORM_SEQUENCE_TASK_REPEATEDLY = 0x063F, + COMMAND_SET_PEDTYPE_AS_THREAT = 0x0640, + COMMAND_CLEAR_CHAR_THREATS = 0x0641, + COMMAND_IS_CHAR_AT_SCRIPTED_ATTRACTOR = 0x0642, + COMMAND_SET_SEQUENCE_TO_REPEAT = 0x0643, + COMMAND_CREATE_PED_GENERATOR = 0x0644, + COMMAND_SWITCH_PED_GENERATOR = 0x0645, + COMMAND_GET_SEQUENCE_PROGRESS = 0x0646, + COMMAND_CLEAR_LOOK_AT = 0x0647, + COMMAND_SET_FOLLOW_NODE_THRESHOLD_DISTANCE = 0x0648, + COMMAND_SET_CHAR_ZONE_DISTANCE = 0x0649, + COMMAND_ADD_PEDMODEL_AS_ATTRACTOR_USER = 0x064A, + COMMAND_CREATE_FX_SYSTEM = 0x064B, + COMMAND_PLAY_FX_SYSTEM = 0x064C, + COMMAND_PAUSE_FX_SYSTEM = 0x064D, + COMMAND_STOP_FX_SYSTEM = 0x064E, + COMMAND_PLAY_AND_KILL_FX_SYSTEM = 0x064F, + COMMAND_KILL_FX_SYSTEM = 0x0650, + COMMAND_CREATE_FX_SYSTEM_WITH_DIRECTION = 0x0651, + COMMAND_GET_INT_STAT = 0x0652, + COMMAND_GET_FLOAT_STAT = 0x0653, + COMMAND_SET_OBJECT_RENDER_SCORCHED = 0x0654, + COMMAND_TASK_LOOK_AT_OBJECT = 0x0655, + COMMAND_LIMIT_ANGLE = 0x0656, + COMMAND_OPEN_CAR_DOOR = 0x0657, + COMMAND_SET_GROUP_DEFAULT_LEADER_TASK = 0x0658, + COMMAND_SET_ATTRACTOR_PAIR = 0x0659, + COMMAND_PLACE_CHAR_AT_ATTRACTOR = 0x065A, + COMMAND_GET_PICKUP_COORDINATES = 0x065B, + COMMAND_REMOVE_DECISION_MAKER = 0x065C, + COMMAND_VIEW_INTEGER_VARIABLE = 0x065D, + COMMAND_VIEW_FLOAT_VARIABLE = 0x065E, + COMMAND_WATCH_INTEGER_VARIABLE = 0x065F, + COMMAND_WATCH_FLOAT_VARIABLE = 0x0660, + COMMAND_BREAKPOINT = 0x0661, + COMMAND_WRITE_DEBUG = 0x0662, + COMMAND_WRITE_DEBUG_WITH_INT = 0x0663, + COMMAND_WRITE_DEBUG_WITH_FLOAT = 0x0664, + COMMAND_GET_CHAR_MODEL = 0x0665, + COMMAND_IS_CHAR_TOUCHING_ANY_OBJECT = 0x0666, + COMMAND_TASK_AIM_GUN_AT_COORD = 0x0667, + COMMAND_TASK_SHOOT_AT_COORD = 0x0668, + COMMAND_CREATE_FX_SYSTEM_ON_CHAR = 0x0669, + COMMAND_CREATE_FX_SYSTEM_ON_CHAR_WITH_DIRECTION = 0x066A, + COMMAND_CREATE_FX_SYSTEM_ON_CAR = 0x066B, + COMMAND_CREATE_FX_SYSTEM_ON_CAR_WITH_DIRECTION = 0x066C, + COMMAND_CREATE_FX_SYSTEM_ON_OBJECT = 0x066D, + COMMAND_CREATE_FX_SYSTEM_ON_OBJECT_WITH_DIRECTION = 0x066E, + COMMAND_ADD_QUEUED_DIALOGUE = 0x066F, + COMMAND_IS_DIALOGUE_FINISHED = 0x0670, + COMMAND_IS_DIALOGUE_PLAYING = 0x0671, + COMMAND_TASK_DESTROY_CAR = 0x0672, + COMMAND_TASK_DIVE_AND_GET_UP = 0x0673, + COMMAND_CUSTOM_PLATE_FOR_NEXT_CAR = 0x0674, + COMMAND_CREATE_PED_GENERATOR_AT_ATTRACTOR = 0x0675, + COMMAND_TASK_SHUFFLE_TO_NEXT_CAR_SEAT = 0x0676, + COMMAND_TASK_CHAT_WITH_CHAR = 0x0677, + COMMAND_GET_CHAR_AT_SCRIPTED_ATTRACTOR = 0x0678, + COMMAND_ATTACH_CAMERA_TO_VEHICLE = 0x0679, + COMMAND_ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE = 0x067A, + COMMAND_ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_CHAR = 0x067B, + COMMAND_ATTACH_CAMERA_TO_CHAR = 0x067C, + COMMAND_ATTACH_CAMERA_TO_CHAR_LOOK_AT_VEHICLE = 0x067D, + COMMAND_ATTACH_CAMERA_TO_CHAR_LOOK_AT_CHAR = 0x067E, + COMMAND_FORCE_CAR_LIGHTS = 0x067F, + COMMAND_ADD_PEDTYPE_AS_ATTRACTOR_USER = 0x0680, + COMMAND_ATTACH_OBJECT_TO_CAR = 0x0681, + COMMAND_DETACH_OBJECT = 0x0682, + COMMAND_ATTACH_CAR_TO_CAR = 0x0683, + COMMAND_DETACH_CAR = 0x0684, + COMMAND_IS_OBJECT_ATTACHED = 0x0685, + COMMAND_IS_VEHICLE_ATTACHED = 0x0686, + COMMAND_CLEAR_CHAR_TASKS = 0x0687, + COMMAND_TASK_TOGGLE_PED_THREAT_SCANNER = 0x0688, + COMMAND_POP_CAR_DOOR = 0x0689, + COMMAND_FIX_CAR_DOOR = 0x068A, + COMMAND_TASK_EVERYONE_LEAVE_CAR = 0x068B, + COMMAND_IS_PLAYER_TARGETTING_ANYTHING = 0x068C, + COMMAND_GET_ACTIVE_CAMERA_COORDINATES = 0x068D, + COMMAND_GET_ACTIVE_CAMERA_POINT_AT = 0x068E, + COMMAND_GET_CLOSEST_BUYABLE_OBJECT_TO_PLAYER = 0x068F, + COMMAND_OPEN_FRIEND_LIST = 0x0690, + COMMAND_CLOSE_FRIEND_LIST = 0x0691, + COMMAND_REMOVE_FRIEND_LIST = 0x0692, + COMMAND_SET_PEDMODEL_AS_FRIEND = 0x0693, + COMMAND_SET_PEDTYPE_AS_FRIEND = 0x0694, + COMMAND_CLEAR_CHAR_FRIENDS = 0x0695, + COMMAND_SET_CHAR_FRIEND_LIST = 0x0696, + COMMAND_POP_CAR_PANEL = 0x0697, + COMMAND_FIX_CAR_PANEL = 0x0698, + COMMAND_FIX_CAR_TYRE = 0x0699, + COMMAND_ATTACH_OBJECT_TO_OBJECT = 0x069A, + COMMAND_ATTACH_OBJECT_TO_CHAR = 0x069B, + COMMAND_ATTACH_CAMERA_TO_OBJECT = 0x069C, + COMMAND_ATTACH_CAMERA_TO_OBJECT_LOOK_AT_VEHICLE = 0x069D, + COMMAND_ATTACH_CAMERA_TO_OBJECT_LOOK_AT_CHAR = 0x069E, + COMMAND_ATTACH_CAMERA_TO_OBJECT_LOOK_AT_OBJECT = 0x069F, + COMMAND_ATTACH_CAMERA_TO_CHAR_LOOK_AT_OBJECT = 0x06A0, + COMMAND_ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_OBJECT = 0x06A1, + COMMAND_GET_CAR_SPEED_VECTOR = 0x06A2, + COMMAND_GET_CAR_MASS = 0x06A3, + COMMAND_TASK_KILL_THREATS_ON_FOOT_WHILE_DUCKING = 0x06A4, + COMMAND_TASK_DIVE_FROM_ATTACHMENT_AND_GET_UP = 0x06A5, + COMMAND_TASK_PLAY_ANIM_WITH_VELOCITY_EXTRACTION = 0x06A6, + COMMAND_ATTACH_CHAR_TO_BIKE = 0x06A7, + COMMAND_TASK_GOTO_CHAR_OFFSET = 0x06A8, + COMMAND_TASK_LOOK_AT_COORD = 0x06A9, + COMMAND_IS_RECORDING_GOING_ON_FOR_CAR = 0x06AA, + COMMAND_HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE = 0x06AB, + COMMAND_GET_CHAR_SPEED = 0x06AC, + COMMAND_SET_GROUP_DECISION_MAKER = 0x06AD, + COMMAND_LOAD_GROUP_DECISION_MAKER = 0x06AE, + COMMAND_DISABLE_PLAYER_SPRINT = 0x06AF, + COMMAND_TASK_SIT_DOWN = 0x06B0, + COMMAND_CREATE_SEARCHLIGHT = 0x06B1, + COMMAND_DELETE_SEARCHLIGHT = 0x06B2, + COMMAND_DOES_SEARCHLIGHT_EXIST = 0x06B3, + COMMAND_MOVE_SEARCHLIGHT_BETWEEN_COORDS = 0x06B4, + COMMAND_POINT_SEARCHLIGHT_AT_COORD = 0x06B5, + COMMAND_POINT_SEARCHLIGHT_AT_CHAR = 0x06B6, + COMMAND_IS_CHAR_IN_SEARCHLIGHT = 0x06B7, + COMMAND_SET_GROUP_DEFAULT_TASK = 0x06B8, + COMMAND_HAS_CUTSCENE_LOADED = 0x06B9, + COMMAND_TASK_TURN_CHAR_TO_FACE_COORD = 0x06BA, + COMMAND_TASK_DRIVE_POINT_ROUTE = 0x06BB, + COMMAND_FIRE_SINGLE_BULLET = 0x06BC, + COMMAND_IS_LINE_OF_SIGHT_CLEAR = 0x06BD, + COMMAND_GET_CAR_ROLL = 0x06BE, + COMMAND_POINT_SEARCHLIGHT_AT_VEHICLE = 0x06BF, + COMMAND_IS_VEHICLE_IN_SEARCHLIGHT = 0x06C0, + COMMAND_CREATE_SEARCHLIGHT_ON_VEHICLE = 0x06C1, + COMMAND_TASK_GO_TO_COORD_WHILE_AIMING = 0x06C2, + COMMAND_GET_NUMBER_OF_FIRES_IN_RANGE = 0x06C3, + COMMAND_ADD_BLIP_FOR_SEARCHLIGHT = 0x06C4, + COMMAND_SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR = 0x06C5, + COMMAND_TASK_OPEN_DRIVER_DOOR = 0x06C6, + COMMAND_TASK_CAR_TEMP_ACTION = 0x06C7, + COMMAND_SET_LA_RIOTS = 0x06C8, + COMMAND_REMOVE_CHAR_FROM_GROUP = 0x06C9, + COMMAND_ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT = 0x06CA, + COMMAND_SET_VEHICLE_RECORDS_COLLISIONS = 0x06CB, + COMMAND_DRAW_CROSS_IN_FRONT_OF_DEBUG_CAMERA = 0x06CC, + COMMAND_DRAW_DEBUG_CUBE = 0x06CD, + COMMAND_GET_CAR_LAST_ROUTE_COORDS = 0x06CE, + COMMAND_DISPLAY_TIMER_BARS = 0x06CF, + COMMAND_SWITCH_EMERGENCY_SERVICES = 0x06D0, + COMMAND_SET_VAR_TEXT_LABEL16 = 0x06D1, + COMMAND_SET_LVAR_TEXT_LABEL16 = 0x06D2, + COMMAND_VAR_TEXT_LABEL16 = 0x06D3, + COMMAND_LVAR_TEXT_LABEL16 = 0x06D4, + COMMAND_CREATE_CHECKPOINT = 0x06D5, + COMMAND_DELETE_CHECKPOINT = 0x06D6, + COMMAND_SWITCH_RANDOM_TRAINS = 0x06D7, + COMMAND_CREATE_MISSION_TRAIN = 0x06D8, + COMMAND_DELETE_MISSION_TRAINS = 0x06D9, + COMMAND_MARK_MISSION_TRAINS_AS_NO_LONGER_NEEDED = 0x06DA, + COMMAND_DELETE_ALL_TRAINS = 0x06DB, + COMMAND_SET_TRAIN_SPEED = 0x06DC, + COMMAND_SET_TRAIN_CRUISE_SPEED = 0x06DD, + COMMAND_GET_TRAIN_CABOOSE = 0x06DE, + COMMAND_DELETE_PLAYER = 0x06DF, + COMMAND_SET_TWO_PLAYER_CAMERA_MODE = 0x06E0, + COMMAND_TASK_CAR_MISSION = 0x06E1, + COMMAND_TASK_GO_TO_OBJECT = 0x06E2, + COMMAND_TASK_WEAPON_ROLL = 0x06E3, + COMMAND_TASK_CHAR_ARREST_CHAR = 0x06E4, + COMMAND_GET_AVAILABLE_VEHICLE_MOD = 0x06E5, + COMMAND_GET_VEHICLE_MOD_TYPE = 0x06E6, + COMMAND_ADD_VEHICLE_MOD = 0x06E7, + COMMAND_REMOVE_VEHICLE_MOD = 0x06E8, + COMMAND_REQUEST_VEHICLE_MOD = 0x06E9, + COMMAND_HAS_VEHICLE_MOD_LOADED = 0x06EA, + COMMAND_MARK_VEHICLE_MOD_AS_NO_LONGER_NEEDED = 0x06EB, + COMMAND_GET_NUM_AVAILABLE_PAINTJOBS = 0x06EC, + COMMAND_GIVE_VEHICLE_PAINTJOB = 0x06ED, + COMMAND_IS_GROUP_MEMBER = 0x06EE, + COMMAND_IS_GROUP_LEADER = 0x06EF, + COMMAND_SET_GROUP_SEPARATION_RANGE = 0x06F0, + COMMAND_LIMIT_TWO_PLAYER_DISTANCE = 0x06F1, + COMMAND_RELEASE_TWO_PLAYER_DISTANCE = 0x06F2, + COMMAND_SET_PLAYER_PLAYER_TARGETTING = 0x06F3, + COMMAND_CREATE_SCRIPT_GANG_ROADBLOCK = 0x06F4, + COMMAND_GET_SCRIPT_FIRE_COORDS = 0x06F5, + COMMAND_CLEAR_TWO_PLAYER_CAMERA_MODE = 0x06F6, + COMMAND_SET_PLAYER_PASSENGER_CAN_SHOOT = 0x06F7, + COMMAND_GET_NTH_CLOSEST_CAR_NODE_WITH_HEADING = 0x06F8, + COMMAND_GET_HEIGHT_OF_CAR_WHEELS_FROM_GROUND = 0x06F9, + COMMAND_SET_PLAYERS_CAN_BE_IN_SEPARATE_CARS = 0x06FA, + COMMAND_SWITCH_PLAYER_CROSSHAIR = 0x06FB, + COMMAND_DOES_CAR_HAVE_STUCK_CAR_CHECK = 0x06FC, + COMMAND_SET_PLAYBACK_SPEED = 0x06FD, + COMMAND_GET_CAR_VALUE = 0x06FE, + COMMAND_ARE_ANY_CHARS_NEAR_CHAR = 0x06FF, + COMMAND_SKIP_CUTSCENE_START = 0x0700, + COMMAND_SKIP_CUTSCENE_END = 0x0701, + COMMAND_GET_PERCENTAGE_TAGGED_IN_AREA = 0x0702, + COMMAND_SET_TAG_STATUS_IN_AREA = 0x0703, + COMMAND_CAR_GOTO_COORDINATES_RACING = 0x0704, + COMMAND_START_PLAYBACK_RECORDED_CAR_USING_AI = 0x0705, + COMMAND_SKIP_IN_PLAYBACK_RECORDED_CAR = 0x0706, + COMMAND_SKIP_CUTSCENE_START_INTERNAL = 0x0707, + COMMAND_CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE = 0x0708, + COMMAND_ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE = 0x0709, + COMMAND_TASK_PICK_UP_OBJECT = 0x070A, + COMMAND_DROP_OBJECT = 0x070B, + COMMAND_EXPLODE_CAR_IN_CUTSCENE = 0x070C, + COMMAND_BUILD_PLAYER_MODEL = 0x070D, + COMMAND_PLANE_ATTACK_PLAYER = 0x070E, + COMMAND_PLANE_FLY_IN_DIRECTION = 0x070F, + COMMAND_PLANE_FOLLOW_ENTITY = 0x0710, + COMMAND_ALLOCATE_SCRIPT_TO_PED_GENERATOR = 0x0711, + COMMAND_ALLOCATE_SCRIPT_TO_RANDOM_PED = 0x0712, + COMMAND_TASK_DRIVE_BY = 0x0713, + COMMAND_SET_CAR_STAY_IN_SLOW_LANE = 0x0714, + COMMAND_TAKE_REMOTE_CONTROL_OF_CAR = 0x0715, + COMMAND_IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED = 0x0716, + COMMAND_START_SETTING_UP_CONVERSATION = 0x0717, + COMMAND_SET_UP_CONVERSATION_NODE = 0x0718, + COMMAND_FINISH_SETTING_UP_CONVERSATION = 0x0719, + COMMAND_IS_CONVERSATION_AT_NODE = 0x071A, + COMMAND_CLEAR_ALL_CONVERSATIONS = 0x071B, + COMMAND_GET_CHAR_LIGHTING = 0x071C, + COMMAND_SET_CLOSEST_OBJECT_OF_TYPE_RENDER_SCORCHED = 0x071D, + COMMAND_GET_OBJECT_HEALTH = 0x071E, + COMMAND_SET_OBJECT_HEALTH = 0x071F, + COMMAND_GET_VEHICLE_WHEEL_UPGRADE_CLASS = 0x0720, + COMMAND_GET_NUM_WHEELS_IN_UPGRADE_CLASS = 0x0721, + COMMAND_GET_WHEEL_IN_UPGRADE_CLASS = 0x0722, + COMMAND_BREAK_OBJECT = 0x0723, + COMMAND_HELI_ATTACK_PLAYER = 0x0724, + COMMAND_HELI_FLY_IN_DIRECTION = 0x0725, + COMMAND_HELI_FOLLOW_ENTITY = 0x0726, + COMMAND_POLICE_HELI_CHASE_ENTITY = 0x0727, + COMMAND_SET_UP_CONVERSATION_END_NODE = 0x0728, + COMMAND_TASK_USE_MOBILE_PHONE = 0x0729, + COMMAND_TASK_WARP_CHAR_INTO_CAR_AS_DRIVER = 0x072A, + COMMAND_TASK_WARP_CHAR_INTO_CAR_AS_PASSENGER = 0x072B, + COMMAND_SWITCH_COPS_ON_BIKES = 0x072C, + COMMAND_IS_FLAME_IN_ANGLED_AREA_2D = 0x072D, + COMMAND_IS_FLAME_IN_ANGLED_AREA_3D = 0x072E, + COMMAND_ADD_STUCK_CAR_CHECK_WITH_WARP = 0x072F, + COMMAND_DAMAGE_CAR_PANEL = 0x0730, + COMMAND_SET_CAR_ROLL = 0x0731, + COMMAND_SUPPRESS_CAR_MODEL = 0x0732, + COMMAND_DONT_SUPPRESS_CAR_MODEL = 0x0733, + COMMAND_DONT_SUPPRESS_ANY_CAR_MODELS = 0x0734, + COMMAND_IS_PS2_KEYBOARD_KEY_PRESSED = 0x0735, + COMMAND_IS_PS2_KEYBOARD_KEY_JUST_PRESSED = 0x0736, + COMMAND_IS_CHAR_HOLDING_OBJECT = 0x0737, + COMMAND_SET_ZONE_RADAR_COLOURS = 0x0738, + COMMAND_GIVE_LOWRIDER_SUSPENSION_TO_CAR = 0x0739, + COMMAND_DOES_CAR_HAVE_LOWRIDER_SUSPENSION = 0x073A, + COMMAND_SET_CAR_CAN_GO_AGAINST_TRAFFIC = 0x073B, + COMMAND_DAMAGE_CAR_DOOR = 0x073C, + COMMAND_GET_RANDOM_CAR_IN_SPHERE = 0x073D, + COMMAND_GET_RANDOM_CAR_IN_SPHERE_NO_SAVE = 0x073E, + COMMAND_GET_RANDOM_CHAR_IN_SPHERE = 0x073F, + COMMAND_GET_COORDS_OF_CLOSEST_COLLECTABLE1 = 0x0740, + COMMAND_HAS_CHAR_BEEN_ARRESTED = 0x0741, + COMMAND_SET_PLANE_THROTTLE = 0x0742, + COMMAND_HELI_LAND_AT_COORDS = 0x0743, + COMMAND_GET_STAT_CHANGE_AMOUNT = 0x0744, + COMMAND_PLANE_STARTS_IN_AIR = 0x0745, + COMMAND_SET_RELATIONSHIP = 0x0746, + COMMAND_CLEAR_RELATIONSHIP = 0x0747, + COMMAND_CLEAR_ALL_RELATIONSHIPS = 0x0748, + COMMAND_CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE = 0x0749, + COMMAND_ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE = 0x074A, + COMMAND_DRAW_SPRITE_WITH_ROTATION = 0x074B, + COMMAND_TASK_USE_ATTRACTOR = 0x074C, + COMMAND_TASK_SHOOT_AT_CHAR = 0x074D, + COMMAND_SET_INFORM_RESPECTED_FRIENDS = 0x074E, + COMMAND_IS_CHAR_RESPONDING_TO_EVENT = 0x074F, + COMMAND_SET_OBJECT_VISIBLE = 0x0750, + COMMAND_TASK_FLEE_CHAR_ANY_MEANS = 0x0751, + COMMAND_STOP_RECORDING_CAR = 0x0752, + COMMAND_SET_ALERTNESS = 0x0753, + COMMAND_FLUSH_PATROL_ROUTE = 0x0754, + COMMAND_EXTEND_PATROL_ROUTE = 0x0755, + COMMAND_TASK_GO_ON_PATROL = 0x0756, + COMMAND_GET_PATROL_ALERTNESS = 0x0757, + COMMAND_SET_CHAR_SPECIAL_EVENT = 0x0758, + COMMAND_SET_ATTRACTOR_AS_COVER_NODE = 0x0759, + COMMAND_PLAY_OBJECT_ANIM = 0x075A, + COMMAND_SET_RADAR_ZOOM = 0x075B, + COMMAND_DOES_BLIP_EXIST = 0x075C, + COMMAND_LOAD_PRICES = 0x075D, + COMMAND_LOAD_SHOP = 0x075E, + COMMAND_GET_NUMBER_OF_ITEMS_IN_SHOP = 0x075F, + COMMAND_GET_ITEM_IN_SHOP = 0x0760, + COMMAND_GET_PRICE_OF_ITEM = 0x0761, + COMMAND_TASK_DEAD = 0x0762, + COMMAND_SET_CAR_AS_MISSION_CAR = 0x0763, + COMMAND_IS_SEARCHLIGHT_IN_ANGLED_AREA_2D = 0x0764, + COMMAND_IS_SEARCHLIGHT_IN_ANGLED_AREA_3D = 0x0765, + COMMAND_SWITCH_SEARCHLIGHT_BULB = 0x0766, + COMMAND_SET_ZONE_POPULATION_TYPE = 0x0767, + COMMAND_SET_ZONE_GANG_CAP = 0x0768, + COMMAND_GET_ZONE_GANG_CAP = 0x0769, + COMMAND_SET_ZONE_DEALER_STRENGTH = 0x076A, + COMMAND_GET_ZONE_DEALER_STRENGTH = 0x076B, + COMMAND_SET_ZONE_GANG_STRENGTH = 0x076C, + COMMAND_GET_ZONE_GANG_STRENGTH = 0x076D, + COMMAND_SET_NO_POLICE_DURING_LA_RIOTS = 0x076E, + COMMAND_IS_MESSAGE_BEING_DISPLAYED = 0x076F, + COMMAND_SET_CHAR_IS_TARGET_PRIORITY = 0x0770, + COMMAND_CUSTOM_PLATE_DESIGN_FOR_NEXT_CAR = 0x0771, + COMMAND_TASK_GOTO_CAR = 0x0772, + COMMAND_CLEAR_HELP_WITH_THIS_LABEL = 0x0773, + COMMAND_IS_SEARCHLIGHT_BULB_ON = 0x0774, + COMMAND_CREATE_OIL_PUDDLE = 0x0775, + COMMAND_REQUEST_IPL = 0x0776, + COMMAND_REMOVE_IPL = 0x0777, + COMMAND_REMOVE_IPL_DISCREETLY = 0x0778, + COMMAND_TASK_OPEN_PASSENGER_DOOR = 0x0779, + COMMAND_SET_CHAR_RELATIONSHIP = 0x077A, + COMMAND_CLEAR_CHAR_RELATIONSHIP = 0x077B, + COMMAND_CLEAR_ALL_CHAR_RELATIONSHIPS = 0x077C, + COMMAND_GET_CAR_PITCH = 0x077D, + COMMAND_GET_AREA_VISIBLE = 0x077E, + COMMAND_ADD_INT_TO_VAR_CONSOLE = 0x077F, + COMMAND_HELI_KEEP_ENTITY_IN_VIEW = 0x0780, + COMMAND_GET_WEAPONTYPE_MODEL = 0x0781, + COMMAND_GET_WEAPONTYPE_SLOT = 0x0782, + COMMAND_GET_SHOPPING_EXTRA_INFO = 0x0783, + COMMAND_GIVE_PLAYER_CLOTHES = 0x0784, + COMMAND_GIVE_PLAYER_TATTOO = 0x0785, + COMMAND_GET_NUMBER_OF_FIRES_IN_AREA = 0x0786, + COMMAND_SET_CHAR_TYRES_CAN_BE_BURST = 0x0787, + COMMAND_ATTACH_WINCH_TO_HELI = 0x0788, + COMMAND_RELEASE_ENTITY_FROM_WINCH = 0x0789, + COMMAND_GET_TRAIN_CARRIAGE = 0x078A, + COMMAND_GRAB_ENTITY_ON_WINCH = 0x078B, + COMMAND_GET_NAME_OF_ITEM = 0x078C, + COMMAND_ADD_FLOAT_TO_VAR_CONSOLE = 0x078D, + COMMAND_TASK_DRAG_CHAR_FROM_CAR = 0x078E, + COMMAND_TASK_CLIMB = 0x078F, + COMMAND_BUY_ITEM = 0x0790, + COMMAND_BUY_TATTOO = 0x0791, + COMMAND_CLEAR_CHAR_TASKS_IMMEDIATELY = 0x0792, + COMMAND_STORE_CLOTHES_STATE = 0x0793, + COMMAND_RESTORE_CLOTHES_STATE = 0x0794, + COMMAND_DELETE_WINCH_FOR_HELI = 0x0795, + COMMAND_GET_ROPE_HEIGHT_FOR_OBJECT = 0x0796, + COMMAND_SET_ROPE_HEIGHT_FOR_OBJECT = 0x0797, + COMMAND_GRAB_ENTITY_ON_ROPE_FOR_OBJECT = 0x0798, + COMMAND_RELEASE_ENTITY_FROM_ROPE_FOR_OBJECT = 0x0799, + COMMAND_ATTACH_CAR_TO_ROPE_FOR_OBJECT = 0x079A, + COMMAND_ATTACH_CHAR_TO_ROPE_FOR_OBJECT = 0x079B, + COMMAND_ATTACH_OBJECT_TO_ROPE_FOR_OBJECT = 0x079C, + COMMAND_PLAYER_ENTERED_DOCK_CRANE = 0x079D, + COMMAND_PLAYER_ENTERED_BUILDINGSITE_CRANE = 0x079E, + COMMAND_PLAYER_LEFT_CRANE = 0x079F, + COMMAND_PERFORM_SEQUENCE_TASK_FROM_PROGRESS = 0x07A0, + COMMAND_SET_NEXT_DESIRED_MOVE_STATE = 0x07A1, + COMMAND_SET_NEXT_EVENT_RESPONSE_SEQUENCE = 0x07A2, + COMMAND_TASK_GOTO_CHAR_AIMING = 0x07A3, + COMMAND_GET_SEQUENCE_PROGRESS_RECURSIVE = 0x07A4, + COMMAND_TASK_KILL_CHAR_ON_FOOT_TIMED = 0x07A5, + COMMAND_GET_NEAREST_TAG_POSITION = 0x07A6, + COMMAND_TASK_JETPACK = 0x07A7, + COMMAND_SET_AREA51_SAM_SITE = 0x07A8, + COMMAND_IS_CHAR_IN_ANY_SEARCHLIGHT = 0x07A9, + COMMAND_GET_SEARCHLIGHT_COORDS = 0x07AA, + COMMAND_IS_TRAILER_ATTACHED_TO_CAB = 0x07AB, + COMMAND_DETACH_TRAILER_FROM_CAB = 0x07AC, + COMMAND_GET_TRAILER_ATTACHED_TO_CAB = 0x07AD, + COMMAND_GET_CAB_ATTACHED_TO_TRAILER = 0x07AE, + COMMAND_GET_PLAYER_GROUP = 0x07AF, + COMMAND_GET_LOADED_SHOP = 0x07B0, + COMMAND_GET_BEAT_PROXIMITY = 0x07B1, + COMMAND_SET_BEAT_ZONE_SIZE = 0x07B2, + COMMAND_SET_GROUP_DEFAULT_TASK_ALLOCATOR = 0x07B3, + COMMAND_SET_PLAYER_GROUP_RECRUITMENT = 0x07B4, + COMMAND_DISPLAY_TWO_ONSCREEN_COUNTERS = 0x07B5, + COMMAND_DISPLAY_TWO_ONSCREEN_COUNTERS_WITH_STRING = 0x07B6, + COMMAND_DISPLAY_NTH_TWO_ONSCREEN_COUNTERS = 0x07B7, + COMMAND_DISPLAY_NTH_TWO_ONSCREEN_COUNTERS_WITH_STRING = 0x07B8, + COMMAND_TASK_KILL_CHAR_ON_FOOT_PATROL = 0x07B9, + COMMAND_HELI_AIM_AHEAD_OF_TARGET_ENTITY = 0x07BA, + COMMAND_ACTIVATE_HELI_SPEED_CHEAT = 0x07BB, + COMMAND_TASK_SET_CHAR_DECISION_MAKER = 0x07BC, + COMMAND_DELETE_MISSION_TRAIN = 0x07BD, + COMMAND_MARK_MISSION_TRAIN_AS_NO_LONGER_NEEDED = 0x07BE, + COMMAND_SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR = 0x07BF, + COMMAND_REQUEST_CAR_RECORDING = 0x07C0, + COMMAND_HAS_CAR_RECORDING_BEEN_LOADED = 0x07C1, + COMMAND_DISPLAY_PLAYBACK_RECORDED_CAR = 0x07C2, + COMMAND_GET_OBJECT_QUATERNION = 0x07C3, + COMMAND_SET_OBJECT_QUATERNION = 0x07C4, + COMMAND_GET_VEHICLE_QUATERNION = 0x07C5, + COMMAND_SET_VEHICLE_QUATERNION = 0x07C6, + COMMAND_SET_MISSION_TRAIN_COORDINATES = 0x07C7, + COMMAND_DISPLAY_DEBUG_MESSAGE = 0x07C8, + COMMAND_TASK_COMPLEX_PICKUP_OBJECT = 0x07C9, + COMMAND_TASK_SIMPLE_PUTDOWN_OBJECT = 0x07CA, + COMMAND_LISTEN_TO_PLAYER_GROUP_COMMANDS = 0x07CB, + COMMAND_SET_PLAYER_ENTER_CAR_BUTTON = 0x07CC, + COMMAND_TASK_CHAR_SLIDE_TO_COORD = 0x07CD, + COMMAND_SET_BULLET_WHIZZ_BY_DISTANCE = 0x07CE, + COMMAND_SET_TWO_PLAYER_CAM_MODE_SEPARATE_CARS = 0x07CF, + COMMAND_GET_CURRENT_DAY_OF_WEEK = 0x07D0, + COMMAND_SET_CURRENT_DAY_OF_WEEK = 0x07D1, + COMMAND_ACTIVATE_INTERIORS = 0x07D2, + COMMAND_REGISTER_SCRIPT_BRAIN_FOR_CODE_USE = 0x07D3, + COMMAND_REGISTER_OBJECT_SCRIPT_BRAIN_FOR_CODE_USE = 0x07D4, + COMMAND_APPLY_FORCE_TO_CAR = 0x07D5, + COMMAND_IS_INT_LVAR_EQUAL_TO_INT_VAR = 0x07D6, + COMMAND_IS_FLOAT_LVAR_EQUAL_TO_FLOAT_VAR = 0x07D7, + COMMAND_IS_INT_LVAR_NOT_EQUAL_TO_INT_VAR = 0x07D8, + COMMAND_IS_FLOAT_LVAR_NOT_EQUAL_TO_FLOAT_VAR = 0x07D9, + COMMAND_ADD_TO_CAR_ROTATION_VELOCITY = 0x07DA, + COMMAND_SET_CAR_ROTATION_VELOCITY = 0x07DB, + COMMAND_GET_CAR_ROTATION_VELOCITY = 0x07DC, + COMMAND_SET_CHAR_SHOOT_RATE = 0x07DD, + COMMAND_IS_MODEL_IN_CDIMAGE = 0x07DE, + COMMAND_REMOVE_OIL_PUDDLES_IN_AREA = 0x07DF, + COMMAND_SET_BLIP_AS_FRIENDLY = 0x07E0, + COMMAND_TASK_SWIM_TO_COORD = 0x07E1, + COMMAND_TASK_GO_STRAIGHT_TO_COORD_WITHOUT_STOPPING = 0x07E2, + COMMAND_GET_BEAT_INFO_FOR_CURRENT_TRACK = 0x07E3, + COMMAND_GET_MODEL_DIMENSIONS = 0x07E4, + COMMAND_COPY_CHAR_DECISION_MAKER = 0x07E5, + COMMAND_COPY_GROUP_DECISION_MAKER = 0x07E6, + COMMAND_TASK_DRIVE_POINT_ROUTE_ADVANCED = 0x07E7, + COMMAND_IS_RELATIONSHIP_SET = 0x07E8, + COMMAND_HAS_CHAR_SPOTTED_CAR = 0x07E9, + COMMAND_SET_ROPE_HEIGHT_FOR_HELI = 0x07EA, + COMMAND_GET_ROPE_HEIGHT_FOR_HELI = 0x07EB, + COMMAND_IS_CAR_LOWRIDER = 0x07EC, + COMMAND_IS_PERFORMANCE_CAR = 0x07ED, + COMMAND_SET_CAR_ALWAYS_CREATE_SKIDS = 0x07EE, + COMMAND_GET_CITY_FROM_COORDS = 0x07EF, + COMMAND_HAS_OBJECT_OF_TYPE_BEEN_SMASHED = 0x07F0, + COMMAND_IS_PLAYER_PERFORMING_WHEELIE = 0x07F1, + COMMAND_IS_PLAYER_PERFORMING_STOPPIE = 0x07F2, + COMMAND_SET_CHECKPOINT_COORDS = 0x07F3, + COMMAND_SET_ONSCREEN_TIMER_DISPLAY = 0x07F4, + COMMAND_CONTROL_CAR_HYDRAULICS = 0x07F5, + COMMAND_GET_GROUP_SIZE = 0x07F6, + COMMAND_SET_OBJECT_COLLISION_DAMAGE_EFFECT = 0x07F7, + COMMAND_SET_CAR_FOLLOW_CAR = 0x07F8, + COMMAND_PLAYER_ENTERED_QUARRY_CRANE = 0x07F9, + COMMAND_PLAYER_ENTERED_LAS_VEGAS_CRANE = 0x07FA, + COMMAND_SWITCH_ENTRY_EXIT = 0x07FB, + COMMAND_DISPLAY_TEXT_WITH_FLOAT = 0x07FC, + COMMAND_DOES_GROUP_EXIST = 0x07FD, + COMMAND_GIVE_MELEE_ATTACK_TO_CHAR = 0x07FE, + COMMAND_SET_CAR_HYDRAULICS = 0x07FF, + COMMAND_IS_2PLAYER_GAME_GOING_ON = 0x0800, + COMMAND_GET_CAMERA_FOV = 0x0801, + COMMAND_SET_GLOBAL_PED_SEARCH_PARAMS = 0x0802, + COMMAND_DOES_CAR_HAVE_HYDRAULICS = 0x0803, + COMMAND_TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM = 0x0804, + COMMAND_ALLOCATE_SCRIPT_TO_OBJECT = 0x0805, + COMMAND_GET_TOTAL_NUMBER_OF_PEDS_KILLED_BY_PLAYER = 0x0806, + COMMAND_SET_TWO_PLAYER_CAM_MODE_SAME_CAR_SHOOTING = 0x0807, + COMMAND_SET_TWO_PLAYER_CAM_MODE_SAME_CAR_NO_SHOOTING = 0x0808, + COMMAND_SET_TWO_PLAYER_CAM_MODE_NOT_BOTH_IN_CAR = 0x0809, + COMMAND_GET_LEVEL_DESIGN_COORDS_FOR_OBJECT = 0x080A, + COMMAND_SAVE_TEXT_LABEL_TO_DEBUG_FILE = 0x080B, + COMMAND_GET_CHAR_BREATH = 0x080C, + COMMAND_SET_CHAR_BREATH = 0x080D, + COMMAND_GET_CHAR_HIGHEST_PRIORITY_EVENT = 0x080E, + COMMAND_ARE_PATHS_LOADED_FOR_CAR = 0x080F, + COMMAND_GET_PARKING_NODE_IN_AREA = 0x0810, + COMMAND_GET_CAR_CHAR_IS_USING = 0x0811, + COMMAND_TASK_PLAY_ANIM_NON_INTERRUPTABLE = 0x0812, + COMMAND_FORCE_NEXT_DIE_ANIM = 0x0813, + COMMAND_ADD_STUNT_JUMP = 0x0814, + COMMAND_SET_OBJECT_COORDINATES_AND_VELOCITY = 0x0815, + COMMAND_SET_CHAR_KINDA_STAY_IN_SAME_PLACE = 0x0816, + COMMAND_TASK_FOLLOW_PATROL_ROUTE = 0x0817, + COMMAND_IS_CHAR_IN_AIR = 0x0818, + COMMAND_GET_CHAR_HEIGHT_ABOVE_GROUND = 0x0819, + COMMAND_SET_CHAR_WEAPON_SKILL = 0x081A, + COMMAND_ARE_PATHS_LOADED_IN_AREA = 0x081B, + COMMAND_SET_TEXT_EDGE = 0x081C, + COMMAND_SET_CAR_ENGINE_BROKEN = 0x081D, + COMMAND_IS_THIS_MODEL_A_BOAT = 0x081E, + COMMAND_IS_THIS_MODEL_A_PLANE = 0x081F, + COMMAND_IS_THIS_MODEL_A_HELI = 0x0820, + COMMAND_IS_3D_COORD_IN_ZONE = 0x0821, + COMMAND_SET_FIRST_PERSON_IN_CAR_CAMERA_MODE = 0x0822, + COMMAND_TASK_GREET_PARTNER = 0x0823, + COMMAND_GET_CLOSEST_PICKUP_COORDS_TO_COORD = 0x0824, + COMMAND_SET_HELI_BLADES_FULL_SPEED = 0x0825, + COMMAND_DISPLAY_HUD = 0x0826, + COMMAND_CONNECT_LODS = 0x0827, + COMMAND_SET_MAX_FIRE_GENERATIONS = 0x0828, + COMMAND_TASK_DIE_NAMED_ANIM = 0x0829, + COMMAND_SET_PLAYER_DUCK_BUTTON = 0x082A, + COMMAND_FIND_NEAREST_MULTIBUILDING = 0x082B, + COMMAND_SET_MULTIBUILDING_MODEL = 0x082C, + COMMAND_GET_NUMBER_MULTIBUILDING_MODELS = 0x082D, + COMMAND_GET_MULTIBUILDING_MODEL_INDEX = 0x082E, + COMMAND_SET_CURRENT_BUYABLE_PROPERTY = 0x082F, + COMMAND_SET_POOL_TABLE_COORDS = 0x0830, + COMMAND_IS_AUDIO_BUILD = 0x0831, + COMMAND_CLEAR_QUEUED_DIALOGUE = 0x0832, + COMMAND_HAS_OBJECT_BEEN_PHOTOGRAPHED = 0x0833, + COMMAND_DO_CAMERA_BUMP = 0x0834, + COMMAND_GET_CURRENT_DATE = 0x0835, + COMMAND_SET_OBJECT_ANIM_SPEED = 0x0836, + COMMAND_IS_OBJECT_PLAYING_ANIM = 0x0837, + COMMAND_SET_OBJECT_ANIM_PLAYING_FLAG = 0x0838, + COMMAND_GET_OBJECT_ANIM_CURRENT_TIME = 0x0839, + COMMAND_SET_OBJECT_ANIM_CURRENT_TIME = 0x083A, + COMMAND_GET_OBJECT_ANIM_TOTAL_TIME = 0x083B, + COMMAND_SET_CHAR_VELOCITY = 0x083C, + COMMAND_GET_CHAR_VELOCITY = 0x083D, + COMMAND_SET_CHAR_ROTATION = 0x083E, + COMMAND_GET_CAR_UPRIGHT_VALUE = 0x083F, + COMMAND_SET_VEHICLE_AREA_VISIBLE = 0x0840, + COMMAND_SELECT_WEAPONS_FOR_VEHICLE = 0x0841, + COMMAND_GET_CITY_PLAYER_IS_IN = 0x0842, + COMMAND_GET_NAME_OF_ZONE = 0x0843, + COMMAND_IS_VAR_TEXT_LABEL_EMPTY = 0x0844, + COMMAND_IS_LVAR_TEXT_LABEL_EMPTY = 0x0845, + COMMAND_IS_VAR_TEXT_LABEL16_EMPTY = 0x0846, + COMMAND_IS_LVAR_TEXT_LABEL16_EMPTY = 0x0847, + COMMAND_SWITCH = 0x0848, + COMMAND_ENDSWITCH = 0x0849, + COMMAND_CASE = 0x084A, + COMMAND_DEFAULT = 0x084B, + COMMAND_BREAK = 0x084C, + COMMAND_ACTIVATE_INTERIOR_PEDS = 0x084D, + COMMAND_SET_VEHICLE_CAN_BE_TARGETTED = 0x084E, + COMMAND_GET_GROUP_LEADER = 0x084F, + COMMAND_TASK_FOLLOW_FOOTSTEPS = 0x0850, + COMMAND_DAMAGE_CHAR = 0x0851, + COMMAND_SET_CAR_CAN_BE_VISIBLY_DAMAGED = 0x0852, + COMMAND_SET_HELI_REACHED_TARGET_DISTANCE = 0x0853, + COMMAND_BLOCK_NODES_IN_AREA = 0x0854, + COMMAND_GET_SOUND_LEVEL_AT_COORDS = 0x0855, + COMMAND_SET_CHAR_ALLOWED_TO_DUCK = 0x0856, + COMMAND_SET_WATER_CONFIGURATION = 0x0857, + COMMAND_SET_HEADING_FOR_ATTACHED_PLAYER = 0x0858, + COMMAND_TASK_WALK_ALONGSIDE_CHAR = 0x0859, + COMMAND_CREATE_EMERGENCY_SERVICES_CAR = 0x085A, + COMMAND_TASK_KINDA_STAY_IN_SAME_PLACE = 0x085B, + COMMAND_TASK_USE_ATTRACTOR_ADVANCED = 0x085C, + COMMAND_TASK_FOLLOW_PATH_NODES_TO_COORD_SHOOTING = 0x085D, + COMMAND_START_PLAYBACK_RECORDED_CAR_LOOPED = 0x085E, + COMMAND_START_PLAYBACK_RECORDED_CAR_USING_AI_LOOPED = 0x085F, + COMMAND_SET_CHAR_AREA_VISIBLE = 0x0860, + COMMAND_IS_ATTACHED_PLAYER_HEADING_ACHIEVED = 0x0861, + COMMAND_GET_MODEL_NAME_FOR_DEBUG_ONLY = 0x0862, + COMMAND_TASK_USE_NEARBY_ENTRY_EXIT = 0x0863, + COMMAND_ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING = 0x0864, + COMMAND_FREEZE_STATE_OF_INTERIORS = 0x0865, + COMMAND_GET_CLOSEST_STEALABLE_OBJECT = 0x0866, + COMMAND_IS_PROCEDURAL_INTERIOR_ACTIVE = 0x0867, + COMMAND_CLEAR_THIS_VIEW_INTEGER_VARIABLE = 0x0868, + COMMAND_CLEAR_THIS_VIEW_FLOAT_VARIABLE = 0x0869, + COMMAND_CLEAR_ALL_VIEW_VARIABLES = 0x086A, + COMMAND_CLEAR_THIS_INTEGER_WATCHPOINT = 0x086B, + COMMAND_CLEAR_THIS_FLOAT_WATCHPOINT = 0x086C, + COMMAND_CLEAR_ALL_BREAKPOINTS = 0x086D, + COMMAND_CLEAR_ALL_WATCHPOINTS = 0x086E, + COMMAND_IS_THIS_MODEL_A_TRAIN = 0x086F, + COMMAND_GET_VEHICLE_CHAR_IS_STANDING_ON = 0x0870, + COMMAND_SWITCH_START = 0x0871, + COMMAND_SWITCH_CONTINUED = 0x0872, + COMMAND_REMOVE_CAR_RECORDING = 0x0873, + COMMAND_SET_ZONE_POPULATION_RACE = 0x0874, + COMMAND_SET_OBJECT_ONLY_DAMAGED_BY_PLAYER = 0x0875, + COMMAND_CREATE_BIRDS = 0x0876, + COMMAND_GET_VEHICLE_DIRT_LEVEL = 0x0877, + COMMAND_SET_VEHICLE_DIRT_LEVEL = 0x0878, + COMMAND_SET_GANG_WARS_ACTIVE = 0x0879, + COMMAND_IS_GANG_WAR_GOING_ON = 0x087A, + COMMAND_GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP = 0x087B, + COMMAND_CLEAR_LOADED_SHOP = 0x087C, + COMMAND_SET_GROUP_SEQUENCE = 0x087D, + COMMAND_SET_CHAR_DROPS_WEAPONS_WHEN_DEAD = 0x087E, + COMMAND_SET_CHAR_NEVER_LEAVES_GROUP = 0x087F, + COMMAND_DRAW_RECT_WITH_TITLE = 0x0880, + COMMAND_SET_PLAYER_FIRE_BUTTON = 0x0881, + COMMAND_SET_ATTRACTOR_RADIUS = 0x0882, + COMMAND_ATTACH_FX_SYSTEM_TO_CHAR_BONE = 0x0883, + COMMAND_REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE = 0x0884, + COMMAND_CONST_INT = 0x0885, + COMMAND_CONST_FLOAT = 0x0886, + COMMAND_SET_HEADING_LIMIT_FOR_ATTACHED_CHAR = 0x0887, + COMMAND_ADD_BLIP_FOR_DEAD_CHAR = 0x0888, + COMMAND_GET_DEAD_CHAR_COORDINATES = 0x0889, + COMMAND_TASK_PLAY_ANIM_WITH_FLAGS = 0x088A, + COMMAND_SET_VEHICLE_AIR_RESISTANCE_MULTIPLIER = 0x088B, + COMMAND_SET_CAR_COORDINATES_NO_OFFSET = 0x088C, + COMMAND_SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE = 0x088D, + COMMAND_SET_TIME_ONE_DAY_FORWARD = 0x088E, + COMMAND_SET_TIME_ONE_DAY_BACK = 0x088F, + COMMAND_SET_TIMER_BEEP_COUNTDOWN_TIME = 0x0890, + COMMAND_TASK_SIT_IN_RESTAURANT = 0x0891, + COMMAND_GET_RANDOM_ATTRACTOR_ON_CLOSEST_OBJECT_OF_TYPE = 0x0892, + COMMAND_ATTACH_TRAILER_TO_CAB = 0x0893, + COMMAND_ADD_INTERESTING_ENTITY_FOR_CHAR = 0x0894, + COMMAND_CLEAR_INTERESTING_ENTITIES_FOR_CHAR = 0x0895, + COMMAND_GET_CLOSEST_ATTRACTOR = 0x0896, + COMMAND_IS_VEHICLE_TOUCHING_OBJECT = 0x0897, + COMMAND_ENABLE_CRANE_CONTROLS = 0x0898, + COMMAND_ALLOCATE_SCRIPT_TO_ATTRACTOR = 0x0899, + COMMAND_GET_CLOSEST_ATTRACTOR_WITH_THIS_SCRIPT = 0x089A, + COMMAND_IS_PLAYER_IN_POSITION_FOR_CONVERSATION = 0x089B, + COMMAND_ENABLE_CONVERSATION = 0x089C, + COMMAND_GET_CONVERSATION_STATUS = 0x089D, + COMMAND_GET_RANDOM_CHAR_IN_SPHERE_ONLY_DRUGS_BUYERS = 0x089E, + COMMAND_GET_PED_TYPE = 0x089F, + COMMAND_TASK_USE_CLOSEST_MAP_ATTRACTOR = 0x08A0, + COMMAND_GET_CHAR_MAP_ATTRACTOR_STATUS = 0x08A1, + COMMAND_PLANE_ATTACK_PLAYER_USING_DOG_FIGHT = 0x08A2, + COMMAND_CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION = 0x08A3, + COMMAND_CONTROL_MOVABLE_VEHICLE_PART = 0x08A4, + COMMAND_WINCH_CAN_PICK_VEHICLE_UP = 0x08A5, + COMMAND_OPEN_CAR_DOOR_A_BIT = 0x08A6, + COMMAND_IS_CAR_DOOR_FULLY_OPEN = 0x08A7, + COMMAND_SET_ALWAYS_DRAW_3D_MARKERS = 0x08A8, + COMMAND_STREAM_SCRIPT = 0x08A9, + COMMAND_STREAM_SCRIPT_INTERNAL = 0x08AA, + COMMAND_HAS_STREAMED_SCRIPT_LOADED = 0x08AB, + COMMAND_SET_GANG_WARS_TRAINING_MISSION = 0x08AC, + COMMAND_SET_CHAR_HAS_USED_ENTRY_EXIT = 0x08AD, + COMMAND_DRAW_WINDOW_TEXT = 0x08AE, + COMMAND_SET_CHAR_MAX_HEALTH = 0x08AF, + COMMAND_SET_CAR_PITCH = 0x08B0, + COMMAND_SET_NIGHT_VISION = 0x08B1, + COMMAND_SET_INFRARED_VISION = 0x08B2, + COMMAND_SET_ZONE_FOR_GANG_WARS_TRAINING = 0x08B3, + COMMAND_IS_GLOBAL_VAR_BIT_SET_CONST = 0x08B4, + COMMAND_IS_GLOBAL_VAR_BIT_SET_VAR = 0x08B5, + COMMAND_IS_GLOBAL_VAR_BIT_SET_LVAR = 0x08B6, + COMMAND_IS_LOCAL_VAR_BIT_SET_CONST = 0x08B7, + COMMAND_IS_LOCAL_VAR_BIT_SET_VAR = 0x08B8, + COMMAND_IS_LOCAL_VAR_BIT_SET_LVAR = 0x08B9, + COMMAND_SET_GLOBAL_VAR_BIT_CONST = 0x08BA, + COMMAND_SET_GLOBAL_VAR_BIT_VAR = 0x08BB, + COMMAND_SET_GLOBAL_VAR_BIT_LVAR = 0x08BC, + COMMAND_SET_LOCAL_VAR_BIT_CONST = 0x08BD, + COMMAND_SET_LOCAL_VAR_BIT_VAR = 0x08BE, + COMMAND_SET_LOCAL_VAR_BIT_LVAR = 0x08BF, + COMMAND_CLEAR_GLOBAL_VAR_BIT_CONST = 0x08C0, + COMMAND_CLEAR_GLOBAL_VAR_BIT_VAR = 0x08C1, + COMMAND_CLEAR_GLOBAL_VAR_BIT_LVAR = 0x08C2, + COMMAND_CLEAR_LOCAL_VAR_BIT_CONST = 0x08C3, + COMMAND_CLEAR_LOCAL_VAR_BIT_VAR = 0x08C4, + COMMAND_CLEAR_LOCAL_VAR_BIT_LVAR = 0x08C5, + COMMAND_SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE = 0x08C6, + COMMAND_SET_CHAR_COORDINATES_DONT_WARP_GANG = 0x08C7, + COMMAND_ADD_PRICE_MODIFIER = 0x08C8, + COMMAND_REMOVE_PRICE_MODIFIER = 0x08C9, + COMMAND_INIT_ZONE_POPULATION_SETTINGS = 0x08CA, + COMMAND_EXPLODE_CAR_IN_CUTSCENE_SHAKE_AND_BITS = 0x08CB, + COMMAND_PICK_UP_OBJECT_WITH_WINCH = 0x08CC, + COMMAND_PICK_UP_VEHICLE_WITH_WINCH = 0x08CD, + COMMAND_PICK_UP_CHAR_WITH_WINCH = 0x08CE, + COMMAND_STORE_CAR_IN_NEAREST_IMPOUNDING_GARAGE = 0x08CF, + COMMAND_IS_SKIP_CUTSCENE_BUTTON_PRESSED = 0x08D0, + COMMAND_GET_CUTSCENE_OFFSET = 0x08D1, + COMMAND_SET_OBJECT_SCALE = 0x08D2, + COMMAND_GET_CURRENT_POPULATION_ZONE_TYPE = 0x08D3, + COMMAND_CREATE_MENU = 0x08D4, + COMMAND_CONSTANT_INT = 0x08D5, + COMMAND_SET_MENU_COLUMN_ORIENTATION = 0x08D6, + COMMAND_GET_MENU_ITEM_SELECTED = 0x08D7, + COMMAND_GET_MENU_ITEM_ACCEPTED = 0x08D8, + COMMAND_ACTIVATE_MENU_ITEM = 0x08D9, + COMMAND_DELETE_MENU = 0x08DA, + COMMAND_SET_MENU_COLUMN = 0x08DB, + COMMAND_SET_BLIP_ENTRY_EXIT = 0x08DC, + COMMAND_SWITCH_DEATH_PENALTIES = 0x08DD, + COMMAND_SWITCH_ARREST_PENALTIES = 0x08DE, + COMMAND_SET_EXTRA_HOSPITAL_RESTART_POINT = 0x08DF, + COMMAND_SET_EXTRA_POLICE_STATION_RESTART_POINT = 0x08E0, + COMMAND_FIND_NUMBER_TAGS_TAGGED = 0x08E1, + COMMAND_GET_TERRITORY_UNDER_CONTROL_PERCENTAGE = 0x08E2, + COMMAND_IS_OBJECT_IN_ANGLED_AREA_2D = 0x08E3, + COMMAND_IS_OBJECT_IN_ANGLED_AREA_3D = 0x08E4, + COMMAND_GET_RANDOM_CHAR_IN_SPHERE_NO_BRAIN = 0x08E5, + COMMAND_SET_PLANE_UNDERCARRIAGE_UP = 0x08E6, + COMMAND_DISABLE_ALL_ENTRY_EXITS = 0x08E7, + COMMAND_ATTACH_ANIMS_TO_MODEL = 0x08E8, + COMMAND_SET_OBJECT_AS_STEALABLE = 0x08E9, + COMMAND_SET_CREATE_RANDOM_GANG_MEMBERS = 0x08EA, + COMMAND_ADD_SPARKS = 0x08EB, + COMMAND_GET_VEHICLE_CLASS = 0x08EC, + COMMAND_CLEAR_CONVERSATION_FOR_CHAR = 0x08ED, + COMMAND_SET_MENU_ITEM_WITH_NUMBER = 0x08EE, + COMMAND_SET_MENU_ITEM_WITH_2_NUMBERS = 0x08EF, + COMMAND_APPEND_TO_NEXT_CUTSCENE = 0x08F0, + COMMAND_GET_NAME_OF_INFO_ZONE = 0x08F1, + COMMAND_VEHICLE_CAN_BE_TARGETTED_BY_HS_MISSILE = 0x08F2, + COMMAND_SET_FREEBIES_IN_VEHICLE = 0x08F3, + COMMAND_SET_SCRIPT_LIMIT_TO_GANG_SIZE = 0x08F4, + COMMAND_MAKE_PLAYER_GANG_DISAPPEAR = 0x08F5, + COMMAND_MAKE_PLAYER_GANG_REAPPEAR = 0x08F6, + COMMAND_GET_CLOTHES_ITEM = 0x08F7, + COMMAND_SHOW_UPDATE_STATS = 0x08F8, + COMMAND_IS_VAR_TEXT_LABEL16_EQUAL_TO_TEXT_LABEL = 0x08F9, + COMMAND_IS_LVAR_TEXT_LABEL16_EQUAL_TO_TEXT_LABEL = 0x08FA, + COMMAND_SET_COORD_BLIP_APPEARANCE = 0x08FB, + COMMAND_GET_MENU_POSITION = 0x08FC, + COMMAND_SET_HEATHAZE_EFFECT = 0x08FD, + COMMAND_IS_HELP_MESSAGE_BEING_DISPLAYED = 0x08FE, + COMMAND_HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON = 0x08FF, + COMMAND_CLEAR_OBJECT_LAST_WEAPON_DAMAGE = 0x0900, + COMMAND_SET_PLAYER_JUMP_BUTTON = 0x0901, + COMMAND_SET_OBJECT_BEEN_PHOTOGRAPHED_FLAG = 0x0902, + COMMAND_SET_CHAR_BEEN_PHOTOGRAPHED_FLAG = 0x0903, + COMMAND_GET_HUD_COLOUR = 0x0904, + COMMAND_LOCK_DOOR = 0x0905, + COMMAND_SET_OBJECT_MASS = 0x0906, + COMMAND_GET_OBJECT_MASS = 0x0907, + COMMAND_SET_OBJECT_TURN_MASS = 0x0908, + COMMAND_GET_OBJECT_TURN_MASS = 0x0909, + COMMAND_IS_PLAYBACK_FOR_CAR_PAUSED = 0x090A, + COMMAND_TRIGGER_PED_BOUNCE = 0x090B, + COMMAND_SET_SPECIFIC_ZONE_TO_TRIGGER_GANG_WAR = 0x090C, + COMMAND_CLEAR_SPECIFIC_ZONES_TO_TRIGGER_GANG_WAR = 0x090D, + COMMAND_SET_ACTIVE_MENU_ITEM = 0x090E, + COMMAND_MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED = 0x090F, + COMMAND_REMOVE_STREAMED_SCRIPT = 0x0910, + COMMAND_REGISTER_STREAMED_SCRIPT = 0x0911, + COMMAND_SET_MESSAGE_FORMATTING = 0x0912, + COMMAND_START_NEW_STREAMED_SCRIPT = 0x0913, + COMMAND_REGISTER_STREAMED_SCRIPT_INTERNAL = 0x0914, + COMMAND_SET_WEATHER_TO_APPROPRIATE_TYPE_NOW = 0x0915, + COMMAND_WINCH_CAN_PICK_OBJECT_UP = 0x0916, + COMMAND_SWITCH_AUDIO_ZONE = 0x0917, + COMMAND_SET_CAR_ENGINE_ON = 0x0918, + COMMAND_SET_CAR_LIGHTS_ON = 0x0919, + COMMAND_GET_LATEST_CONSOLE_COMMAND = 0x091A, + COMMAND_RESET_LATEST_CONSOLE_COMMAND = 0x091B, + COMMAND_GET_USER_OF_CLOSEST_MAP_ATTRACTOR = 0x091C, + COMMAND_SWITCH_ROADS_BACK_TO_ORIGINAL = 0x091D, + COMMAND_SWITCH_PED_ROADS_BACK_TO_ORIGINAL = 0x091E, + COMMAND_GET_PLANE_UNDERCARRIAGE_POSITION = 0x091F, + COMMAND_CAMERA_SET_VECTOR_TRACK = 0x0920, + COMMAND_CAMERA_SET_SHAKE_SIMULATION = 0x0921, + COMMAND_CAMERA_SET_LERP_FOV = 0x0922, + COMMAND_SWITCH_AMBIENT_PLANES = 0x0923, + COMMAND_SET_DARKNESS_EFFECT = 0x0924, + COMMAND_CAMERA_RESET_NEW_SCRIPTABLES = 0x0925, + COMMAND_GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT = 0x0926, + COMMAND_ALLOCATE_STREAMED_SCRIPT_TO_PED_GENERATOR = 0x0927, + COMMAND_ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED = 0x0928, + COMMAND_ALLOCATE_STREAMED_SCRIPT_TO_OBJECT = 0x0929, + COMMAND_SET_PLAYER_CAN_BE_DAMAGED = 0x092A, + COMMAND_GET_GROUP_MEMBER = 0x092B, + COMMAND_GET_PLAYERS_GANG_IN_CAR_ACTIVE = 0x092C, + COMMAND_SET_PLAYERS_GANG_IN_CAR_ACTIVE = 0x092D, + COMMAND_GET_WATER_HEIGHT_AT_COORDS = 0x092E, + COMMAND_CAMERA_PERSIST_TRACK = 0x092F, + COMMAND_CAMERA_PERSIST_POS = 0x0930, + COMMAND_CAMERA_PERSIST_FOV = 0x0931, + COMMAND_CAMERA_IS_FOV_RUNNING = 0x0932, + COMMAND_CAMERA_IS_VECTOR_MOVE_RUNNING = 0x0933, + COMMAND_CAMERA_IS_VECTOR_TRACK_RUNNING = 0x0934, + COMMAND_CAMERA_IS_SHAKE_RUNNING = 0x0935, + COMMAND_CAMERA_SET_VECTOR_MOVE = 0x0936, + COMMAND_DRAW_WINDOW = 0x0937, + COMMAND_CLEAR_ALL_QUEUED_DIALOGUE = 0x0938, + COMMAND_ATTACH_CAR_TO_OBJECT = 0x0939, + COMMAND_SET_GARAGE_RESPRAY_FREE = 0x093A, + COMMAND_SET_CHAR_BULLETPROOF_VEST = 0x093B, + COMMAND_SET_ONSCREEN_COUNTER_COLOUR = 0x093C, + COMMAND_SET_CINEMA_CAMERA = 0x093D, + COMMAND_SET_CHAR_FIRE_DAMAGE_MULTIPLIER = 0x093E, + COMMAND_IS_FIRE_BUTTON_PRESSED = 0x093F, + COMMAND_SET_GROUP_FOLLOW_STATUS = 0x0940, + COMMAND_SET_SEARCHLIGHT_CLIP_IF_COLLIDING = 0x0941, + COMMAND_HAS_PLAYER_BOUGHT_ITEM = 0x0942, + COMMAND_SET_CAMERA_BEHIND_CHAR = 0x0943, + COMMAND_SET_CAMERA_IN_FRONT_OF_CHAR = 0x0944, + COMMAND_GET_PLAYER_MAX_ARMOUR = 0x0945, + COMMAND_SET_CHAR_USES_UPPERBODY_DAMAGE_ANIMS_ONLY = 0x0946, + COMMAND_SET_CHAR_SAY_CONTEXT = 0x0947, + COMMAND_ADD_EXPLOSION_VARIABLE_SHAKE = 0x0948, + COMMAND_ATTACH_MISSION_AUDIO_TO_CHAR = 0x0949, + COMMAND_UPDATE_PICKUP_MONEY_PER_DAY = 0x094A, + COMMAND_GET_NAME_OF_ENTRY_EXIT_CHAR_USED = 0x094B, + COMMAND_GET_POSITION_OF_ENTRY_EXIT_CHAR_USED = 0x094C, + COMMAND_IS_CHAR_TALKING = 0x094D, + COMMAND_DISABLE_CHAR_SPEECH = 0x094E, + COMMAND_ENABLE_CHAR_SPEECH = 0x094F, + COMMAND_SET_UP_SKIP = 0x0950, + COMMAND_CLEAR_SKIP = 0x0951, + COMMAND_PRELOAD_BEAT_TRACK = 0x0952, + COMMAND_GET_BEAT_TRACK_STATUS = 0x0953, + COMMAND_PLAY_BEAT_TRACK = 0x0954, + COMMAND_STOP_BEAT_TRACK = 0x0955, + COMMAND_FIND_MAX_NUMBER_OF_GROUP_MEMBERS = 0x0956, + COMMAND_VEHICLE_DOES_PROVIDE_COVER = 0x0957, + COMMAND_CREATE_SNAPSHOT_PICKUP = 0x0958, + COMMAND_CREATE_HORSESHOE_PICKUP = 0x0959, + COMMAND_CREATE_OYSTER_PICKUP = 0x095A, + COMMAND_HAS_OBJECT_BEEN_UPROOTED = 0x095B, + COMMAND_ADD_SMOKE_PARTICLE = 0x095C, + COMMAND_IS_CHAR_STUCK_UNDER_CAR = 0x095D, + COMMAND_CONTROL_CAR_DOOR = 0x095E, + COMMAND_GET_DOOR_ANGLE_RATIO = 0x095F, + COMMAND_SET_PLAYER_DISPLAY_VITAL_STATS_BUTTON = 0x0960, + COMMAND_SET_CHAR_KEEP_TASK = 0x0961, + COMMAND_DOES_CAR_HAVE_ROOF = 0x0962, + COMMAND_SET_BLIP_FADE = 0x0963, + COMMAND_CREATE_MENU_GRID = 0x0964, + COMMAND_IS_CHAR_SWIMMING = 0x0965, + COMMAND_GET_CHAR_SWIM_STATE = 0x0966, + COMMAND_START_CHAR_FACIAL_TALK = 0x0967, + COMMAND_STOP_CHAR_FACIAL_TALK = 0x0968, + COMMAND_IS_BIG_VEHICLE = 0x0969, + COMMAND_SWITCH_POLICE_HELIS = 0x096A, + COMMAND_STORE_CAR_MOD_STATE = 0x096B, + COMMAND_RESTORE_CAR_MOD_STATE = 0x096C, + COMMAND_GET_CURRENT_CAR_MOD = 0x096D, + COMMAND_IS_CAR_LOW_RIDER = 0x096E, + COMMAND_IS_CAR_STREET_RACER = 0x096F, + COMMAND_FORCE_DEATH_RESTART = 0x0970, + COMMAND_SYNC_WATER = 0x0971, + COMMAND_SET_CHAR_COORDINATES_NO_OFFSET = 0x0972, + COMMAND_DOES_SCRIPT_FIRE_EXIST = 0x0973, + COMMAND_RESET_STUFF_UPON_RESURRECTION = 0x0974, + COMMAND_IS_EMERGENCY_SERVICES_VEHICLE = 0x0975, + COMMAND_KILL_FX_SYSTEM_NOW = 0x0976, + COMMAND_IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE = 0x0977, + COMMAND_COPY_SHARED_CHAR_DECISION_MAKER = 0x0978, + COMMAND_LOAD_SHARED_CHAR_DECISION_MAKER = 0x0979, + COMMAND_REPORT_MISSION_AUDIO_EVENT_AT_POSITION = 0x097A, + COMMAND_REPORT_MISSION_AUDIO_EVENT_AT_OBJECT = 0x097B, + COMMAND_ATTACH_MISSION_AUDIO_TO_OBJECT = 0x097C, + COMMAND_GET_NUM_CAR_COLOURS = 0x097D, + COMMAND_IS_POLICE_VEHICLE_IN_PURSUIT = 0x097E, + COMMAND_GET_CAR_COLOUR_FROM_MENU_INDEX = 0x097F, + COMMAND_EXTINGUISH_FIRE_AT_POINT = 0x0980, + COMMAND_HAS_TRAIN_DERAILED = 0x0981, + COMMAND_SET_CHAR_FORCE_DIE_IN_CAR = 0x0982, + COMMAND_SET_ONLY_CREATE_GANG_MEMBERS = 0x0983, + COMMAND_GET_OBJECT_MODEL = 0x0984, + COMMAND_SET_CHAR_USES_COLLISION_CLOSEST_OBJECT_OF_TYPE = 0x0985, + COMMAND_CLEAR_ALL_SCRIPT_FIRE_FLAGS = 0x0986, + COMMAND_GET_CAR_BLOCKING_CAR = 0x0987, + COMMAND_GET_CURRENT_VEHICLE_PAINTJOB = 0x0988, + COMMAND_SET_HELP_MESSAGE_BOX_SIZE = 0x0989, + COMMAND_SET_GUNSHOT_SENSE_RANGE_FOR_RIOT2 = 0x098A, + COMMAND_STRING_CAT16 = 0x098B, + COMMAND_STRING_CAT8 = 0x098C, + COMMAND_GET_CAR_MOVING_COMPONENT_OFFSET = 0x098D, + COMMAND_SET_NAMED_ENTRY_EXIT_FLAG = 0x098E, + COMMAND_RADIANS_TO_DEGREES = 0x098F, + COMMAND_DEGREES_TO_RADIANS = 0x0990, + COMMAND_PAUSE_CURRENT_BEAT_TRACK = 0x0991, + COMMAND_SET_PLAYER_CYCLE_WEAPON_BUTTON = 0x0992, + COMMAND_SET_CHAR_AIR_RESISTANCE_MULTIPLIER = 0x0993, + COMMAND_MARK_ROAD_NODE_AS_DONT_WANDER = 0x0994, + COMMAND_UNMARK_ALL_ROAD_NODES_AS_DONT_WANDER = 0x0995, + COMMAND_SET_CHECKPOINT_HEADING = 0x0996, + COMMAND_SET_MISSION_RESPECT_TOTAL = 0x0997, + COMMAND_AWARD_PLAYER_MISSION_RESPECT = 0x0998, + COMMAND_SET_PLAYER_FIRE_WITH_SHOULDER_BUTTON = 0x0999, + COMMAND_SET_CAR_COLLISION = 0x099A, + COMMAND_CHANGE_PLAYBACK_TO_USE_AI = 0x099B, + COMMAND_CAMERA_SET_SHAKE_SIMULATION_SIMPLE = 0x099C, + COMMAND_IS_NIGHT_VISION_ACTIVE = 0x099D, + COMMAND_SET_CREATE_RANDOM_COPS = 0x099E, + COMMAND_TASK_SET_IGNORE_WEAPON_RANGE_FLAG = 0x099F, + COMMAND_TASK_PICK_UP_SECOND_OBJECT = 0x09A0, + COMMAND_DROP_SECOND_OBJECT = 0x09A1, + COMMAND_REMOVE_OBJECT_ELEGANTLY = 0x09A2, + COMMAND_DRAW_CROSSHAIR = 0x09A3, + COMMAND_SET_UP_CONVERSATION_NODE_WITH_SPEECH = 0x09A4, + COMMAND_SET_CCTV_EFFECT = 0x09A5, + COMMAND_SHOW_BLIPS_ON_ALL_LEVELS = 0x09A6, + COMMAND_SET_CHAR_DRUGGED_UP = 0x09A7, + COMMAND_IS_CHAR_HEAD_MISSING = 0x09A8, + COMMAND_GET_HASH_KEY = 0x09A9, + COMMAND_SET_UP_CONVERSATION_END_NODE_WITH_SPEECH = 0x09AA, + COMMAND_RANDOM_PASSENGER_SAY = 0x09AB, + COMMAND_HIDE_ALL_FRONTEND_BLIPS = 0x09AC, + COMMAND_SET_PLAYER_IN_CAR_CAMERA_MODE = 0x09AD, + COMMAND_IS_CHAR_IN_ANY_TRAIN = 0x09AE, + COMMAND_SET_UP_SKIP_AFTER_MISSION = 0x09AF, + COMMAND_SET_VEHICLE_IS_CONSIDERED_BY_PLAYER = 0x09B0, + COMMAND_GET_CPU_LEVEL = 0x09B1, + COMMAND_GET_RANDOM_CAR_MODEL_IN_MEMORY = 0x09B2, + COMMAND_GET_CAR_DOOR_LOCK_STATUS = 0x09B3, + COMMAND_SET_CLOSEST_ENTRY_EXIT_FLAG = 0x09B4, + COMMAND_SET_CHAR_SIGNAL_AFTER_KILL = 0x09B5, + COMMAND_SET_CHAR_WANTED_BY_POLICE = 0x09B6, + COMMAND_SET_ZONE_NO_COPS = 0x09B7, + COMMAND_ADD_BLOOD = 0x09B8, + COMMAND_DISPLAY_CAR_NAMES = 0x09B9, + COMMAND_DISPLAY_ZONE_NAMES = 0x09BA, + COMMAND_IS_CAR_DOOR_DAMAGED = 0x09BB, + COMMAND_SET_CHAR_COORDINATES_DONT_WARP_GANG_NO_OFFSET = 0x09BC, + COMMAND_SET_MINIGAME_IN_PROGRESS = 0x09BD, + COMMAND_IS_MINIGAME_IN_PROGRESS = 0x09BE, + COMMAND_SET_FORCE_RANDOM_CAR_MODEL = 0x09BF, + COMMAND_GET_RANDOM_CAR_OF_TYPE_IN_ANGLED_AREA_NO_SAVE = 0x09C0, + COMMAND_ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS = 0x09C1, + COMMAND_FAIL_KILL_FRENZY = 0x09C2, + COMMAND_IS_COP_VEHICLE_IN_AREA_3D_NO_SAVE = 0x09C3, + COMMAND_SET_PETROL_TANK_WEAKPOINT = 0x09C4, + COMMAND_IS_CHAR_USING_MAP_ATTRACTOR = 0x09C5, + COMMAND_SET_ALL_CARS_IN_AREA_VISIBLE = 0x09C6, + COMMAND_SET_PLAYER_MODEL = 0x09C7, + COMMAND_ARE_SUBTITLES_SWITCHED_ON = 0x09C8, + COMMAND_REMOVE_CHAR_FROM_CAR_MAINTAIN_POSITION = 0x09C9, + COMMAND_SET_OBJECT_PROOFS = 0x09CA, + COMMAND_IS_CAR_TOUCHING_CAR = 0x09CB, + COMMAND_DOES_OBJECT_HAVE_THIS_MODEL = 0x09CC, + COMMAND_IS_ITALIAN_GAME = 0x09CD, + COMMAND_IS_SPANISH_GAME = 0x09CE, + COMMAND_SET_TRAIN_FORCED_TO_SLOW_DOWN = 0x09CF, + COMMAND_IS_VEHICLE_ON_ALL_WHEELS = 0x09D0, + COMMAND_DOES_PICKUP_EXIST = 0x09D1, + COMMAND_ENABLE_AMBIENT_CRIME = 0x09D2, + COMMAND_IS_AMBIENT_CRIME_ENABLED = 0x09D3, + COMMAND_CLEAR_WANTED_LEVEL_IN_GARAGE = 0x09D4, + COMMAND_SET_CHAR_SAY_CONTEXT_IMPORTANT = 0x09D5, + COMMAND_SET_CHAR_SAY_SCRIPT = 0x09D6, + COMMAND_FORCE_INTERIOR_LIGHTING_FOR_PLAYER = 0x09D7, + COMMAND_DISABLE_2ND_PAD_FOR_DEBUG = 0x09D8, + COMMAND_USE_DETONATOR = 0x09D9, + COMMAND_IS_MONEY_PICKUP_AT_COORDS = 0x09DA, + COMMAND_SET_MENU_COLUMN_WIDTH = 0x09DB, + COMMAND_SET_CHAR_CAN_CLIMB_OUT_WATER = 0x09DC, + COMMAND_MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS = 0x09DD, + COMMAND_IS_CHAR_GETTING_IN_TO_A_CAR = 0x09DE, + COMMAND_RESTORE_PLAYER_AFTER_2P_GAME = 0x09DF, + COMMAND_SET_UP_SKIP_FOR_SPECIFIC_VEHICLE = 0x09E0, + COMMAND_GET_CAR_MODEL_VALUE = 0x09E1, + COMMAND_CREATE_CAR_GENERATOR_WITH_PLATE = 0x09E2, + COMMAND_FIND_TRAIN_DIRECTION = 0x09E3, + COMMAND_SET_AIRCRAFT_CARRIER_SAM_SITE = 0x09E4, + COMMAND_DRAW_LIGHT_WITH_RANGE = 0x09E5, + COMMAND_ENABLE_BURGLARY_HOUSES = 0x09E6, + COMMAND_IS_PLAYER_CONTROL_ON = 0x09E7, + COMMAND_GET_CHAR_AREA_VISIBLE = 0x09E8, + COMMAND_GIVE_NON_PLAYER_CAR_NITRO = 0x09E9, + COMMAND_PLAYER_PUT_ON_GOGGLES = 0x09EA, + COMMAND_PLAYER_TAKE_OFF_GOGGLES = 0x09EB, + COMMAND_ALLOW_FIXED_CAMERA_COLLISION = 0x09EC, + COMMAND_HAS_CHAR_SPOTTED_CHAR_IN_FRONT = 0x09ED, + COMMAND_FORCE_BIG_MESSAGE_AND_COUNTER = 0x09EE, + COMMAND_SET_VEHICLE_CAMERA_TWEAK = 0x09EF, + COMMAND_RESET_VEHICLE_CAMERA_TWEAK = 0x09F0, + COMMAND_REPORT_MISSION_AUDIO_EVENT_AT_CHAR = 0x09F1, + COMMAND_DOES_DECISION_MAKER_EXIST = 0x09F2, + COMMAND_GET_RANDOM_TRAIN_IN_SPHERE_NO_SAVE = 0x09F3, + COMMAND_IGNORE_HEIGHT_DIFFERENCE_FOLLOWING_NODES = 0x09F4, + COMMAND_SHUT_ALL_CHARS_UP = 0x09F5, + COMMAND_SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR = 0x09F6, + COMMAND_REPORT_MISSION_AUDIO_EVENT_AT_CAR = 0x09F7, + COMMAND_DO_WEAPON_STUFF_AT_START_OF_2P_GAME = 0x09F8, + COMMAND_SET_MENU_HEADER_ORIENTATION = 0x09F9, + COMMAND_HAS_GAME_JUST_RETURNED_FROM_FRONTEND = 0x09FA, + COMMAND_GET_CURRENT_LANGUAGE = 0x09FB, + COMMAND_IS_OBJECT_INTERSECTING_WORLD = 0x09FC, + COMMAND_GET_STRING_WIDTH = 0x09FD, + COMMAND_RESET_VEHICLE_HYDRAULICS = 0x09FE, + COMMAND_SET_RESPAWN_POINT_FOR_DURATION_OF_MISSION = 0x09FF, + COMMAND_IS_THIS_MODEL_A_BIKE = 0x0A00, + COMMAND_IS_THIS_MODEL_A_CAR = 0x0A01, + COMMAND_SWITCH_ON_GROUND_SEARCHLIGHT = 0x0A02, + COMMAND_IS_GANG_WAR_FIGHTING_GOING_ON = 0x0A03, + COMMAND_SET_VEHICLE_FIRING_RATE_MULTIPLIER = 0x0A04, + COMMAND_GET_VEHICLE_FIRING_RATE_MULTIPLIER = 0x0A05, + COMMAND_IS_NEXT_STATION_ALLOWED = 0x0A06, + COMMAND_SKIP_TO_NEXT_ALLOWED_STATION = 0x0A07, + COMMAND_GET_STRING_WIDTH_WITH_NUMBER = 0x0A08, + COMMAND_SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH = 0x0A09, + COMMAND_ENABLE_DISABLED_ATTRACTORS_ON_OBJECT = 0x0A0A, + COMMAND_LOAD_SCENE_IN_DIRECTION = 0x0A0B, + COMMAND_IS_PLAYER_USING_JETPACK = 0x0A0C, + COMMAND_BLOCK_VEHICLE_MODEL = 0x0A0D, + COMMAND_CLEAR_THIS_PRINT_BIG_NOW = 0x0A0E, + COMMAND_HAS_LANGUAGE_CHANGED = 0x0A0F, + COMMAND_INCREMENT_INT_STAT_NO_MESSAGE = 0x0A10, + COMMAND_SET_EXTRA_CAR_COLOURS = 0x0A11, + COMMAND_GET_EXTRA_CAR_COLOURS = 0x0A12, + COMMAND_MANAGE_ALL_POPULATION = 0x0A13, + COMMAND_SET_NO_RESPRAYS = 0x0A14, + COMMAND_HAS_CAR_BEEN_RESPRAYED = 0x0A15, + COMMAND_ATTACH_MISSION_AUDIO_TO_CAR = 0x0A16, + COMMAND_SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR = 0x0A17, + COMMAND_SET_UP_CONVERSATION_NODE_WITH_SCRIPTED_SPEECH = 0x0A18, + COMMAND_SET_AREA_NAME = 0x0A19, + COMMAND_TASK_PLAY_ANIM_SECONDARY = 0x0A1A, + COMMAND_IS_CHAR_TOUCHING_CHAR = 0x0A1B, + COMMAND_DISABLE_HELI_AUDIO = 0x0A1C, + COMMAND_TASK_HAND_GESTURE = 0x0A1D, + COMMAND_TAKE_PHOTO = 0x0A1E, + COMMAND_INCREMENT_FLOAT_STAT_NO_MESSAGE = 0x0A1F, + COMMAND_SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS = 0x0A20, + COMMAND_IMPROVE_CAR_BY_CHEATING = 0x0A21, + COMMAND_CHANGE_CAR_COLOUR_FROM_MENU = 0x0A22, + COMMAND_HIGHLIGHT_MENU_ITEM = 0x0A23, + COMMAND_SET_DISABLE_MILITARY_ZONES = 0x0A24, + COMMAND_SET_CAMERA_POSITION_UNFIXED = 0x0A25, + COMMAND_SET_RADIO_TO_PLAYERS_FAVOURITE_STATION = 0x0A26, + COMMAND_SET_DEATH_WEAPONS_PERSIST = 0x0A27, + COMMAND_SET_SWIM_SPEED = 0x0A28, + COMMAND_IS_PLAYER_CLIMBING = 0x0A29, + COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED = 0x0A2A, + COMMAND_IS_WIDESCREEN_ON_IN_OPTIONS = 0x0A2B, + COMMAND_DRAW_SUBTITLES_BEFORE_FADE = 0x0A2C, + COMMAND_DRAW_ODDJOB_TITLE_BEFORE_FADE = 0x0A2D, + COMMAND_TASK_FOLLOW_PATH_NODES_TO_COORD_WITH_RADIUS = 0x0A2E, + COMMAND_SET_PHOTO_CAMERA_EFFECT = 0x0A2F, + COMMAND_FIX_CAR = 0x0A30, + COMMAND_SET_PLAYER_GROUP_TO_FOLLOW_NEVER = 0x0A31, + COMMAND_IS_CHAR_ATTACHED_TO_ANY_CAR = 0x0A32, + COMMAND_STORE_CAR_CHAR_IS_ATTACHED_TO_NO_SAVE = 0x0A33, + COMMAND_SET_UP_SKIP_TO_BE_FINISHED_BY_SCRIPT = 0x0A34, + COMMAND_SET_UP_SKIP_FOR_VEHICLE_FINISHED_BY_SCRIPT = 0x0A35, + COMMAND_IS_SKIP_WAITING_FOR_SCRIPT_TO_FADE_IN = 0x0A36, + COMMAND_FORCE_ALL_VEHICLE_LIGHTS_OFF = 0x0A37, + COMMAND_SET_RENDER_PLAYER_WEAPON = 0x0A38, + COMMAND_GET_PLAYER_IN_CAR_CAMERA_MODE = 0x0A39, + COMMAND_IS_LAST_BUILDING_MODEL_SHOT_BY_PLAYER = 0x0A3A, + COMMAND_CLEAR_LAST_BUILDING_MODEL_SHOT_BY_PLAYER = 0x0A3B, + COMMAND_SET_UP_CONVERSATION_END_NODE_WITH_SCRIPTED_SPEECH = 0x0A3C, + COMMAND_ACTIVATE_PIMP_CHEAT = 0x0A3D, + COMMAND_GET_RANDOM_CHAR_IN_AREA_OFFSET_NO_SAVE = 0x0A3E, + COMMAND_SET_SCRIPT_COOP_GAME = 0x0A3F, + COMMAND_CREATE_USER_3D_MARKER = 0x0A40, + COMMAND_REMOVE_USER_3D_MARKER = 0x0A41, + COMMAND_REMOVE_ALLUSER_3D_MARKERS = 0x0A42, + COMMAND_GET_RID_OF_PLAYER_PROSTITUTE = 0x0A43, + COMMAND_DISPLAY_NON_MINIGAME_HELP_MESSAGES = 0x0A44, + COMMAND_SET_RAILTRACK_RESISTANCE_MULT = 0x0A45, + COMMAND_SWITCH_OBJECT_BRAINS = 0x0A46, + COMMAND_FINISH_SETTING_UP_CONVERSATION_NO_SUBTITLES = 0x0A47, + COMMAND_ALLOW_PAUSE_IN_WIDESCREEN = 0x0A48, + COMMAND_IS_XBOX_VERSION = 0x0A49, + COMMAND_GET_PC_MOUSE_MOVEMENT = 0x0A4A, + COMMAND_IS_PC_USING_JOYPAD = 0x0A4B, + COMMAND_IS_MOUSE_USING_VERTICAL_INVERSION = 0x0A4C, + COMMAND_IS_JAPANESE_VERSION = 0x0A4D, + COMMAND_IS_XBOX_PLAYER2_PRESSING_START = 0x0A4E, + COMMAND_FINISHED_WITH_XBOX_PLAYER2 = 0x0A4F, + COMMAND_DO_DEBUG_STUFF = 0x0A50 +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eSoundID.h b/third-party/plugin-sdk/plugin_sa/game_sa/eSoundID.h new file mode 100644 index 00000000..56795582 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eSoundID.h @@ -0,0 +1,7094 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +/** + * @Description + * Works with the following script commands: + * ADD_ONE_OFF_SOUND + * ADD_CONTINUOUS_SOUND + * LOAD_MISSION_AUDIO + * REPORT_MISSION_AUDIO_EVENT_AT_POSITION + * REPORT_MISSION_AUDIO_EVENT_AT_OBJECT + * SET_CHAR_SAY_SCRIPT + * REPORT_MISSION_AUDIO_EVENT_AT_CHAR + * REPORT_MISSION_AUDIO_EVENT_AT_CAR + */ +enum eSoundID +{ + SOUND_DISABLE_HELI_AUDIO = 1000, + SOUND_ENABLE_HELI_AUDIO, + SOUND_CEILING_VENT_LAND, + SOUND_WAREHOUSE_DOOR_SLIDE_START, + SOUND_WAREHOUSE_DOOR_SLIDE_STOP, + SOUND_CLAXON_START, + SOUND_CLAXON_STOP, + SOUND_BLAST_DOOR_SLIDE_START, + SOUND_BLAST_DOOR_SLIDE_STOP, + SOUND_BONNET_DENT, + SOUND_BASKETBALL_BOUNCE, + SOUND_BASKETBALL_HIT_HOOP, + SOUND_BASKETBALL_SCORE, + SOUND_POOL_BREAK, + SOUND_POOL_HIT_WHITE, + SOUND_POOL_BALL_HIT_BALL, + SOUND_POOL_HIT_CUSHION, + SOUND_POOL_BALL_POT, + SOUND_POOL_CHALK_CUE, + SOUND_CRANE_ENTER, + SOUND_CRANE_MOVE_START, + SOUND_CRANE_MOVE_STOP, + SOUND_CRANE_EXIT, + SOUND_CRANE_SMASH_PORTACABIN, + SOUND_CONTAINER_COLLISION, + SOUND_VIDEO_POKER_PAYOUT, + SOUND_VIDEO_POKER_BUTTON, + SOUND_WHEEL_OF_FORTUNE_CLACKER, + SOUND_KEYPAD_BEEP, + SOUND_KEYPAD_PASS, + SOUND_KEYPAD_FAIL, + SOUND_SHOOTING_RANGE_TARGET_SHATTER, + SOUND_SHOOTING_RANGE_TARGET_DROP, + SOUND_SHOOTING_RANGE_TARGET_MOVE_START, + SOUND_SHOOTING_RANGE_TARGET_MOVE_STOP, + SOUND_SHUTTER_DOOR_START, + SOUND_SHUTTER_DOOR_STOP, + SOUND_FREEFALL_START, + SOUND_FREEFALL_STOP, + SOUND_PARACHUTE_OPEN, + SOUND_PARACHUTE_COLLAPSE, + SOUND_DUAL_SHOOT, + SOUND_DUAL_THRUST, + SOUND_DUAL_EXPLOSION_SHORT, + SOUND_DUAL_EXPLOSION_LONG, + SOUND_DUAL_MENU_SELECT, + SOUND_DUAL_MENU_DESELECT, + SOUND_DUAL_GAME_OVER, + SOUND_DUAL_PICKUP_LIGHT, + SOUND_DUAL_PICKUP_DARK, + SOUND_DUAL_TOUCH_DARK, + SOUND_DUAL_TOUCH_LIGHT, + SOUND_AMMUNATION_BUY_WEAPON, + SOUND_AMMUNATION_BUY_WEAPON_DENIED, + SOUND_SHOP_BUY, + SOUND_SHOP_BUY_DENIED, + SOUND_RACE_321, + SOUND_RACE_GO, + SOUND_PART_MISSION_COMPLETE, + SOUND_GOGO_PLAYER_FIRE, + SOUND_GOGO_ENEMY_FIRE, + SOUND_GOGO_EXPLOSION, + SOUND_GOGO_TRACK_START, + SOUND_GOGO_TRACK_STOP, + SOUND_GOGO_SELECT, + SOUND_GOGO_ACCEPT, + SOUND_GOGO_DECLINE, + SOUND_GOGO_GAME_OVER, + SOUND_DUAL_TRACK_START, + SOUND_DUAL_TRACK_STOP, + SOUND_BEE_ZAP, + SOUND_BEE_PICKUP, + SOUND_BEE_DROP, + SOUND_BEE_SELECT, + SOUND_BEE_ACCEPT, + SOUND_BEE_DECLINE, + SOUND_BEE_TRACK_START, + SOUND_BEE_TRACK_STOP, + SOUND_BEE_GAME_OVER, + SOUND_FREEZER_OPEN, + SOUND_FREEZER_CLOSE, + SOUND_MEAT_TRACK_START, + SOUND_MEAT_TRACK_STOP, + SOUND_ROULETTE_ADD_CASH, + SOUND_ROULETTE_REMOVE_CASH, + SOUND_ROULETTE_NO_CASH, + SOUND_ROULETTE_SPIN, + SOUND_BANDIT_INSERT_COIN, + SOUND_BANDIT_WHEEL_STOP, + SOUND_BANDIT_WHEEL_START, + SOUND_BANDIT_PAYOUT, + SOUND_OFFICE_FIRE_ALARM_START, + SOUND_OFFICE_FIRE_ALARM_STOP, + SOUND_OFFICE_FIRE_COUGHING_START, + SOUND_OFFICE_FIRE_COUGHING_STOP, + SOUND_BIKE_PACKER_CLUNK, + SOUND_BIKE_GANG_WHEEL_SPIN, + SOUND_AWARD_TRACK_START, + SOUND_AWARD_TRACK_STOP, + SOUND_MOLOTOV, + SOUND_MESH_GATE_OPEN_START, + SOUND_MESH_GATE_OPEN_STOP, + SOUND_OGLOC_DOORBELL, + SOUND_OGLOC_WINDOW_RATTLE_BANG, + SOUND_STINGER_RELOAD, + SOUND_HEAVY_DOOR_START, + SOUND_HEAVY_DOOR_STOP, + SOUND_SHOOT_CONTROLS, + SOUND_CARGO_PLANE_DOOR_START, + SOUND_CARGO_PLANE_DOOR_STOP, + SOUND_DA_NANG_CONTAINER_OPEN, + SOUND_DA_NANG_HEAVY_DOOR_OPEN, + SOUND_DA_NANG_MUFFLED_REFUGEES, + SOUND_GYM_BIKE_START, + SOUND_GYM_BIKE_STOP, + SOUND_GYM_BOXING_BELL, + SOUND_GYM_INCREASE_DIFFICULTY, + SOUND_GYM_REST_WEIGHTS, + SOUND_GYM_RUNNING_MACHINE_START, + SOUND_GYM_RUNNING_MACHINE_STOP, + SOUND_OTB_BET_ZERO, + SOUND_OTB_INCREASE_BET, + SOUND_OTB_LOSE, + SOUND_OTB_PLACE_BET, + SOUND_OTB_WIN, + SOUND_STINGER_FIRE, + SOUND_HEAVY_GATE_START, + SOUND_HEAVY_GATE_STOP, + SOUND_VERTICAL_BIRD_LIFT_START, + SOUND_VERTICAL_BIRD_LIFT_STOP, + SOUND_PUNCH_PED, + SOUND_AMMUNATION_GUN_COLLISION, + SOUND_CAMERA_SHOT, + SOUND_BUY_CAR_MOD, + SOUND_BUY_CAR_RESPRAY, + SOUND_BASEBALL_BAT_HIT_PED, + SOUND_STAMP_PED, + SOUND_CHECKPOINT_AMBER, + SOUND_CHECKPOINT_GREEN, + SOUND_CHECKPOINT_RED, + SOUND_CAR_SMASH_CAR, + SOUND_CAR_SMASH_GATE, + SOUND_OTB_TRACK_START, + SOUND_OTB_TRACK_STOP, + SOUND_PED_HIT_WATER_SPLASH, + SOUND_RESTAURANT_TRAY_COLLISION, + SOUND_PICKUP_CRATE, + SOUND_SWEETS_HORN, + SOUND_MAGNET_VEHICLE_COLLISION, + SOUND_PROPERTY_PURCHASED, + SOUND_PICKUP_STANDARD, + SOUND_MECHANIC_SLIDE_OUT, + SOUND_MECHANIC_ATTACH_CAR_BOMB, + SOUND_GARAGE_DOOR_START, + SOUND_GARAGE_DOOR_STOP, + SOUND_CAT2_SECURITY_ALARM, + SOUND_CAT2_WOODEN_DOOR_BREACH, + SOUND_MINITANK_FIRE, + SOUND_OTB_NO_CASH, + SOUND_EXPLOSION, + SOUND_ROULETTE_BALL_BOUNCING, + SOUND_VERTICAL_BIRD_ALARM_START, + SOUND_VERTICAL_BIRD_ALARM_STOP, + SOUND_PED_COLLAPSE, + SOUND_AIR_HORN, + SOUND_SHUTTER_DOOR_SLOW_START, + SOUND_SHUTTER_DOOR_SLOW_STOP, + SOUND_BEE_BUZZ, + SOUND_RESTAURANT_CJ_EAT, + SOUND_RESTAURANT_CJ_PUKE, + SOUND_TEMPEST_PLAYER_SHOOT, + SOUND_TEMPEST_ENEMY_SHOOT, + SOUND_TEMPEST_EXPLOSION, + SOUND_TEMPEST_PICKUP1, + SOUND_TEMPEST_PICKUP2, + SOUND_TEMPEST_PICKUP3, + SOUND_TEMPEST_WARP, + SOUND_TEMPEST_SHIELD_GLOW, + SOUND_TEMPEST_GAME_OVER, + SOUND_TEMPEST_HIGHLIGHT, + SOUND_TEMPEST_SELECT, + SOUND_TEMPEST_TRACK_START, + SOUND_TEMPEST_TRACK_STOP, + SOUND_DRIVING_AWARD_TRACK_START, + SOUND_DRIVING_AWARD_TRACK_STOP, + SOUND_BIKE_AWARD_TRACK_START, + SOUND_BIKE_AWARD_TRACK_STOP, + SOUND_PILOT_AWARD_TRACK_START, + SOUND_PILOT_AWARD_TRACK_STOP, + SOUND_PED_DEATH_CRUNCH, + SOUND_BANK_VIDEO_POKER = 1800, + SOUND_BANK_SHOOTING_RANGE, + SOUND_BANK_POOL, + SOUND_BANK_PARACHUTE, + SOUND_BANK_KEYPAD, + SOUND_BANK_WAREHOUSE_DOOR, + SOUND_BANK_GOGO, + SOUND_BANK_DUAL, + SOUND_BANK_CRANE, + SOUND_BANK_BLACK_PROJECT, + SOUND_BANK_BEE, + SOUND_BANK_BASKETBALL, + SOUND_BANK_MEAT_BUSINESS, + SOUND_BANK_ROULETTE, + SOUND_BANK_BANDIT, + SOUND_BANK_OFFICE_FIRE, + SOUND_BANK_MESH_GATE, + SOUND_BANK_OGLOC, + SOUND_BANK_CARGO_PLANE, + SOUND_BANK_DA_NANG, + SOUND_BANK_GYM, + SOUND_BANK_OTB, + SOUND_BANK_STINGER, + SOUND_BANK_UNCLE_SAM, + SOUND_BANK_VERTICAL_BIRD, + SOUND_BANK_MECHANIC, + SOUND_BANK_CAT2_BANK, + SOUND_BANK_AIR_HORN, + SOUND_BANK_RESTAURANT, + SOUND_BANK_TEMPEST, + SOUND_ALDEAMALVADA = 2000, + SOUND_ANGELPINE, + SOUND_ARCODELOESTE, + SOUND_AVISPACOUNTRYCLUB, + SOUND_BACKOBEYOND, + SOUND_BATTERYPOINT, + SOUND_BAYSIDE, + SOUND_BAYSIDEMARINA, + SOUND_BAYSIDETUNNEL, + SOUND_BEACONHILL, + SOUND_BLACKFIELD, + SOUND_BLACKFIELDCHAPEL, + SOUND_BLACKFIELDINTERSECTION, + SOUND_BLUBERRYACRES, + SOUND_BLUEBERRY, + SOUND_BONECOUNTY, + SOUND_CALIGULASPALACE, + SOUND_CALTONHEIGHTS, + SOUND_CHINATOWN, + SOUND_CITYHALL, + SOUND_COME_A_LOT, + SOUND_COMMERCE, + SOUND_CONFERENCECENTRE, + SOUND_CRANBERRYSTATION, + SOUND_DILLIMORE, + SOUND_DOHERTY, + SOUND_DOWNTOWN, + SOUND_DOWNTOWNLOSSANTOS, + SOUND_EASRLOSSANTOS, + SOUND_EASTBEACH, + SOUND_EASTERBASIN, + SOUND_EASTERBAYAIRPORT, + SOUND_EASTERBAYBLUFFSCHEMICALPLANT, + SOUND_EASTERTUNNEL, + SOUND_ELCASTILLODELDIABLO, + SOUND_ELCORONA, + SOUND_ELQUEBRADOS, + SOUND_ESPLANADEEAST, + SOUND_ESPLANADENORTH, + SOUND_FALLENTREE, + SOUND_FALLOWBRIDGE, + SOUND_FERNRIDGE, + SOUND_FINANCIAL, + SOUND_FISHERSLAGOON, + SOUND_FLINTCOUNTY, + SOUND_FLINTINTERSECTION, + SOUND_FLINTRANGE, + SOUND_FLINTWATER, + SOUND_FORTCARSON, + SOUND_FOSTERVALLEY, + SOUND_FREDERICKBRIDGE, + SOUND_GANTON, + SOUND_GANTRBRIDGE, + SOUND_GARCIA, + SOUND_GARVERBRIDGE, + SOUND_GLENPARK, + SOUND_GREENGLASSCOLLEGE, + SOUND_GREENPALMS, + SOUND_HAMPTONBARNS, + SOUND_HANKYPANKYPOINT, + SOUND_HARRYGOLDPARKWAY, + SOUND_HASHBERRY, + SOUND_HILLTOPFARM, + SOUND_HUNTERQUARRY, + SOUND_IDLEWOOD, + SOUND_JULIUSTHRUWAYEAST, + SOUND_JULIUSTHRUWAYNORTH, + SOUND_JULIUSTHRUWAYSOUTH, + SOUND_JULIUSTHRUWAYWEST, + SOUND_JUNIPERHILL, + SOUND_JUNIPERHOLLOW, + SOUND_KACCMILITARYFUELS, + SOUND_KINCAIDBRIDEG, + SOUND_KINGS, + SOUND_LASBARRANCAS, + SOUND_LASBRUJAS, + SOUND_LASPAYASADAS, + SOUND_LASTDIMEMOTEL, + SOUND_LASVENTURAS, + SOUND_LEAFYHOLLOW, + SOUND_LILPROBEINN, + SOUND_LINDENSIDE, + SOUND_LINDENSTATION, + SOUND_LITTLEMEXICO, + SOUND_LOSCOLINAS, + SOUND_LOSFLORES, + SOUND_LOSSANTOS, + SOUND_LOSSANTOSINLET, + SOUND_LOSSANTOSINTERNATIONAL, + SOUND_LOSSEPULCROS, + SOUND_LOSVENTURASAIRPORT, + SOUND_LVAFREIGHTDEPOT, + SOUND_MARINA, + SOUND_MARKET, + SOUND_MARKETSTATION, + SOUND_MARTINBRIDGE, + SOUND_MISSIONARYHILL, + SOUND_MONTGOMERY, + SOUND_MONTGOMERYINTERSECTION, + SOUND_MOUNTCHILLIAD, + SOUND_MULHOLLAND, + SOUND_MULLHOLLANDINTERSECTION, + SOUND_NORTHSTARROCK, + SOUND_OCEANDOCKS, + SOUND_OCEANFLATS, + SOUND_OCTANESPRINGS, + SOUND_OLDVENTURASSTRIP, + SOUND_OPENOCEAN, + SOUND_PALLISADES, + SOUND_PALOMINOCREEK, + SOUND_PARADISO, + SOUND_PILGRAMSCREEK, + SOUND_PILSONINTERSECTIION, + SOUND_PLAYADELSEVILLE, + SOUND_PRICKLEPINE, + SOUND_QUEENS, + SOUND_RANDOLPHINDUSTRIALESTATE, + SOUND_REDCOUNTY, + SOUND_REDSANDSEAST, + SOUND_REDSANDSWEST, + SOUND_REGULARTOM, + SOUND_RICHMAN, + SOUND_ROCAESCALANTE, + SOUND_ROCKSHOREEAST, + SOUND_ROCKSHOREWEST, + SOUND_RODEO, + SOUND_ROYALECASINO, + SOUND_SANANDREASSOUND, + SOUND_SANFIERRO, + SOUND_SANFIERROBAY, + SOUND_SANTAFLORA, + SOUND_SANTAMARIABEACH, + SOUND_SHADYCREEKS, + SOUND_SHERMANRESERVOIR, + SOUND_SOBELLRAILYARDS, + SOUND_SPINYBED, + SOUND_STARFISHCASINO, + SOUND_SUNNYSIDE, + SOUND_TEMPLE, + SOUND_THEBIGEARRADIOTELESCOPE, + SOUND_THECAMELSTOE, + SOUND_THECLOWNSPOCKET, + SOUND_THEEMERALDISLE, + SOUND_THEFARM, + SOUND_THEFOURDRAGONSCASINO, + SOUND_THEHIGHROLLER, + SOUND_THEMAKOSPAN, + SOUND_THEPANOPTICON, + SOUND_THEPINKSWAN, + SOUND_THEPIRATESINMENSPANTS, + SOUND_THESHERMANDAM, + SOUND_THEVISAGE, + SOUND_TIERRA_ROBADA, + SOUND_UNITYSTATION, + SOUND_VALLEOCULTADO, + SOUND_VERDANTBLUFFS, + SOUND_VERDANTMEDOW, + SOUND_VERONABEACH, + SOUND_VINEWOOD, + SOUND_WHETSTONE, + SOUND_WHITEWOODESTATES, + SOUND_WILLOWFIELD, + SOUND_YELLOWBELLGOLFCOURSE, + SOUND_YELLOWBELLSTATION, + SOUND_BLACK = 2200, + SOUND_BLUE, + SOUND_BROWN, + SOUND_COPPER, + SOUND_CUSTOM, + SOUND_CUSTOMISED, + SOUND_DARK, + SOUND_GOLD, + SOUND_GREEN, + SOUND_GREY, + SOUND_LIGHT, + SOUND_PINK, + SOUND_RED, + SOUND_SILVER, + SOUND_WHITE, + SOUND_CENTRAL = 2400, + SOUND_EAST, + SOUND_NORTH, + SOUND_SOUTH, + SOUND_WEST, + SOUND_HEAD_TO_A_10 = 2600, + SOUND_IN_A_, + SOUND_IN_WATER, + SOUND_ON_A, + SOUND_ON_FOOT, + SOUND_RESPOND_TO_A_10, + SOUND_SUSPECTINWATER, + SOUND_SUSPECT_LAST_SEEN, + SOUND_WEVE_GOT_A_10_, + SOUND_17 = 2800, + SOUND_21, + SOUND_24, + SOUND_28, + SOUND_34, + SOUND_37, + SOUND_7, + SOUND_71, + SOUND_81, + SOUND_90, + SOUND_91, + SOUND_A10, + SOUND_A10_2, + SOUND_A10_3, + SOUND_2DOOR = 3000, + SOUND_4DOOR, + SOUND_AMBULANCE, + SOUND_ARTIC_CAB, + SOUND_BEACH_BUGGY, + SOUND_BIKE, + SOUND_BOAT, + SOUND_BUGGY, + SOUND_BULL_DOZER, + SOUND_BUS, + SOUND_CAMPER_VAN, + SOUND_COACH, + SOUND_COMBINE_HARVESTER, + SOUND_COMPACT, + SOUND_CONVERTABLE, + SOUND_COUPE, + SOUND_CRUISER, + SOUND_FIRE_TRUCK, + SOUND_FORKLIFT, + SOUND_FREIGHT_TRAIN, + SOUND_GARBAGE_TRUCK, + SOUND_GAS_TANKER, + SOUND_GOLF_CART, + SOUND_GO_KART, + SOUND_HEARSE, + SOUND_HELICOPTER, + SOUND_HOVERCRAFT, + SOUND_ICE_CREAM_VAN, + SOUND_JEEP, + SOUND_LAWNMOWER, + SOUND_LIMO, + SOUND_LOW_RIDER, + SOUND_MOPED, + SOUND_MOTORBIKE, + SOUND_OFF_ROAD, + SOUND_PEOPLE_CARRIER, + SOUND_PICK_UP, + SOUND_PLANE, + SOUND_POLICE_CAR, + SOUND_POLICE_VAN, + SOUND_QUAD_BIKE, + SOUND_RUBBER_DINGY, + SOUND_SAND_BUGGY, + SOUND_SEA_PLANE, + SOUND_SNOWCAT, + SOUND_SPEED_BOAT, + SOUND_SPORT, + SOUND_SPORTSCAR, + SOUND_SPORTS_BIKE, + SOUND_STATION_WAGON, + SOUND_SUV, + SOUND_TANK, + SOUND_TAXI, + SOUND_TRACTOR, + SOUND_TRAIN, + SOUND_TRAM, + SOUND_TRUCK, + SOUND_VAN, + SOUND_AIR_HORN_L = 3200, + SOUND_AIR_HORN_R, + SOUND_AIRCONDITIONER = 3400, + SOUND_OFFICE_FIRE_ALARM, + SOUND_MOBILE_DIALING = 3600, + SOUND_VIDEOTAPE_NOISE = 3800, + SOUND_BALLA_1 = 4000, + SOUND_BALLA_2, + SOUND_BANDIT_WHEEL_START = 4200, + SOUND_BANDIT_PAYOUT, + SOUND_BANDIT_WHEEL_STOP, + SOUND_INSERT_COIN, + SOUND_HAIRCUT = 4400, + SOUND_BASKETBALL_BOUNCE_1 = 4600, + SOUND_BASKETBALL_BOUNCE_2, + SOUND_BASKETBALL_BOUNCE_3, + SOUND_BASKETBALL_HIT_HOOP, + SOUND_BASKETBALL_SCORE, + SOUND_BBOX_1 = 4800, + SOUND_BBOX_2, + SOUND_BBOX_3, + SOUND_BBOX_4, + SOUND_BBOX_5, + SOUND_BBOX_6, + SOUND_BBOX_7, + SOUND_BBOX_8, + SOUND_BCS5_AA = 5000, + SOUND_BCS5_AB, + SOUND_BCS5_AC, + SOUND_BCS5_AD, + SOUND_BCS5_AE, + SOUND_BCS5_AF, + SOUND_BCS5_AG, + SOUND_BCS5_AH, + SOUND_BCS5_BA, + SOUND_BCS5_BB, + SOUND_BCS5_BC, + SOUND_BCS5_BD, + SOUND_BCS5_BE, + SOUND_BCS5_BF, + SOUND_BCS5_BG, + SOUND_BB_GONE_BUZZ = 5200, + SOUND_BB_GONE_ACCEPT, + SOUND_BB_GONE_DROP, + SOUND_BB_GONE_GAMEOVER, + SOUND_BB_GONE_PICKUP, + SOUND_BB_GONE_SELECT, + SOUND_BB_GONE_ZAP, + SOUND_B_BET_1 = 5400, + SOUND_B_BET_2, + SOUND_B_LEND1, + SOUND_B_LEND2, + SOUND_B_LEND3, + SOUND_B_NEM_1, + SOUND_B_NEM_2, + SOUND_B_NEM_3, + SOUND_B_NMB_1, + SOUND_B_NMB_2, + SOUND_B_NMB_3, + SOUND_B_NUM10, + SOUND_B_NUM11, + SOUND_B_NUM12, + SOUND_B_NUM13, + SOUND_B_NUM14, + SOUND_B_NUM15, + SOUND_B_NUM16, + SOUND_B_NUM17, + SOUND_B_NUM18, + SOUND_B_NUM19, + SOUND_B_NUM20, + SOUND_B_NUM21, + SOUND_B_NUM22, + SOUND_B_NUM23, + SOUND_B_NUM24, + SOUND_B_NUM25, + SOUND_B_NUM26, + SOUND_B_NUM27, + SOUND_B_NUM28, + SOUND_B_NUM29, + SOUND_B_NUM30, + SOUND_B_NUM31, + SOUND_B_NUM32, + SOUND_B_NUM33, + SOUND_B_NUM34, + SOUND_B_NUM35, + SOUND_B_NUM36, + SOUND_B_NUM_0, + SOUND_B_NUM_1, + SOUND_B_NUM_2, + SOUND_B_NUM_3, + SOUND_B_NUM_4, + SOUND_B_NUM_5, + SOUND_B_NUM_6, + SOUND_B_NUM_7, + SOUND_B_NUM_8, + SOUND_B_NUM_9, + SOUND_B_PWIN1, + SOUND_B_PWIN2, + SOUND_B_PWIN3, + SOUND_B_REG_1, + SOUND_B_REG_2, + SOUND_B_THX_1, + SOUND_B_THX_2, + SOUND_B_WEEL1, + SOUND_B_WEEL2, + SOUND_B_WEEL3, + SOUND_B_WEEL4, + SOUND_B_WEEL5, + SOUND_B_WEEL6, + SOUND_B_WEEL7, + SOUND_B_WINS1, + SOUND_B_WINS2, + SOUND_B_WINS3, + SOUND_BIKE_PACKAGE_THROW = 5600, + SOUND_BIKE_PACKAGE_THROW2, + SOUND_BIKE_PACKAGE_THROW3, + SOUND_10_OR_20 = 5800, + SOUND_2_OR_12, + SOUND_3_OR_13, + SOUND_4_OR_14, + SOUND_5_OR_15, + SOUND_6_OR_16, + SOUND_7_OR_17, + SOUND_8_OR_18, + SOUND_9_OR_19, + SOUND_J_BET_1, + SOUND_J_BET_2, + SOUND_J_BJ_1, + SOUND_J_BJ_2, + SOUND_J_BUST1, + SOUND_J_BUST2, + SOUND_J_DRW_1, + SOUND_J_DRW_2, + SOUND_J_DW_1, + SOUND_J_DW_2, + SOUND_J_DW_3, + SOUND_J_LEND1, + SOUND_J_LEND2, + SOUND_J_LEND3, + SOUND_J_NEM_1, + SOUND_J_NEM_2, + SOUND_J_NEM_3, + SOUND_J_NMB_1, + SOUND_J_NMB_2, + SOUND_J_NMB_3, + SOUND_J_NUM10, + SOUND_J_NUM11, + SOUND_J_NUM12, + SOUND_J_NUM13, + SOUND_J_NUM14, + SOUND_J_NUM15, + SOUND_J_NUM16, + SOUND_J_NUM17, + SOUND_J_NUM18, + SOUND_J_NUM19, + SOUND_J_NUM20, + SOUND_J_NUM21, + SOUND_J_NUM_4, + SOUND_J_NUM_5, + SOUND_J_NUM_6, + SOUND_J_NUM_7, + SOUND_J_NUM_8, + SOUND_J_NUM_9, + SOUND_J_PWIN1, + SOUND_J_PWIN2, + SOUND_J_PWIN3, + SOUND_J_REG_1, + SOUND_J_REG_2, + SOUND_J_THX_1, + SOUND_J_THX_2, + SOUND_J_WINS1, + SOUND_J_WINS2, + SOUND_J_WINS3, + SOUND_BLAST_DOOR_SLIDE_LOOP_2 = 6000, + SOUND_CLAXON_LOOP, + SOUND_HEAVY_DOOR, + SOUND_SHOOT_CONTROLS, + SOUND_GULL_SCREECH = 6200, + SOUND_OMO_1, + SOUND_OMO_2, + SOUND_OMO_3, + SOUND_OMO_4, + SOUND_OMO_5, + SOUND_DOOR_BUZZER = 6400, + SOUND_LIFT_PING, + SOUND_LIGHTS_POWER_DOWN, + SOUND_ROOF_COLLAPSE = 6600, + SOUND_WALL_COLLAPSE_BELOW, + SOUND_WALL_COLLAPSE_NEARBY, + SOUND_WOODEN_DOOR_BREACH, + SOUND_CARGO_PLANE_DOOR_LOOP = 6800, + SOUND_CARGO_PLANE_DOOR_START, + SOUND_CARGO_PLANE_DOOR_STOP, + SOUND_CAS1B00 = 7000, + SOUND_CAS1B01, + SOUND_CAS1B02, + SOUND_CAS1B03, + SOUND_CAS1B04, + SOUND_CAS1B05, + SOUND_CAS1B06, + SOUND_CAS1_AA, + SOUND_CAS1_AB, + SOUND_CAS1_AC, + SOUND_CAS1_AD, + SOUND_CAS1_AE, + SOUND_CAS1_BA, + SOUND_CAS1_BB, + SOUND_CAS1_BC, + SOUND_CAS1_BD, + SOUND_CAS1_BE, + SOUND_CAS1_CA, + SOUND_CAS1_CB, + SOUND_CAS1_CC, + SOUND_CAS1_CD, + SOUND_CAS1_CE, + SOUND_CAS1_DA, + SOUND_CAS1_DB, + SOUND_CAS1_DC, + SOUND_CAS1_DD, + SOUND_CAS1_DE, + SOUND_CAS1_EA, + SOUND_CAS1_EB, + SOUND_CAS1_EC, + SOUND_CAS1_ED, + SOUND_CAS1_EE, + SOUND_CAS1_EF, + SOUND_CAS1_EG, + SOUND_CAS1_EH, + SOUND_CAS1_EI, + SOUND_CAS1_EJ, + SOUND_CAS1_EK, + SOUND_CAS1_EL, + SOUND_CAS1_EM, + SOUND_CAS1_EN, + SOUND_CAS1_EO, + SOUND_CAS1_EP, + SOUND_CAS1_EQ, + SOUND_CAS1_ES, + SOUND_CAS1_ET, + SOUND_CAS1_EU, + SOUND_CAS1_EV, + SOUND_CAS1_EW, + SOUND_CAS1_EX, + SOUND_CAS1_EY, + SOUND_CAS1_EZ, + SOUND_CAS1_FA, + SOUND_CAS1_FB, + SOUND_CAS1_FC, + SOUND_CAS1_GA, + SOUND_CAS1_GB, + SOUND_CAS1_GC, + SOUND_CAS1_GD, + SOUND_CAS1_GE, + SOUND_CAS1_HA, + SOUND_CAS1_HB, + SOUND_CAS1_HC, + SOUND_CAS1_HD, + SOUND_CAS1_HE, + SOUND_CAS1_JA, + SOUND_CAS1_JB, + SOUND_CAS11AA = 7200, + SOUND_CAS11AB, + SOUND_CAS11AC, + SOUND_CAS11AD, + SOUND_CAS11BA, + SOUND_CAS11BB, + SOUND_CAS11BC, + SOUND_CAS11CA, + SOUND_CAS11DA, + SOUND_CAS11DB, + SOUND_CAS11EA, + SOUND_CAS11EB, + SOUND_CAS11EC, + SOUND_CAS11ED, + SOUND_CAS11EE, + SOUND_CAS11EF, + SOUND_CAS11EG, + SOUND_CAS11FA, + SOUND_CAS11GA, + SOUND_CAS11GB, + SOUND_CAS11GC, + SOUND_CAS11HA, + SOUND_CAS11HB, + SOUND_CAS11HC, + SOUND_CAS11HD, + SOUND_CAS11HE, + SOUND_CAS11HF, + SOUND_CAS11_AA, + SOUND_CAS11_AB, + SOUND_CAS11_BA, + SOUND_CAS11_DB, + SOUND_CAS11_EA, + SOUND_CAS11_EB, + SOUND_CAS11_EC, + SOUND_CAS11_ED, + SOUND_CAS11_EE, + SOUND_CAS11_EF, + SOUND_CAS11_EG, + SOUND_CAS11_GA, + SOUND_CAS11_GB, + SOUND_CAS2_AA = 7400, + SOUND_CAS2_AB, + SOUND_CAS2_AC, + SOUND_CAS2_AD, + SOUND_CAS2_AE, + SOUND_CAS2_AF, + SOUND_CAS2_AG, + SOUND_CAS2_AH, + SOUND_CAS2_AI, + SOUND_CAS2_AJ, + SOUND_CAS2_AK, + SOUND_CAS2_AL, + SOUND_CAS2_AM, + SOUND_CAS2_AN, + SOUND_CAS2_AO, + SOUND_CAS2_BA, + SOUND_CAS2_BB, + SOUND_CAS2_BC, + SOUND_CAS2_BD, + SOUND_CAS2_BE, + SOUND_CAS2_CA, + SOUND_CAS2_CB, + SOUND_CAS3_AA = 7600, + SOUND_CAS3_AB, + SOUND_CAS3_AC, + SOUND_CAS3_AD, + SOUND_CAS3_BA, + SOUND_CAS3_BB, + SOUND_CAS3_BC, + SOUND_CAS3_BD, + SOUND_CAS3_BE, + SOUND_CAS3_CA, + SOUND_CAS3_CB, + SOUND_CAS3_CC, + SOUND_CAS3_DA, + SOUND_CAS4_BA = 7800, + SOUND_CAS4_BB, + SOUND_CAS4_CA, + SOUND_CAS4_CB, + SOUND_CAS4_CC, + SOUND_CAS4_CD, + SOUND_CAS4_CE, + SOUND_CAS4_CF, + SOUND_CAS4_CG, + SOUND_CAS4_CH, + SOUND_CAS4_CJ, + SOUND_CAS4_CK, + SOUND_CAS4_CL, + SOUND_CAS4_DA, + SOUND_CAS4_DB, + SOUND_CAS4_DC, + SOUND_CAS4_DD, + SOUND_CAS4_DE, + SOUND_CAS4_EA, + SOUND_CAS4_EB, + SOUND_CAS4_EC, + SOUND_CAS4_ED, + SOUND_CAS4_EE, + SOUND_CAS4_EF, + SOUND_CAS4_EG, + SOUND_CAS4_EH, + SOUND_CAS4_FA, + SOUND_CAS4_FB, + SOUND_CAS4_FC, + SOUND_CAS4_FD, + SOUND_CAS4_FE, + SOUND_CAS4_FF, + SOUND_CAS4_FG, + SOUND_CAS4_FH, + SOUND_CAS4_FJ, + SOUND_CAS4_FK, + SOUND_CAS4_FL, + SOUND_CAS4_GA, + SOUND_CAS4_GB, + SOUND_CAS4_HA, + SOUND_CAS4_HB, + SOUND_CAS4_HC, + SOUND_CAS4_HD, + SOUND_CAS4_JA, + SOUND_CAS4_JB, + SOUND_CAS4_JC, + SOUND_CAS4_JD, + SOUND_CAS4_KA, + SOUND_CAS4_KB, + SOUND_CAS4_KC, + SOUND_CAS4_KD, + SOUND_CAS4_KE, + SOUND_CAS4_KF, + SOUND_CAS4_KG, + SOUND_CAS4_KH, + SOUND_CAS4_KJ, + SOUND_CAS4_LA, + SOUND_CAS4_LB, + SOUND_CAS4_LC, + SOUND_CAS4_LD, + SOUND_CAS4_LE, + SOUND_CAS4_MA, + SOUND_CAS4_NA, + SOUND_CAS4_NB, + SOUND_CAS4_NC, + SOUND_CAS4_ND, + SOUND_CAS4_NE, + SOUND_CAS4_NF, + SOUND_CAS4_NG, + SOUND_CAS4_NH, + SOUND_CAS4_NJ, + SOUND_CAS4_OA, + SOUND_CAS4_OB, + SOUND_CAS4_OC, + SOUND_CAS4_OD, + SOUND_CAS4_OE, + SOUND_CAS4_OF, + SOUND_CAS4_OG, + SOUND_CAS4_OH, + SOUND_CAS4_OJ, + SOUND_CAS4_OK, + SOUND_CAS4_OL, + SOUND_CAS4_OM, + SOUND_CAS4_PA, + SOUND_CAS4_PB, + SOUND_CAS4_PD, + SOUND_CAS4_PE, + SOUND_CAS4_PF, + SOUND_CAS4_PG, + SOUND_CAS4_PH, + SOUND_CAS4_PJ, + SOUND_CAS4_PK, + SOUND_CAS4_QA, + SOUND_CAS4_QB, + SOUND_CAS4_RA, + SOUND_CAS4_RB, + SOUND_CAS4_RD, + SOUND_CAS4_RE, + SOUND_CAS4_SA, + SOUND_CAS4_SB, + SOUND_CAS4_TA, + SOUND_CAS4_TB, + SOUND_CAS4_TC, + SOUND_CAS5_AA = 8000, + SOUND_CAS5_AB, + SOUND_CAS5_BA, + SOUND_CAS5_BB, + SOUND_CAS5_BC, + SOUND_CAS5_BD, + SOUND_CAS5_BE, + SOUND_CAS5_CA, + SOUND_CAS5_CB, + SOUND_CAS5_CC, + SOUND_CAS5_CD, + SOUND_CAS5_CE, + SOUND_CAS5_CF, + SOUND_CAS5_CG, + SOUND_CAS5_DA, + SOUND_CAS5_DB, + SOUND_CAS5_EA, + SOUND_CAS5_EB, + SOUND_CAS6_AA = 8200, + SOUND_CAS6_AB, + SOUND_CAS6_AC, + SOUND_CAS6_AD, + SOUND_CAS6_AE, + SOUND_CAS6_AF, + SOUND_CAS6_BA, + SOUND_CAS6_BB, + SOUND_CAS6_BC, + SOUND_CAS6_BD, + SOUND_CAS6_BE, + SOUND_CAS6_BF, + SOUND_CAS6_BH, + SOUND_CAS6_BK, + SOUND_CAS6_BL, + SOUND_CAS6_BM, + SOUND_CAS6_BN, + SOUND_CAS6_CA, + SOUND_CAS6_CB, + SOUND_CAS6_DA, + SOUND_CAS6_DB, + SOUND_CAS6_EA, + SOUND_CAS6_EB, + SOUND_CAS6_EC, + SOUND_CAS6_ED, + SOUND_CAS6_EE, + SOUND_CAS6_EF, + SOUND_CAS6_EG, + SOUND_CAS6_EH, + SOUND_CAS6_EJ, + SOUND_CAS6_EK, + SOUND_CAS6_EL, + SOUND_CAS6_EM, + SOUND_CAS6_EN, + SOUND_CAS6_EO, + SOUND_CAS6_EP, + SOUND_CAS6_EQ, + SOUND_CAS6_ER, + SOUND_CAS6_ES, + SOUND_CAS6_ET, + SOUND_CAS6_EU, + SOUND_CAS6_FA, + SOUND_CAS6_FC, + SOUND_CAS6_FF, + SOUND_CAS6_FK, + SOUND_CAS6_FM, + SOUND_CAS6_FN, + SOUND_CAS6_FO, + SOUND_CAS6_FP, + SOUND_CAS6_GB, + SOUND_CAS6_GH, + SOUND_CAS6_GJ, + SOUND_CAS6_GK, + SOUND_CAS6_HA, + SOUND_CAS6_HB, + SOUND_CAS6_HC, + SOUND_CAS6_HD, + SOUND_CAS6_JA, + SOUND_CAS6_JB, + SOUND_CAS6_JC, + SOUND_CAS6_JD, + SOUND_CAS6_JE, + SOUND_CAS6_JF, + SOUND_CAS6_JG, + SOUND_CAS6_JJ, + SOUND_CAS6_JK, + SOUND_CAS6_JL, + SOUND_CAS6_JM, + SOUND_CAS6_JN, + SOUND_CAS6_JO, + SOUND_CAS6_KA, + SOUND_CAS6_KB, + SOUND_CAS6_KC, + SOUND_CAS6_KD, + SOUND_CAS6_KE, + SOUND_CAS6_LA, + SOUND_CAS6_LB, + SOUND_CAS6_LC, + SOUND_CAS6_LD, + SOUND_CAS9_AA = 8400, + SOUND_CAS9_AB, + SOUND_CAS9_AC, + SOUND_CAS9_AD, + SOUND_CAS9_BA, + SOUND_CAS9_BB, + SOUND_CAS9_BC, + SOUND_CAS9_BD, + SOUND_CAS9_CA, + SOUND_CAS9_CB, + SOUND_CAS9_CC, + SOUND_CAS9_CD, + SOUND_CAS9_DA, + SOUND_CAT_AA = 8600, + SOUND_CAT_AB, + SOUND_CAT_AC, + SOUND_CAT_AD, + SOUND_CAT_BA, + SOUND_CAT_BB, + SOUND_CAT_BC, + SOUND_CAT_BD, + SOUND_CAT_BE, + SOUND_CAT_BF, + SOUND_CAT_BG, + SOUND_CAT_BH, + SOUND_CAT_BI, + SOUND_CAT_BJ, + SOUND_CAT_BK, + SOUND_CAT_CA, + SOUND_CAT_CB, + SOUND_CAT_CC, + SOUND_CAT_CD, + SOUND_CAT_CE, + SOUND_CAT_CF, + SOUND_CAT_CG, + SOUND_CAT_CH, + SOUND_CAT_CI, + SOUND_CAT_CJ, + SOUND_CAT_CK, + SOUND_CAT_DA, + SOUND_CAT_DB, + SOUND_CAT_DC, + SOUND_CAT_DD, + SOUND_CAT_DE, + SOUND_CAT_DF, + SOUND_CAT_DG, + SOUND_CAT_DH, + SOUND_CAT_DI, + SOUND_CAT_DJ, + SOUND_CAT_DK, + SOUND_CAT_DL, + SOUND_CAT_DM, + SOUND_CAT_DN, + SOUND_CAT_DO, + SOUND_CAT_DP, + SOUND_CAT_EA, + SOUND_CAT_EB, + SOUND_CAT_EC, + SOUND_CAT_ED, + SOUND_CAT_EE, + SOUND_CAT_EF, + SOUND_CAT_EG, + SOUND_CAT_EH, + SOUND_CAT_EI, + SOUND_CAT_EJ, + SOUND_CAT_EK, + SOUND_CAT_EL, + SOUND_CAT_EM, + SOUND_CAT_EN, + SOUND_CAT_EO, + SOUND_CAT_FA, + SOUND_CAT_FB, + SOUND_CAT_FC, + SOUND_CAT_FD, + SOUND_CAT_FE, + SOUND_CAT_FF, + SOUND_CAT_FG, + SOUND_CAT_FH, + SOUND_CAT_FI, + SOUND_CAT_FJ, + SOUND_CAT_FK, + SOUND_CAT_FL, + SOUND_CAT_FM, + SOUND_CAT_FN, + SOUND_CAT_FO, + SOUND_CAT_GA, + SOUND_CAT_GB, + SOUND_CAT_GC, + SOUND_CAT_GD, + SOUND_CAT_GE, + SOUND_CAT_GF, + SOUND_CAT_GG, + SOUND_CAT_GH, + SOUND_CAT_GI, + SOUND_CAT_GJ, + SOUND_CAT_GK, + SOUND_CAT_GL, + SOUND_CAT_GM, + SOUND_CAT_GN, + SOUND_CAT_HA, + SOUND_CAT_HB, + SOUND_CAT_HC, + SOUND_CAT_HD, + SOUND_CAT_HE, + SOUND_CAT_HF, + SOUND_CAT_KA, + SOUND_CAT_KB, + SOUND_CAT_KC, + SOUND_CAT_KD, + SOUND_CAT_KE, + SOUND_CAT_KF, + SOUND_CAT_KG, + SOUND_CAT_KH, + SOUND_CAT_KI, + SOUND_CAT_KJ, + SOUND_CAT_KK, + SOUND_CAT_KL, + SOUND_CAT_KM, + SOUND_CAT_KN, + SOUND_CAT_KO, + SOUND_CAT_KP, + SOUND_CAT_KQ, + SOUND_CAT_KR, + SOUND_CAT_KS, + SOUND_CAT_KT, + SOUND_CAT_LA, + SOUND_CAT_LB, + SOUND_CAT_MA, + SOUND_CAT_MB, + SOUND_CAT_MC, + SOUND_CAT_NA, + SOUND_CAT_NB, + SOUND_CAT_NC, + SOUND_CAT_ND, + SOUND_CAT_NE, + SOUND_CAT_NF, + SOUND_CAT_NG, + SOUND_CAT_NH, + SOUND_CAT_OA, + SOUND_CAT_OB, + SOUND_CAT_OC, + SOUND_CAT_OD, + SOUND_CAT_OE, + SOUND_CAT_OF, + SOUND_CAT_OG, + SOUND_CAT_OH, + SOUND_CAT_PA, + SOUND_CAT_PB, + SOUND_CAT_PC, + SOUND_CAT_PD, + SOUND_CAT_PE, + SOUND_CAT_PF, + SOUND_CAT1_AA = 8800, + SOUND_CAT1_AB, + SOUND_CAT1_AC, + SOUND_CAT1_AD, + SOUND_CAT1_AE, + SOUND_CAT1_AF, + SOUND_CAT1_AG, + SOUND_CAT1_AH, + SOUND_CAT1_BA, + SOUND_CAT1_BB, + SOUND_CAT1_BC, + SOUND_CAT1_CA, + SOUND_CAT1_CB, + SOUND_CAT1_CC, + SOUND_CAT1_CD, + SOUND_CAT1_CE, + SOUND_CAT1_DA, + SOUND_CAT1_DB, + SOUND_CAT1_DC, + SOUND_CAT1_DD, + SOUND_CAT1_EA, + SOUND_CAT1_EB, + SOUND_CAT1_EC, + SOUND_CAT1_ED, + SOUND_CAT1_FA, + SOUND_CAT1_FB, + SOUND_CAT1_GA, + SOUND_CAT1_GB, + SOUND_CAT1_GC, + SOUND_CAT1_GD, + SOUND_CAT1_HA, + SOUND_CAT1_HB, + SOUND_CAT1_HC, + SOUND_CAT1_HD, + SOUND_CAT1_HE, + SOUND_CAT1_IA, + SOUND_CAT1_IB, + SOUND_CAT1_IC, + SOUND_CAT1_IE, + SOUND_CAT1_IF, + SOUND_CAT1_IG, + SOUND_CAT2_AA = 9000, + SOUND_CAT2_AB, + SOUND_CAT2_AC, + SOUND_CAT2_AF, + SOUND_CAT2_AG, + SOUND_CAT2_AH, + SOUND_CAT2_AI, + SOUND_CAT2_CA, + SOUND_CAT2_CB, + SOUND_CAT2_CC, + SOUND_CAT2_DA, + SOUND_CAT2_DB, + SOUND_CAT2_DC, + SOUND_CAT2_EA, + SOUND_CAT2_EB, + SOUND_CAT2_EC, + SOUND_CAT2_FA, + SOUND_CAT2_FB, + SOUND_CAT2_FC, + SOUND_CAT2_GA, + SOUND_CAT2_GB, + SOUND_CAT2_GC, + SOUND_CAT2_HA, + SOUND_CAT2_HB, + SOUND_CAT2_HC, + SOUND_CAT2_HE, + SOUND_CAT2_HF, + SOUND_CAT2_HG, + SOUND_CAT2_HH, + SOUND_CAT2_HI, + SOUND_CAT2_HJ, + SOUND_CAT2_JA, + SOUND_CAT2_SECURITY_ALARM = 9200, + SOUND_CAT2_WOODEN_DOOR_BREACH, + SOUND_CAT3_AA = 9400, + SOUND_CAT3_AB, + SOUND_CAT3_AC, + SOUND_CAT3_AD, + SOUND_CAT3_AE, + SOUND_CAT3_AF, + SOUND_CAT3_AG, + SOUND_CAT3_BA, + SOUND_CAT3_BB, + SOUND_CAT3_BC, + SOUND_CAT3_BD, + SOUND_CAT3_CA, + SOUND_CAT3_CB, + SOUND_CAT3_CC, + SOUND_CAT3_CD, + SOUND_CAT3_DA, + SOUND_CAT3_DB, + SOUND_CAT3_DC, + SOUND_CAT3_DD, + SOUND_CAT3_EA, + SOUND_CAT3_EB, + SOUND_CAT3_EC, + SOUND_CAT3_ED, + SOUND_CAT3_EE, + SOUND_CAT3_EF, + SOUND_CAT3_EG, + SOUND_CAT3_FA, + SOUND_CAT3_FB, + SOUND_CAT3_FC, + SOUND_CAT3_FD, + SOUND_CAT3_FE, + SOUND_CAT3_FF, + SOUND_CAT3_GA, + SOUND_CAT3_GB, + SOUND_CAT3_GC, + SOUND_CAT3_GD, + SOUND_CAT3_GE, + SOUND_CAT3_GF, + SOUND_CAT3_GG, + SOUND_CAT3_HA, + SOUND_CAT3_HB, + SOUND_CAT3_HC, + SOUND_CAT3_JA, + SOUND_CAT3_JB, + SOUND_CAT3_JC, + SOUND_CAT3_JD, + SOUND_CAT3_JE, + SOUND_CAT3_JF, + SOUND_CAT3_JG, + SOUND_CAT3_JH, + SOUND_CAT3_JJ, + SOUND_CAT3_JK, + SOUND_CAT4_AA = 9600, + SOUND_CAT4_AB, + SOUND_CAT4_AC, + SOUND_CAT4_AD, + SOUND_CAT4_AE, + SOUND_CAT4_AF, + SOUND_CAT4_AG, + SOUND_CAT4_AH, + SOUND_CAT4_AI, + SOUND_CAT4_AJ, + SOUND_CAT4_BA, + SOUND_CAT4_BB, + SOUND_CAT4_BC, + SOUND_CAT4_BD, + SOUND_CAT4_BE, + SOUND_CAT4_BF, + SOUND_CAT4_BG, + SOUND_CAT4_BH, + SOUND_CAT4_BI, + SOUND_CAT4_BJ, + SOUND_CAT4_BK, + SOUND_CAT4_CA, + SOUND_CAT4_CB, + SOUND_CAT4_CC, + SOUND_CAT4_CD, + SOUND_CAT4_CE, + SOUND_CAT4_CF, + SOUND_CAT4_CG, + SOUND_CAT4_CH, + SOUND_CAT4_DA, + SOUND_CAT4_DB, + SOUND_CAT4_DC, + SOUND_CAT4_DD, + SOUND_CAT4_DE, + SOUND_CAT4_DF, + SOUND_CAT4_DG, + SOUND_CAT4_DH, + SOUND_CAT4_DI, + SOUND_CAT4_DJ, + SOUND_CAT4_DK, + SOUND_CAT4_DL, + SOUND_CAT4_DM, + SOUND_CAT4_EA, + SOUND_CAT4_EB, + SOUND_CAT4_EC, + SOUND_CAT4_ED, + SOUND_CAT4_FA, + SOUND_CAT4_FB, + SOUND_CAT4_FC, + SOUND_CAT4_FD, + SOUND_CAT4_GA, + SOUND_CAT4_GB, + SOUND_CAT4_HA, + SOUND_CAT4_HB, + SOUND_CAT4_HC, + SOUND_CAT4_HD, + SOUND_CAT4_HE, + SOUND_CAT4_HF, + SOUND_CAT4_HG, + SOUND_CAT4_HH, + SOUND_CAT4_HI, + SOUND_CAT4_HJ, + SOUND_CAT4_JA, + SOUND_CAT4_JB, + SOUND_CAT4_KA, + SOUND_CAT4_KB, + SOUND_CAT4_KC, + SOUND_CAT4_KD, + SOUND_CAT4_KE, + SOUND_CAT4_KF, + SOUND_CAT4_KG, + SOUND_CAT4_LA, + SOUND_CAT4_LB, + SOUND_CAT4_LC, + SOUND_CAT4_LD, + SOUND_CAT4_LE, + SOUND_CAT4_LF, + SOUND_CATX_AA = 9800, + SOUND_CATX_AB, + SOUND_CATX_AC, + SOUND_CATX_AD, + SOUND_CATX_AE, + SOUND_CATX_AF, + SOUND_CATX_AG, + SOUND_CATX_AH, + SOUND_CATX_BA, + SOUND_CATX_BB, + SOUND_CATX_BC, + SOUND_CATX_BD, + SOUND_CATX_BE, + SOUND_CATX_BF, + SOUND_CATX_CA, + SOUND_CATX_CB, + SOUND_CATX_CC, + SOUND_CATX_CD, + SOUND_CATX_CE, + SOUND_CATX_CF, + SOUND_CATX_DA, + SOUND_CATX_DB, + SOUND_CATX_DC, + SOUND_CATX_DD, + SOUND_CATX_DE, + SOUND_CATX_DF, + SOUND_CATX_JA, + SOUND_CATX_JB, + SOUND_CATX_JC, + SOUND_CATX_JD, + SOUND_CATX_JE, + SOUND_CATX_JF, + SOUND_CATX_JG, + SOUND_CATX_JH, + SOUND_CATX_KA, + SOUND_CATX_KB, + SOUND_CATX_KC, + SOUND_CATX_KD, + SOUND_CATX_LA, + SOUND_CATX_LB, + SOUND_CATX_LC, + SOUND_CATX_LD, + SOUND_CATX_MA, + SOUND_CATX_MB, + SOUND_CATX_MC, + SOUND_CATX_MD, + SOUND_CATX_ME, + SOUND_CATX_NA, + SOUND_CATX_NB, + SOUND_CATX_NC, + SOUND_CATX_OA, + SOUND_CATX_OB, + SOUND_CATX_OC, + SOUND_CATX_OD, + SOUND_CATX_PA, + SOUND_CATX_PB, + SOUND_CATX_QA, + SOUND_CATX_QB, + SOUND_CATX_RA, + SOUND_CATX_RB, + SOUND_CATX_RC, + SOUND_CATX_SA, + SOUND_CATX_SB, + SOUND_CATX_SC, + SOUND_CATX_SD, + SOUND_CATX_SE, + SOUND_CATX_SF, + SOUND_CATX_SG, + SOUND_CATX_SH, + SOUND_CATX_TA, + SOUND_CATX_TB, + SOUND_CATX_TC, + SOUND_CATX_TD, + SOUND_CATX_TE, + SOUND_CATX_TF, + SOUND_CATX_TG, + SOUND_CATX_TH, + SOUND_CATX_TJ, + SOUND_CATX_TK, + SOUND_CATX_TL, + SOUND_CATX_TM, + SOUND_CATX_TN, + SOUND_CATX_TO, + SOUND_CATX_TP, + SOUND_CATX_TQ, + SOUND_CATX_TR, + SOUND_CATX_TS, + SOUND_CATX_TT, + SOUND_CATX_TU, + SOUND_CATX_UA, + SOUND_CATX_UB, + SOUND_CATX_UC, + SOUND_CATX_UD, + SOUND_CATX_UE, + SOUND_CATX_UF, + SOUND_CATX_UG, + SOUND_CATX_UH, + SOUND_CATX_UJ, + SOUND_CATX_UK, + SOUND_CATX_VA, + SOUND_CATX_VB, + SOUND_CATX_VC, + SOUND_CATX_VD, + SOUND_CATX_VE, + SOUND_CATX_VF, + SOUND_CATX_VG, + SOUND_CATX_VH, + SOUND_CATX_VJ, + SOUND_CATX_VK, + SOUND_CATX_VL, + SOUND_CATX_VM, + SOUND_CATX_VN, + SOUND_CATX_VO, + SOUND_CATX_VP, + SOUND_CATX_VQ, + SOUND_CES1_AA = 10000, + SOUND_CES1_AB, + SOUND_CES1_AC, + SOUND_CES1_AD, + SOUND_CES1_BA, + SOUND_CES1_BB, + SOUND_CES1_BC, + SOUND_CES1_BD, + SOUND_CES1_CA, + SOUND_CES1_CB, + SOUND_CES1_CC, + SOUND_CES1_CD, + SOUND_CES1_CE, + SOUND_CES1_CF, + SOUND_CES1_DA, + SOUND_CES1_DB, + SOUND_CES2_AA = 10200, + SOUND_CES2_AB, + SOUND_CES2_AC, + SOUND_CES2_AD, + SOUND_CES2_AE, + SOUND_CES2_AF, + SOUND_CES2_AG, + SOUND_CES2_ZA, + SOUND_CES2_ZB, + SOUND_CES2_ZC, + SOUND_CES2_ZD, + SOUND_CES2_ZE, + SOUND_CES2_ZF, + SOUND_CES2_ZG, + SOUND_CES2_ZH, + SOUND_CESX_AA = 10400, + SOUND_CESX_AB, + SOUND_CESX_AC, + SOUND_CESX_AD, + SOUND_CESX_AE, + SOUND_CESX_AF, + SOUND_CESX_BA, + SOUND_CESX_BB, + SOUND_CESX_BC, + SOUND_CESX_BD, + SOUND_CRA1_AA = 10600, + SOUND_CRA1_AB, + SOUND_CRA1_AC, + SOUND_CRA1_AD, + SOUND_CRA1_AE, + SOUND_CRA1_AF, + SOUND_CRA1_AG, + SOUND_CRA1_AH, + SOUND_CRA1_AI, + SOUND_CRA1_AJ, + SOUND_CRA1_BA, + SOUND_CRA1_BB, + SOUND_CRA1_BC, + SOUND_CRA1_BD, + SOUND_CRA1_BE, + SOUND_CRA1_BF, + SOUND_CRA1_BG, + SOUND_CRA1_BH, + SOUND_CRA1_BJ, + SOUND_CRA1_BK, + SOUND_CRA1_CA, + SOUND_CRA1_CB, + SOUND_CRA1_DA, + SOUND_CRA1_DB, + SOUND_CRA1_DC, + SOUND_CRA1_DD, + SOUND_CRA1_EA, + SOUND_CRA1_EB, + SOUND_CRA1_EC, + SOUND_CRA1_ED, + SOUND_CRA1_FA, + SOUND_CRA1_FB, + SOUND_CRA1_GA, + SOUND_CRA1_GB, + SOUND_CRA1_GC, + SOUND_CRA1_HA, + SOUND_CRA1_HB, + SOUND_CRA1_HC, + SOUND_CRA1_HD, + SOUND_CRA1_HE, + SOUND_CRA1_HF, + SOUND_CRA1_HG, + SOUND_CRA1_HH, + SOUND_CRA1_HJ, + SOUND_CRA1_HK, + SOUND_CRA1_HL, + SOUND_CRA1_JA, + SOUND_CRA1_JB, + SOUND_CRA1_JC, + SOUND_CRA1_JD, + SOUND_CRA1_KA, + SOUND_CRA1_KB, + SOUND_CRA1_KC, + SOUND_CRA1_KD, + SOUND_CRA1_KE, + SOUND_CRA1_KF, + SOUND_CRA1_KG, + SOUND_CRA1_KH, + SOUND_CRA1_KJ, + SOUND_CRA1_LA, + SOUND_CRA1_MA, + SOUND_CRA1_MB, + SOUND_CRA1_MC, + SOUND_CRA1_MD, + SOUND_CRA2_CA = 10800, + SOUND_CRA2_CB, + SOUND_CRA2_CC, + SOUND_CRA2_CD, + SOUND_CRA2_CE, + SOUND_CRA2_CF, + SOUND_CRA2_CG, + SOUND_CRA2_CH, + SOUND_CRA2_CI, + SOUND_CRA2_CJ, + SOUND_CRA2_CK, + SOUND_CRA2_CL, + SOUND_CRA2_CM, + SOUND_CRA2_CN, + SOUND_CRA2_CO, + SOUND_CRA2_DA, + SOUND_CRA2_DB, + SOUND_CRA2_DC, + SOUND_CRA2_DD, + SOUND_CRA2_DE, + SOUND_CRA2_DF, + SOUND_CRA2_DG, + SOUND_CRA2_DH, + SOUND_CRA2_DI, + SOUND_CRA2_DJ, + SOUND_CRA2_DK, + SOUND_CRA2_DL, + SOUND_CRA2_DM, + SOUND_CRA2_DN, + SOUND_CRA2_DO, + SOUND_CRA2_ZA, + SOUND_CRA2_ZB, + SOUND_CRA2_ZC, + SOUND_CRA3_BA = 11000, + SOUND_CRA3_CA, + SOUND_CRA3_CB, + SOUND_CRA3_DA, + SOUND_CRA3_DB, + SOUND_CRA3_DC, + SOUND_CRA3_DD, + SOUND_CRA3_DE, + SOUND_CRA3_EA, + SOUND_CRA3_EB, + SOUND_CRA3_EC, + SOUND_HATCH_LOCK = 11200, + SOUND_DANCE_HIGH_01 = 11400, + SOUND_DANCE_HIGH_02, + SOUND_DANCE_HIGH_03, + SOUND_DANCE_HIGH_04, + SOUND_DANCE_HIGH_05, + SOUND_DANCE_HIGH_06, + SOUND_DANCE_HIGH_07, + SOUND_DANCE_HIGH_08, + SOUND_DANCE_HIGH_09, + SOUND_DANCE_HIGH_10, + SOUND_DANCE_HIGH_11, + SOUND_DANCE_HIGH_12, + SOUND_DANCE_HIGH_13, + SOUND_DANCE_HIGH_14, + SOUND_DANCE_HIGH_15, + SOUND_DANCE_HIGH_16, + SOUND_DANCE_HIGH_17, + SOUND_DANCE_HIGH_18, + SOUND_DANCE_HIGH_19, + SOUND_DANCE_HIGH_20, + SOUND_DANCE_HIGH_21, + SOUND_DANCE_HIGH_22, + SOUND_DANCE_HIGH_23, + SOUND_DANCE_HIGH_24, + SOUND_DANCE_HIGH_25, + SOUND_DANCE_HIGH_26, + SOUND_DANCE_HIGH_27, + SOUND_DANCE_HIGH_28, + SOUND_DANCE_HIGH_29, + SOUND_DANCE_HIGH_30, + SOUND_DANCE_HIGH_31, + SOUND_DANCE_HIGH_32, + SOUND_DANCE_HIGH_33, + SOUND_DANCE_HIGH_34, + SOUND_DANCE_HIGH_35, + SOUND_DANCE_HIGH_36, + SOUND_DANCE_HIGH_37, + SOUND_DANCE_HIGH_38, + SOUND_DANCE_HIGH_39, + SOUND_DANCE_HIGH_40, + SOUND_DANCE_HIGH_41, + SOUND_DANCE_HIGH_42, + SOUND_DANCE_HIGH_43, + SOUND_DANCE_HIGH_44, + SOUND_DANCE_HIGH_45, + SOUND_DANCE_HIGH_46, + SOUND_DANCE_HIGH_47, + SOUND_DANCE_HIGH_48, + SOUND_DANCE_HIGH_49, + SOUND_DANCE_HIGH_50, + SOUND_DANCE_HIGH_51, + SOUND_DANCE_HIGH_52, + SOUND_DANCE_HIGH_53, + SOUND_DANCE_HIGH_54, + SOUND_DANCE_HIGH_55, + SOUND_DANCE_HIGH_56, + SOUND_DANCE_LOW_01 = 11600, + SOUND_DANCE_LOW_02, + SOUND_DANCE_LOW_03, + SOUND_DANCE_LOW_04, + SOUND_DANCE_LOW_05, + SOUND_DANCE_LOW_06, + SOUND_DANCE_LOW_07, + SOUND_DANCE_LOW_08, + SOUND_DANCE_LOW_09, + SOUND_DANCE_LOW_10, + SOUND_DANCE_LOW_11, + SOUND_DANCE_LOW_12, + SOUND_DANCE_LOW_13, + SOUND_DANCE_LOW_14, + SOUND_DANCE_LOW_15, + SOUND_DANCE_LOW_16, + SOUND_DANCE_LOW_17, + SOUND_DANCE_LOW_18, + SOUND_DANCE_LOW_19, + SOUND_DANCE_LOW_20, + SOUND_DANCE_LOW_21, + SOUND_DANCE_LOW_22, + SOUND_DANCE_LOW_23, + SOUND_DANCE_LOW_24, + SOUND_DANCE_LOW_25, + SOUND_DANCE_LOW_26, + SOUND_DANCE_LOW_27, + SOUND_DANCE_LOW_28, + SOUND_DANCE_LOW_29, + SOUND_DANCE_LOW_30, + SOUND_DANCE_LOW_31, + SOUND_DANCE_LOW_32, + SOUND_DANCE_LOW_33, + SOUND_DANCE_LOW_34, + SOUND_DANCE_LOW_35, + SOUND_DANCE_LOW_36, + SOUND_DANCE_LOW_37, + SOUND_DANCE_LOW_38, + SOUND_DANCE_LOW_39, + SOUND_DANCE_LOW_40, + SOUND_DANCE_LOW_41, + SOUND_DANCE_LOW_42, + SOUND_DANCE_LOW_43, + SOUND_DANCE_LOW_44, + SOUND_DANCE_LOW_45, + SOUND_DANCE_LOW_46, + SOUND_DANCE_LOW_47, + SOUND_DANCE_LOW_48, + SOUND_DANCE_LOW_49, + SOUND_DANCE_LOW_50, + SOUND_DANCE_LOW_51, + SOUND_DANCE_LOW_52, + SOUND_DANCE_LOW_53, + SOUND_DANCE_LOW_54, + SOUND_DANCE_LOW_55, + SOUND_DANCE_LOW_56, + SOUND_DANCE_MED_01 = 11800, + SOUND_DANCE_MED_02, + SOUND_DANCE_MED_03, + SOUND_DANCE_MED_04, + SOUND_DANCE_MED_05, + SOUND_DANCE_MED_06, + SOUND_DANCE_MED_07, + SOUND_DANCE_MED_08, + SOUND_DANCE_MED_09, + SOUND_DANCE_MED_10, + SOUND_DANCE_MED_11, + SOUND_DANCE_MED_12, + SOUND_DANCE_MED_13, + SOUND_DANCE_MED_14, + SOUND_DANCE_MED_15, + SOUND_DANCE_MED_16, + SOUND_DANCE_MED_17, + SOUND_DANCE_MED_18, + SOUND_DANCE_MED_19, + SOUND_DANCE_MED_20, + SOUND_DANCE_MED_21, + SOUND_DANCE_MED_22, + SOUND_DANCE_MED_23, + SOUND_DANCE_MED_24, + SOUND_DANCE_MED_25, + SOUND_DANCE_MED_26, + SOUND_DANCE_MED_27, + SOUND_DANCE_MED_28, + SOUND_DANCE_MED_29, + SOUND_DANCE_MED_30, + SOUND_DANCE_MED_31, + SOUND_DANCE_MED_32, + SOUND_DANCE_MED_33, + SOUND_DANCE_MED_34, + SOUND_DANCE_MED_35, + SOUND_DANCE_MED_36, + SOUND_DANCE_MED_37, + SOUND_DANCE_MED_38, + SOUND_DANCE_MED_39, + SOUND_DANCE_MED_40, + SOUND_DANCE_MED_41, + SOUND_DANCE_MED_42, + SOUND_DANCE_MED_43, + SOUND_DANCE_MED_44, + SOUND_DANCE_MED_45, + SOUND_DANCE_MED_46, + SOUND_DANCE_MED_47, + SOUND_DANCE_MED_48, + SOUND_DANCE_MED_49, + SOUND_DANCE_MED_50, + SOUND_DANCE_MED_51, + SOUND_DANCE_MED_52, + SOUND_DANCE_MED_53, + SOUND_DANCE_MED_54, + SOUND_DANCE_MED_55, + SOUND_DANCE_MED_56, + SOUND_DANCE_NOT_01 = 12000, + SOUND_DANCE_NOT_02, + SOUND_DANCE_NOT_03, + SOUND_DANCE_NOT_04, + SOUND_DANCE_NOT_05, + SOUND_DANCE_NOT_06, + SOUND_DANCE_NOT_07, + SOUND_DANCE_NOT_08, + SOUND_DANCE_NOT_09, + SOUND_DANCE_NOT_10, + SOUND_DANCE_NOT_11, + SOUND_DANCE_NOT_12, + SOUND_DANCE_NOT_13, + SOUND_DANCE_NOT_14, + SOUND_DANCE_NOT_15, + SOUND_DANCE_NOT_16, + SOUND_DANCE_NOT_17, + SOUND_DANCE_NOT_18, + SOUND_DANCE_NOT_19, + SOUND_DANCE_NOT_20, + SOUND_DANCE_NOT_21, + SOUND_DANCE_NOT_22, + SOUND_DANCE_NOT_23, + SOUND_DANCE_NOT_24, + SOUND_DANCE_NOT_25, + SOUND_DANCE_NOT_26, + SOUND_DANCE_NOT_27, + SOUND_DANCE_NOT_28, + SOUND_DANCE_NOT_29, + SOUND_DANCE_NOT_30, + SOUND_DANCE_NOT_31, + SOUND_DANCE_NOT_32, + SOUND_DANCE_NOT_33, + SOUND_DANCE_NOT_34, + SOUND_DANCE_NOT_35, + SOUND_DANCE_NOT_36, + SOUND_DANCE_NOT_37, + SOUND_DANCE_NOT_38, + SOUND_DANCE_NOT_39, + SOUND_DANCE_NOT_40, + SOUND_DANCE_NOT_41, + SOUND_DANCE_NOT_42, + SOUND_DANCE_NOT_43, + SOUND_DANCE_NOT_44, + SOUND_DANCE_NOT_45, + SOUND_DANCE_NOT_46, + SOUND_DANCE_NOT_47, + SOUND_DANCE_NOT_48, + SOUND_DANCE_NOT_49, + SOUND_DANCE_NOT_50, + SOUND_DANCE_NOT_51, + SOUND_DANCE_NOT_52, + SOUND_DANCE_NOT_53, + SOUND_DANCE_NOT_54, + SOUND_DANCE_NOT_55, + SOUND_DANCE_NOT_56, + SOUND_DA_NANG_CONTAINER_OPEN = 12200, + SOUND_DA_NANG_HEAVY_DOOR_OPEN, + SOUND_DC2_AA = 12400, + SOUND_DC2_AB, + SOUND_DC2_AC, + SOUND_DC2_AD, + SOUND_DC2_AE, + SOUND_DC2_AF, + SOUND_DC2_AG, + SOUND_DC2_AH, + SOUND_DC2_AI, + SOUND_DC2_AJ, + SOUND_DC2_AK, + SOUND_DC2_AL, + SOUND_CEMENT_POUR = 12600, + SOUND_SMASH_PORTACABIN, + SOUND_SMASH_PORTACABIN2, + SOUND_SMASH_PORTACABIN3, + SOUND_SMASH_PORTACABIN4, + SOUND_TOILET_FLUSH, + SOUND_DES1_AA = 12800, + SOUND_DES1_AB, + SOUND_DES1_AC, + SOUND_DES1_AD, + SOUND_DES1_AE, + SOUND_DES1_AF, + SOUND_DES1_AG, + SOUND_DES1_AH, + SOUND_DES1_AJ, + SOUND_DES1_AK, + SOUND_DES1_AL, + SOUND_DES1_AM, + SOUND_DES1_AN, + SOUND_DES1_AO, + SOUND_DES1_AP, + SOUND_DES1_AQ, + SOUND_DES1_AR, + SOUND_DES1_BA, + SOUND_DES1_BB, + SOUND_DES1_BC, + SOUND_DES1_BD, + SOUND_DES1_BE, + SOUND_DES1_BF, + SOUND_DES1_BG, + SOUND_DES1_BH, + SOUND_DES1_BJ, + SOUND_DES1_CA, + SOUND_DES1_CB, + SOUND_DES1_CC, + SOUND_DES1_CD, + SOUND_DES1_CE, + SOUND_DES1_CF, + SOUND_DES1_CG, + SOUND_DES2_AA = 13000, + SOUND_DES2_AB, + SOUND_DES2_AC, + SOUND_DES2_AD, + SOUND_DES2_AE, + SOUND_DES2_AF, + SOUND_DES2_BA, + SOUND_DES2_BB, + SOUND_DES2_BC, + SOUND_DES2_CA, + SOUND_DES2_CB, + SOUND_DES2_CC, + SOUND_DES2_DA, + SOUND_DES2_DB, + SOUND_DES2_DC, + SOUND_DES2_EA, + SOUND_DES2_EB, + SOUND_DES2_EC, + SOUND_DES2_ED, + SOUND_DES2_EE, + SOUND_DES2_EF, + SOUND_DES2_FA, + SOUND_DES2_FB, + SOUND_DES2_FC, + SOUND_DES2_GA, + SOUND_DES2_GB, + SOUND_DES2_GC, + SOUND_DES2_HA, + SOUND_DES2_HB, + SOUND_DES2_HC, + SOUND_DES2_JA, + SOUND_DES2_JB, + SOUND_DES2_JC, + SOUND_DES2_KA, + SOUND_DES2_KB, + SOUND_DES2_KC, + SOUND_DES2_KD, + SOUND_DES2_KE, + SOUND_DES2_LA, + SOUND_DES3_AA = 13200, + SOUND_DES3_AB, + SOUND_DES3_AC, + SOUND_DES3_AD, + SOUND_DES3_AE, + SOUND_DES3_BA, + SOUND_DES3_BB, + SOUND_DES3_BC, + SOUND_DES3_BD, + SOUND_DES3_BE, + SOUND_DES3_BF, + SOUND_DES3_BG, + SOUND_DES3_BH, + SOUND_DES3_CA, + SOUND_DES3_CB, + SOUND_DES3_CC, + SOUND_DES3_CD, + SOUND_DES6_AA = 13400, + SOUND_DES6_AB, + SOUND_DES6_AD, + SOUND_DES6_AE, + SOUND_DES6_AF, + SOUND_DES6_AG, + SOUND_DES6_AH, + SOUND_DES6_AJ, + SOUND_DES6_AK, + SOUND_DES6_AM, + SOUND_DES6_AN, + SOUND_DES6_BA, + SOUND_DES6_BB, + SOUND_DES6_BC, + SOUND_DES6_BD, + SOUND_DES6_CA, + SOUND_DES6_CB, + SOUND_DES6_CC, + SOUND_DES6_CD, + SOUND_DES6_DA, + SOUND_DES8_AA = 13600, + SOUND_DES8_BA, + SOUND_DES8_BB, + SOUND_DES8_BC, + SOUND_DES8_BD, + SOUND_DES8_CA, + SOUND_DES8_CB, + SOUND_DES8_CC, + SOUND_DES8_CD, + SOUND_DES8_DA, + SOUND_DES8_DB, + SOUND_DES8_DC, + SOUND_DES8_DD, + SOUND_DES8_EA, + SOUND_DES8_EB, + SOUND_DES8_EC, + SOUND_DES8_ED, + SOUND_DES8_EE, + SOUND_DES8_EF, + SOUND_DES8_FA, + SOUND_DES8_FB, + SOUND_DES8_FC, + SOUND_DES8_GA, + SOUND_DES8_GB, + SOUND_DES8_GC, + SOUND_DES8_GD, + SOUND_DES8_GE, + SOUND_DES8_GF, + SOUND_DES8_GG, + SOUND_DES8_GH, + SOUND_DES8_GI, + SOUND_DES8_GJ, + SOUND_DES8_GK, + SOUND_DES8_GL, + SOUND_DES8_GM, + SOUND_DES8_GN, + SOUND_DES8_HA, + SOUND_DES8_HB, + SOUND_DES8_JA, + SOUND_DES8_JB, + SOUND_DES8_JC, + SOUND_DES8_KA, + SOUND_DES8_LA, + SOUND_DES8_LC, + SOUND_DES8_MB, + SOUND_DES8_MD, + SOUND_DES8_ME, + SOUND_DES9_AA = 13800, + SOUND_DES9_AB, + SOUND_DES9_BA, + SOUND_DES9_BB, + SOUND_DOGG_AA = 14000, + SOUND_DOGG_AB, + SOUND_DOGG_AC, + SOUND_DOGG_AD, + SOUND_DOGG_AE, + SOUND_DOGG_AF, + SOUND_DOGG_AG, + SOUND_DOGG_AH, + SOUND_DOGG_AI, + SOUND_DOGG_AJ, + SOUND_DOGG_BA, + SOUND_DOGG_BB, + SOUND_DOGG_BC, + SOUND_DOGG_CA, + SOUND_DOGG_CB, + SOUND_DOGG_CC, + SOUND_DOGG_CD, + SOUND_DOGG_CE, + SOUND_DOGG_CF, + SOUND_DOGG_DA, + SOUND_DOGG_DB, + SOUND_DOGG_DC, + SOUND_DOGG_DD, + SOUND_DOGG_DE, + SOUND_DOGG_DF, + SOUND_DOGG_DG, + SOUND_DOGG_DH, + SOUND_DOGG_DI, + SOUND_DOGG_DJ, + SOUND_DOGG_EA, + SOUND_DOGG_EB, + SOUND_DOGG_EC, + SOUND_DOGG_FA, + SOUND_DOGG_FB, + SOUND_DOGG_FC, + SOUND_DOGG_FD, + SOUND_DOGG_FE, + SOUND_DOGG_FF, + SOUND_DOGG_FG, + SOUND_DOGG_GA, + SOUND_DOGG_GB, + SOUND_DOGG_GC, + SOUND_PISSING = 14200, + SOUND_THRUST = 14400, + SOUND_EXPLODE_LONG, + SOUND_EXPLODE_SHORT, + SOUND_GAME_OVER, + SOUND_MENU_DESELECT, + SOUND_MENU_SELECT, + SOUND_PICKUP_DARK, + SOUND_PICKUP_LIGHT, + SOUND_SHOOT, + SOUND_TOUCH_DARK, + SOUND_TOUCH_LIGHT, + SOUND_SWAT_WALL_BREAK = 14600, + SOUND_DETONATION_SIREN = 14800, + SOUND_FAR2_AA = 15000, + SOUND_FAR2_AB, + SOUND_FAR2_AC, + SOUND_FAR2_AD, + SOUND_FAR2_AE, + SOUND_FAR2_AF, + SOUND_FAR2_AG, + SOUND_FAR2_AH, + SOUND_FAR2_AI, + SOUND_FAR2_BA, + SOUND_FAR2_BB, + SOUND_FAR2_BC, + SOUND_FAR2_BD, + SOUND_FAR2_BE, + SOUND_FAR2_BF, + SOUND_FAR2_BG, + SOUND_FAR2_BH, + SOUND_FAR2_CA, + SOUND_FAR2_CB, + SOUND_FAR2_CC, + SOUND_FAR2_CD, + SOUND_FAR2_CE, + SOUND_FAR2_CF, + SOUND_FAR2_CG, + SOUND_FAR2_CH, + SOUND_FAR2_CI, + SOUND_FAR2_ZA, + SOUND_FAR2_ZB, + SOUND_FAR2_ZC, + SOUND_FAR3_CA = 15200, + SOUND_FAR3_CB, + SOUND_FAR3_CC, + SOUND_FAR3_CD, + SOUND_FAR3_CE, + SOUND_FAR3_CF, + SOUND_FAR3_CG, + SOUND_FAR3_CH, + SOUND_FAR3_CJ, + SOUND_FAR3_CK, + SOUND_FAR3_DA, + SOUND_FAR3_DB, + SOUND_FAR3_DC, + SOUND_FAR3_DD, + SOUND_FAR3_DE, + SOUND_FAR3_EA, + SOUND_FAR3_EB, + SOUND_FAR3_EC, + SOUND_FAR3_FA, + SOUND_FAR3_FB, + SOUND_FAR3_FC, + SOUND_FAR3_FD, + SOUND_FAR3_GA, + SOUND_FAR3_GB, + SOUND_FAR3_GC, + SOUND_FAR3_HA, + SOUND_FAR3_HB, + SOUND_FAR3_HC, + SOUND_FAR3_JA, + SOUND_FAR3_JB, + SOUND_FAR3_JC, + SOUND_FAR3_JD, + SOUND_FAR3_JE, + SOUND_FAR3_JF, + SOUND_FAR3_JG, + SOUND_FAR3_KA, + SOUND_FAR3_KB, + SOUND_FAR3_KC, + SOUND_FAR3_KD, + SOUND_FAR3_LA, + SOUND_FAR3_LB, + SOUND_FAR3_LC, + SOUND_FAR3_MA, + SOUND_FAR3_MB, + SOUND_FAR3_MC, + SOUND_FAR3_MD, + SOUND_FAR3_ME, + SOUND_FAR3_MF, + SOUND_FAR3_MG, + SOUND_FAR3_MH, + SOUND_FAR3_MJ, + SOUND_FAR3_MK, + SOUND_FAR3_ML, + SOUND_FAR3_MM, + SOUND_FAR3_MN, + SOUND_FAR3_MO, + SOUND_FAR3_MP, + SOUND_FAR3_NA, + SOUND_FAR3_NB, + SOUND_FAR4_AA = 15400, + SOUND_FAR4_AB, + SOUND_FAR4_AC, + SOUND_FAR4_AD, + SOUND_FAR4_AE, + SOUND_FAR4_AF, + SOUND_FAR4_AG, + SOUND_FAR4_AH, + SOUND_FAR4_AJ, + SOUND_FAR5_AA = 15600, + SOUND_FAR5_AB, + SOUND_FAR5_BA, + SOUND_FAR5_BB, + SOUND_FIN1_AA = 15800, + SOUND_FIN1_AC, + SOUND_FIN1_AD, + SOUND_FIN1_AE, + SOUND_FIN1_AH, + SOUND_FIN1_AS, + SOUND_FIN1_BC, + SOUND_FIN1_BD, + SOUND_FIN1_BE, + SOUND_FIN1_BK, + SOUND_FIN1_BL, + SOUND_FIN1_BY, + SOUND_FIN1_CB, + SOUND_FIN1_CC, + SOUND_FIN1_CD, + SOUND_FIN1_CE, + SOUND_FIN1_CI, + SOUND_FIN1_CJ, + SOUND_FIN1_CK, + SOUND_FIN1_CL, + SOUND_FIN1_CO, + SOUND_FIN1_DA, + SOUND_FIN1_DB, + SOUND_FIN1_DC, + SOUND_FIN1_EA, + SOUND_FIN1_EB, + SOUND_FIN1_GA, + SOUND_FIN1_GB, + SOUND_FIN1_GC, + SOUND_FIN1_GD, + SOUND_FIN1_GE, + SOUND_FIN1_GF, + SOUND_FIN1_GG, + SOUND_FIN1_GH, + SOUND_FIN1_GI, + SOUND_FIN1_GJ, + SOUND_FIN1_GK, + SOUND_FIN1_GL, + SOUND_FIN1_GM, + SOUND_FIN1_GN, + SOUND_FIN1_GO, + SOUND_FIN1_GP, + SOUND_FIN1_GQ, + SOUND_FIN1_GR, + SOUND_FIN1_GS, + SOUND_FIN1_GT, + SOUND_FIN1_GV, + SOUND_FIN1_GW, + SOUND_FIN1_HA, + SOUND_FIN1_HB, + SOUND_FIN1_HC, + SOUND_FIN1_HD, + SOUND_FIN1_HE, + SOUND_FIN1_HF, + SOUND_FIN1_HG, + SOUND_FIN1_HH, + SOUND_FIN1_HI, + SOUND_FIN1_HJ, + SOUND_FIN1_HK, + SOUND_FIN1_HL, + SOUND_FIN1_HM, + SOUND_FIN1_JA, + SOUND_FIN1_JB, + SOUND_FIN1_JC, + SOUND_FIN1_JD, + SOUND_FIN1_JE, + SOUND_FIN1_JF, + SOUND_FIN1_JG, + SOUND_FIN1_JH, + SOUND_FIN1_JI, + SOUND_FIN1_JJ, + SOUND_FIN1_JK, + SOUND_FIN1_JL, + SOUND_FIN1_JM, + SOUND_FIN1_JN, + SOUND_FIN1_JO, + SOUND_FIN1_KA, + SOUND_FIN1_KB, + SOUND_FIN1_KC, + SOUND_FIN1_KE, + SOUND_FIN1_KF, + SOUND_FIN1_KG, + SOUND_FIN1_KH, + SOUND_FIN1_KI, + SOUND_FIN1_KJ, + SOUND_FIN1_KK, + SOUND_FIN1_KL, + SOUND_FIN1_KM, + SOUND_FIN1_KO, + SOUND_FIN1_KP, + SOUND_FIN1_KQ, + SOUND_FIN1_KR, + SOUND_FIN1_KS, + SOUND_FIN1_KT, + SOUND_FIN1_KU, + SOUND_FIN1_KV, + SOUND_FIN1_KW, + SOUND_FIN1_KX, + SOUND_FIN1_KY, + SOUND_FIN1_LA, + SOUND_FIN1_LB, + SOUND_FIN1_LC, + SOUND_FIN1_LD, + SOUND_FIN1_LE, + SOUND_FIN1_LF, + SOUND_FIN1_LG, + SOUND_FIN1_LH, + SOUND_FIN1_LI, + SOUND_FIN1_LJ, + SOUND_FIN1_LK, + SOUND_FIN1_LL, + SOUND_FIN1_LM, + SOUND_FIN1_LN, + SOUND_FIN1_LO, + SOUND_FIN1_LP, + SOUND_FIN1_LQ, + SOUND_FIN1_LR, + SOUND_FIN1_LS, + SOUND_FIN1_LT, + SOUND_FIN1_LU, + SOUND_FIN1_LV, + SOUND_FIN1_LW, + SOUND_FIN1_LX, + SOUND_FIN1_MA, + SOUND_FIN1_MB, + SOUND_FIN1_MC, + SOUND_FIN1_MD, + SOUND_FIN1_ME, + SOUND_FIN1_MF, + SOUND_FIN1_MG, + SOUND_FIN1_MH, + SOUND_FIN1_MI, + SOUND_FIN1_MJ, + SOUND_FIN1_MK, + SOUND_FIN1_ML, + SOUND_FIN1_MM, + SOUND_FIN1_MN, + SOUND_FIN1_MO, + SOUND_FIN1_MP, + SOUND_FIN1_MQ, + SOUND_FIN1_MR, + SOUND_FIN1_MS, + SOUND_FIN1_MT, + SOUND_FIN1_MU, + SOUND_FIN1_MV, + SOUND_FIN1_MW, + SOUND_FIN1_MX, + SOUND_FIN1_ZA, + SOUND_FIN1_ZB, + SOUND_FIN1_ZC, + SOUND_FIN1_ZD, + SOUND_FIN2_AA = 16000, + SOUND_FIN2_AB, + SOUND_FIN2_AC, + SOUND_FIN2_AD, + SOUND_FIN2_AE, + SOUND_FIN2_AF, + SOUND_FIN2_BA, + SOUND_FIN2_BB, + SOUND_FIN2_BC, + SOUND_FIN2_BD, + SOUND_FIN2_BE, + SOUND_FIN2_BF, + SOUND_FIN2_BG, + SOUND_FIN2_BH, + SOUND_FIN2_BJ, + SOUND_FIN2_CA, + SOUND_FIN2_CB, + SOUND_FIN2_CC, + SOUND_FIN2_CD, + SOUND_PLANE_DOOR_KICK = 16200, + SOUND_GAR1_AA = 16400, + SOUND_GAR1_AB, + SOUND_GAR1_AC, + SOUND_GAR1_AD, + SOUND_GAR1_AE, + SOUND_GAR1_AF, + SOUND_GAR1_AG, + SOUND_GAR1_AH, + SOUND_GAR1_AJ, + SOUND_GAR1_BA, + SOUND_GAR1_BB, + SOUND_GAR1_BC, + SOUND_GAR1_BD, + SOUND_GAR1_BE, + SOUND_GAR1_BF, + SOUND_GAR1_BG, + SOUND_GAR1_BH, + SOUND_GAR1_CA, + SOUND_GAR1_CB, + SOUND_GAR1_CC, + SOUND_GAR1_DA, + SOUND_GAR1_DB, + SOUND_GAR1_DC, + SOUND_GAR1_DD, + SOUND_GAR1_DE, + SOUND_GAR1_DF, + SOUND_GAR1_EA, + SOUND_GAR1_EB, + SOUND_GAR1_EC, + SOUND_GAR1_ED, + SOUND_GAR1_EE, + SOUND_GAR1_FA, + SOUND_GAR1_FB, + SOUND_GAR1_FC, + SOUND_GAR1_FD, + SOUND_GAR1_FE, + SOUND_GAR1_FF, + SOUND_GAR1_FG, + SOUND_GAR1_GA, + SOUND_GAR1_GB, + SOUND_GAR1_GC, + SOUND_GAR1_GD, + SOUND_GAR1_GE, + SOUND_GAR1_GF, + SOUND_GAR1_GG, + SOUND_GAR1_GH, + SOUND_GAR1_GI, + SOUND_GAR1_GJ, + SOUND_GAR1_HA, + SOUND_GAR1_HB, + SOUND_GAR1_HC, + SOUND_GAR1_HD, + SOUND_GAR1_HE, + SOUND_GAR1_HF, + SOUND_GAR1_HG, + SOUND_GAR1_JA, + SOUND_GAR1_JB, + SOUND_GAR1_JC, + SOUND_GAR1_JD, + SOUND_GAR1_JE, + SOUND_GAR1_JF, + SOUND_GAR1_JG, + SOUND_GAR1_JH, + SOUND_GAR1_JJ, + SOUND_GAR1_KA, + SOUND_GAR1_KB, + SOUND_GAR1_KC, + SOUND_GAR1_KD, + SOUND_GAR1_KE, + SOUND_GAR1_LA, + SOUND_GAR1_LB, + SOUND_GAR1_LC, + SOUND_GAR1_LD, + SOUND_GAR1_MA, + SOUND_GAR1_MB, + SOUND_GAR1_MC, + SOUND_GAR1_MD, + SOUND_GAR1_ME, + SOUND_GAR1_MF, + SOUND_GAR1_MG, + SOUND_GAR1_NA, + SOUND_GAR1_NB, + SOUND_GAR1_NC, + SOUND_GAR1_ND, + SOUND_GAR1_NE, + SOUND_GAR1_NF, + SOUND_GAR1_NG, + SOUND_GAR1_NH, + SOUND_GAR1_NJ, + SOUND_GAR1_NK, + SOUND_GAR1_OA, + SOUND_GAR1_OB, + SOUND_GAR1_OC, + SOUND_GAR1_OD, + SOUND_GAR1_OE, + SOUND_GAR1_OF, + SOUND_GAR1_PA, + SOUND_GAR1_PB, + SOUND_GAR1_PC, + SOUND_GAR1_PD, + SOUND_GAR1_PE, + SOUND_GAR1_PF, + SOUND_GAR1_PG, + SOUND_GAR1_PH, + SOUND_GAR1_PJ, + SOUND_GAR2_AA = 16600, + SOUND_GAR2_AB, + SOUND_GAR2_AC, + SOUND_GAR2_AD, + SOUND_GAR2_AE, + SOUND_GAR2_AF, + SOUND_GAR2_AG, + SOUND_GAR2_AH, + SOUND_GAR2_AJ, + SOUND_GAR2_AK, + SOUND_GAR2_AL, + SOUND_GAR2_AM, + SOUND_GAR2_BA, + SOUND_GAR2_BB, + SOUND_GAR2_BC, + SOUND_G_CLOS1 = 16800, + SOUND_G_CLOS2, + SOUND_G_OPEN1, + SOUND_G_OPEN2, + SOUND_ACCEPT = 17000, + SOUND_DECLINE, + SOUND_ENEMYFIRE, + SOUND_EXPLODE, + SOUND_GAMEOVER, + SOUND_PLAYERFIRE, + SOUND_SELECT, + SOUND_HEAVY_CRATE_LAND = 17200, + SOUND_GRO1_AA = 17400, + SOUND_GRO1_AB, + SOUND_GRO1_AC, + SOUND_GRO1_AD, + SOUND_GRO1_AE, + SOUND_GRO1_BA, + SOUND_GRO1_BB, + SOUND_GRO1_BC, + SOUND_GRO1_BD, + SOUND_GRO1_BE, + SOUND_GRO1_CA, + SOUND_GRO1_CB, + SOUND_GRO1_CC, + SOUND_GRO1_CD, + SOUND_GRO1_CE, + SOUND_GRO1_CF, + SOUND_GRO1_CG, + SOUND_GRO1_CH, + SOUND_GRO1_CJ, + SOUND_GRO1_CK, + SOUND_GRO1_CL, + SOUND_GRO1_CM, + SOUND_GRO1_CN, + SOUND_GRO1_CO, + SOUND_GRO1_CP, + SOUND_GRO1_CQ, + SOUND_GRO1_CR, + SOUND_GRO1_CS, + SOUND_GRO1_DA, + SOUND_GRO1_DB, + SOUND_GRO1_EA, + SOUND_GRO1_EB, + SOUND_GRO1_FA, + SOUND_GRO1_FB, + SOUND_GRO1_FC, + SOUND_GRO1_FD, + SOUND_GRO1_FE, + SOUND_GRO1_FF, + SOUND_GRO1_FG, + SOUND_GRO1_FH, + SOUND_GRO1_FJ, + SOUND_GRO1_GA, + SOUND_GRO1_GB, + SOUND_GRO1_HA, + SOUND_GRO1_HB, + SOUND_GRO1_JA, + SOUND_GRO1_JB, + SOUND_GRO1_JC, + SOUND_GRO1_JD, + SOUND_GRO1_JE, + SOUND_GRO1_KA, + SOUND_GRO1_KB, + SOUND_GRO1_LA, + SOUND_GRO1_LB, + SOUND_GRO1_LC, + SOUND_GRO1_LD, + SOUND_GRO2_AA = 17600, + SOUND_GRO2_AB, + SOUND_GRO2_AC, + SOUND_GRO2_AD, + SOUND_GRO2_BA, + SOUND_GRO2_BB, + SOUND_GRO2_BC, + SOUND_GRO2_CA, + SOUND_GRO2_CB, + SOUND_GRO2_CC, + SOUND_GRO2_CE, + SOUND_GRO2_DA, + SOUND_GRO2_DB, + SOUND_GRO2_DC, + SOUND_GRO2_DD, + SOUND_GRO2_EA, + SOUND_GRO2_EB, + SOUND_GRO2_FA, + SOUND_GRO2_GA, + SOUND_GRO2_GB, + SOUND_GRO2_GC, + SOUND_GRO2_GD, + SOUND_GRO2_GE, + SOUND_GYM_BIKE_LOOP = 17800, + SOUND_RUNNING_MACHINE_LOOP, + SOUND_GYM_BOXING_BELL, + SOUND_GYM_INCREASE_DIFFICULTY, + SOUND_GYM_PUNCH_BAG_1, + SOUND_GYM_PUNCH_BAG_2, + SOUND_GYM_PUNCH_BAG_3, + SOUND_GYM_REST_WEIGHTS, + SOUND_HE1_AA = 18000, + SOUND_HE1_AB, + SOUND_HE1_AC, + SOUND_HE1_AD, + SOUND_HE1_AE, + SOUND_HE1_AF, + SOUND_HE1_AG, + SOUND_HE1_AH, + SOUND_HE1_AI, + SOUND_HE1_AJ, + SOUND_HE1_AK, + SOUND_HE1_AL, + SOUND_HE1_XA, + SOUND_HE1_XB, + SOUND_HE1_ZA, + SOUND_HE1_ZB, + SOUND_HE1_ZC, + SOUND_HE1_ZD, + SOUND_HE1_ZE, + SOUND_HE1_ZF, + SOUND_HE1_ZG, + SOUND_HE1_ZH, + SOUND_HE1_ZJ, + SOUND_HE1_ZK, + SOUND_HE1_ZL, + SOUND_HE1_ZM, + SOUND_HE2_AA = 18200, + SOUND_HE2_AB, + SOUND_HE2_AC, + SOUND_HE2_AD, + SOUND_HE2_AE, + SOUND_HE2_AF, + SOUND_HE2_AG, + SOUND_HE2_AH, + SOUND_HE2_AJ, + SOUND_HE2_AK, + SOUND_HE2_AL, + SOUND_HE2_BA, + SOUND_HE2_BB, + SOUND_HE2_CA, + SOUND_HE2_CB, + SOUND_HE2_DA, + SOUND_HE2_DB, + SOUND_HE3_AA = 18400, + SOUND_HE3_AB, + SOUND_HE3_BA, + SOUND_HE3_BB, + SOUND_HE3_CA, + SOUND_HE3_CB, + SOUND_HE3_CC, + SOUND_HE3_CD, + SOUND_HE3_CE, + SOUND_HE3_CF, + SOUND_HE3_CG, + SOUND_HE3_CH, + SOUND_HE3_DA, + SOUND_HE3_DB, + SOUND_HE3_DC, + SOUND_HE3_DD, + SOUND_HE3_DE, + SOUND_HE3_DF, + SOUND_HE3_DG, + SOUND_HE3_EA, + SOUND_HE3_EB, + SOUND_HE3_EC, + SOUND_HE3_FA, + SOUND_HE3_FB, + SOUND_HE3_FC, + SOUND_HE3_FD, + SOUND_HE3_FE, + SOUND_HE3_FF, + SOUND_HE3_FG, + SOUND_HE3_GA, + SOUND_HE3_GB, + SOUND_HE3_GC, + SOUND_HE3_GD, + SOUND_HE3_GE, + SOUND_HE3_HA, + SOUND_HE4_AA = 18600, + SOUND_HE4_AB, + SOUND_HE4_AC, + SOUND_HE4_BA, + SOUND_HE4_BB, + SOUND_HE4_BC, + SOUND_HE4_BD, + SOUND_HE4_BE, + SOUND_HE4_BF, + SOUND_HE4_BG, + SOUND_HE4_BH, + SOUND_HE4_BJ, + SOUND_HE4_BK, + SOUND_HE4_BL, + SOUND_HE4_BM, + SOUND_HE4_CA, + SOUND_HE4_CB, + SOUND_HE5_AA = 18800, + SOUND_HE5_AB, + SOUND_HE5_AC, + SOUND_HE5_AD, + SOUND_HE5_BA, + SOUND_HE5_BB, + SOUND_HE5_BC, + SOUND_HE5_BD, + SOUND_HE8_AA = 19000, + SOUND_HE8_AB, + SOUND_HE8_AC, + SOUND_HE8_AD, + SOUND_HE8_BA, + SOUND_HE8_BB, + SOUND_HE8_BC, + SOUND_HE8_BD, + SOUND_HE8_BE, + SOUND_HE8_BF, + SOUND_HE8_CA, + SOUND_HE8_CB, + SOUND_HE8_CC, + SOUND_HE8_CD, + SOUND_HE8_CE, + SOUND_HE8_CF, + SOUND_HE8_DA, + SOUND_HE8_DB, + SOUND_HE8_DC, + SOUND_HE8_DD, + SOUND_HE8_EA, + SOUND_HE8_EB, + SOUND_HE8_EC, + SOUND_HE8_ED, + SOUND_HE8_FA, + SOUND_HE8_FB, + SOUND_HE8_FC, + SOUND_HE8_FD, + SOUND_HE8_FE, + SOUND_HE8_GA, + SOUND_HE8_GB, + SOUND_HE8_GC, + SOUND_HE8_GD, + SOUND_HE8_GE, + SOUND_HE8_GF, + SOUND_HE8_GG, + SOUND_HE8_GH, + SOUND_HE8_GJ, + SOUND_HE8_HB, + SOUND_HE8_JA, + SOUND_HE8_JB, + SOUND_HE8_JC, + SOUND_HE8_KA, + SOUND_HE8_KB, + SOUND_HE8_KC, + SOUND_HE8_KD, + SOUND_HE8_KE, + SOUND_HE8_KF, + SOUND_HE8_KG, + SOUND_HE8_KH, + SOUND_HE8_LA, + SOUND_HE8_LB, + SOUND_HE8_LC, + SOUND_HE8_LD, + SOUND_HE8_LE, + SOUND_HE8_LF, + SOUND_HE8_MA, + SOUND_HE8_MB, + SOUND_HE8_MC, + SOUND_HE8_NA, + SOUND_HE8_NB, + SOUND_HE8_NC, + SOUND_HE8_ND, + SOUND_HE8_NE, + SOUND_HE8_OA, + SOUND_HE8_OB, + SOUND_HE8_OC, + SOUND_HE8_OD, + SOUND_HE8_OE, + SOUND_HE8_OF, + SOUND_HE8_OG, + SOUND_HE8_OH, + SOUND_HE8_OJ, + SOUND_HE8_OK, + SOUND_HE8_PA, + SOUND_HE8_PB, + SOUND_HE8_PC, + SOUND_HE8_PD, + SOUND_HE8_PE, + SOUND_HE8_PF, + SOUND_HE8_PG, + SOUND_HE8_PH, + SOUND_HE8_PJ, + SOUND_HE8_QA, + SOUND_HE8_QB, + SOUND_HE8_QC, + SOUND_HE8_RA, + SOUND_HE8_RB, + SOUND_HE8_RC, + SOUND_HE8_RD, + SOUND_HE8_RE, + SOUND_HE8_SA, + SOUND_HE8_SB, + SOUND_HE8_TA, + SOUND_HE8_TB, + SOUND_HE8_TC, + SOUND_HE8_TE, + SOUND_HE8_TF, + SOUND_HE8_TG, + SOUND_HE8_TH, + SOUND_HE8_TJ, + SOUND_HE8_TK, + SOUND_HE8_TL, + SOUND_HE8_TM, + SOUND_HE8_UA, + SOUND_HE8_UB, + SOUND_HE8_UC, + SOUND_HE8_UD, + SOUND_HE8_UE, + SOUND_HE8_UF, + SOUND_HE8_UG, + SOUND_HE8_UH, + SOUND_HE8_VA, + SOUND_HE8_VB, + SOUND_HE8_VC, + SOUND_HE8_VD, + SOUND_HE8_WA, + SOUND_HE8_WB, + SOUND_HE8_WC, + SOUND_HE8_WD, + SOUND_HE8_WE, + SOUND_HE8_WF, + SOUND_HE8_XA, + SOUND_HE8_XB, + SOUND_HE8_XC, + SOUND_HE8_YA, + SOUND_HE8_YB, + SOUND_HE8_YC, + SOUND_HE8_ZA, + SOUND_HE8_ZB, + SOUND_HE8_ZD, + SOUND_HE8_ZE, + SOUND_HE8_ZF, + SOUND_HE8_ZG, + SOUND_HE8_ZH, + SOUND_HE8_ZJ, + SOUND_HEIQ1 = 19200, + SOUND_HEIQ1N, + SOUND_HEIQ1Y, + SOUND_HEIQ2, + SOUND_HEIQ2N, + SOUND_HEIQ2Y, + SOUND_HEIQ2YB, + SOUND_HEIQ4, + SOUND_HEIQ4B, + SOUND_HEIQ4C, + SOUND_HEIQ5, + SOUND_HEIQ5B, + SOUND_HEIQ5C, + SOUND_HEIX1, + SOUND_HEIX1B, + SOUND_HEIX2, + SOUND_HEIX2B, + SOUND_HEIX2N, + SOUND_HEIX2Y, + SOUND_HEIX3, + SOUND_TRUCK_SMASH_VEHICLE = 19400, + SOUND_TRUCK_SMASH_VEHICLE_2, + SOUND_TRUCK_SMASH_VEHICLE_3, + SOUND_TRUCK_SMASH_VEHICLE_4, + SOUND_ALARM_CLOCK = 19600, + SOUND_SNORE, + SOUND_SNORE2, + SOUND_SNORE3, + SOUND_SNORE4, + SOUND_HOUSE_PARTY_BASS_LOOP = 19800, + SOUND_INT1_AA = 20000, + SOUND_INT1_AB, + SOUND_INT1_AC, + SOUND_INT1_AD, + SOUND_INT1_AE, + SOUND_INT1_AF, + SOUND_INT1_AG, + SOUND_INT1_AH, + SOUND_INT1_AI, + SOUND_INT1_AJ, + SOUND_INT1_AK, + SOUND_INT1_AM, + SOUND_INT1_AN, + SOUND_INT1_AO, + SOUND_INT1_AP, + SOUND_INT1_AQ, + SOUND_INT1_AR, + SOUND_INT1_BA, + SOUND_INT1_BB, + SOUND_INT1_BC, + SOUND_INT1_BD, + SOUND_INT1_BE, + SOUND_INT1_BF, + SOUND_INT1_BG, + SOUND_INT1_BH, + SOUND_INT1_BI, + SOUND_INT1_BJ, + SOUND_INT1_BK, + SOUND_INT1_CA, + SOUND_INT1_CB, + SOUND_INT1_CC, + SOUND_INT1_DA, + SOUND_INT1_DB, + SOUND_INT1_DC, + SOUND_INT1_DD, + SOUND_INT1_DE, + SOUND_INT1_DF, + SOUND_INT1_DG, + SOUND_INT1_DH, + SOUND_INT1_DI, + SOUND_INT1_EA, + SOUND_INT1_EB, + SOUND_INT1_EC, + SOUND_INT1_ED, + SOUND_INT1_EE, + SOUND_INT1_EF, + SOUND_INT1_EG, + SOUND_INT1_EH, + SOUND_INT1_EI, + SOUND_INT1_EJ, + SOUND_INT1_FA, + SOUND_INT1_FB, + SOUND_INT1_FC, + SOUND_INT1_FD, + SOUND_INT1_FE, + SOUND_INT1_FF, + SOUND_INT1_FG, + SOUND_INT1_FH, + SOUND_INT1_FI, + SOUND_INT1_GA, + SOUND_INT1_GB, + SOUND_INT1_GC, + SOUND_INT1_GD, + SOUND_INT1_GE, + SOUND_INT1_GF, + SOUND_INT1_GG, + SOUND_INT1_GH, + SOUND_INT1_GI, + SOUND_INT1_GJ, + SOUND_INT1_GK, + SOUND_INT1_GL, + SOUND_INT1_GM, + SOUND_INT1_GN, + SOUND_INT2_AA = 20200, + SOUND_INT2_BA, + SOUND_INT2_BB, + SOUND_INT2_BC, + SOUND_INT2_BD, + SOUND_INT2_BE, + SOUND_INT2_BF, + SOUND_INT2_BG, + SOUND_INT2_BH, + SOUND_INT2_BJ, + SOUND_INT2_BK, + SOUND_INT2_CA, + SOUND_INT2_CB, + SOUND_INT2_CC, + SOUND_INT2_CD, + SOUND_INT2_CE, + SOUND_INT2_CF, + SOUND_INT2_CG, + SOUND_INT2_DA, + SOUND_INT2_DB, + SOUND_INT2_DC, + SOUND_INT2_EA, + SOUND_INT2_FA, + SOUND_INT2_FB, + SOUND_INT2_FC, + SOUND_INT2_FD, + SOUND_INT2_GA, + SOUND_INT2_GB, + SOUND_INT2_GC, + SOUND_INT2_GD, + SOUND_INT2_GE, + SOUND_INT2_GF, + SOUND_INT2_HA, + SOUND_INT2_HB, + SOUND_INT2_IA, + SOUND_INT2_IB, + SOUND_INT2_JA, + SOUND_INT2_JB, + SOUND_INT2_KA, + SOUND_INT2_KB, + SOUND_INT2_LA, + SOUND_INT2_LB, + SOUND_INT2_LC, + SOUND_INT2_MA, + SOUND_INT2_MB, + SOUND_INT2_NA, + SOUND_INT2_NB, + SOUND_INT2_NC, + SOUND_INT2_ND, + SOUND_JIZX_AA = 20400, + SOUND_JIZX_AB, + SOUND_JIZX_AC, + SOUND_JIZX_AD, + SOUND_JIZX_AE, + SOUND_JIZX_AF, + SOUND_JIZX_AG, + SOUND_JIZX_AH, + SOUND_JIZX_AI, + SOUND_JIZX_AJ, + SOUND_JIZX_AK, + SOUND_JIZX_AL, + SOUND_JIZX_AM, + SOUND_JIZX_AN, + SOUND_JIZX_AO, + SOUND_JIZX_AP, + SOUND_JIZX_BA, + SOUND_JIZX_BB, + SOUND_JIZX_BC, + SOUND_JIZX_BD, + SOUND_JIZX_BE, + SOUND_JIZX_BF, + SOUND_JIZX_BG, + SOUND_JIZX_BH, + SOUND_JIZX_BI, + SOUND_CAR_PHONE_RING = 20600, + SOUND_CLOTHES_DRESSING_WARDROBE = 20800, + SOUND_DOORBELL, + SOUND_DRESSING, + SOUND_GIMP_SUIT, + SOUND_PED_MOBRING, + SOUND_KEYPAD_BEEP = 21000, + SOUND_KEYPAD_FAIL, + SOUND_KEYPAD_PASS, + SOUND_KUNG_1 = 21200, + SOUND_KUNG_2, + SOUND_KUNG_3, + SOUND_KUNG_4, + SOUND_KUNG_5, + SOUND_KUNG_6, + SOUND_KUNG_7, + SOUND_KUNG_8, + SOUND_BEXIT1 = 21400, + SOUND_BEXIT2, + SOUND_DNCEF1, + SOUND_DNCEF2, + SOUND_DOFFE1, + SOUND_DOFFE1N, + SOUND_DOFFE1Y, + SOUND_DOFFE2, + SOUND_DOFFE2N, + SOUND_DOFFE2Y, + SOUND_DOFFE3, + SOUND_DOFFE3N, + SOUND_DOFFE3Y, + SOUND_DOFFE4, + SOUND_DOFFE4N, + SOUND_DOFFE4Y, + SOUND_DSTAR1, + SOUND_DSTAR2, + SOUND_GEXIT1, + SOUND_GEXIT2, + SOUND_HI1, + SOUND_HI1N, + SOUND_HI1Y, + SOUND_HI2, + SOUND_HI2N, + SOUND_HI2Y, + SOUND_HI3, + SOUND_HI3N, + SOUND_HI3Y, + SOUND_HI4, + SOUND_HI4N, + SOUND_HI4Y, + SOUND_HI5, + SOUND_HI5N, + SOUND_HI5Y, + SOUND_HI6, + SOUND_HI6N, + SOUND_HI6Y, + SOUND_HI7N, + SOUND_HI7Y, + SOUND_HI8N, + SOUND_HI8Y, + SOUND_VLATE, + SOUND_VOFFE1, + SOUND_VOFFE1N, + SOUND_VOFFE1Y, + SOUND_VOFFE2, + SOUND_VOFFE2N, + SOUND_VOFFE2Y, + SOUND_VSURE1, + SOUND_VSURE1N, + SOUND_VSURE1Y, + SOUND_VSURE2, + SOUND_VSURE2N, + SOUND_VSURE2Y, + SOUND_VYES1, + SOUND_VYES2, + SOUND_LOC1_BA = 21600, + SOUND_LOC1_BB, + SOUND_LOC1_BC, + SOUND_LOC1_BD, + SOUND_LOC1_BE, + SOUND_LOC1_BF, + SOUND_LOC1_BG, + SOUND_LOC1_BH, + SOUND_LOC1_BJ, + SOUND_LOC1_BK, + SOUND_LOC1_BL, + SOUND_LOC1_BM, + SOUND_LOC1_BN, + SOUND_LOC1_BO, + SOUND_LOC1_BP, + SOUND_LOC1_BQ, + SOUND_LOC1_BR, + SOUND_LOC1_BS, + SOUND_LOC1_BT, + SOUND_LOC1_BU, + SOUND_LOC1_BV, + SOUND_LOC1_CA, + SOUND_LOC1_CB, + SOUND_LOC1_CC, + SOUND_LOC1_CD, + SOUND_LOC1_CE, + SOUND_LOC1_CF, + SOUND_LOC1_CG, + SOUND_LOC1_CH, + SOUND_LOC1_CJ, + SOUND_LOC1_CK, + SOUND_LOC1_CL, + SOUND_LOC1_CM, + SOUND_LOC1_CN, + SOUND_LOC1_CO, + SOUND_LOC1_CP, + SOUND_LOC1_CQ, + SOUND_LOC1_CR, + SOUND_LOC1_CS, + SOUND_LOC1_CT, + SOUND_LOC1_CU, + SOUND_LOC1_CV, + SOUND_LOC1_YA, + SOUND_LOC1_YB, + SOUND_LOC1_YC, + SOUND_LOC1_YD, + SOUND_LOC1_YE, + SOUND_LOC1_YG, + SOUND_LOC1_YH, + SOUND_LOC1_YJ, + SOUND_LOC1_YK, + SOUND_LOC1_YO, + SOUND_LOC1_YP, + SOUND_LOC1_YQ, + SOUND_LOC1_YR, + SOUND_LOC1_YS, + SOUND_LOC1_YT, + SOUND_LOC1_ZE, + SOUND_LOC1_ZF, + SOUND_LOC1_ZG, + SOUND_LOC1_ZH, + SOUND_LOC1_ZN, + SOUND_LOC1_ZO, + SOUND_LOC1_ZP, + SOUND_LOC1_ZQ, + SOUND_LOC1_ZT, + SOUND_LOC1_ZU, + SOUND_LOC2_AA = 21800, + SOUND_LOC2_AB, + SOUND_LOC2_AC, + SOUND_LOC2_BA, + SOUND_LOC2_BB, + SOUND_LOC2_CA, + SOUND_LOC2_CB, + SOUND_LOC2_CC, + SOUND_LOC2_DC, + SOUND_LOC3_AA = 22000, + SOUND_LOC3_BA, + SOUND_LOC3_BB, + SOUND_LOC3_BC, + SOUND_LOC3_BD, + SOUND_LOC3_BE, + SOUND_LOC3_CA, + SOUND_LOC3_CB, + SOUND_LOC3_DA, + SOUND_LOC3_DB, + SOUND_LOC3_DC, + SOUND_LOC3_DD, + SOUND_LOC3_EA, + SOUND_LOC3_EB, + SOUND_LOC3_EC, + SOUND_LOC3_ED, + SOUND_LOC3_EE, + SOUND_LOC3_EF, + SOUND_LOC3_EG, + SOUND_LOC3_EH, + SOUND_LOC3_EJ, + SOUND_LOC3_EK, + SOUND_LOC3_EL, + SOUND_LOC3_EM, + SOUND_LOC3_EN, + SOUND_LOC3_EO, + SOUND_LOC3_FA, + SOUND_LOC3_FB, + SOUND_LOC3_FC, + SOUND_LOC3_FD, + SOUND_LOC3_FE, + SOUND_LOC3_FF, + SOUND_LOC3_GA, + SOUND_LOC3_GB, + SOUND_LOC3_GC, + SOUND_LOC3_GD, + SOUND_LOC3_HA, + SOUND_LOC3_HB, + SOUND_LOC3_JA, + SOUND_LOC3_JB, + SOUND_LOC4_AA = 22200, + SOUND_LOC4_AB, + SOUND_LOC4_AC, + SOUND_LOC4_AD, + SOUND_LOC4_AE, + SOUND_LOC4_AF, + SOUND_LOC4_AG, + SOUND_LOC4_AH, + SOUND_LOC4_BA, + SOUND_LOC4_BB, + SOUND_LOC4_BC, + SOUND_LOC4_BD, + SOUND_LOC4_BE, + SOUND_LOC4_BF, + SOUND_LOC4_BG, + SOUND_LOC4_CA, + SOUND_LOC4_CB, + SOUND_LOC4_CC, + SOUND_LOCX_AA = 22400, + SOUND_LOCX_AB, + SOUND_LOCX_AC, + SOUND_LOCX_AD, + SOUND_LOCX_AE, + SOUND_LOCX_AF, + SOUND_LOCX_AG, + SOUND_MOURNERS = 22600, + SOUND_LOWR_AA = 22800, + SOUND_LOWR_AB, + SOUND_LOWR_AD, + SOUND_LOWR_AE, + SOUND_LOWR_AG, + SOUND_LOWR_AH, + SOUND_LOWR_AK, + SOUND_LOWR_AL, + SOUND_LOWR_BA, + SOUND_LOWR_BB, + SOUND_LOWR_BC, + SOUND_LOWR_CA, + SOUND_LOWR_CB, + SOUND_LOWR_DA, + SOUND_LOWR_DB, + SOUND_LOWR_EA, + SOUND_LOWR_EB, + SOUND_LOWR_EC, + SOUND_LOWR_ED, + SOUND_LOWR_EE, + SOUND_LOWR_EF, + SOUND_LOWR_FA, + SOUND_LOWR_FB, + SOUND_LOWR_FC, + SOUND_LOWR_FD, + SOUND_LOWR_FE, + SOUND_LOWR_FF, + SOUND_LOWR_GA, + SOUND_LOWR_GB, + SOUND_LOWR_HA, + SOUND_LOWR_HB, + SOUND_LOWR_HC, + SOUND_LOWR_HD, + SOUND_LOWR_KA, + SOUND_LOWR_KB, + SOUND_LOWR_KC, + SOUND_LOWR_KD, + SOUND_LOWR_KE, + SOUND_LOWR_KF, + SOUND_LOWR_KG, + SOUND_MOBRING = 23000, + SOUND_MACX_AA = 23200, + SOUND_MACX_AB, + SOUND_MACX_AC, + SOUND_MACX_AD, + SOUND_MACX_AE, + SOUND_MACX_AF, + SOUND_MACX_AG, + SOUND_MACX_AH, + SOUND_MACX_AI, + SOUND_MACX_AJ, + SOUND_CRATE_LANDING = 23400, + SOUND_VIDEO_GAME_LOOP = 23600, + SOUND_MAN1_AA = 23800, + SOUND_MAN1_AB, + SOUND_MAN1_AC, + SOUND_MAN1_AD, + SOUND_MAN1_BA, + SOUND_MAN1_BB, + SOUND_MAN1_BC, + SOUND_MAN1_BD, + SOUND_MAN1_CA, + SOUND_MAN1_CB, + SOUND_MAN1_CC, + SOUND_MAN1_DA, + SOUND_MAN1_DB, + SOUND_MAN1_DC, + SOUND_MAN1_DD, + SOUND_MAN1_DE, + SOUND_MAN1_DF, + SOUND_MAN1_DG, + SOUND_MAN1_DH, + SOUND_MAN1_DJ, + SOUND_MAN1_EA, + SOUND_MAN1_EB, + SOUND_MAN1_FA, + SOUND_MAN1_FB, + SOUND_MAN1_FC, + SOUND_MAN1_FD, + SOUND_MAN1_FE, + SOUND_MAN1_FF, + SOUND_MAN1_FG, + SOUND_MAN1_FH, + SOUND_MAN1_FJ, + SOUND_MAN1_FK, + SOUND_MAN1_FL, + SOUND_MAN1_FM, + SOUND_MAN1_FN, + SOUND_MAN1_FO, + SOUND_MAN2_AA = 24000, + SOUND_MAN2_AB, + SOUND_MAN2_AC, + SOUND_MAN2_AD, + SOUND_MAN2_BA, + SOUND_MAN2_BB, + SOUND_MAN2_BC, + SOUND_MAN2_BD, + SOUND_MAN2_BE, + SOUND_MAN2_BF, + SOUND_MAN2_BG, + SOUND_MAN2_BH, + SOUND_MAN2_BJ, + SOUND_MAN2_BK, + SOUND_MAN2_BL, + SOUND_MAN2_BM, + SOUND_MAN2_BN, + SOUND_MAN2_CA, + SOUND_MAN2_DA, + SOUND_MAN2_DB, + SOUND_MAN2_DC, + SOUND_MAN2_DD, + SOUND_MAN2_EA, + SOUND_MAN2_EB, + SOUND_MAN2_EC, + SOUND_MAN2_EE, + SOUND_MAN2_EF, + SOUND_MAN2_EG, + SOUND_MAN2_EH, + SOUND_MAN2_EJ, + SOUND_MAN2_FA, + SOUND_MAN2_FB, + SOUND_MAN2_FC, + SOUND_MAN2_FD, + SOUND_MAN2_FE, + SOUND_MAN2_FF, + SOUND_MAN2_FG, + SOUND_MAN2_FK, + SOUND_MAN2_FL, + SOUND_MAN2_GA, + SOUND_MAN2_GB, + SOUND_MAN2_GC, + SOUND_MAN2_GD, + SOUND_MAN2_GE, + SOUND_MAN2_GF, + SOUND_MAN2_GG, + SOUND_MAN2_GH, + SOUND_MAN2_HA, + SOUND_MAN2_HB, + SOUND_MAN2_HC, + SOUND_MAN2_HD, + SOUND_MAN2_HE, + SOUND_MAN2_HF, + SOUND_MAN2_JA, + SOUND_MAN2_JC, + SOUND_MAN2_JD, + SOUND_MAN2_JE, + SOUND_MAN2_JF, + SOUND_MAN2_KA, + SOUND_MAN2_KB, + SOUND_MAN2_KC, + SOUND_MAN2_KD, + SOUND_MAN2_KE, + SOUND_MAN2_KF, + SOUND_MAN3_AA = 24200, + SOUND_MAN3_AB, + SOUND_MAN3_AC, + SOUND_MAN3_AD, + SOUND_MAN3_BA, + SOUND_MAN3_BB, + SOUND_MAN3_BC, + SOUND_MAN3_BD, + SOUND_MAN3_BE, + SOUND_MAN3_CA, + SOUND_MAN3_CB, + SOUND_MAN3_CC, + SOUND_MAN3_CD, + SOUND_MAN3_CE, + SOUND_MAN3_CF, + SOUND_MAN3_CG, + SOUND_MAN3_CH, + SOUND_MAN3_CI, + SOUND_MAN3_CJ, + SOUND_MAN3_CK, + SOUND_MAN5_AA = 24400, + SOUND_MAN5_AB, + SOUND_MAN5_AC, + SOUND_MAN5_BA, + SOUND_MAN5_BB, + SOUND_MAN5_BC, + SOUND_MAN5_BD, + SOUND_MAN5_BE, + SOUND_MAN5_BF, + SOUND_MAN5_BG, + SOUND_MAN5_BH, + SOUND_MAN5_BJ, + SOUND_MAN5_BK, + SOUND_MAN5_BL, + SOUND_MAN5_BM, + SOUND_MAN5_BN, + SOUND_MAN5_BO, + SOUND_MAN5_CA, + SOUND_MAN5_CB, + SOUND_MAN5_DA, + SOUND_MAN5_DB, + SOUND_MAN5_DC, + SOUND_MAN5_DD, + SOUND_MAN5_EA, + SOUND_MAN5_EB, + SOUND_MAN5_FA, + SOUND_MAN5_FB, + SOUND_MAN5_FC, + SOUND_MAN5_FD, + SOUND_MAN5_FE, + SOUND_MAN5_FF, + SOUND_MAN5_FG, + SOUND_MAN5_FH, + SOUND_MAN5_FJ, + SOUND_LOCK_CAR_DOORS = 24600, + SOUND_MBARB1A = 24800, + SOUND_MBARB1B, + SOUND_MBARB1C, + SOUND_MBARB1D, + SOUND_MBARB1E, + SOUND_MBARB1F, + SOUND_MBARB1G, + SOUND_MBARB1H, + SOUND_MBARB1J, + SOUND_MBARB1K, + SOUND_MBARB1L, + SOUND_MBARB1M, + SOUND_MBARB1N, + SOUND_MBARB1O, + SOUND_MBARB1P, + SOUND_MBARB1Q, + SOUND_MBARB1R, + SOUND_MBARB2A, + SOUND_MBARB2D, + SOUND_MBARB3A, + SOUND_MBARB3B, + SOUND_MBARB4A, + SOUND_MBARB4D, + SOUND_MBARB5A, + SOUND_MBARB5D, + SOUND_MBARB6A, + SOUND_MBARB6B, + SOUND_MBARB7D, + SOUND_MBARB8D, + SOUND_MBARB9D, + SOUND_MCAT01A = 25000, + SOUND_MCAT01B, + SOUND_MCAT01C, + SOUND_MCAT01D, + SOUND_MCAT01E, + SOUND_MCAT01F, + SOUND_MCAT01G, + SOUND_MCAT01H, + SOUND_MCAT02A, + SOUND_MCAT02B, + SOUND_MCAT02C, + SOUND_MCAT02D, + SOUND_MCAT02E, + SOUND_MCAT02F, + SOUND_MCAT02G, + SOUND_MCAT02H, + SOUND_MCAT03A, + SOUND_MCAT03B, + SOUND_MCAT04A, + SOUND_MCAT04B, + SOUND_MCAT04C, + SOUND_MCAT04D, + SOUND_MCAT04E, + SOUND_MCAT04F, + SOUND_MCAT05A, + SOUND_MCAT05B, + SOUND_MCAT05C, + SOUND_MCAT05D, + SOUND_MCAT05E, + SOUND_MCAT05F, + SOUND_MCAT05G, + SOUND_MCAT06A, + SOUND_MCAT06B, + SOUND_MCAT06C, + SOUND_MCAT06D, + SOUND_MCAT06E, + SOUND_MCAT06F, + SOUND_MCAT06G, + SOUND_MCAT06H, + SOUND_MCAT06J, + SOUND_MCAT06K, + SOUND_MCAT07A, + SOUND_MCAT07B, + SOUND_MCAT07C, + SOUND_MCAT07D, + SOUND_MCAT07E, + SOUND_MCAT07F, + SOUND_MCAT07G, + SOUND_MCES01A = 25200, + SOUND_MCES01B, + SOUND_MCES01C, + SOUND_MCES01D, + SOUND_MCES01E, + SOUND_MCES01F, + SOUND_MCES01G, + SOUND_MCES01H, + SOUND_MCES01K, + SOUND_MCES01L, + SOUND_MCES01M, + SOUND_MCES01N, + SOUND_MCES01O, + SOUND_MCES01P, + SOUND_MCES02A, + SOUND_MCES02B, + SOUND_MCES02C, + SOUND_MCES02D, + SOUND_MCES02E, + SOUND_MCES02F, + SOUND_MCES02G, + SOUND_MCES02H, + SOUND_MCES02K, + SOUND_MCES02L, + SOUND_MCES02M, + SOUND_MCES02N, + SOUND_MCES02O, + SOUND_MCES03A, + SOUND_MCES03B, + SOUND_MCES03C, + SOUND_MCES03D, + SOUND_MCES03E, + SOUND_MCES03F, + SOUND_MCES03G, + SOUND_MCES03H, + SOUND_MCES03J, + SOUND_MCES03K, + SOUND_MCES03L, + SOUND_MCES03M, + SOUND_MCES03N, + SOUND_MCES04A, + SOUND_MCES04B, + SOUND_MCES04C, + SOUND_MCES04D, + SOUND_MCES04E, + SOUND_MCES04F, + SOUND_MCES04G, + SOUND_MCES04H, + SOUND_MCES04J, + SOUND_MCES04L, + SOUND_MCES04M, + SOUND_MCES04N, + SOUND_MCES04O, + SOUND_MCES04P, + SOUND_MCES04Q, + SOUND_MCES04R, + SOUND_MCES05A, + SOUND_MCES05B, + SOUND_MCES05C, + SOUND_MCES05D, + SOUND_MCES05E, + SOUND_MCES05F, + SOUND_MCES05G, + SOUND_MCES05H, + SOUND_MCES05J, + SOUND_MCES05K, + SOUND_MCES05L, + SOUND_MCES05M, + SOUND_MCES05N, + SOUND_MCES05O, + SOUND_MCES05P, + SOUND_MCES05Q, + SOUND_MCES05R, + SOUND_MCES06A, + SOUND_MCES06B, + SOUND_MCES06C, + SOUND_MCES06D, + SOUND_MCES06E, + SOUND_MCES06F, + SOUND_MCES06G, + SOUND_MCES07A, + SOUND_MCES07B, + SOUND_MCES07C, + SOUND_MCES07D, + SOUND_MCES08, + SOUND_MCES08A, + SOUND_MCES08B, + SOUND_MCES08C, + SOUND_MCES08D, + SOUND_MCES08E, + SOUND_MCES09A, + SOUND_MCES09B, + SOUND_MCES09C, + SOUND_MCES09D, + SOUND_MCES09E, + SOUND_MCES09F, + SOUND_MCES09G, + SOUND_MCES09H, + SOUND_MCES09K, + SOUND_MCES09L, + SOUND_MCES09M, + SOUND_MCES09N, + SOUND_MCES09O, + SOUND_MCES09P, + SOUND_MCES10A, + SOUND_MCES10B, + SOUND_MCES10C, + SOUND_MCES10D, + SOUND_MCES10E, + SOUND_MCES10F, + SOUND_MCES10G, + SOUND_MCES10H, + SOUND_MCES10J, + SOUND_MCES10K, + SOUND_MCES11A, + SOUND_MCES11B, + SOUND_MCES11C, + SOUND_MCES11D, + SOUND_MCES11E, + SOUND_MCES11F, + SOUND_MDEN_1A = 25400, + SOUND_MDEN_1B, + SOUND_MDEN_1C, + SOUND_MDEN_1D, + SOUND_MDEN_1E, + SOUND_MDEN_1F, + SOUND_MDEN_1G, + SOUND_MDEN_1H, + SOUND_MDEN_1J, + SOUND_MDEN_1K, + SOUND_MDEN_1L, + SOUND_MDEN_2A, + SOUND_MDEN_2D, + SOUND_MDEN_3A, + SOUND_MDEN_3B, + SOUND_MDEN_4A, + SOUND_MDEN_4D, + SOUND_MDEN_5A, + SOUND_MDEN_5B, + SOUND_MDEN_6A, + SOUND_MDEN_6D, + SOUND_MDEN_7D, + SOUND_MDEN_8D, + SOUND_MDEN_9D, + SOUND_MEAT_TRACK_LOOP = 25600, + SOUND_FREEZER_CLOSE, + SOUND_FREEZER_OPEN, + SOUND_MEAT_TRACK_START, + SOUND_MEAT_TRACK_STOP, + SOUND_MECHANIC_ATTACH_CAR_BOMB = 25800, + SOUND_MECHANIC_SLIDE_OUT, + SOUND_MEC_B1 = 26000, + SOUND_MEC_B2, + SOUND_MEC_D1, + SOUND_MEC_D2, + SOUND_MEC_D3, + SOUND_MEC_D4, + SOUND_MEC_D5, + SOUND_MEC_HI, + SOUND_MEC_N, + SOUND_MEC_Y, + SOUND_MHELD7D = 26200, + SOUND_MHELD8D, + SOUND_MHELD9D, + SOUND_MHEL_1A, + SOUND_MHEL_1B, + SOUND_MHEL_1C, + SOUND_MHEL_1D, + SOUND_MHEL_1E, + SOUND_MHEL_1F, + SOUND_MHEL_1G, + SOUND_MHEL_1H, + SOUND_MHEL_1J, + SOUND_MHEL_1K, + SOUND_MHEL_1L, + SOUND_MHEL_2A, + SOUND_MHEL_2B, + SOUND_MHEL_3A, + SOUND_MHEL_3B, + SOUND_MHEL_4A, + SOUND_MHEL_4B, + SOUND_MHEL_5A, + SOUND_MHEL_5B, + SOUND_MHEL_6A, + SOUND_MHEL_6B, + SOUND_MHRZ01A = 26400, + SOUND_MHRZ01B, + SOUND_MHRZ01C, + SOUND_MHRZ01D, + SOUND_MHRZ01E, + SOUND_MHRZ01F, + SOUND_MHRZ01G, + SOUND_MHRZ01H, + SOUND_MHRZ01J, + SOUND_MHRZ01K, + SOUND_MHRZ01L, + SOUND_MHRZ01M, + SOUND_MHRZ01N, + SOUND_MJET_1A = 26600, + SOUND_MJET_1B, + SOUND_MJET_1C, + SOUND_MJET_1D, + SOUND_MJET_1E, + SOUND_MJET_1F, + SOUND_MJET_1G, + SOUND_MJET_1H, + SOUND_MJET_1J, + SOUND_MJET_1K, + SOUND_MJET_1L, + SOUND_MJET_1M, + SOUND_MJET_1N, + SOUND_MJET_1O, + SOUND_MJET_1P, + SOUND_MJET_2A, + SOUND_MJET_2B, + SOUND_MJET_2C, + SOUND_MJET_2D, + SOUND_MJET_2E, + SOUND_MJET_2F, + SOUND_MJET_2G, + SOUND_MJET_2H, + SOUND_MJET_2J, + SOUND_MJET_2K, + SOUND_MJET_2L, + SOUND_MJET_3A, + SOUND_MJET_3B, + SOUND_MJET_3C, + SOUND_MJET_3D, + SOUND_MJET_3E, + SOUND_MJET_3F, + SOUND_MJET_3G, + SOUND_MJET_3H, + SOUND_MJIZ01A = 26800, + SOUND_MJIZ01B, + SOUND_MJIZ01C, + SOUND_MJIZ01D, + SOUND_MJIZ01E, + SOUND_MJIZ01F, + SOUND_MJIZ01G, + SOUND_MJIZ01H, + SOUND_MJIZ02A, + SOUND_MJIZ02B, + SOUND_MJIZ02C, + SOUND_MJIZ02D, + SOUND_MKND01A = 27000, + SOUND_MKND01B, + SOUND_MKND01C, + SOUND_MKND01D, + SOUND_MKND01E, + SOUND_MKND01F, + SOUND_MKND01G, + SOUND_MKND01H, + SOUND_MKND01J, + SOUND_MKND02A, + SOUND_MKND02B, + SOUND_MKND02C, + SOUND_MKND02D, + SOUND_MKND02E, + SOUND_MKND02F, + SOUND_MKND02G, + SOUND_MKND02H, + SOUND_MKND02J, + SOUND_MKND02K, + SOUND_MKP01A = 27200, + SOUND_MKP01B, + SOUND_MKP01C, + SOUND_MKP01D, + SOUND_MKP01E, + SOUND_MKP01F, + SOUND_MLOC01B = 27400, + SOUND_MLOC01F, + SOUND_MLOC02A, + SOUND_MLOC02B, + SOUND_MLOC02C, + SOUND_MLOC02D, + SOUND_MLOC02E, + SOUND_MLOC02F, + SOUND_MLOC02G, + SOUND_MLOC02H, + SOUND_MLOC02J, + SOUND_MLOC02K, + SOUND_MLOC03A, + SOUND_MLOC03B, + SOUND_MLOC03C, + SOUND_MLOC03D, + SOUND_MLOC03E, + SOUND_MLOC03F, + SOUND_MLOC03H, + SOUND_MLOC04A, + SOUND_MLOC04B, + SOUND_MLOC04C, + SOUND_MLOC04D, + SOUND_MMICH1A = 27600, + SOUND_MMICH1B, + SOUND_MMICH1C, + SOUND_MMICH1D, + SOUND_MMICH1E, + SOUND_MMICH1F, + SOUND_MMICH1G, + SOUND_MMICH1H, + SOUND_MMICH1J, + SOUND_MMICH2A, + SOUND_MMICH2B, + SOUND_MMICH3A, + SOUND_MMICH3D, + SOUND_MMICH4A, + SOUND_MMICH4B, + SOUND_MMICH5A, + SOUND_MMICH5D, + SOUND_MMICH6A, + SOUND_MMICH6D, + SOUND_MMICH7D, + SOUND_MMICH8D, + SOUND_MMICH9D, + SOUND_MMIL10D = 27800, + SOUND_MMILL1A, + SOUND_MMILL1B, + SOUND_MMILL1C, + SOUND_MMILL1D, + SOUND_MMILL1E, + SOUND_MMILL1F, + SOUND_MMILL1G, + SOUND_MMILL1H, + SOUND_MMILL1J, + SOUND_MMILL1K, + SOUND_MMILL2A, + SOUND_MMILL2B, + SOUND_MMILL2C, + SOUND_MMILL2D, + SOUND_MMILL2E, + SOUND_MMILL2F, + SOUND_MMILL2G, + SOUND_MMILL2H, + SOUND_MMILL2J, + SOUND_MMILL2K, + SOUND_MMILL2L, + SOUND_MMILL3A, + SOUND_MMILL3B, + SOUND_MMILL4A, + SOUND_MMILL4D, + SOUND_MMILL5A, + SOUND_MMILL5D, + SOUND_MMILL6A, + SOUND_MMILL6B, + SOUND_MMILL7A, + SOUND_MMILL7D, + SOUND_MMILL8D, + SOUND_MMILL9D, + SOUND_REVERB_CAR_SCREECH = 28000, + SOUND_MPUL01B = 28200, + SOUND_MPUL01G, + SOUND_MPUL01H, + SOUND_MPUL01M, + SOUND_MPUL01O, + SOUND_MROS01B = 28400, + SOUND_MROS01D, + SOUND_MROS01E, + SOUND_MROS01F, + SOUND_MROS01H, + SOUND_MROS01L, + SOUND_MROS02A, + SOUND_MROS02B, + SOUND_MROS02C, + SOUND_MROS02D, + SOUND_MROS02E, + SOUND_MROS02F, + SOUND_MROS02G, + SOUND_MROS03A, + SOUND_MROS03B, + SOUND_MROS03C, + SOUND_MROS03D, + SOUND_MROS03E, + SOUND_MROS03F, + SOUND_MROS03G, + SOUND_MROS03H, + SOUND_MROS03J, + SOUND_MROS03K, + SOUND_MROS03L, + SOUND_MROS03N, + SOUND_MROS03O, + SOUND_MROS03P, + SOUND_MROS03Q, + SOUND_MSAL01A = 28600, + SOUND_MSAL01B, + SOUND_MSAL01C, + SOUND_MSAL01D, + SOUND_MSAL01E, + SOUND_MSAL01F, + SOUND_MSAL01G, + SOUND_MSAL01H, + SOUND_MSAL01J, + SOUND_MSAL01K, + SOUND_MSAL01M, + SOUND_MSAL01N, + SOUND_MSAL01O, + SOUND_MSAL02A, + SOUND_MSAL02B, + SOUND_MSAL02C, + SOUND_MSAL02D, + SOUND_MSAL02E, + SOUND_MSAL02F, + SOUND_MSAL02G, + SOUND_MSAL02H, + SOUND_MSAL02J, + SOUND_MSAL02K, + SOUND_MSMK01A = 28800, + SOUND_MSMK01B, + SOUND_MSMK01C, + SOUND_MSMK01D, + SOUND_MSMK01E, + SOUND_MSMK01F, + SOUND_MSMK01G, + SOUND_MSMK01H, + SOUND_MSMK01J, + SOUND_MSMK01K, + SOUND_MSMK01L, + SOUND_MSMK01M, + SOUND_MSWE01A = 29000, + SOUND_MSWE01B, + SOUND_MSWE01C, + SOUND_MSWE01D, + SOUND_MSWE01E, + SOUND_MSWE01F, + SOUND_MSWE01G, + SOUND_MSWE01H, + SOUND_MSWE01J, + SOUND_MSWE01K, + SOUND_MSWE01L, + SOUND_MSWE01M, + SOUND_MSWE01N, + SOUND_MSWE02A, + SOUND_MSWE02B, + SOUND_MSWE02C, + SOUND_MSWE02D, + SOUND_MSWE02E, + SOUND_MSWE02F, + SOUND_MSWE02G, + SOUND_MSWE02H, + SOUND_MSWE02J, + SOUND_MSWE02K, + SOUND_MSWE02L, + SOUND_MSWE03A, + SOUND_MSWE03B, + SOUND_MSWE03C, + SOUND_MSWE03D, + SOUND_MSWE03E, + SOUND_MSWE03F, + SOUND_MSWE03G, + SOUND_MSWE03H, + SOUND_MSWE03J, + SOUND_MSWE03K, + SOUND_MSWE04A, + SOUND_MSWE04B, + SOUND_MSWE04C, + SOUND_MSWE04D, + SOUND_MSWE04E, + SOUND_MSWE04F, + SOUND_MSWE04G, + SOUND_MSWE04H, + SOUND_MSWE05A, + SOUND_MSWE05B, + SOUND_MSWE05C, + SOUND_MSWE05D, + SOUND_MSWE05E, + SOUND_MSWE05F, + SOUND_MSWE05G, + SOUND_MSWE05H, + SOUND_MSWE05J, + SOUND_MSWE05K, + SOUND_MSWE06A, + SOUND_MSWE06B, + SOUND_MSWE06C, + SOUND_MSWE06D, + SOUND_MSWE06E, + SOUND_MSWE06F, + SOUND_MSWE06G, + SOUND_MSWE06H, + SOUND_MSWE06J, + SOUND_MSWE06K, + SOUND_MSWE06L, + SOUND_MSWE06M, + SOUND_MSWE06N, + SOUND_MSWE06O, + SOUND_MSWE07A, + SOUND_MSWE07B, + SOUND_MSWE07C, + SOUND_MSWE07D, + SOUND_MSWE07E, + SOUND_MSWE07F, + SOUND_MSWE07G, + SOUND_MSWE07H, + SOUND_MSWE07J, + SOUND_MSWE07K, + SOUND_MSWE08A, + SOUND_MSWE08B, + SOUND_MSWE08C, + SOUND_MSWE08D, + SOUND_MSWE08E, + SOUND_MSWE08F, + SOUND_MSWE08G, + SOUND_MSWE08H, + SOUND_MSWE08J, + SOUND_MSWE08K, + SOUND_MSWE08L, + SOUND_MSWE08M, + SOUND_MSWE08N, + SOUND_MSWE09A, + SOUND_MSWE09B, + SOUND_MSWE09C, + SOUND_MSWE09E, + SOUND_MSWE09F, + SOUND_MSWE09G, + SOUND_MSWE09H, + SOUND_MSWE10A, + SOUND_MSWE10B, + SOUND_MSWE10C, + SOUND_MSWE10D, + SOUND_MSWE10E, + SOUND_MSWE10F, + SOUND_MSWE10G, + SOUND_MSWE10H, + SOUND_MSWE10J, + SOUND_MSWE10K, + SOUND_MSWE10L, + SOUND_MSWE10N, + SOUND_MSWE11A, + SOUND_MSWE11B, + SOUND_MSWE11C, + SOUND_MSWE11D, + SOUND_MSWE11E, + SOUND_MSWE11F, + SOUND_MSWE11G, + SOUND_MSWE11H, + SOUND_MSWE11J, + SOUND_MSWE12A, + SOUND_MSWE12B, + SOUND_MSWE12C, + SOUND_MSWE12D, + SOUND_MSWE12E, + SOUND_MSWE12F, + SOUND_MSWE12G, + SOUND_MSWE12H, + SOUND_MSWE12J, + SOUND_MSWE12K, + SOUND_MSWE12L, + SOUND_MSWE12M, + SOUND_MSWE12N, + SOUND_MSWE12O, + SOUND_MSWE12P, + SOUND_MSWE12Q, + SOUND_MSWE12R, + SOUND_MSWE12S, + SOUND_MSWE12T, + SOUND_MSWE12U, + SOUND_MSWE13A, + SOUND_MSWE13B, + SOUND_MSWE13C, + SOUND_MSWE13D, + SOUND_MSWE13E, + SOUND_MSWE13F, + SOUND_MSWE13G, + SOUND_MSWE14A, + SOUND_MSWE14B, + SOUND_MSWE14C, + SOUND_MSWE14D, + SOUND_MSWE14E, + SOUND_MSWE14F, + SOUND_MSWE14G, + SOUND_MSWE14H, + SOUND_MSWE14J, + SOUND_MSWE14K, + SOUND_MSWE14L, + SOUND_MSWE14N, + SOUND_MTEN01A = 29200, + SOUND_MTEN01B, + SOUND_MTEN01C, + SOUND_MTEN01D, + SOUND_MTEN01E, + SOUND_MTEN01F, + SOUND_MTEN01G, + SOUND_MTEN01H, + SOUND_MTEN01J, + SOUND_MTEN02A, + SOUND_MTEN02B, + SOUND_MTEN02C, + SOUND_MTEN02D, + SOUND_MTEN02E, + SOUND_MTEN02F, + SOUND_MTEN03B, + SOUND_MTEN03D, + SOUND_MTEN03M, + SOUND_MTG01A = 29400, + SOUND_MTG01B, + SOUND_MTG01C, + SOUND_MTG01D, + SOUND_MTG01E, + SOUND_MTG01F, + SOUND_MTG01G, + SOUND_MTG01H, + SOUND_MTG02A, + SOUND_MTG02B, + SOUND_MTG02C, + SOUND_MTG02D, + SOUND_MTG02E, + SOUND_MTG02F, + SOUND_MTOR01A = 29600, + SOUND_MTOR01B, + SOUND_MTOR01C, + SOUND_MTOR01D, + SOUND_MTOR01E, + SOUND_MTOR01F, + SOUND_MTOR01G, + SOUND_MTOR01H, + SOUND_MTOR01J, + SOUND_MTOR01K, + SOUND_MTOR01L, + SOUND_MTOR02A, + SOUND_MTOR02B, + SOUND_MTOR02C, + SOUND_MTOR02D, + SOUND_MTOR02E, + SOUND_MTOR03A, + SOUND_MTOR03B, + SOUND_MTOR04A, + SOUND_MTOR04B, + SOUND_MTOR04C, + SOUND_MTOR04D, + SOUND_MTOR04E, + SOUND_MTOR04F, + SOUND_MTOR04G, + SOUND_MTOR04H, + SOUND_MTOR04J, + SOUND_MTOR04K, + SOUND_MTOR04L, + SOUND_MTOR04M, + SOUND_MTOR05A, + SOUND_MTOR05B, + SOUND_MTOR05C, + SOUND_MTOR05D, + SOUND_MTOR05E, + SOUND_MTOR05F, + SOUND_MTOR05G, + SOUND_MTOR05H, + SOUND_MTOR05J, + SOUND_MTOR06A, + SOUND_MTOR06B, + SOUND_MTOR06C, + SOUND_MTOR06D, + SOUND_MTOR06E, + SOUND_MTOR06F, + SOUND_MTOR06G, + SOUND_MTOR06H, + SOUND_MTOR06J, + SOUND_MTOR06K, + SOUND_MTOR06L, + SOUND_MTOR06M, + SOUND_MTOR06N, + SOUND_MTOR07A, + SOUND_MTOR07B, + SOUND_MTOR07C, + SOUND_MTOR07D, + SOUND_MTOR07E, + SOUND_MTOR07F, + SOUND_MTOR07G, + SOUND_MTOR07H, + SOUND_MTOR07J, + SOUND_MTOR07K, + SOUND_MTOR07L, + SOUND_MTOR07M, + SOUND_MTOR07N, + SOUND_MTOR07O, + SOUND_MTRU01A = 29800, + SOUND_MTRU01B, + SOUND_MTRU01C, + SOUND_MTRU01D, + SOUND_MTRU01E, + SOUND_MTRU01F, + SOUND_MTRU01G, + SOUND_MTRU01H, + SOUND_MTRU01J, + SOUND_MTRU01K, + SOUND_MTRU01L, + SOUND_MTRU01M, + SOUND_MTRU01N, + SOUND_MTRU01O, + SOUND_MTRU01P, + SOUND_MTRU02A, + SOUND_MTRU02B, + SOUND_MTRU02C, + SOUND_MTRU02D, + SOUND_MTRU02E, + SOUND_MTRU02F, + SOUND_MTRU03A, + SOUND_MTRU03B, + SOUND_MTRU03C, + SOUND_MTRU03D, + SOUND_MTRU03E, + SOUND_MWUZ00A = 30000, + SOUND_MWUZ00B, + SOUND_MWUZ00C, + SOUND_MWUZ00D, + SOUND_MWUZ00E, + SOUND_MWUZ00F, + SOUND_MWUZ00G, + SOUND_MWUZ00H, + SOUND_MWUZ00J, + SOUND_MWUZ01A, + SOUND_MWUZ01B, + SOUND_MWUZ01C, + SOUND_MWUZ01D, + SOUND_MWUZ01E, + SOUND_MWUZ01F, + SOUND_MWUZ01G, + SOUND_MWUZ01H, + SOUND_MWUZ01J, + SOUND_MWUZ01K, + SOUND_MWUZ02A, + SOUND_MWUZ02B, + SOUND_MWUZ02C, + SOUND_MWUZ02D, + SOUND_MWUZ02E, + SOUND_MWUZ02F, + SOUND_MWUZ02G, + SOUND_MWUZ02H, + SOUND_MWUZ02J, + SOUND_MWUZ02K, + SOUND_MWUZ03A, + SOUND_MWUZ03B, + SOUND_MWUZ03C, + SOUND_MWUZ03D, + SOUND_MWUZ03E, + SOUND_MWUZ03F, + SOUND_MWUZ03G, + SOUND_MWUZ03H, + SOUND_MWUZ03J, + SOUND_MWUZ03K, + SOUND_MWUZ03L, + SOUND_MWUZ04A, + SOUND_MWUZ04B, + SOUND_MWUZ04C, + SOUND_MWUZ04D, + SOUND_MWUZ04E, + SOUND_MWUZ04F, + SOUND_MWUZ04G, + SOUND_MWUZ04H, + SOUND_MWUZ05A, + SOUND_MWUZ05B, + SOUND_MWUZ05C, + SOUND_MWUZ05D, + SOUND_MWUZ05E, + SOUND_MWUZ05F, + SOUND_MWUZ05G, + SOUND_MWUZ05H, + SOUND_MWUZ05J, + SOUND_MWUZ06A, + SOUND_MWUZ06B, + SOUND_MWUZ06C, + SOUND_MWUZ06D, + SOUND_MWUZ06E, + SOUND_MWUZ06F, + SOUND_MWUZ06G, + SOUND_MWUZ06H, + SOUND_MWUZ06J, + SOUND_MWUZ06K, + SOUND_MWUZ06L, + SOUND_MWUZ06M, + SOUND_MWUZ06N, + SOUND_MWUZ07A, + SOUND_MWUZ07B, + SOUND_MWUZ07C, + SOUND_MWUZ07D, + SOUND_MWUZ07E, + SOUND_MWUZ08B, + SOUND_MWUZ08C, + SOUND_MWUZ08D, + SOUND_MWUZ08F, + SOUND_MWUZ09E, + SOUND_MWUZ09F, + SOUND_MWUZ09H, + SOUND_MWUZ09J, + SOUND_MZAHN1A = 30200, + SOUND_MZAHN1B, + SOUND_MZAHN1C, + SOUND_MZAHN1D, + SOUND_MZAHN1E, + SOUND_MZAHN1F, + SOUND_MZAHN1G, + SOUND_MZAHN1H, + SOUND_MZAHN1J, + SOUND_MZAHN2A, + SOUND_MZAHN2D, + SOUND_MZAHN3A, + SOUND_MZAHN3B, + SOUND_MZAHN4A, + SOUND_MZAHN4D, + SOUND_MZAHN5A, + SOUND_MZAHN5B, + SOUND_MZAHN6A, + SOUND_MZAHN6D, + SOUND_MZAHN7D, + SOUND_MZAHN8D, + SOUND_MZAHN9D, + SOUND_MZER01A = 30400, + SOUND_MZER01B, + SOUND_MZER01C, + SOUND_MZER01D, + SOUND_MZER01E, + SOUND_MZER01F, + SOUND_MZER01G, + SOUND_MZER02A, + SOUND_MZER02B, + SOUND_MZER02C, + SOUND_MZER02D, + SOUND_MZER02E, + SOUND_MZER02F, + SOUND_MZER02G, + SOUND_MZER02H, + SOUND_MZER02J, + SOUND_MZER02K, + SOUND_RADAR_LEVEL_WARNING = 30600, + SOUND_NULL_1A = 30800, + SOUND_NULL_1B, + SOUND_NULL_2A, + SOUND_NULL_2B, + SOUND_OGLOC_DOORBELL = 31000, + SOUND_OGLOC_WINDOW_RATTLE_BANG, + SOUND_BET_ZERO = 31200, + SOUND_INCREASE_BET, + SOUND_LOSE, + SOUND_NO_CASH, + SOUND_PLACEBET, + SOUND_WIN, + SOUND_PIMP_CUSTOMER_SEX = 31400, + SOUND_POOL_B1 = 31600, + SOUND_POOL_B2, + SOUND_POOL_B3, + SOUND_POOL_B4, + SOUND_POOL_B5, + SOUND_POOL_B6, + SOUND_POOL_BALL_HIT_BALL_1 = 31800, + SOUND_POOL_BALL_HIT_BALL_2, + SOUND_POOL_BALL_HIT_BALL_3, + SOUND_POOL_BALL_POT_1, + SOUND_POOL_BALL_POT_2, + SOUND_POOL_BALL_POT_3, + SOUND_POOL_BREAK, + SOUND_POOL_CHALK_CUE, + SOUND_POOL_HIT_CUSHION_1, + SOUND_POOL_HIT_CUSHION_2, + SOUND_POOL_HIT_WHITE, + SOUND_FIT_TYRE = 32000, + SOUND_CJ_EAT = 32200, + SOUND_CJ_PUKE, + SOUND_CAR_SMASH_SIGN = 32400, + SOUND_CEILING_VENT_OPEN, + SOUND_HELI_SLASH_PED, + SOUND_TRAILER_HOOKUP = 32600, + SOUND_ROT1_AA = 32800, + SOUND_ROT1_AB, + SOUND_ROT1_BA, + SOUND_ROT1_BB, + SOUND_ROT1_BC, + SOUND_ROT1_BD, + SOUND_ROT1_BE, + SOUND_ROT1_DA, + SOUND_ROT1_DB, + SOUND_ROT1_DC, + SOUND_ROT1_EA, + SOUND_ROT1_EB, + SOUND_ROT1_EC, + SOUND_ROT1_ED, + SOUND_ROT1_EE, + SOUND_ROT1_EF, + SOUND_ROT1_EG, + SOUND_ROT1_EH, + SOUND_ROT1_EJ, + SOUND_ROT1_EK, + SOUND_ROT1_EL, + SOUND_ROT1_EM, + SOUND_ROT1_EN, + SOUND_ROT1_FA, + SOUND_ROT1_FB, + SOUND_ROT1_FC, + SOUND_ROT1_FD, + SOUND_ROT1_FE, + SOUND_ROT1_FF, + SOUND_ROT1_FG, + SOUND_ROT1_FH, + SOUND_ROT1_GA, + SOUND_ROT1_GB, + SOUND_ROT1_GC, + SOUND_ROT1_GD, + SOUND_ROT1_GE, + SOUND_ROT1_GG, + SOUND_ROT1_GH, + SOUND_ROT1_GJ, + SOUND_ROT1_GK, + SOUND_ROT1_GL, + SOUND_ROT1_GM, + SOUND_ROT1_HA, + SOUND_ROT1_HB, + SOUND_ROT1_HC, + SOUND_ROT1_HD, + SOUND_ROT1_HE, + SOUND_ROT1_HF, + SOUND_ROT2_AA = 33000, + SOUND_ROT2_AB, + SOUND_ROT2_AD, + SOUND_ROT2_AE, + SOUND_ROT2_BA, + SOUND_ROT2_BB, + SOUND_ROT2_BC, + SOUND_ROT2_BD, + SOUND_ROT2_CA, + SOUND_ROT2_CB, + SOUND_ROT2_CC, + SOUND_ROT2_CD, + SOUND_ROT2_CE, + SOUND_ROT2_CF, + SOUND_ROT2_CG, + SOUND_ROT2_CH, + SOUND_ROT2_CJ, + SOUND_ROT2_CK, + SOUND_ROT2_CL, + SOUND_ROT2_CM, + SOUND_ROT2_CN, + SOUND_ROT2_CO, + SOUND_ROT2_CP, + SOUND_ROT2_CQ, + SOUND_ROT2_DA, + SOUND_ROT2_DB, + SOUND_ROT2_DC, + SOUND_ROT2_DD, + SOUND_ROT2_DE, + SOUND_ROT2_DF, + SOUND_ROT2_DH, + SOUND_ROT2_DJ, + SOUND_ROT2_DK, + SOUND_ROT2_DL, + SOUND_ROT2_DM, + SOUND_ROT2_EA, + SOUND_ROT2_EB, + SOUND_ROT2_EC, + SOUND_ROT2_ED, + SOUND_ROT2_EE, + SOUND_ROT2_EF, + SOUND_ROT2_EG, + SOUND_ROT2_EH, + SOUND_ROT2_EJ, + SOUND_ROT2_EK, + SOUND_ROT2_EL, + SOUND_ROT2_EM, + SOUND_ROT2_EN, + SOUND_ROT2_EO, + SOUND_ROT2_EP, + SOUND_ROT2_EQ, + SOUND_ROT2_ER, + SOUND_ROT2_ES, + SOUND_ROT2_ET, + SOUND_ROT2_EU, + SOUND_ROT2_EV, + SOUND_ROT2_EW, + SOUND_ROT2_EX, + SOUND_ROT2_EY, + SOUND_ROT2_FA, + SOUND_ROT2_FB, + SOUND_ROT2_FC, + SOUND_ROT2_FD, + SOUND_ROT2_FE, + SOUND_ROT2_FG, + SOUND_ROT2_FH, + SOUND_ROT2_GA, + SOUND_ROT2_GB, + SOUND_ROT2_GC, + SOUND_ROT2_GD, + SOUND_ROT2_HA, + SOUND_ROT2_HB, + SOUND_ROT2_HC, + SOUND_ROT2_JA, + SOUND_ROT2_JB, + SOUND_ROT2_KA, + SOUND_ROT2_KB, + SOUND_ROT2_KC, + SOUND_ROT2_LA, + SOUND_ROT2_LB, + SOUND_ROT2_LC, + SOUND_ROT2_MA, + SOUND_ROT2_MB, + SOUND_ROT2_MC, + SOUND_ROT2_MD, + SOUND_ROT2_ME, + SOUND_ROT2_MF, + SOUND_ROT2_MG, + SOUND_ROT2_MH, + SOUND_ROT4_AA = 33200, + SOUND_ROT4_AB, + SOUND_ROT4_AC, + SOUND_ROT4_BA, + SOUND_ROT4_BB, + SOUND_ROT4_BC, + SOUND_ROT4_BD, + SOUND_ROT4_BE, + SOUND_ROT4_BF, + SOUND_ROT4_BG, + SOUND_ROT4_BH, + SOUND_ROT4_BJ, + SOUND_ROT4_CA, + SOUND_ROT4_CB, + SOUND_ROT4_CC, + SOUND_ROT4_DA, + SOUND_ROT4_DB, + SOUND_ROT4_EA, + SOUND_ROT4_EB, + SOUND_ROT4_EC, + SOUND_ROT4_ED, + SOUND_ROT4_FA, + SOUND_ROT4_FB, + SOUND_ROT4_FC, + SOUND_ROT4_FD, + SOUND_ROT4_GA, + SOUND_ROT4_GB, + SOUND_ROT4_HA, + SOUND_ROT4_HB, + SOUND_ROT4_HC, + SOUND_ROT4_JB, + SOUND_ROT4_JC, + SOUND_ROT4_JD, + SOUND_ROT4_KA, + SOUND_ROT4_KB, + SOUND_ROT4_KC, + SOUND_ROT4_KD, + SOUND_ROT4_KE, + SOUND_ROT4_KF, + SOUND_ROT4_KG, + SOUND_ROT4_KH, + SOUND_ROT4_KJ, + SOUND_ROT4_LA, + SOUND_ROT4_LB, + SOUND_ROT4_MA, + SOUND_ROT4_MB, + SOUND_ROT4_MC, + SOUND_ROT4_MD, + SOUND_ROT4_ME, + SOUND_ROT4_NA, + SOUND_ROT4_NB, + SOUND_ROT4_NC, + SOUND_ROT4_ND, + SOUND_ROT4_NE, + SOUND_ROT4_NF, + SOUND_ROT4_NG, + SOUND_ROT4_NH, + SOUND_ROT4_NJ, + SOUND_ROT4_NK, + SOUND_ROT4_NL, + SOUND_ROT4_NM, + SOUND_ROT4_NN, + SOUND_ROT4_NO, + SOUND_ROT4_NP, + SOUND_ROT4_NQ, + SOUND_ROT4_NR, + SOUND_ROT4_NS, + SOUND_ROT4_NT, + SOUND_ROT4_NU, + SOUND_ROT4_OA, + SOUND_ROT4_OD, + SOUND_ROT4_PA, + SOUND_ROT4_PB, + SOUND_ROT4_PC, + SOUND_ROT4_QA, + SOUND_ROT4_QB, + SOUND_ROT4_QC, + SOUND_ROT4_QD, + SOUND_ROT4_QE, + SOUND_ROT4_RA, + SOUND_ROT4_RB, + SOUND_ROT4_RC, + SOUND_ROT4_RD, + SOUND_ROT4_RE, + SOUND_ROT4_SA, + SOUND_ROT4_SB, + SOUND_ROT4_TA, + SOUND_ROT4_TB, + SOUND_ROT4_TC, + SOUND_ROT4_TD, + SOUND_ROT4_TE, + SOUND_ROT4_TF, + SOUND_ROT4_TG, + SOUND_ROT4_TH, + SOUND_ROT4_TJ, + SOUND_ROT4_TK, + SOUND_ROT4_TL, + SOUND_ROT4_TM, + SOUND_ROT4_UA, + SOUND_ROT4_UB, + SOUND_ROT4_UC, + SOUND_ROT4_UD, + SOUND_ROT4_ZA, + SOUND_ROT4_ZB, + SOUND_ROT4_ZC, + SOUND_ROULETTE_SPIN = 33400, + SOUND_ROULETTE_BALL_BOUNCE1, + SOUND_ROULETTE_BALL_BOUNCE2, + SOUND_ROULETTE_BALL_BOUNCE3, + SOUND_RYD1_AA = 33600, + SOUND_RYD1_AB, + SOUND_RYD1_AC, + SOUND_RYD1_AD, + SOUND_RYD1_AE, + SOUND_RYD1_AF, + SOUND_RYD1_AG, + SOUND_RYD1_AH, + SOUND_RYD1_AJ, + SOUND_RYD1_BA, + SOUND_RYD1_BB, + SOUND_RYD1_BC, + SOUND_RYD1_BD, + SOUND_RYD1_BE, + SOUND_RYD1_BF, + SOUND_RYD1_CA, + SOUND_RYD1_CB, + SOUND_RYD1_CC, + SOUND_RYD1_CD, + SOUND_RYD1_CE, + SOUND_RYD1_CF, + SOUND_RYD1_DB, + SOUND_RYD1_DC, + SOUND_RYD1_DD, + SOUND_RYD1_DE, + SOUND_RYD1_DF, + SOUND_RYD1_DG, + SOUND_RYD1_DH, + SOUND_RYD1_DJ, + SOUND_RYD1_DK, + SOUND_RYD1_DL, + SOUND_RYD1_EA, + SOUND_RYD1_EB, + SOUND_RYD1_EC, + SOUND_RYD1_ED, + SOUND_RYD1_FA, + SOUND_RYD1_FB, + SOUND_RYD1_FC, + SOUND_RYD1_GA, + SOUND_RYD1_GB, + SOUND_RYD1_GC, + SOUND_RYD1_GD, + SOUND_RYD1_GE, + SOUND_RYD1_GF, + SOUND_RYD1_GG, + SOUND_RYD1_GH, + SOUND_RYD1_GJ, + SOUND_RYD1_GK, + SOUND_RYD1_GL, + SOUND_RYD1_HA, + SOUND_RYD1_HB, + SOUND_RYD1_JA, + SOUND_RYD1_JB, + SOUND_RYD1_KA, + SOUND_RYD1_KB, + SOUND_RYD1_KC, + SOUND_RYD1_KD, + SOUND_RYD1_KE, + SOUND_RYD1_KF, + SOUND_RYD1_KG, + SOUND_RYD1_KH, + SOUND_RYD1_LA, + SOUND_RYD1_LB, + SOUND_RYD1_LC, + SOUND_RYD1_ZA, + SOUND_RYD1_ZB, + SOUND_RYD1_ZC, + SOUND_RYD1_ZD, + SOUND_RYD1_ZE, + SOUND_RYD1_ZF, + SOUND_RYD1_ZG, + SOUND_RYD1_ZH, + SOUND_RYD1_ZJ, + SOUND_RYD1_ZK, + SOUND_RYD1_ZL, + SOUND_RYD1_ZM, + SOUND_RYD1_ZN, + SOUND_RYD2_AA = 33800, + SOUND_RYD2_AB, + SOUND_RYD2_BA, + SOUND_RYD2_BB, + SOUND_RYD2_BC, + SOUND_RYD2_CA, + SOUND_RYD2_CB, + SOUND_RYD2_CC, + SOUND_RYD2_CD, + SOUND_RYD2_CE, + SOUND_RYD2_CF, + SOUND_RYD2_CG, + SOUND_RYD2_CH, + SOUND_RYD2_CJ, + SOUND_RYD2_DA, + SOUND_RYD2_DB, + SOUND_RYD2_DC, + SOUND_RYD2_DD, + SOUND_RYD2_DE, + SOUND_RYD2_DF, + SOUND_RYD2_EA, + SOUND_RYD2_EB, + SOUND_RYD2_FA, + SOUND_RYD2_GA, + SOUND_RYD2_GB, + SOUND_RYD2_HA, + SOUND_RYD2_HB, + SOUND_RYD2_JA, + SOUND_RYD2_JB, + SOUND_RYD2_JC, + SOUND_RYD2_KA, + SOUND_RYD2_KB, + SOUND_RYD2_KC, + SOUND_RYD2_LA, + SOUND_RYD2_LB, + SOUND_RYD2_LC, + SOUND_RYD2_LD, + SOUND_RYD2_LE, + SOUND_RYD2_LF, + SOUND_RYD2_LG, + SOUND_RYD2_LH, + SOUND_RYD2_LJ, + SOUND_RYD2_MA, + SOUND_RYD2_MB, + SOUND_RYD2_MC, + SOUND_RYD2_MD, + SOUND_RYD2_ME, + SOUND_RYD2_MF, + SOUND_RYD2_NA, + SOUND_RYD2_NB, + SOUND_RYD2_NC, + SOUND_RYD2_ND, + SOUND_RYD2_OA, + SOUND_RYD2_OB, + SOUND_RYD2_PA, + SOUND_RYD2_PB, + SOUND_RYD2_PC, + SOUND_RYD2_PD, + SOUND_RYD2_PE, + SOUND_RYD2_PF, + SOUND_RYD2_PG, + SOUND_RYD2_QA, + SOUND_RYD2_QB, + SOUND_RYD2_QC, + SOUND_RYD2_RA, + SOUND_RYD2_RB, + SOUND_RYD2_SA, + SOUND_RYD2_SB, + SOUND_RYD2_SC, + SOUND_RYD2_SD, + SOUND_RYD2_SE, + SOUND_RYD2_SF, + SOUND_RYD2_SG, + SOUND_RYD2_SH, + SOUND_RYD2_SJ, + SOUND_RYD2_SK, + SOUND_RYD2_TA, + SOUND_RYD2_TB, + SOUND_RYD2_TC, + SOUND_RYD2_TD, + SOUND_RYD2_UA, + SOUND_RYD2_UB, + SOUND_RYD2_UC, + SOUND_RYD2_VA, + SOUND_RYD2_VB, + SOUND_RYD2_VC, + SOUND_RYD2_VD, + SOUND_RYD2_VE, + SOUND_RYD2_VF, + SOUND_RYD2_VG, + SOUND_RYD3_AA = 34000, + SOUND_RYD3_AB, + SOUND_RYD3_AC, + SOUND_RYD3_AD, + SOUND_RYD3_AE, + SOUND_RYD3_BA, + SOUND_RYD3_BB, + SOUND_RYD3_BC, + SOUND_RYD3_BD, + SOUND_RYD3_BE, + SOUND_RYD3_BF, + SOUND_RYD3_BG, + SOUND_RYD3_BH, + SOUND_RYD3_BJ, + SOUND_RYD3_CA, + SOUND_RYD3_CB, + SOUND_RYD3_CC, + SOUND_RYD3_CD, + SOUND_RYD3_DA, + SOUND_RYD3_DB, + SOUND_RYD3_DC, + SOUND_RYD3_EA, + SOUND_RYD3_FA, + SOUND_RYD3_FB, + SOUND_RYD3_GA, + SOUND_RYD3_GB, + SOUND_RYD3_GC, + SOUND_RYD3_HA, + SOUND_RYD3_HB, + SOUND_RYD3_HC, + SOUND_RYD3_HD, + SOUND_RYD3_HE, + SOUND_RYD3_HF, + SOUND_RYD3_HG, + SOUND_RYD3_HH, + SOUND_RYD3_HJ, + SOUND_RYD3_HK, + SOUND_RYD3_HL, + SOUND_RYD3_HM, + SOUND_RYD3_HN, + SOUND_RYD3_JA, + SOUND_RYD3_JB, + SOUND_RYD3_JC, + SOUND_RYD3_JD, + SOUND_RYD3_JE, + SOUND_RYD3_JF, + SOUND_RYD3_JG, + SOUND_RYD3_KA, + SOUND_RYD3_KB, + SOUND_RYD3_LA, + SOUND_RYD3_LB, + SOUND_RYD3_LC, + SOUND_RYD3_LD, + SOUND_RYD3_LE, + SOUND_RYD3_LF, + SOUND_RYD3_LG, + SOUND_RYD3_LH, + SOUND_RYD3_MA, + SOUND_RYD3_MB, + SOUND_RYD3_MC, + SOUND_RYD3_MD, + SOUND_RYD3_ME, + SOUND_RYD3_NA, + SOUND_RYD3_NB, + SOUND_RYD3_NC, + SOUND_RYD3_OA, + SOUND_RYD3_OB, + SOUND_RYD3_OC, + SOUND_RYDX_AA = 34200, + SOUND_RYDX_AB, + SOUND_RYDX_AC, + SOUND_RYDX_AD, + SOUND_RYDX_AE, + SOUND_RYDX_AF, + SOUND_RYDX_AG, + SOUND_RYDX_AH, + SOUND_RYDX_AI, + SOUND_RYDX_AJ, + SOUND_RYDX_AK, + SOUND_RYDX_AL, + SOUND_RYDX_AM, + SOUND_RYDX_AN, + SOUND_RYDX_AO, + SOUND_RYDX_AP, + SOUND_RYDX_AQ, + SOUND_RYDX_AR, + SOUND_RYDX_AS, + SOUND_RYDX_AT, + SOUND_RYDX_AU, + SOUND_RYDX_BA, + SOUND_RYDX_BB, + SOUND_RYDX_BC, + SOUND_RYDX_BD, + SOUND_RYDX_BE, + SOUND_RYDX_BF, + SOUND_RYDX_BG, + SOUND_RYDX_BH, + SOUND_RYDX_BI, + SOUND_RYDX_BJ, + SOUND_RYDX_BK, + SOUND_RYDX_BL, + SOUND_RYDX_BM, + SOUND_RYDX_BN, + SOUND_RYDX_BO, + SOUND_RYDX_BP, + SOUND_RYDX_BQ, + SOUND_RYDX_BR, + SOUND_RYDX_BS, + SOUND_RYDX_CA, + SOUND_RYDX_CB, + SOUND_RYDX_CC, + SOUND_RYDX_CD, + SOUND_RYDX_CE, + SOUND_RYDX_CF, + SOUND_RYDX_CG, + SOUND_RYDX_CH, + SOUND_RYDX_CI, + SOUND_RYDX_CJ, + SOUND_RYDX_CK, + SOUND_RYDX_CL, + SOUND_RYDX_CM, + SOUND_RYDX_CN, + SOUND_RYDX_CO, + SOUND_RYDX_CP, + SOUND_RYDX_CQ, + SOUND_RYDX_CR, + SOUND_RYDX_CS, + SOUND_RYDX_CT, + SOUND_RYDX_DA, + SOUND_RYDX_DB, + SOUND_RYDX_DC, + SOUND_RYDX_DD, + SOUND_RYDX_DE, + SOUND_RYDX_DF, + SOUND_RYDX_DG, + SOUND_RYDX_DH, + SOUND_RYDX_DI, + SOUND_RYDX_DJ, + SOUND_RYDX_DK, + SOUND_RYDX_DL, + SOUND_RYDX_DM, + SOUND_RYDX_DN, + SOUND_SCR1_AA = 34400, + SOUND_SCR1_AB, + SOUND_SCR1_AC, + SOUND_SCR1_AD, + SOUND_SCR1_AE, + SOUND_SCR1_AF, + SOUND_SCR1_AG, + SOUND_SCR1_AH, + SOUND_SCR1_AJ, + SOUND_SCR1_AK, + SOUND_SCR1_AL, + SOUND_SCR1_AM, + SOUND_SCR1_BA, + SOUND_SCR1_BB, + SOUND_SCR1_BC, + SOUND_SCR1_BD, + SOUND_SHOOTING_RANGE_TARGET_MOVE_LOOP = 34600, + SOUND_SHOOTING_RANGE_TARGET_DROP, + SOUND_SHOOTING_RANGE_TARGET_SHATTER_1, + SOUND_SHOOTING_RANGE_TARGET_SHATTER_2, + SOUND_SHOOTING_RANGE_TARGET_SHATTER_3, + SOUND_SHOOTING_RANGE_TARGET_SHATTER_4, + SOUND_SHOOTING_RANGE_TARGET_SHATTER_5, + SOUND_SHRK10A = 34800, + SOUND_SHRK10B, + SOUND_SHRK11A, + SOUND_SHRK11B, + SOUND_SHRK12A, + SOUND_SHRK12B, + SOUND_SHRK13A, + SOUND_SHRK13B, + SOUND_SHRK14A, + SOUND_SHRK14B, + SOUND_SHRK15A, + SOUND_SHRK15B, + SOUND_SHRK16A, + SOUND_SHRK16B, + SOUND_SHRK_1A, + SOUND_SHRK_1B, + SOUND_SHRK_2A, + SOUND_SHRK_2B, + SOUND_SHRK_3A, + SOUND_SHRK_3B, + SOUND_SHRK_4A, + SOUND_SHRK_4B, + SOUND_SHRK_5A, + SOUND_SHRK_5B, + SOUND_SHRK_6A, + SOUND_SHRK_6B, + SOUND_SHRK_7A, + SOUND_SHRK_7B, + SOUND_SHRK_8A, + SOUND_SHRK_8B, + SOUND_SHRK_9A, + SOUND_SHRK_9B, + SOUND_SMO1_AA = 35000, + SOUND_SMO1_AC, + SOUND_SMO1_AD, + SOUND_SMO1_AE, + SOUND_SMO1_AF, + SOUND_SMO1_AG, + SOUND_SMO1_AH, + SOUND_SMO1_AJ, + SOUND_SMO1_BA, + SOUND_SMO1_BB, + SOUND_SMO1_BC, + SOUND_SMO1_BD, + SOUND_SMO1_BE, + SOUND_SMO1_BF, + SOUND_SMO1_BG, + SOUND_SMO1_CA, + SOUND_SMO1_CB, + SOUND_SMO1_CC, + SOUND_SMO1_CD, + SOUND_SMO1_CE, + SOUND_SMO1_CF, + SOUND_SMO1_CG, + SOUND_SMO1_CH, + SOUND_SMO1_CJ, + SOUND_SMO1_CK, + SOUND_SMO1_CL, + SOUND_SMO1_CM, + SOUND_SMO1_CN, + SOUND_SMO1_CO, + SOUND_SMO1_CP, + SOUND_SMO1_DA, + SOUND_SMO1_DB, + SOUND_SMO1_DC, + SOUND_SMO1_EA, + SOUND_SMO1_EB, + SOUND_SMO1_FA, + SOUND_SMO1_FB, + SOUND_SMO1_FC, + SOUND_SMO1_FD, + SOUND_SMO1_FE, + SOUND_SMO1_FF, + SOUND_SMO1_FG, + SOUND_SMO1_FH, + SOUND_SMO1_FJ, + SOUND_SMO1_FK, + SOUND_SMO1_FL, + SOUND_SMO1_FM, + SOUND_SMO1_GA, + SOUND_SMO1_GB, + SOUND_SMO1_GC, + SOUND_SMO1_GD, + SOUND_SMO1_GE, + SOUND_SMO1_GF, + SOUND_SMO1_HA, + SOUND_SMO1_HB, + SOUND_SMO1_HC, + SOUND_SMO1_HD, + SOUND_SMO1_HE, + SOUND_SMO1_HF, + SOUND_SMO1_HG, + SOUND_SMO1_HH, + SOUND_SMO1_JA, + SOUND_SMO1_JB, + SOUND_SMO1_JC, + SOUND_SMO1_JD, + SOUND_SMO1_JG, + SOUND_SMO1_JH, + SOUND_SMO1_JJ, + SOUND_SMO1_JK, + SOUND_SMO1_JL, + SOUND_SMO1_JM, + SOUND_SMO1_KA, + SOUND_SMO1_KB, + SOUND_SMO1_KC, + SOUND_SMO1_KD, + SOUND_SMO1_KE, + SOUND_SMO2B11 = 35200, + SOUND_SMO2_AA, + SOUND_SMO2_AB, + SOUND_SMO2_BA, + SOUND_SMO2_BB, + SOUND_SMO2_BC, + SOUND_SMO2_BD, + SOUND_SMO2_BE, + SOUND_SMO2_BF, + SOUND_SMO2_BG, + SOUND_SMO2_BH, + SOUND_SMO2_BJ, + SOUND_SMO2_BK, + SOUND_SMO2_BL, + SOUND_SMO2_CA, + SOUND_SMO2_CB, + SOUND_SMO2_CC, + SOUND_SMO2_DA, + SOUND_SMO2_DB, + SOUND_SMO2_DC, + SOUND_SMO2_EA, + SOUND_SMO2_FA, + SOUND_SMO2_FB, + SOUND_SMO2_FC, + SOUND_SMO2_FD, + SOUND_SMO2_GA, + SOUND_SMO2_GB, + SOUND_SMO2_GC, + SOUND_SMO2_GD, + SOUND_SMO2_GE, + SOUND_SMO2_GF, + SOUND_SMO2_GG, + SOUND_SMO2_GH, + SOUND_SMO2_GJ, + SOUND_SMO2_GK, + SOUND_SMO2_GL, + SOUND_SMO2_HA, + SOUND_SMO2_HB, + SOUND_SMO2_HC, + SOUND_SMO2_HD, + SOUND_SMO2_HE, + SOUND_SMO3_AA = 35400, + SOUND_SMO3_AB, + SOUND_SMO3_AC, + SOUND_SMO3_AD, + SOUND_SMO3_AE, + SOUND_SMO3_AF, + SOUND_SMO3_AG, + SOUND_SMO3_AH, + SOUND_SMO3_AJ, + SOUND_SMO3_AK, + SOUND_SMO3_AL, + SOUND_SMO3_AM, + SOUND_SMO3_BA, + SOUND_SMO3_BB, + SOUND_SMO3_BC, + SOUND_SMO3_BD, + SOUND_SMO3_BE, + SOUND_SMO3_BF, + SOUND_SMO3_BG, + SOUND_SMO3_BH, + SOUND_SMO3_CA, + SOUND_SMO3_CB, + SOUND_SMO3_CC, + SOUND_SMO3_DA, + SOUND_SMO3_DB, + SOUND_SMO3_DC, + SOUND_SMO3_DD, + SOUND_SMO3_DE, + SOUND_SMO3_EA, + SOUND_SMO3_EB, + SOUND_SMO3_EC, + SOUND_SMO3_FA, + SOUND_SMO3_FB, + SOUND_SMO3_FC, + SOUND_SMO3_GA, + SOUND_SMO3_GB, + SOUND_SMO3_GC, + SOUND_SMO3_HA, + SOUND_SMO3_HB, + SOUND_SMO3_HC, + SOUND_SMO3_JA, + SOUND_SMO3_JB, + SOUND_SMO3_JC, + SOUND_SMO3_KA, + SOUND_SMO3_KB, + SOUND_SMO3_KC, + SOUND_SMO3_LA, + SOUND_SMO3_LB, + SOUND_SMO3_LC, + SOUND_SMO3_MA, + SOUND_SMO3_MB, + SOUND_SMO3_MC, + SOUND_SMO3_NA, + SOUND_SMO3_NB, + SOUND_SMO3_NC, + SOUND_SMO3_OA, + SOUND_SMO3_OB, + SOUND_SMO3_OC, + SOUND_SMO3_PA, + SOUND_SMO3_PB, + SOUND_SMO3_PC, + SOUND_SMO3_QA, + SOUND_SMO3_QB, + SOUND_SMO3_QC, + SOUND_SMO3_QD, + SOUND_SMO3_QE, + SOUND_SMO3_QF, + SOUND_SMO3_QG, + SOUND_SMO3_QH, + SOUND_SMO3_QJ, + SOUND_SMO3_QK, + SOUND_SMO3_QL, + SOUND_SMO3_QM, + SOUND_SMO3_QN, + SOUND_SMO3_QO, + SOUND_SMO3_QP, + SOUND_SMO3_QR, + SOUND_SMO3_RA, + SOUND_SMO3_RB, + SOUND_SMO3_RC, + SOUND_SMO3_RD, + SOUND_SMO3_RE, + SOUND_SMO3_RF, + SOUND_SMO3_RG, + SOUND_SMO3_RH, + SOUND_SMO3_SA, + SOUND_SMO3_SB, + SOUND_SMO3_SC, + SOUND_SMO3_SD, + SOUND_SMO4_AA = 35600, + SOUND_SMO4_AB, + SOUND_SMO4_AC, + SOUND_SMO4_AD, + SOUND_SMO4_AE, + SOUND_SMO4_AF, + SOUND_SMO4_AG, + SOUND_SMO4_AH, + SOUND_SMO4_AJ, + SOUND_SMO4_AK, + SOUND_SMO4_AL, + SOUND_SMO4_AM, + SOUND_SMO4_AN, + SOUND_SMO4_AO, + SOUND_SMO4_BA, + SOUND_SMO4_BB, + SOUND_SMO4_BC, + SOUND_SMO4_BD, + SOUND_SMO4_BE, + SOUND_SMO4_BF, + SOUND_SMO4_BG, + SOUND_SMO4_BH, + SOUND_SMO4_BJ, + SOUND_SMO4_BK, + SOUND_SMO4_BL, + SOUND_SMO4_BM, + SOUND_SMO4_BN, + SOUND_SMO4_BO, + SOUND_SMO4_BP, + SOUND_SMO4_BQ, + SOUND_SMO4_BR, + SOUND_SMO4_CA, + SOUND_SMO4_CB, + SOUND_SMO4_CC, + SOUND_SMO4_CD, + SOUND_SMO4_CE, + SOUND_SMO4_CF, + SOUND_SMO4_DA, + SOUND_SMO4_DB, + SOUND_SMO4_DC, + SOUND_SMO4_DE, + SOUND_SMO4_DF, + SOUND_SMO4_DG, + SOUND_SMO4_DH, + SOUND_SMO4_DJ, + SOUND_SMO4_EA, + SOUND_SMO4_EB, + SOUND_SMO4_EC, + SOUND_SMO4_ED, + SOUND_SMO4_EE, + SOUND_SMO4_EF, + SOUND_SMO4_EG, + SOUND_SMO4_EH, + SOUND_SMO4_EJ, + SOUND_SMO4_EK, + SOUND_SMO4_EL, + SOUND_SMO4_EM, + SOUND_SMO4_EN, + SOUND_SMO4_EO, + SOUND_SMO4_EP, + SOUND_SMO4_EQ, + SOUND_SMO4_ER, + SOUND_SMO4_ES, + SOUND_SMO4_FA, + SOUND_SMO4_FB, + SOUND_SMO4_FC, + SOUND_SMO4_FD, + SOUND_SMO4_FE, + SOUND_SMO4_FF, + SOUND_SMO4_FG, + SOUND_SMO4_FH, + SOUND_SMO4_FJ, + SOUND_SMO4_FK, + SOUND_SMO4_FL, + SOUND_SMO4_FM, + SOUND_SMO4_GA, + SOUND_SMO4_GB, + SOUND_SMO4_GD, + SOUND_SMO4_GE, + SOUND_SMO4_GF, + SOUND_SMO4_GG, + SOUND_SMO4_GH, + SOUND_SMO4_GJ, + SOUND_SMO4_GK, + SOUND_SMO4_GL, + SOUND_SMO4_GM, + SOUND_SMO4_GN, + SOUND_SMO4_GO, + SOUND_SMO4_GP, + SOUND_SMO4_HA, + SOUND_SMO4_HB, + SOUND_SMO4_HC, + SOUND_SMO4_HD, + SOUND_SMO4_HE, + SOUND_SMO4_HF, + SOUND_SMO4_HH, + SOUND_SMO4_HJ, + SOUND_SMO4_HK, + SOUND_SMO4_HL, + SOUND_SMO4_HM, + SOUND_SMO4_HN, + SOUND_SMO4_HO, + SOUND_SMO4_HP, + SOUND_SMO4_HQ, + SOUND_SMO4_HR, + SOUND_SMO4_HS, + SOUND_SMO4_HT, + SOUND_SMO4_HU, + SOUND_SMO4_HV, + SOUND_SMO4_JA, + SOUND_SMO4_JB, + SOUND_SMO4_JC, + SOUND_SMO4_JD, + SOUND_SMO4_JE, + SOUND_SMO4_JF, + SOUND_SMO4_JG, + SOUND_SMO4_JH, + SOUND_SMO4_JJ, + SOUND_SMO4_JK, + SOUND_SMO4_JL, + SOUND_SMO4_JM, + SOUND_SMO4_JN, + SOUND_SMO4_JO, + SOUND_SMO4_JP, + SOUND_SMO4_JQ, + SOUND_SMO4_JR, + SOUND_SMO4_JS, + SOUND_SMO4_KA, + SOUND_SMO4_KB, + SOUND_SMO4_KC, + SOUND_SMO4_KD, + SOUND_SMO4_KE, + SOUND_SMO4_KF, + SOUND_SMO4_KG, + SOUND_SMOX_AA = 35800, + SOUND_SMOX_AB, + SOUND_SMOX_AC, + SOUND_SMOX_AD, + SOUND_SMOX_AE, + SOUND_SMOX_AF, + SOUND_SMOX_AG, + SOUND_SMOX_AH, + SOUND_SMOX_AI, + SOUND_SMOX_AJ, + SOUND_SMOX_AK, + SOUND_SMOX_AL, + SOUND_SMOX_AM, + SOUND_SMOX_AN, + SOUND_SMOX_AO, + SOUND_SMOX_AP, + SOUND_SMOX_AQ, + SOUND_SMOX_AR, + SOUND_SMOX_AS, + SOUND_SMOX_AT, + SOUND_SMOX_AU, + SOUND_SMOX_AV, + SOUND_SMOX_AW, + SOUND_SMOX_AX, + SOUND_SMOX_AY, + SOUND_SMOX_AZ, + SOUND_SMOX_BA, + SOUND_SMOX_BB, + SOUND_SMOX_BC, + SOUND_SMOX_BD, + SOUND_SMOX_BE, + SOUND_SMOX_BF, + SOUND_SMOX_BG, + SOUND_SMOX_BH, + SOUND_SMOX_BI, + SOUND_SMOX_BJ, + SOUND_SMOX_BK, + SOUND_SMOX_BL, + SOUND_SMOX_BM, + SOUND_SMOX_BN, + SOUND_SMOX_BO, + SOUND_SMOX_BP, + SOUND_SMOX_BQ, + SOUND_SMOX_BR, + SOUND_SMOX_BS, + SOUND_SMOX_BT, + SOUND_SMOX_BU, + SOUND_SMOX_BV, + SOUND_SMOX_BW, + SOUND_SMOX_BX, + SOUND_SMOX_BY, + SOUND_SMOX_BZ, + SOUND_SMOX_CA, + SOUND_SMOX_CB, + SOUND_SMOX_CC, + SOUND_SMOX_CD, + SOUND_SMOX_CE, + SOUND_SMOX_CF, + SOUND_SMOX_CG, + SOUND_SMOX_CH, + SOUND_SMOX_CI, + SOUND_SMOX_CJ, + SOUND_SMOX_CK, + SOUND_SMOX_CL, + SOUND_SMOX_CM, + SOUND_SMOX_CN, + SOUND_SMOX_CO, + SOUND_SMOX_CP, + SOUND_SMOX_CQ, + SOUND_SMOX_CR, + SOUND_SMOX_CS, + SOUND_SMOX_CT, + SOUND_SMOX_CU, + SOUND_SMOX_CV, + SOUND_SMOX_CW, + SOUND_SMOX_CX, + SOUND_SMOX_CY, + SOUND_SMOX_CZ, + SOUND_SMOX_DA, + SOUND_SMOX_DB, + SOUND_SMOX_DC, + SOUND_SMOX_DE, + SOUND_SMOX_DF, + SOUND_SMOX_DG, + SOUND_SOLO_AA = 36000, + SOUND_CROWD_AWWS = 36200, + SOUND_CROWD_AWWS2, + SOUND_CROWD_CHEERS, + SOUND_CROWD_CHEERS2, + SOUND_CROWD_CHEERS3, + SOUND_CROWD_CHEERS_BIG, + SOUND_STINGER_FIRE = 36400, + SOUND_STINGER_RELOAD, + SOUND_STL1_AA = 36600, + SOUND_STL1_AB, + SOUND_STL1_AC, + SOUND_STL1_AD, + SOUND_STL1_AE, + SOUND_STL2_AA = 36800, + SOUND_STL2_BA, + SOUND_STL2_BB, + SOUND_STL2_BC, + SOUND_STL2_BD, + SOUND_STL2_BE, + SOUND_STL2_BF, + SOUND_STL2_BG, + SOUND_STL2_BH, + SOUND_STL2_BJ, + SOUND_STL2_BK, + SOUND_STL2_BL, + SOUND_STL2_BM, + SOUND_STL2_CA, + SOUND_STL2_CB, + SOUND_STL2_CC, + SOUND_STL2_CD, + SOUND_STL2_CE, + SOUND_STL2_CF, + SOUND_STL2_CG, + SOUND_STL2_DA, + SOUND_STL2_DB, + SOUND_STL2_DC, + SOUND_STL2_DD, + SOUND_STL2_DE, + SOUND_STL2_DF, + SOUND_STL2_DH, + SOUND_STL2_DJ, + SOUND_STL2_DK, + SOUND_STL2_EA, + SOUND_STL2_EB, + SOUND_STL2_EC, + SOUND_STL2_ED, + SOUND_STL2_EE, + SOUND_STL2_EF, + SOUND_STL2_FA, + SOUND_STL2_FB, + SOUND_STL2_FC, + SOUND_STL2_FD, + SOUND_STL2_FE, + SOUND_STL2_FF, + SOUND_STL2_FG, + SOUND_STL2_FH, + SOUND_STL2_FJ, + SOUND_STL2_FK, + SOUND_STL2_FL, + SOUND_STL2_FM, + SOUND_STL2_FN, + SOUND_STL2_FO, + SOUND_STL2_FP, + SOUND_STL2_FQ, + SOUND_STL2_FR, + SOUND_STL2_GA, + SOUND_STL2_GB, + SOUND_STL2_HA, + SOUND_STL2_HB, + SOUND_STL2_HC, + SOUND_STL2_HD, + SOUND_STL2_HE, + SOUND_STL2_HF, + SOUND_STL2_HG, + SOUND_STL4_AA = 37000, + SOUND_STL4_AB, + SOUND_STL4_BA, + SOUND_STL4_BB, + SOUND_STL4_BC, + SOUND_STL4_BD, + SOUND_STL4_CA, + SOUND_STL4_CB, + SOUND_STL4_CC, + SOUND_STL4_DA, + SOUND_STL4_DB, + SOUND_STL4_EA, + SOUND_STL4_FA, + SOUND_STL4_FB, + SOUND_STL4_FC, + SOUND_STL4_GA, + SOUND_STL4_GB, + SOUND_STL4_GC, + SOUND_STL4_HA, + SOUND_STL4_HB, + SOUND_STL4_HC, + SOUND_STL4_JA, + SOUND_STL4_JB, + SOUND_STL4_KA, + SOUND_STL4_KB, + SOUND_STL4_LA, + SOUND_STL4_LB, + SOUND_STL4_LC, + SOUND_STL4_LD, + SOUND_STL4_LE, + SOUND_STL4_MA, + SOUND_STL4_MB, + SOUND_STL4_MC, + SOUND_STL4_MD, + SOUND_STL4_NA, + SOUND_STL4_NB, + SOUND_STL5_AA = 37200, + SOUND_STL5_AB, + SOUND_STL5_AC, + SOUND_STL5_AD, + SOUND_STL5_AE, + SOUND_STL5_AF, + SOUND_STL5_AG, + SOUND_STL5_BA, + SOUND_STL5_BB, + SOUND_STL5_BC, + SOUND_STL5_BD, + SOUND_STL5_BE, + SOUND_STL5_BF, + SOUND_STL5_BG, + SOUND_STL5_BL, + SOUND_STL5_CA, + SOUND_STL5_CF, + SOUND_STL5_DA, + SOUND_STL5_DB, + SOUND_STL5_DC, + SOUND_STL5_DD, + SOUND_STL5_DE, + SOUND_STL5_DF, + SOUND_STL5_ED, + SOUND_STL5_EE, + SOUND_STL5_FA, + SOUND_STL5_FC, + SOUND_STL5_FD, + SOUND_STL5_FE, + SOUND_STL5_FF, + SOUND_STL5_FG, + SOUND_STL5_FH, + SOUND_STL5_FJ, + SOUND_STL5_FK, + SOUND_STL5_FN, + SOUND_STL5_FO, + SOUND_STL5_FP, + SOUND_STL5_FQ, + SOUND_STL5_FR, + SOUND_STL5_HA, + SOUND_STL5_HB, + SOUND_STL5_HC, + SOUND_STL5_HD, + SOUND_STL5_HE, + SOUND_STL5_HF, + SOUND_STL5_HG, + SOUND_SWE1_AA = 37400, + SOUND_SWE1_AB, + SOUND_SWE1_AC, + SOUND_SWE1_AD, + SOUND_SWE1_AE, + SOUND_SWE1_AF, + SOUND_SWE1_AG, + SOUND_SWE1_AH, + SOUND_SWE1_AJ, + SOUND_SWE1_AK, + SOUND_SWE1_AL, + SOUND_SWE1_AM, + SOUND_SWE1_AN, + SOUND_SWE1_AO, + SOUND_SWE1_AP, + SOUND_SWE1_AQ, + SOUND_SWE1_AR, + SOUND_SWE1_AS, + SOUND_SWE1_AT, + SOUND_SWE1_AU, + SOUND_SWE1_AV, + SOUND_SWE1_AW, + SOUND_SWE1_AX, + SOUND_SWE1_BA, + SOUND_SWE1_BB, + SOUND_SWE1_BC, + SOUND_SWE1_BD, + SOUND_SWE1_BE, + SOUND_SWE1_BF, + SOUND_SWE1_BG, + SOUND_SWE1_BH, + SOUND_SWE1_BJ, + SOUND_SWE1_BK, + SOUND_SWE1_BL, + SOUND_SWE1_BM, + SOUND_SWE1_BN, + SOUND_SWE1_BO, + SOUND_SWE1_BP, + SOUND_SWE1_BQ, + SOUND_SWE1_BR, + SOUND_SWE1_BS, + SOUND_SWE1_BT, + SOUND_SWE1_BU, + SOUND_SWE1_BX, + SOUND_SWE1_CA, + SOUND_SWE1_CB, + SOUND_SWE1_SA, + SOUND_SWE1_SB, + SOUND_SWE1_TA, + SOUND_SWE1_TB, + SOUND_SWE1_TC, + SOUND_SWE1_TD, + SOUND_SWE1_TE, + SOUND_SWE1_TF, + SOUND_SWE1_UA, + SOUND_SWE1_UB, + SOUND_SWE1_UC, + SOUND_SWE1_VA, + SOUND_SWE1_VB, + SOUND_SWE1_VC, + SOUND_SWE1_WA, + SOUND_SWE1_WB, + SOUND_SWE1_WC, + SOUND_SWE1_XA, + SOUND_SWE1_XB, + SOUND_SWE1_YA, + SOUND_SWE1_YB, + SOUND_SWE1_YC, + SOUND_SWE1_YD, + SOUND_SWE1_YE, + SOUND_SWE1_YF, + SOUND_SWE1_YG, + SOUND_SWE1_YH, + SOUND_SWE1_YJ, + SOUND_SWE1_YK, + SOUND_SWE1_YL, + SOUND_SWE1_YM, + SOUND_SWE1_YN, + SOUND_SWE1_YO, + SOUND_SWE1_YP, + SOUND_SWE1_YQ, + SOUND_SWE1_YR, + SOUND_SWE1_YS, + SOUND_SWE1_YT, + SOUND_SWE1_YU, + SOUND_SWE1_YV, + SOUND_SWE1_YW, + SOUND_SWE1_YX, + SOUND_SWE1_YY, + SOUND_SWE1_ZA, + SOUND_SWE1_ZB, + SOUND_SWE1_ZC, + SOUND_SWE1_ZD, + SOUND_SWE1_ZE, + SOUND_SWE1_ZF, + SOUND_SWE2_AA = 37600, + SOUND_SWE2_BA, + SOUND_SWE2_BB, + SOUND_SWE2_BC, + SOUND_SWE2_BD, + SOUND_SWE2_BE, + SOUND_SWE2_BF, + SOUND_SWE2_BG, + SOUND_SWE2_BH, + SOUND_SWE2_BJ, + SOUND_SWE2_BK, + SOUND_SWE2_BL, + SOUND_SWE2_BM, + SOUND_SWE2_CA, + SOUND_SWE2_CB, + SOUND_SWE2_CC, + SOUND_SWE2_DA, + SOUND_SWE2_DB, + SOUND_SWE2_DC, + SOUND_SWE2_DD, + SOUND_SWE2_EA, + SOUND_SWE2_EB, + SOUND_SWE2_EC, + SOUND_SWE2_ED, + SOUND_SWE2_EE, + SOUND_SWE2_FA, + SOUND_SWE2_FB, + SOUND_SWE2_FC, + SOUND_SWE2_FD, + SOUND_SWE2_FE, + SOUND_SWE2_GA, + SOUND_SWE2_GB, + SOUND_SWE2_GC, + SOUND_SWE2_GD, + SOUND_SWE2_GE, + SOUND_SWE2_HA, + SOUND_SWE2_HB, + SOUND_SWE2_HC, + SOUND_SWE2_HD, + SOUND_SWE2_HE, + SOUND_SWE2_HF, + SOUND_SWE2_HG, + SOUND_SWE2_JA, + SOUND_SWE2_JB, + SOUND_SWE2_JC, + SOUND_SWE2_KA, + SOUND_SWE2_KB, + SOUND_SWE2_KC, + SOUND_SWE2_LA, + SOUND_SWE2_LB, + SOUND_SWE2_LC, + SOUND_SWE2_MA, + SOUND_SWE2_MB, + SOUND_SWE2_MC, + SOUND_SWE2_MD, + SOUND_SWE2_ME, + SOUND_SWE2_MF, + SOUND_SWE2_MG, + SOUND_SWE2_MH, + SOUND_SWE2_MJ, + SOUND_SWE2_NA, + SOUND_SWE2_NB, + SOUND_SWE2_NC, + SOUND_SWE2_ND, + SOUND_SWE2_NE, + SOUND_SWE2_NF, + SOUND_SWE2_NG, + SOUND_SWE2_NH, + SOUND_SWE2_OA, + SOUND_SWE2_OB, + SOUND_SWE2_OC, + SOUND_SWE2_OD, + SOUND_SWE2_OE, + SOUND_SWE2_OF, + SOUND_SWE2_OG, + SOUND_SWE2_OH, + SOUND_SWE2_OJ, + SOUND_SWE2_PA, + SOUND_SWE2_PB, + SOUND_SWE2_PC, + SOUND_SWE2_PD, + SOUND_SWE2_PE, + SOUND_SWE3_AA = 37800, + SOUND_SWE3_AB, + SOUND_SWE3_AC, + SOUND_SWE3_AD, + SOUND_SWE3_AE, + SOUND_SWE3_AF, + SOUND_SWE3_AH, + SOUND_SWE3_AJ, + SOUND_SWE3_AK, + SOUND_SWE3_BA, + SOUND_SWE3_BB, + SOUND_SWE3_BC, + SOUND_SWE3_BD, + SOUND_SWE3_BE, + SOUND_SWE3_BF, + SOUND_SWE3_BG, + SOUND_SWE3_BH, + SOUND_SWE3_BJ, + SOUND_SWE3_BK, + SOUND_SWE3_CA, + SOUND_SWE3_CB, + SOUND_SWE3_CC, + SOUND_SWE3_CD, + SOUND_SWE3_CE, + SOUND_SWE3_CF, + SOUND_SWE3_CG, + SOUND_SWE3_CH, + SOUND_SWE3_CJ, + SOUND_SWE3_CK, + SOUND_SWE3_DA, + SOUND_SWE3_DB, + SOUND_SWE3_DC, + SOUND_SWE3_DD, + SOUND_SWE3_DE, + SOUND_SWE3_DF, + SOUND_SWE3_DG, + SOUND_SWE3_EA, + SOUND_SWE3_EB, + SOUND_SWE3_EC, + SOUND_SWE3_ED, + SOUND_SWE3_EE, + SOUND_SWE3_EF, + SOUND_SWE3_FA, + SOUND_SWE3_FB, + SOUND_SWE3_FC, + SOUND_SWE3_FD, + SOUND_SWE3_FE, + SOUND_SWE3_FF, + SOUND_SWE3_FG, + SOUND_SWE3_FH, + SOUND_SWE3_GA, + SOUND_SWE3_GB, + SOUND_SWE3_GC, + SOUND_SWE3_GD, + SOUND_SWE3_GE, + SOUND_SWE3_GF, + SOUND_SWE3_GG, + SOUND_SWE3_GH, + SOUND_SWE3_GJ, + SOUND_SWE3_GK, + SOUND_SWE3_GL, + SOUND_SWE3_GM, + SOUND_SWE3_GN, + SOUND_SWE3_GO, + SOUND_SWE3_HA, + SOUND_SWE3_HB, + SOUND_SWE3_HC, + SOUND_SWE3_HD, + SOUND_SWE3_HE, + SOUND_SWE3_HF, + SOUND_SWE3_HG, + SOUND_SWE3_JA, + SOUND_SWE3_JB, + SOUND_SWE3_ZZ, + SOUND_SWE4_AA = 38000, + SOUND_SWE4_AB, + SOUND_SWE4_AC, + SOUND_SWE4_AD, + SOUND_SWE4_AE, + SOUND_SWE4_AF, + SOUND_SWE4_AG, + SOUND_SWE4_AH, + SOUND_SWE4_AI, + SOUND_SWE4_AJ, + SOUND_SWE4_AK, + SOUND_SWE4_BA, + SOUND_SWE4_BB, + SOUND_SWE4_BC, + SOUND_SWE4_BD, + SOUND_SWE4_BE, + SOUND_SWE4_CA, + SOUND_SWE4_CB, + SOUND_SWE4_CC, + SOUND_SWE4_DA, + SOUND_SWE4_DB, + SOUND_SWE4_DC, + SOUND_SWE4_DD, + SOUND_SWE4_DE, + SOUND_SWE4_DF, + SOUND_SWE4_EA, + SOUND_SWE4_EB, + SOUND_SWE4_EC, + SOUND_SWE4_FA, + SOUND_SWE4_FB, + SOUND_SWE4_FC, + SOUND_SWE4_FD, + SOUND_SWE4_GA, + SOUND_SWE4_GB, + SOUND_SWE4_HA, + SOUND_SWE4_HB, + SOUND_SWE4_KA, + SOUND_SWE4_KB, + SOUND_SWE4_KC, + SOUND_SWE4_KD, + SOUND_SWE4_KE, + SOUND_SWE4_KF, + SOUND_SWE4_KG, + SOUND_SWE4_KH, + SOUND_SWE4_KI, + SOUND_SWE4_LA, + SOUND_SWE4_LB, + SOUND_SWE4_LC, + SOUND_SWE4_MA, + SOUND_SWE4_MB, + SOUND_SWE4_MC, + SOUND_SWE4_MD, + SOUND_SWE4_NA, + SOUND_SWE4_NB, + SOUND_SWE4_NC, + SOUND_SWE4_OA, + SOUND_SWE4_OB, + SOUND_SWE4_OC, + SOUND_SWE4_PA, + SOUND_SWE4_PB, + SOUND_SWE4_PC, + SOUND_SWE5_AA = 38200, + SOUND_SWE5_AB, + SOUND_SWE5_AC, + SOUND_SWE5_AD, + SOUND_SWE5_AE, + SOUND_SWE5_AF, + SOUND_SWE5_BA, + SOUND_SWE5_BB, + SOUND_SWE5_BC, + SOUND_SWE5_BD, + SOUND_SWE5_BE, + SOUND_SWE5_BF, + SOUND_SWE5_BG, + SOUND_SWE5_BH, + SOUND_SWE5_BI, + SOUND_SWE5_BJ, + SOUND_SWE5_CA, + SOUND_SWE5_CB, + SOUND_SWE5_CC, + SOUND_SWE5_DA, + SOUND_SWE5_DB, + SOUND_SWE5_EA, + SOUND_SWE5_EB, + SOUND_SWE5_EC, + SOUND_SWE5_ED, + SOUND_SWE5_EE, + SOUND_SWE5_FA, + SOUND_SWE5_FB, + SOUND_SWE5_GA, + SOUND_SWE5_GB, + SOUND_SWE5_GC, + SOUND_SWE5_GD, + SOUND_SWE5_GE, + SOUND_SWE5_GF, + SOUND_SWE5_GG, + SOUND_SWE5_GH, + SOUND_SWE5_GJ, + SOUND_SWE5_GK, + SOUND_SWE5_GL, + SOUND_SWE7_AA = 38400, + SOUND_SWE7_AB, + SOUND_SWE7_AC, + SOUND_SWE7_AD, + SOUND_SWE7_AE, + SOUND_SWE7_AF, + SOUND_SWE7_AG, + SOUND_SWE7_AH, + SOUND_SWE7_BA, + SOUND_SWE7_BB, + SOUND_SWE7_BC, + SOUND_SWE7_BD, + SOUND_SWE7_BE, + SOUND_SWE7_CA, + SOUND_SWE7_CB, + SOUND_SWE7_CC, + SOUND_SWE7_DA, + SOUND_SWE7_DB, + SOUND_SWE7_DC, + SOUND_SWE7_DD, + SOUND_SWE7_DE, + SOUND_SWE7_EA, + SOUND_SWE7_EB, + SOUND_SWE7_EC, + SOUND_SWE7_ED, + SOUND_SWE7_EE, + SOUND_SWE7_EF, + SOUND_SWE7_EG, + SOUND_SWE7_EH, + SOUND_SWE7_EJ, + SOUND_SWE7_EK, + SOUND_SWE7_FA, + SOUND_SWE7_FB, + SOUND_SWE7_GA, + SOUND_SWE7_GB, + SOUND_SWE7_GC, + SOUND_SWE7_HA, + SOUND_SWE7_HB, + SOUND_SWE7_HC, + SOUND_SWE7_JA, + SOUND_SWE7_JB, + SOUND_SWE7_JC, + SOUND_SWE7_KA, + SOUND_SWE7_KB, + SOUND_SWE7_KC, + SOUND_SWE7_LA, + SOUND_SWE7_LB, + SOUND_SWE7_LC, + SOUND_SWE7_MA, + SOUND_SWE7_MB, + SOUND_SWE7_MC, + SOUND_SWE7_MD, + SOUND_SWE7_NA, + SOUND_SWE7_NB, + SOUND_SWE7_OA, + SOUND_SWE7_OB, + SOUND_SWE7_PA, + SOUND_SWE7_PB, + SOUND_SWE7_PC, + SOUND_SWE7_PD, + SOUND_SWE7_QA, + SOUND_SWE7_QB, + SOUND_SWE7_QC, + SOUND_SWE7_RA, + SOUND_SWE7_RB, + SOUND_SWE7_RC, + SOUND_SWE7_SA, + SOUND_SWE7_SB, + SOUND_SWE7_SC, + SOUND_SWE7_TA, + SOUND_SWE7_TB, + SOUND_SWE7_TC, + SOUND_SWEX_AA = 38600, + SOUND_SWEX_AB, + SOUND_SWEX_AC, + SOUND_SWEX_AD, + SOUND_SWEX_AE, + SOUND_SWEX_AF, + SOUND_SWEX_AG, + SOUND_SWEX_AH, + SOUND_SWEX_AI, + SOUND_SWEX_AJ, + SOUND_SWEX_AK, + SOUND_SWEX_AL, + SOUND_SWEX_AM, + SOUND_SWEX_AN, + SOUND_SWEX_AO, + SOUND_SWEX_AP, + SOUND_SWEX_AQ, + SOUND_SWEX_AR, + SOUND_SWEX_AS, + SOUND_SWEX_AT, + SOUND_SWEX_AU, + SOUND_SWEX_AV, + SOUND_SWEX_AW, + SOUND_SWEX_AX, + SOUND_SWEX_AY, + SOUND_SWEX_AZ, + SOUND_SWEX_BA, + SOUND_SWEX_BB, + SOUND_SWEX_BC, + SOUND_SWEX_BD, + SOUND_SWEX_BE, + SOUND_SWEX_BF, + SOUND_SWEX_BG, + SOUND_SWEX_BH, + SOUND_SWEX_BI, + SOUND_SWEX_BJ, + SOUND_SWEX_BK, + SOUND_SWEX_BL, + SOUND_SWEX_BM, + SOUND_SWEX_BN, + SOUND_SWEX_BO, + SOUND_SWEX_BP, + SOUND_SWEX_BQ, + SOUND_SWEX_BR, + SOUND_SWEX_BS, + SOUND_SYN1_AB = 38800, + SOUND_SYN1_AC, + SOUND_SYN1_AE, + SOUND_SYN1_BA, + SOUND_SYN1_BD, + SOUND_SYN1_CB, + SOUND_SYN1_EB, + SOUND_SYN1_FB, + SOUND_SYN1_FC, + SOUND_SYN1_FD, + SOUND_SYN1_IA, + SOUND_SYN1_IB, + SOUND_SYN1_ID, + SOUND_SYN1_IF, + SOUND_SYN1_JA, + SOUND_SYN1_JB, + SOUND_SYN1_JD, + SOUND_SYN1_JE, + SOUND_SYN1_JJ, + SOUND_SYN1_JK, + SOUND_SYN1_JN, + SOUND_SYN1_JO, + SOUND_SYN1_JP, + SOUND_SYN1_JR, + SOUND_SYN1_JS, + SOUND_SYN1_JT, + SOUND_SYN1_JU, + SOUND_SYN1_JX, + SOUND_SYN1_KB, + SOUND_SYN1_LA, + SOUND_SYN1_LC, + SOUND_SYN1_YA, + SOUND_SYN1_YB, + SOUND_SYN1_YE, + SOUND_SYN1_YF, + SOUND_SYN1_YH, + SOUND_SYN1_YJ, + SOUND_SYN1_YK, + SOUND_SYN1_ZC, + SOUND_SYN1_ZD, + SOUND_SYN1_ZE, + SOUND_SYN1_ZG, + SOUND_SYN1_ZK, + SOUND_SYN1_ZL, + SOUND_SYN1_ZM, + SOUND_SYN1_ZN, + SOUND_SYN1_ZP, + SOUND_SYN1_ZQ, + SOUND_SYN1_ZR, + SOUND_SYN1_ZT, + SOUND_SYN1_ZU, + SOUND_SYN1_ZW, + SOUND_SYN1_ZX, + SOUND_SYN1_ZY, + SOUND_SYN1_ZZ, + SOUND_SYN2_AA = 39000, + SOUND_SYN2_AB, + SOUND_SYN2_AC, + SOUND_SYN2_AD, + SOUND_SYN2_BA, + SOUND_SYN2_BB, + SOUND_SYN2_BC, + SOUND_SYN2_BD, + SOUND_SYN2_BE, + SOUND_SYN2_BF, + SOUND_SYN2_CA, + SOUND_SYN2_CB, + SOUND_SYN2_CC, + SOUND_SYN2_CD, + SOUND_SYN2_CE, + SOUND_SYN2_CF, + SOUND_SYN2_CG, + SOUND_SYN2_DA, + SOUND_SYN2_DB, + SOUND_SYN2_DC, + SOUND_SYN2_DD, + SOUND_SYN2_DE, + SOUND_SYN2_DF, + SOUND_SYN2_DG, + SOUND_SYN2_EA, + SOUND_SYN2_EB, + SOUND_SYN2_EC, + SOUND_SYN2_FA, + SOUND_SYN2_FB, + SOUND_SYN2_FC, + SOUND_SYN2_FD, + SOUND_SYN2_FE, + SOUND_SYN2_FF, + SOUND_SYN2_GA, + SOUND_SYN2_GB, + SOUND_SYN2_GC, + SOUND_SYN2_GD, + SOUND_SYN2_GE, + SOUND_SYN2_GF, + SOUND_SYN2_HA, + SOUND_SYN2_HB, + SOUND_SYN2_HC, + SOUND_SYN2_HD, + SOUND_SYN2_HE, + SOUND_SYN2_HF, + SOUND_SYN2_JA, + SOUND_SYN2_JB, + SOUND_SYN2_JC, + SOUND_SYN2_JD, + SOUND_SYN2_JE, + SOUND_SYN2_JF, + SOUND_SYN2_JG, + SOUND_SYN2_JH, + SOUND_SYN2_KA, + SOUND_SYN2_KB, + SOUND_SYN2_KC, + SOUND_SYN2_KD, + SOUND_SYN2_KE, + SOUND_SYN2_LA, + SOUND_SYN2_LB, + SOUND_SYN2_LC, + SOUND_SYN2_LD, + SOUND_SYN2_LE, + SOUND_SYN2_LF, + SOUND_SYN2_LG, + SOUND_SYN2_LH, + SOUND_SYN2_LI, + SOUND_SYN2_LJ, + SOUND_SYN2_LK, + SOUND_SYN2_LL, + SOUND_SYN2_LM, + SOUND_SYN2_LN, + SOUND_SYN2_LO, + SOUND_SYN2_LP, + SOUND_SYN2_LQ, + SOUND_SYN2_LR, + SOUND_SYN2_LS, + SOUND_SYN2_LT, + SOUND_SYN2_LU, + SOUND_SYN3_AA = 39200, + SOUND_SYN3_AB, + SOUND_SYN3_AC, + SOUND_SYN3_AD, + SOUND_SYN3_BA, + SOUND_SYN3_BB, + SOUND_SYN3_BC, + SOUND_SYN3_BD, + SOUND_SYN3_BE, + SOUND_SYN3_BF, + SOUND_SYN3_BG, + SOUND_SYN3_BH, + SOUND_SYN3_BI, + SOUND_SYN3_CA, + SOUND_SYN3_CB, + SOUND_SYN3_CC, + SOUND_SYN3_CD, + SOUND_SYN3_CE, + SOUND_SYN3_CF, + SOUND_SYN3_CG, + SOUND_SYN3_DC, + SOUND_SYN3_EA, + SOUND_SYN3_EB, + SOUND_SYN3_HJ, + SOUND_SYN4_AA = 39400, + SOUND_SYN4_AB, + SOUND_SYN4_AC, + SOUND_SYN4_AD, + SOUND_SYN4_AE, + SOUND_SYN4_AF, + SOUND_SYN4_AG, + SOUND_SYN4_AH, + SOUND_SYN4_AJ, + SOUND_SYN4_AK, + SOUND_SYN4_AL, + SOUND_SYN4_BA, + SOUND_SYN4_BB, + SOUND_SYN4_BC, + SOUND_SYN5_AA = 39600, + SOUND_SYN5_BA, + SOUND_SYN5_BB, + SOUND_SYN5_BC, + SOUND_SYN5_BD, + SOUND_SYN5_BE, + SOUND_SYN5_BF, + SOUND_SYN5_BG, + SOUND_SYN5_BH, + SOUND_SYN5_BJ, + SOUND_SYN5_BK, + SOUND_SYN5_BL, + SOUND_SYN5_BM, + SOUND_SYN5_BN, + SOUND_SYN5_CA, + SOUND_SYN5_CB, + SOUND_SYN5_CC, + SOUND_SYN5_CD, + SOUND_SYN5_CE, + SOUND_SYN5_CF, + SOUND_SYN5_DA, + SOUND_SYN5_DB, + SOUND_SYN5_DC, + SOUND_SYN5_DD, + SOUND_SYN5_DE, + SOUND_SYN5_EA, + SOUND_SYN5_EB, + SOUND_SYN5_EC, + SOUND_SYN5_ED, + SOUND_SYN5_FA, + SOUND_SYN5_FB, + SOUND_SYN5_GA, + SOUND_SYN5_GB, + SOUND_SYN5_GC, + SOUND_SYN5_GD, + SOUND_SYN5_GE, + SOUND_SYN5_GF, + SOUND_SYN5_GG, + SOUND_SYN5_GH, + SOUND_SYN5_GJ, + SOUND_SYN5_GK, + SOUND_SYN5_GL, + SOUND_SYN5_GM, + SOUND_SYN5_GN, + SOUND_SYN5_GO, + SOUND_SYN5_GW, + SOUND_SYN5_GX, + SOUND_SYN5_GY, + SOUND_SYN5_GZ, + SOUND_SYN5_HA, + SOUND_SYN5_HB, + SOUND_SYN5_HC, + SOUND_SYN5_HD, + SOUND_SYN5_HE, + SOUND_SYN5_HF, + SOUND_SYN5_HG, + SOUND_SYN5_HH, + SOUND_SYN5_HJ, + SOUND_SYN5_HK, + SOUND_SYN5_HL, + SOUND_SYN5_JA, + SOUND_SYN5_JB, + SOUND_SYN5_JC, + SOUND_SYN5_KA, + SOUND_SYN5_KB, + SOUND_SYN5_KC, + SOUND_SYN5_KD, + SOUND_SYN5_KE, + SOUND_SYN7_AA = 39800, + SOUND_SYN7_AB, + SOUND_SYN7_AC, + SOUND_SYN7_AD, + SOUND_SYN7_AE, + SOUND_SYN7_BA, + SOUND_SYN7_BB, + SOUND_SYN7_BC, + SOUND_SYN7_CA, + SOUND_SYN7_CB, + SOUND_SYN7_CC, + SOUND_SYN7_DA, + SOUND_SYN7_DB, + SOUND_SYN7_DC, + SOUND_SYN7_DD, + SOUND_SYN7_DE, + SOUND_TATTOO = 40000, + SOUND_TBOX_AA = 40200, + SOUND_TBOX_AB, + SOUND_TBOX_AC, + SOUND_TBOX_AD, + SOUND_TBOX_AE, + SOUND_TBOX_AF, + SOUND_TBOX_AG, + SOUND_TBOX_AH, + SOUND_TBOX_AI, + SOUND_TBOX_AJ, + SOUND_TBOX_AK, + SOUND_TBOX_AL, + SOUND_TBOX_AM, + SOUND_TBOX_AN, + SOUND_TBOX_AO, + SOUND_TBOX_AP, + SOUND_TBOX_AQ, + SOUND_TBOX_AR, + SOUND_TBOX_AS, + SOUND_TBOX_AT, + SOUND_TBOX_AU, + SOUND_TBOX_AV, + SOUND_TBOX_AW, + SOUND_TBOX_AX, + SOUND_TBOX_AY, + SOUND_TBOX_AZ, + SOUND_TBOX_BA, + SOUND_TBOX_BB, + SOUND_TBOX_BC, + SOUND_TBOX_BD, + SOUND_TBOX_BE, + SOUND_TBOX_BF, + SOUND_TBOX_BG, + SOUND_TBOX_BH, + SOUND_TBOX_BI, + SOUND_TBOX_BJ, + SOUND_TBOX_BK, + SOUND_TBOX_BL, + SOUND_TBOX_BM, + SOUND_TEMPEST_SHIELD_LOOP = 40400, + SOUND_TEMPEST_ENEMYSHOOT, + SOUND_TEMPEST_EXPLOSION, + SOUND_TEMPEST_GAMEOVER, + SOUND_TEMPEST_HIGHLIGHT, + SOUND_TEMPEST_PICKUP, + SOUND_TEMPEST_PLAYERSHOOT, + SOUND_TEMPEST_SELECT, + SOUND_TEMPEST_WARP, + SOUND_GREEN_GOO_HUM = 40600, + SOUND_TORX_AA = 40800, + SOUND_TORX_AB, + SOUND_TORX_AC, + SOUND_TORX_AD, + SOUND_TORX_AE, + SOUND_TORX_AF, + SOUND_TORX_AG, + SOUND_TORX_AH, + SOUND_TORX_AI, + SOUND_TORX_AJ, + SOUND_TORX_AK, + SOUND_TORX_AL, + SOUND_TORX_AM, + SOUND_TORX_AN, + SOUND_TORX_AO, + SOUND_TORX_AP, + SOUND_TORX_AQ, + SOUND_TORX_AR, + SOUND_TORX_AS, + SOUND_TORX_AT, + SOUND_TORX_AU, + SOUND_TRU1_AA = 41000, + SOUND_TRU1_AB, + SOUND_TRU1_AC, + SOUND_TRU1_AD, + SOUND_TRU1_AE, + SOUND_TRU1_AF, + SOUND_TRU1_AG, + SOUND_TRU1_AH, + SOUND_TRU1_BA, + SOUND_TRU1_BB, + SOUND_TRU1_BC, + SOUND_TRU1_BD, + SOUND_TRU1_BE, + SOUND_TRU1_BF, + SOUND_TRU1_BG, + SOUND_TRU1_BH, + SOUND_TRU1_CA, + SOUND_TRU1_CB, + SOUND_TRU1_CC, + SOUND_TRU1_CD, + SOUND_TRU1_CE, + SOUND_TRU1_CF, + SOUND_TRU1_CG, + SOUND_TRU1_CH, + SOUND_TRU1_DA, + SOUND_TRU1_DB, + SOUND_TRU1_DC, + SOUND_TRU1_DD, + SOUND_TRU1_DE, + SOUND_TRU1_DF, + SOUND_TRU1_DG, + SOUND_TRU1_DH, + SOUND_TRU1_FA, + SOUND_TRU1_FB, + SOUND_TRU1_FC, + SOUND_TRU1_FD, + SOUND_TRU1_FE, + SOUND_TRU1_FF, + SOUND_TRU1_FG, + SOUND_TRU1_FH, + SOUND_TRU1_ZA, + SOUND_TRU1_ZB, + SOUND_TRU1_ZC, + SOUND_TRU2_AA = 41200, + SOUND_TRU2_AB, + SOUND_TRU2_AC, + SOUND_TRU2_AD, + SOUND_TRU2_AE, + SOUND_TRU2_BA, + SOUND_TRU2_BB, + SOUND_TRU2_BC, + SOUND_TRU2_CA, + SOUND_TRU2_CB, + SOUND_TRU2_DA, + SOUND_TRU2_DB, + SOUND_TRU2_DC, + SOUND_TRU2_DD, + SOUND_TRU2_DE, + SOUND_TRU2_DF, + SOUND_TRU2_EA, + SOUND_TRU2_EB, + SOUND_TRU2_EC, + SOUND_TRU2_ED, + SOUND_TRU2_EF, + SOUND_TRU2_EG, + SOUND_TRU2_FA, + SOUND_TRU2_FB, + SOUND_TRU2_FC, + SOUND_TRU2_FD, + SOUND_TRU2_FE, + SOUND_TRU2_FF, + SOUND_TRU2_FG, + SOUND_TRU2_FH, + SOUND_TRU2_FJ, + SOUND_TRU2_FK, + SOUND_TRU2_GA, + SOUND_TRU2_GB, + SOUND_TRU2_GC, + SOUND_TRU2_GE, + SOUND_TRU2_GF, + SOUND_TRU2_GG, + SOUND_TRU2_GH, + SOUND_TRU2_GJ, + SOUND_TRU2_HA, + SOUND_TRU2_HB, + SOUND_TRU2_HC, + SOUND_TRU2_HD, + SOUND_TRU2_HE, + SOUND_TRU2_HF, + SOUND_TRU2_HG, + SOUND_TRU2_HH, + SOUND_TRU2_HJ, + SOUND_TRU2_HK, + SOUND_TRU2_HL, + SOUND_TRU2_HM, + SOUND_TRU2_HN, + SOUND_TRU2_HO, + SOUND_TRU2_JA, + SOUND_TRU2_JB, + SOUND_TRU2_KA, + SOUND_TRU2_KB, + SOUND_TRU2_KC, + SOUND_TRU2_KD, + SOUND_TRU2_LA, + SOUND_TRU2_LB, + SOUND_TRU2_LC, + SOUND_TRU2_MA, + SOUND_TRU2_MB, + SOUND_TRU2_MC, + SOUND_TRU2_NA, + SOUND_TRU2_NB, + SOUND_TRU2_OA, + SOUND_TRU2_OC, + SOUND_TRU2_OD, + SOUND_TRU2_OE, + SOUND_TRU2_OF, + SOUND_TRUX_AA = 41400, + SOUND_TRUX_AB, + SOUND_TRUX_AC, + SOUND_TRUX_AD, + SOUND_TRUX_AE, + SOUND_TRUX_AF, + SOUND_TRUX_AG, + SOUND_TRUX_AH, + SOUND_TRUX_AI, + SOUND_TRUX_AJ, + SOUND_TRUX_AK, + SOUND_TRUX_AL, + SOUND_TRUX_AM, + SOUND_TRUX_AN, + SOUND_TRUX_AO, + SOUND_TRUX_AP, + SOUND_TRUX_AQ, + SOUND_TRUX_AR, + SOUND_TRUX_AS, + SOUND_TRUX_AT, + SOUND_TRUX_AU, + SOUND_TRUX_AV, + SOUND_TRUX_AW, + SOUND_TRUX_AX, + SOUND_TRUX_BA, + SOUND_TRUX_BB, + SOUND_TRUX_BC, + SOUND_TRUX_BD, + SOUND_TRUX_BE, + SOUND_TRUX_BF, + SOUND_TRUX_BG, + SOUND_TRUX_BH, + SOUND_TRUX_BI, + SOUND_BLAST_DOOR_SLIDE_LOOP = 41600, + SOUND_BLAST_DOOR_SLIDE_START, + SOUND_BLAST_DOOR_SLIDE_STOP, + SOUND_KEYPAD_BEEP2, + SOUND_SHOOT_CONTROLS2, + SOUND_SECURITY_ALARM = 41800, + SOUND_VALDED1 = 42000, + SOUND_VALDED2, + SOUND_VALDED3, + SOUND_VALUND1, + SOUND_VALUND2, + SOUND_VANK_1, + SOUND_VANK_2, + SOUND_VANK_3, + SOUND_VANK_4, + SOUND_V_HEY_1, + SOUND_V_HEY_2, + SOUND_V_HEY_3, + SOUND_VCR1_AA = 42200, + SOUND_VCR1_AB, + SOUND_VCR1_AC, + SOUND_VCR1_AD, + SOUND_VCR1_AE, + SOUND_VCR1_AF, + SOUND_VCR1_AG, + SOUND_VCR1_AH, + SOUND_VCR1_AI, + SOUND_VCR2_AA = 42400, + SOUND_VCR2_AB, + SOUND_VCR2_AC, + SOUND_VCR2_AD, + SOUND_VCR2_AE, + SOUND_VCR2_BA, + SOUND_VCR2_BB, + SOUND_VCR2_BC, + SOUND_VCR2_BE, + SOUND_VCR2_BF, + SOUND_VCR2_BG, + SOUND_VCR2_BH, + SOUND_VCR2_BJ, + SOUND_VCR2_CA, + SOUND_VCR2_CB, + SOUND_VCR2_CC, + SOUND_VCR2_CD, + SOUND_VCR2_CE, + SOUND_VCR2_CF, + SOUND_VCR2_CG, + SOUND_VCR2_DA, + SOUND_VCR2_DB, + SOUND_VCR2_DC, + SOUND_VCR2_DD, + SOUND_VCR2_DE, + SOUND_DRINKS_CAN = 42600, + SOUND_VENDING_EAT, + SOUND_LIFT_LOOP = 42800, + SOUND_SECURITY_ALARM, + SOUND_LIFT_START, + SOUND_LIFT_STOP, + SOUND_VIDEO_POKER_BUTTON = 43000, + SOUND_VIDEO_POKER_PAYOUT, + SOUND_VO_AA = 43200, + SOUND_VO_AB, + SOUND_VO_AC, + SOUND_VO_AD, + SOUND_VO_AE, + SOUND_VO_AF, + SOUND_VO_AG, + SOUND_WBOX_1 = 43400, + SOUND_WBOX_2, + SOUND_WBOX_3, + SOUND_WBOX_4, + SOUND_WBOX_5, + SOUND_WBOX_6, + SOUND_WBOX_7, + SOUND_WBOX_8, + SOUND_W_BET_1 = 43600, + SOUND_W_BET_2, + SOUND_W_LEND1, + SOUND_W_LEND2, + SOUND_W_LEND3, + SOUND_W_NEM_1, + SOUND_W_NEM_2, + SOUND_W_NEM_3, + SOUND_W_NMB_1, + SOUND_W_NMB_2, + SOUND_W_NMB_3, + SOUND_W_NUM10, + SOUND_W_NUM11, + SOUND_W_NUM12, + SOUND_W_NUM13, + SOUND_W_NUM14, + SOUND_W_NUM15, + SOUND_W_NUM16, + SOUND_W_NUM17, + SOUND_W_NUM18, + SOUND_W_NUM19, + SOUND_W_NUM20, + SOUND_W_NUM21, + SOUND_W_NUM22, + SOUND_W_NUM23, + SOUND_W_NUM24, + SOUND_W_NUM25, + SOUND_W_NUM26, + SOUND_W_NUM27, + SOUND_W_NUM28, + SOUND_W_NUM29, + SOUND_W_NUM30, + SOUND_W_NUM31, + SOUND_W_NUM32, + SOUND_W_NUM33, + SOUND_W_NUM34, + SOUND_W_NUM35, + SOUND_W_NUM36, + SOUND_W_NUM_0, + SOUND_W_NUM_1, + SOUND_W_NUM_2, + SOUND_W_NUM_3, + SOUND_W_NUM_4, + SOUND_W_NUM_5, + SOUND_W_NUM_6, + SOUND_W_NUM_7, + SOUND_W_NUM_8, + SOUND_W_NUM_9, + SOUND_W_PWIN1, + SOUND_W_PWIN2, + SOUND_W_PWIN3, + SOUND_W_REG_1, + SOUND_W_REG_2, + SOUND_W_THX_1, + SOUND_W_THX_2, + SOUND_W_WEEL1, + SOUND_W_WEEL2, + SOUND_W_WEEL3, + SOUND_W_WEEL4, + SOUND_W_WEEL5, + SOUND_W_WEEL6, + SOUND_W_WEEL7, + SOUND_W_WINS1, + SOUND_W_WINS2, + SOUND_W_WINS3, + SOUND_WUZ1_AA = 43800, + SOUND_WUZ1_AB, + SOUND_WUZ1_BA, + SOUND_WUZ1_BB, + SOUND_WUZ1_CA, + SOUND_WUZ1_CB, + SOUND_WUZ1_CC, + SOUND_WUZ1_CD, + SOUND_WUZ1_CE, + SOUND_WUZ1_CG, + SOUND_WUZ1_CH, + SOUND_WUZ1_DA, + SOUND_WUZ1_DB, + SOUND_WUZ1_DC, + SOUND_WUZ1_DD, + SOUND_WUZ1_EA, + SOUND_WUZ1_EB, + SOUND_WUZ1_EC, + SOUND_WUZ1_EE, + SOUND_WUZ1_FA, + SOUND_WUZ1_FB, + SOUND_WUZ1_FC, + SOUND_WUZ1_FD, + SOUND_WUZ1_FE, + SOUND_WUZ1_GA, + SOUND_WUZ1_GB, + SOUND_WUZ1_GC, + SOUND_WUZ1_GD, + SOUND_WUZ1_GE, + SOUND_WUZ1_GF, + SOUND_WUZ1_GG, + SOUND_WUZ1_GH, + SOUND_WUZ1_GJ, + SOUND_WUZ1_GK, + SOUND_WUZ1_GL, + SOUND_WUZ1_GM, + SOUND_WUZ1_HA, + SOUND_WUZ1_HB, + SOUND_WUZ1_HC, + SOUND_WUZ1_JA, + SOUND_WUZ1_JB, + SOUND_WUZ1_KA, + SOUND_WUZ1_KB, + SOUND_WUZ1_KC, + SOUND_WUZ1_KD, + SOUND_WUZ1_LA, + SOUND_WUZ1_LB, + SOUND_WUZ1_LC, + SOUND_WUZ1_LD, + SOUND_WUZ1_MA, + SOUND_WUZ1_MB, + SOUND_WUZ1_MC, + SOUND_WUZ1_MD, + SOUND_WUZ1_ME, + SOUND_WUZ1_MF, + SOUND_WUZ1_MG, + SOUND_WUZ1_MH, + SOUND_WUZ1_MJ, + SOUND_WUZ1_NA, + SOUND_WUZ1_NB, + SOUND_WUZ1_NC, + SOUND_WUZ1_ND, + SOUND_WUZ1_NE, + SOUND_WUZ1_NF, + SOUND_WUZ1_NG, + SOUND_WUZ1_NH, + SOUND_WUZ1_NJ, + SOUND_WUZ1_NK, + SOUND_WUZ1_NL, + SOUND_WUZ1_NM, + SOUND_WUZ1_NN, + SOUND_WUZ1_NO, + SOUND_WUZ1_NP, + SOUND_WUZ1_NQ, + SOUND_WUZ1_OA, + SOUND_WUZ1_OB, + SOUND_WUZ1_OC, + SOUND_WUZ1_OD, + SOUND_WUZ1_OE, + SOUND_WUZ1_OF, + SOUND_WUZ1_OG, + SOUND_WUZ1_OH, + SOUND_WUZ1_OJ, + SOUND_WUZ1_OK, + SOUND_WUZ1_OL, + SOUND_WUZ1_OM, + SOUND_WUZ1_ON, + SOUND_WUZ1_OO, + SOUND_WUZ1_OP, + SOUND_WUZ1_OQ, + SOUND_WUZ1_OR, + SOUND_WUZ1_OS, + SOUND_WUZ1_PA, + SOUND_WUZ1_PB, + SOUND_WUZ1_QA, + SOUND_WUZ1_QB, + SOUND_WUZ1_QC, + SOUND_WUZ1_QD, + SOUND_WUZ1_QE, + SOUND_WUZ1_QF, + SOUND_WUZ1_QG, + SOUND_WUZ1_QH, + SOUND_WUZ1_RA, + SOUND_WUZ1_RB, + SOUND_WUZ1_RC, + SOUND_WUZ1_RD, + SOUND_WUZ2_AA = 44000, + SOUND_WUZ2_AB, + SOUND_WUZ2_AC, + SOUND_WUZ2_BA, + SOUND_WUZ2_BB, + SOUND_WUZ2_BC, + SOUND_WUZ2_CA, + SOUND_WUZ2_CB, + SOUND_WUZ2_CC, + SOUND_WUZ2_DA, + SOUND_WUZ2_DB, + SOUND_WUZ2_DC, + SOUND_WUZ2_EA, + SOUND_WUZ2_EB, + SOUND_WUZ2_EC, + SOUND_WUZ2_FA, + SOUND_WUZ2_FB, + SOUND_WUZ2_FC, + SOUND_WUZ2_GA, + SOUND_WUZ2_GB, + SOUND_WUZ2_GC, + SOUND_WUZ2_HA, + SOUND_WUZ2_HB, + SOUND_WUZ2_HC, + SOUND_WUZ2_JA, + SOUND_WUZ2_JB, + SOUND_WUZ2_JC, + SOUND_WUZ2_KA, + SOUND_WUZ2_KB, + SOUND_WUZ2_KC, + SOUND_WUZ2_LA, + SOUND_WUZ2_LB, + SOUND_WUZ2_LC, + SOUND_WUZ2_MA, + SOUND_WUZ2_MB, + SOUND_WUZ2_MC, + SOUND_WUZ2_NA, + SOUND_WUZ2_NB, + SOUND_WUZ2_NC, + SOUND_WUZ2_OA, + SOUND_WUZ2_OB, + SOUND_WUZ2_OC, + SOUND_WUZ2_PA, + SOUND_WUZ2_PB, + SOUND_WUZ2_PC, + SOUND_WUZ2_QA, + SOUND_WUZ2_QB, + SOUND_WUZ2_QC, + SOUND_WUZ2_RA, + SOUND_WUZ2_RB, + SOUND_WUZ2_RC, + SOUND_WUZ2_SA, + SOUND_WUZ2_SB, + SOUND_WUZ2_SC, + SOUND_WUZ2_TA, + SOUND_WUZ2_TB, + SOUND_WUZ2_TC, + SOUND_WUZ2_UA, + SOUND_WUZ2_UB, + SOUND_WUZ2_UC, + SOUND_WUZ2_VA, + SOUND_WUZ2_VB, + SOUND_WUZ2_VC, + SOUND_WUZ2_WA, + SOUND_WUZ2_WB, + SOUND_WUZ2_WC, + SOUND_WUZ2_XA, + SOUND_WUZ2_XB, + SOUND_WUZ2_XC, + SOUND_WUZ2_XD, + SOUND_WUZ2_XE, + SOUND_WUZ2_XF, + SOUND_WUZ2_YA, + SOUND_WUZ2_YB, + SOUND_WUZ2_YC, + SOUND_WUZ2_YD, + SOUND_WUZ2_YE, + SOUND_WUZ2_YF, + SOUND_WUZ2_YG, + SOUND_WUZ2_YH, + SOUND_WUZ2_YJ, + SOUND_WUZ2_YK, + SOUND_WUZ2_YL, + SOUND_WUZ2_ZA, + SOUND_WUZ2_ZB, + SOUND_WUZ2_ZC, + SOUND_WUZ2_ZD, + SOUND_WUZ2_ZE, + SOUND_WUZ2_ZF, + SOUND_WUZ2_ZG, + SOUND_WUZ2_ZH, + SOUND_WUZ2_ZJ, + SOUND_WUZ2_ZK, + SOUND_WUZ2_ZL, + SOUND_WUZ2_ZM, + SOUND_WUZ2_ZN, + SOUND_WUZ2_ZO, + SOUND_WUZ2_ZP, + SOUND_WUZ2_ZQ, + SOUND_WUZ2_ZR, + SOUND_WUZ2_ZS, + SOUND_WUZ2_ZT, + SOUND_WUZ2_ZU, + SOUND_WUZ2_ZV, + SOUND_WUZ2_ZW, + SOUND_WUZ2_ZX, + SOUND_WUZ2_ZY, + SOUND_WUZ2_ZZ, + SOUND_WUZ4_AA = 44200, + SOUND_WUZ4_AB, + SOUND_WUZ4_BA, + SOUND_WUZ4_CA, + SOUND_WUZ4_CB, + SOUND_WUZ4_CC, + SOUND_WUZ4_DA, + SOUND_WUZ4_EA, + SOUND_WUZ4_EB, + SOUND_WUZ4_FA, + SOUND_WUZ4_FB, + SOUND_WUZ4_GA, + SOUND_WUZ4_GB, + SOUND_WUZ4_GC, + SOUND_WUZ4_HA, + SOUND_WUZ4_JA, + SOUND_WUZ4_JB, + SOUND_WUZ4_JC, + SOUND_WUZ4_JD, + SOUND_WUZ4_JE, + SOUND_WUZ4_JF, + SOUND_WUZ4_KA, + SOUND_WUZ4_KB, + SOUND_WUZ4_KC, + SOUND_WUZ4_KD, + SOUND_WUZ4_KE, + SOUND_WUZ4_LA, + SOUND_WUZ4_LB, + SOUND_WUZ4_LC, + SOUND_WUZ4_LD, + SOUND_WUZ4_LE, + SOUND_WUZ4_MA, + SOUND_WUZ4_MB, + SOUND_WUZ4_MC, + SOUND_WUZ4_MD, + SOUND_WUZ4_ME, + SOUND_WUZ4_MF, + SOUND_WUZ4_MH, + SOUND_WUZ4_MJ, + SOUND_WUZ4_NA, + SOUND_WUZ4_NB, + SOUND_WUZ4_NC, + SOUND_WUZ4_NE, + SOUND_WUZ4_NF, + SOUND_WUZ4_OA, + SOUND_WUZ4_OB, + SOUND_WUZ4_PA, + SOUND_WUZ4_ZA, + SOUND_WUZX_AA = 44400, + SOUND_WUZX_AB, + SOUND_WUZX_AC, + SOUND_WUZX_AD, + SOUND_WUZX_AE, + SOUND_WUZX_AF, + SOUND_WUZX_AG, + SOUND_WUZX_AH, + SOUND_WUZX_AI, + SOUND_WUZX_AJ, + SOUND_WUZX_AK, + SOUND_WUZX_AL, + SOUND_WUZX_AM, + SOUND_WUZX_AN, + SOUND_WUZX_AO, + SOUND_WUZX_AP, + SOUND_WUZX_AQ, + SOUND_WUZX_AR, + SOUND_WUZX_AS, + SOUND_WUZX_AT, + SOUND_WUZX_AU, + SOUND_WUZX_AV, + SOUND_WUZX_AW, + SOUND_WUZX_AX, + SOUND_WUZX_AY, + SOUND_WUZX_AZ, + SOUND_WUZX_BA, + SOUND_WUZX_BB, + SOUND_WUZX_BC, + SOUND_WUZX_BD, + SOUND_WUZX_BE, + SOUND_WUZX_BF, + SOUND_WUZX_BG, + SOUND_WUZX_BH, + SOUND_WUZX_BI, + SOUND_WUZX_BJ, + SOUND_WUZX_BK, + SOUND_WUZX_BL, + SOUND_WUZX_BM, + SOUND_WUZX_BN, + SOUND_WUZX_BO, + SOUND_WUZX_BP, + SOUND_WUZX_BQ, + SOUND_WUZX_BR, + SOUND_WUZX_BS, + SOUND_ZER1_AA = 44600, + SOUND_ZER1_AB, + SOUND_ZER1_AC, + SOUND_ZER1_AD, + SOUND_ZER1_AE, + SOUND_ZER1_BA, + SOUND_ZER1_BB, + SOUND_ZER1_BC, + SOUND_ZER1_BD, + SOUND_ZER1_BE, + SOUND_ZER1_BF, + SOUND_ZER1_BG, + SOUND_ZER1_BH, + SOUND_ZER1_BJ, + SOUND_ZER1_BK, + SOUND_ZER1_BL, + SOUND_ZER1_BM, + SOUND_ZER1_BN, + SOUND_ZER1_CA, + SOUND_ZER1_DA, + SOUND_ZER1_DB, + SOUND_ZER1_EA, + SOUND_ZER1_EB, + SOUND_ZER1_EC, + SOUND_ZER1_FA, + SOUND_ZER1_FB, + SOUND_ZER1_FC, + SOUND_ZER1_FD, + SOUND_ZER1_FE, + SOUND_ZER1_FF, + SOUND_ZER1_FG, + SOUND_ZER1_FH, + SOUND_ZER2_AA = 44800, + SOUND_ZER2_AB, + SOUND_ZER2_AC, + SOUND_ZER2_AD, + SOUND_ZER2_BA, + SOUND_ZER2_BB, + SOUND_ZER2_CA, + SOUND_ZER2_CB, + SOUND_ZER2_CC, + SOUND_ZER2_CD, + SOUND_ZER2_CE, + SOUND_ZER2_DA, + SOUND_ZER2_DB, + SOUND_ZER2_DC, + SOUND_ZER2_DD, + SOUND_ZER2_EA, + SOUND_ZER2_EB, + SOUND_ZER2_FA, + SOUND_ZER2_FB, + SOUND_ZER2_FC, + SOUND_ZER2_FD, + SOUND_ZER3_AA = 45000, + SOUND_ZER3_AB, + SOUND_ZER3_AC, + SOUND_ZER3_AD, + SOUND_ZER3_AE, + SOUND_ZER3_AF, + SOUND_ZER3_ZA, + SOUND_ZER3_ZB, + SOUND_ZER3_ZC, + SOUND_ZER3_ZD, + SOUND_ZER3_ZE, + SOUND_ZER3_ZF, + SOUND_ZER4_AA = 45200, + SOUND_ZER4_AB, + SOUND_ZER4_AC, + SOUND_ZER4_AD, + SOUND_ZER4_AE, + SOUND_ZER4_AF, + SOUND_ZER4_BA, + SOUND_ZER4_BB, + SOUND_ZER4_BC, + SOUND_ZER4_CA, + SOUND_ZER4_CB, + SOUND_ZER4_CC, + SOUND_ZER4_DA, + SOUND_ZER4_DB, + SOUND_ZER4_DC, + SOUND_ZER4_DD, + SOUND_ZER4_DE, + SOUND_ZER4_EA, + SOUND_ZER4_EB, + SOUND_ZER4_FA, + SOUND_ZER4_FB, + SOUND_ZER4_FC, + SOUND_ZER4_FD, + SOUND_ZER4_FE, + SOUND_ZER4_FF, + SOUND_ZER4_GA, + SOUND_ZER4_HA, + SOUND_ZER4_HB, + SOUND_ZER4_HC, + SOUND_ZER4_JA, + SOUND_ZER4_JB, + SOUND_ZER4_JC, + SOUND_ZER4_JD, + SOUND_ZER4_JE, + SOUND_ZER4_JF, + SOUND_ZER4_KA, + SOUND_ZER4_KB, + SOUND_ZER4_KC, + SOUND_ZER4_LA, + SOUND_ZER4_LB, + SOUND_ZER4_LC, + SOUND_ZER4_LD, + SOUND_ZER4_MA, + SOUND_ZER4_MB, + SOUND_ZER4_MC, + SOUND_ZER4_MD, + SOUND_ZER4_NA, + SOUND_ZER4_NB, + SOUND_ZER4_NC, + SOUND_ZER4_OA, + SOUND_ZER4_OB, + SOUND_ZER4_OC, + SOUND_ZER4_OD, + SOUND_ZER4_OE, + SOUND_ZER4_OF, + SOUND_ZER4_OG, + SOUND_BLIP_DETECTED = 45400 +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eSprintType.h b/third-party/plugin-sdk/plugin_sa/game_sa/eSprintType.h new file mode 100644 index 00000000..10256d1f --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eSprintType.h @@ -0,0 +1,11 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eSprintType { + +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eStatModAbilities.h b/third-party/plugin-sdk/plugin_sa/game_sa/eStatModAbilities.h new file mode 100644 index 00000000..683d3d86 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eStatModAbilities.h @@ -0,0 +1,26 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eStatModAbilities { + STAT_MOD_0 = 0, + STAT_MOD_1 = 1, + STAT_MOD_2 = 2, + STAT_MOD_3 = 3, + STAT_MOD_4 = 4, + STAT_MOD_5 = 5, + STAT_MOD_6 = 6, + STAT_MOD_TIME_CAN_RUN = 7, + STAT_MOD_AIR_IN_LUNG = 8, + STAT_MOD_MAX_HEALTH = 9, + STAT_MOD_10 = 10, + STAT_MOD_11 = 11, + STAT_MOD_12 = 12, + STAT_MOD_13 = 13, + STAT_MOD_14 = 14, + STAT_MOD_15 = 15 +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eStats.h b/third-party/plugin-sdk/plugin_sa/game_sa/eStats.h new file mode 100644 index 00000000..a8b59583 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eStats.h @@ -0,0 +1,319 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +/* + https://www.gtamodding.com/wiki/List_of_statistics_(SA) +*/ + +enum eStats { + STAT_PROGRESS_MADE = 0, + STAT_TOTAL_PROGRESS = 1, + STAT_FURTHEST_HOOP = 2, + STAT_DISTANCE_TRAVELLED_ON_FOOT = 3, + STAT_DISTANCE_TRAVELLED_BY_CAR = 4, + STAT_DISTANCE_TRAVELLED_BY_MOTORBIKE = 5, + STAT_DISTANCE_TRAVELLED_BY_BOAT = 6, + STAT_DISTANCE_TRAVELLED_BY_GOLF_CART = 7, + STAT_DISTANCE_TRAVELLED_BY_HELICOPTER = 8, + STAT_DISTANCE_TRAVELLED_BY_PLANE = 9, + STAT_LONGEST_WHEELIE_DISTANCE = 10, + STAT_LONGEST_STOPPIE_DISTANCE = 11, + STAT_LONGEST_2_WHEELS_DISTANCE = 12, + STAT_WEAPON_BUDGET = 13, + STAT_FASHION_BUDGET = 14, + STAT_PROPERTY_BUDGET = 15, + STAT_AUTO_REPAIR_AND_PAINTING_BUDGET = 16, + STAT_LONGEST_WHEELIE_TIME = 17, + STAT_LONGEST_STOPPIE_TIME = 18, + STAT_LONGEST_2_WHEELS_TIME = 19, + STAT_FOOD_BUDGET = 20, + STAT_FAT = 21, + STAT_STAMINA = 22, + STAT_MUSCLE = 23, + STAT_MAX_HEALTH = 24, + STAT_SEX_APPEAL = 25, + STAT_DISTANCE_TRAVELLED_BY_SWIMMING = 26, + STAT_DISTANCE_TRAVELLED_BY_BICYCLE = 27, + STAT_DISTANCE_TRAVELLED_ON_TREADMILL = 28, + STAT_DISTANCE_TRAVELLED_ON_EXERCISE_BIKE = 29, + STAT_TATTOO_BUDGET = 30, + STAT_HAIRDRESSING_BUDGET = 31, + STAT_GIRLFRIEND_BUDGET = 32, + STAT_PROSTITUTE_BUDGET = 33, + STAT_FURNITURE_BUDGET = 34, + STAT_MONEY_SPENT_GAMBLING = 35, + STAT_MONEY_MADE_FROM_PIMPING = 36, + STAT_MONEY_WON_GAMBLING = 37, + STAT_BIGGEST_GAMBLING_WIN = 38, + STAT_BIGGEST_GAMBLING_LOSS = 39, + STAT_LARGEST_BURGLARY_SWAG = 40, + STAT_MONEY_MADE_FROM_BURGLARY = 41, + STAT_MONEY_SPENT_BUILDING_PROPERTY = 42, + STAT_UNUSED = 43, + STAT_LONGEST_TREADMILL_TIME = 44, + STAT_LONGEST_EXERCISE_BIKE_TIME = 45, + STAT_HEAVIEST_WEIGHT_ON_BENCH_PRESS = 46, + STAT_HEAVIEST_WEIGHT_ON_DUMBBELLS = 47, + STAT_BEST_TIME_IN_8_TRACK = 48, + STAT_BMX_BEST_TIME = 49, + STAT_LIGHTEST_WEIGHT = 50, + STAT_LONGEST_CHASE_TIME_WITH_5_OR_MORE_STARS = 51, + STAT_LAST_CHASE_TIME_WITH_5_OR_MORE_STARS = 52, + STAT_WAGE_BILL = 53, + STAT_STRIP_CLUB_BUDGET = 54, + STAT_CAR_MODIFICATION_BUDGET = 55, + STAT_TIME_SPENT_SHOPPING = 56, + STAT_TIME_SPENT_GAMBLING = 57, + STAT_TIME_SPENT_ON_LONGEST_MISSION = 58, + STAT_TIME_SPENT_ON_QUICKEST_MISSION = 59, + STAT_AVERAGE_MISSION_TIME = 60, + STAT_DRUGS_BUDGET = 61, + STAT_TOTAL_SHOPPING_BUDGET = 62, + STAT_TIME_SPENT_UNDERWATER = 63, + STAT_TOTAL_RESPECT = 64, + STAT_GIRLFRIEND_RESPECT = 65, + STAT_CLOTHES_RESPECT = 66, + STAT_FITNESS_RESPECT = 67, + STAT_RESPECT = 68, + STAT_PISTOL_SKILL = 69, + STAT_SILENCED_PISTOL_SKILL = 70, + STAT_DESERT_EAGLE_SKILL = 71, + STAT_SHOTGUN_SKILL = 72, + STAT_SAWN_OFF_SHOTGUN_SKILL = 73, + STAT_COMBAT_SHOTGUN_SKILL = 74, + STAT_MACHINE_PISTOL_SKILL = 75, + STAT_SMG_SKILL = 76, + STAT_AK_47_SKILL = 77, + STAT_M4_SKILL = 78, + STAT_RIFLE_SKILL = 79, + STAT_APPEARANCE = 80, + STAT_GAMBLING = 81, + STAT_PEOPLE_WASTED_BY_OTHERS = 120, + STAT_PEOPLE_YOUVE_WASTED = 121, + STAT_ROAD_VEHICLES_DESTROYED = 122, + STAT_BOATS_DESTROYED = 123, + STAT_PLANES_HELICOPTERS_DESTROYED = 124, + STAT_COST_OF_PROPERTY_DAMAGED = 125, + STAT_BULLETS_FIRED = 126, + STAT_KGS_OF_EXPLOSIVES_USED = 127, + STAT_BULLETS_THAT_HIT = 128, + STAT_TIRES_POPPED_WITH_GUNFIRE = 129, + STAT_NUMBER_OF_HEADSHOTS = 130, + STAT_TOTAL_NUMBER_OF_WANTED_STARS_ATTAINED = 131, + STAT_TOTAL_NUMBER_OF_WANTED_STARS_EVADED = 132, + STAT_TIMES_BUSTED = 133, + STAT_DAYS_PASSED_IN_GAME = 134, + STAT_NUMBER_OF_HOSPITAL_VISITS = 135, + STAT_SAFEHOUSE_VISITS = 136, + STAT_TIMES_CHEATED = 137, + STAT_VEHICLE_RESPRAYS = 138, + STAT_MAXIMUM_INSANE_JUMP_DISTANCE = 139, + STAT_MAXIMUM_INSANE_JUMP_HEIGHT = 140, + STAT_MAXIMUM_INSANE_JUMP_FLIPS = 141, + STAT_MAXIMUM_INSANE_JUMP_ROTATION = 142, + STAT_BEST_INSANE_STUNT_AWARDED = 143, + STAT_UNIQUE_JUMPS_FOUND = 144, + STAT_UNIQUE_JUMPS_DONE = 145, + STAT_MISSION_ATTEMPTS = 146, + STAT_MISSIONS_PASSED = 147, + STAT_TOTAL_NUMBER_OF_MISSIONS_IN_GAME = 148, + STAT_CASH_MADE_IN_A_TAXI = 149, + STAT_PASSENGERS_DROPPED_OFF = 150, + STAT_PEOPLE_SAVED_IN_AN_AMBULANCE = 151, + STAT_CRIMINALS_KILLED_ON_VIGILANTE_MISSION = 152, + STAT_TOTAL_FIRES_EXTINGUISHED = 153, + STAT_PACKAGES_DELIVERED = 154, + STAT_ASSASSINATIONS = 155, + STAT_LAST_DANCE_SCORE = 156, + STAT_HIGHEST_VIGILANTE_MISSION_LEVEL = 157, + STAT_HIGHEST_PARAMEDIC_MISSION_LEVEL = 158, + STAT_HIGHEST_FIREFIGHTER_MISSION_LEVEL = 159, + STAT_DRIVING_SKILL = 160, + STAT_NUMBER_OF_TRUCK_MISSIONS_PASSED = 161, + STAT_MONEY_MADE_IN_TRUCK = 162, + STAT_RECRUITED_GANG_MEMBERS_KILLED = 163, + STAT_ARMOR = 164, + STAT_ENERGY = 165, + STAT_PHOTOGRAPHS_TAKEN = 166, + STAT_RAMPAGES_ATTEMPTED = 167, + STAT_RAMPAGES_PASSED = 168, + STAT_FLIGHT_TIME = 169, + STAT_TIMES_DROWNED = 170, + STAT_NUMBER_OF_GIRLS_PIMPED = 171, + STAT_BEST_POSITION_IN_8_TRACK = 172, + STAT_TIME_ON_JETPACK = 173, + STAT_SHOOTING_RANGE_LEVELS_PASSED = 174, + STAT_MOST_CARS_PARKED_ON_VALET_PARKING = 175, + STAT_KILLS_SINCE_LAST_CHECKPOINT = 176, + STAT_TOTAL_LEGITIMATE_KILLS = 177, + STAT_NUMBER_OF_BLOODRING_KILLS = 178, + STAT_TOTAL_TIME_IN_BLOODRING = 179, + STAT_NO_MORE_HURRICANES_FLAG = 180, + STAT_CITY_UNLOCKED = 181, + STAT_NUMBER_OF_POLICE_BRIBES = 182, + STAT_NUMBER_OF_CARS_STOLEN = 183, + STAT_CURRENT_NUMBER_OF_GIRLFRIENDS = 184, + STAT_NUMBER_OF_DISASTROUS_DATES = 185, + STAT_NUMBER_OF_GIRLS_DATED = 186, + STAT_NUMBER_OF_TIMES_SCORED_WITH_A_GIRL = 187, + STAT_NUMBER_OF_SUCCESSFUL_DATES = 188, + STAT_NUMBER_OF_GIRLS_DUMPED = 189, + STAT_NUMBER_OF_PROSTITUTES_VISITED = 190, + STAT_NUMBER_OF_HOUSES_BURGLED = 191, + STAT_NUMBER_OF_SAFES_CRACKED = 192, + STAT_BURGULAR_STATUS = 193, + STAT_NUMBER_OF_STOLEN_ITEMS_SOLD = 194, + STAT_NUMBER_OF_EIGHT_BALLS_IN_POOL = 195, + STAT_TOTAL_NUMBER_OF_WINS_PLAYING_POOL = 196, + STAT_TOTAL_NUMBER_OF_LOSSES_PLAYING_POOL = 197, + STAT_TIMES_VISITED_THE_GYM = 198, + STAT_BODY_TYPE = 199, + STAT_NUMBER_OF_MEALS_EATEN = 200, + STAT_MONEY_MADE_IN_QUARRY = 201, + STAT_TIME_TAKEN_TO_COMPLETE_QUARRY = 202, + STAT_NUMBER_OF_FURNITURE_PURCHASED = 203, + STAT_FAVORITE_CONSOLE_GAME = 204, + STAT_HIGHEST_CIVILIAN_PEDS_KILLED_ON_RAMPAGE = 205, + STAT_HIGHEST_POLICE_PEDS_KILLED_ON_RAMPAGE = 206, + STAT_HIGHEST_CIVILIAN_VEHICLES_DESTROYED_ON_RAMPAGE = 207, + STAT_HIGHEST_POLICE_VEHICLES_DESTROYED_ON_RAMPAGE = 208, + STAT_HIGHEST_NUMBER_OF_TANKS_DESTROYED_ON_RAMPAGE = 209, + STAT_PIMPING_LEVEL = 210, + STAT_KICKSTART_BEST_SCORE = 211, + STAT_BEST_LAP_TIME_IN_8_TRACK = 212, + STAT_NUMBER_OF_VEHICLES_EXPORTED = 213, + STAT_NUMBER_OF_VEHICLES_IMPORTED = 214, + STAT_HIGHEST_BASKETBALL_SCORE = 215, + STAT_FIRES_STARTED = 216, + STAT_AMOUNT_OF_DRUGS_SOLD = 217, + STAT_AMOUNT_OF_DRUGS_BOUGHT = 218, + STAT_BEST_LAP_TIME_IN_DIRT_TRACK = 219, + STAT_BEST_TIME_IN_DIRT_TRACK = 220, + STAT_BEST_POSITION_IN_DIRT_TRACK = 221, + STAT_NRG_500_BEST_TIME = 222, + STAT_FLYING_SKILL = 223, + STAT_RESPECT_MISSION = 224, + STAT_LUNG_CAPACITY = 225, + STAT_GAME_GORE_RATING = 226, + STAT_GAME_SEX_RATING = 227, + STAT_RESPECT_MISSION_TOTAL = 228, + STAT_BIKE_SKILL = 229, + STAT_CYCLING_SKILL = 230, + STAT_SNAPSHOTS_TAKEN = 231, + STAT_TOTAL_SNAPSHOTS = 232, + STAT_LUCK = 233, + STAT_TERRITORIES_TAKEN_OVER = 234, + STAT_TERRITORIES_LOST = 235, + STAT_TERRITORIES_HELD = 236, + STAT_HIGHEST_NUMBER_OF_TERRITORIES_HELD = 237, + STAT_GANG_MEMBERS_RECRUITED = 238, + STAT_ENEMY_GANG_MEMBERS_KILLED = 239, + STAT_FRIENDLY_GANG_MEMBERS_KILLED = 240, + STAT_HORSESHOES_COLLECTED = 241, + STAT_TOTAL_HORSESHOES = 242, + STAT_OYSTERS_COLLECTED = 243, + STAT_TOTAL_OYSTERS = 244, + STAT_CALORIES = 245, + STAT_2_PLAYER_RAMPAGE_BEST_TIME = 246, + STAT_2_PLAYER_CAR_RAMPAGE_BEST_TIME = 247, + STAT_2_PLAYER_ON_FOOT_RAMPAGE_BEST_TIME = 248, + STAT_2_PLAYER_CHOPPER_RAMPAGE_BEST_TIME = 249, + STAT_2_PLAYER_BIKE_RAMPAGE_BEST_TIME = 250, + STAT_KEEPIE_UPPY_BEST_TIME = 251, + STAT_PROGRESS_WITH_DENISE = 252, + STAT_PROGRESS_WITH_MICHELLE = 253, + STAT_PROGRESS_WITH_HELENA = 254, + STAT_PROGRESS_WITH_BARBARA = 255, + STAT_PROGRESS_WITH_KATIE = 256, + STAT_PROGRESS_WITH_MILLIE = 257, + STAT_BEST_POSITION_IN_LOWRIDER_RACE = 258, + STAT_BEST_TIME_IN_LOWRIDER_RACE = 259, + STAT_BEST_POSITION_IN_LITTLE_LOOP = 260, + STAT_BEST_TIME_IN_LITTLE_LOOP = 261, + STAT_BEST_POSITION_IN_BACKROAD_WANDERER = 262, + STAT_BEST_TIME_IN_BACKROAD_WANDERER = 263, + STAT_BEST_POSITION_IN_CITY_CIRCUIT = 264, + STAT_BEST_TIME_IN_CITY_CIRCUIT = 265, + STAT_BEST_POSITION_IN_VINEWOOD = 266, + STAT_BEST_TIME_IN_VINEWOOD = 267, + STAT_BEST_POSITION_IN_FREEWAY = 268, + STAT_BEST_TIME_IN_FREEWAY = 269, + STAT_BEST_POSITION_IN_INTO_THE_COUNTRY = 270, + STAT_BEST_TIME_IN_INTO_THE_COUNTRY = 271, + STAT_BEST_POSITION_IN_BADLANDS_A = 272, + STAT_BEST_TIME_IN_BADLANDS_A = 273, + STAT_BEST_POSITION_IN_BADLANDS_B = 274, + STAT_BEST_TIME_IN_BADLANDS_B = 275, + STAT_BEST_POSITION_IN_DIRTBIKE_DANGER = 276, + STAT_BEST_TIME_IN_DIRTBIKE_DANGER = 277, + STAT_BEST_POSITION_IN_BANDITO_COUNTY = 278, + STAT_BEST_TIME_IN_BANDITO_COUNTY = 279, + STAT_BEST_POSITION_IN_GO_GO_KART = 280, + STAT_BEST_TIME_IN_GO_GO_KART = 281, + STAT_BEST_POSITION_IN_SAN_FIERRO_FASTLANE = 282, + STAT_BEST_TIME_IN_SAN_FIERRO_FASTLANE = 283, + STAT_BEST_POSITION_IN_SAN_FIERRO_HILLS = 284, + STAT_BEST_TIME_IN_SAN_FIERRO_HILLS = 285, + STAT_BEST_POSITION_IN_COUNTRY_ENDURANCE = 286, + STAT_BEST_TIME_IN_COUNTRY_ENDURANCE = 287, + STAT_BEST_POSITION_IN_SF_TO_LV = 288, + STAT_BEST_TIME_IN_SF_TO_LV = 289, + STAT_BEST_POSITION_IN_DAM_RIDER = 290, + STAT_BEST_TIME_IN_DAM_RIDER = 291, + STAT_BEST_POSITION_IN_DESERT_TRICKS = 292, + STAT_BEST_TIME_IN_DESERT_TRICKS = 293, + STAT_BEST_POSITION_IN_LV_RINGROAD = 294, + STAT_BEST_TIME_IN_LV_RINGROAD = 295, + STAT_BEST_TIME_IN_WORLD_WAR_ACES = 296, + STAT_BEST_TIME_IN_BARNSTORMING = 297, + STAT_BEST_TIME_IN_MILITARY_SERVICE = 298, + STAT_BEST_TIME_IN_CHOPPER_CHECKPOINT = 299, + STAT_BEST_TIME_IN_WHIRLY_BIRD_WAYPOINT = 300, + STAT_BEST_TIME_IN_HELI_HELL = 301, + STAT_DRIVE_THRU_MISSION_ACCOMPLISHED = 302, + STAT_MANAGEMENT_ISSUES_MISSION_ACCOMPLISHED = 303, + STAT_555_WE_TIP_MISSION_ACCOMPLISHED = 304, + STAT_YAY_KA_BOOM_BOOM_MISSION_ACCOMPLISHED = 305, + STAT_FISH_IN_A_BARREL_MISSION_ACCOMPLISHED = 306, + STAT_BREAKING_THE_BANK_AT_CALIGULAS_MISSION_ACCOMPLISHED = 307, + STAT_A_HOME_IN_THE_HILLS_MISSION_ACCOMPLISHED = 308, + STAT_MAYBE_SET_RIOT_MODE = 309, + STAT_RYDERS_MISSION_ROBBING_UNCLE_SAM_ACCOMPLISHED = 310, + STAT_MIKE_TORENO_MISSION_ACCOMPLISHED = 311, + STAT_ARCHITECTURAL_ESPIONAGE_MISSION_ACCOMPLISHED = 312, + STAT_JIZZY_MISSION_ACCOMPLISHED = 313, + STAT_REUNITING_THE_FAMILIES_MISSION_ACCOMPLISHED = 314, + STAT_SMALL_TOWN_BANK_MISSION_ACCOMPLISHED = 315, + STAT_PHOTO_OPPORTUNITY_MISSION_ACCOMPLISHED = 316, + STAT_DON_PEYOTE_MISSION_ACCOMPLISHED = 317, + STAT_LOCAL_LIQUOR_STORE_MISSION_ACCOMPLISHED = 318, + STAT_BADLANDS_MISSION_ACCOMPLISHED = 319, + STAT_PLAYING_TIME = 320, + STAT_HIDDEN_PACKAGES_FOUND = 321, + STAT_TAGS_SPRAYED = 322, + STAT_LEAST_FAVORITE_GANG = 323, + STAT_GANG_MEMBERS_WASTED = 324, + STAT_CRIMINALS_WASTED = 325, + STAT_MOST_FAVORITE_RADIO_STATION = 326, + STAT_LEAST_FAVORITE_RADIO_STATION = 327, + STAT_CURRENT_WEAPON_SKILL = 328, + STAT_WEAPON_SKILL_LEVELS = 329, + STAT_PILOT_RANKING = 330, + STAT_STRONGEST_GANG = 331, + STAT_2ND_STRONGEST_GANG = 332, + STAT_3RD_STRONGEST_GANG = 333, + STAT_MONEY_LOST_GAMBLING = 334, + STAT_RIOT_MISSION_ACCOMPLISHED = 335, + STAT_GANG_STRENGTH = 336, + STAT_TERRITORY_UNDER_CONTROL = 337, + STAT_ARE_YOU_GOING_TO_SAN_FIERRO_MISSION_ACCOMPLISHED = 338, + STAT_HIGH_NOON_MISSION_ACCOMPLISHED = 339, + STAT_THE_GREEN_SABRE_MISSION_ACCOMPLISHED = 340, + STAT_MAYBE_CATALINA_MEETING = 341, + STAT_MAYBE_WU_ZI_MEETING = 342 +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eStatsReactions.h b/third-party/plugin-sdk/plugin_sa/game_sa/eStatsReactions.h new file mode 100644 index 00000000..0b6235f1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eStatsReactions.h @@ -0,0 +1,69 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eStatsReactions { + STAT_INC_CYCLE_STAMINA = 0, + STAT_INC_SWIM_STAMINA = 1, + STAT_INC_SPRINT_STAMINA = 2, + STAT_INC_RUNNING = 3, + STAT_INC_DRIVING_SKILL = 4, + STAT_INC_FLYING_SKILL = 5, + STAT_INC_CYCLE_SKILL = 6, + STAT_INC_MOTORBIKE_SKILL = 7, + STAT_INC_BOAT_SKILL = 8, + STAT_INC_BODY_MUSCLE = 9, + STAT_INC_BREATH_UNDERWATER = 10, + STAT_INC_MAX_HEALTH = 11, + STAT_INC_PISTOL_SKILL = 12, + STAT_INC_PISTOL_SILENCED_SKILL = 13, + STAT_INC_DESERT_EAGLE_SKILL = 14, + STAT_INC_SHOTGUN_SKILL = 15, + STAT_INC_SAWNOFF_SHOTGUN_SKILL = 16, + STAT_INC_SPAS12_SHOTGUN_SKILL = 17, + STAT_INC_MICRO_UZI_SKILL = 18, + STAT_INC_MP5_SKILL = 19, + STAT_INC_AK47_SKILL = 20, + STAT_INC_M4_SKILL = 21, + STAT_INC_SNIPERRIFLE_SKILL = 22, + STAT_DEC_FAT = 23, + STAT_DEC_BODY_MUSCLE = 24, + STAT_DEC_MAX_HEALTH = 25, + STAT_EXERCISE_RATE_CYCLE = 26, + STAT_EXERCISE_RATE_CYCLE_SPRINT = 27, + STAT_EXERCISE_RATE_SWIM = 28, + STAT_EXERCISE_RATE_SWIM_SPRINT = 29, + STAT_EXERCISE_RATE_SPRINT = 30, + STAT_EXERCISE_RATE_RUN = 31, + STAT_EXERCISE_RATE_FIGHT = 32, + STAT_TIMELIMIT_CYCLE_STAMINA = 33, + STAT_TIMELIMIT_SWIM_STAMINA = 34, + STAT_TIMELIMIT_SPRINT_STAMINA = 35, + STAT_TIMELIMIT_RUNNING = 36, + STAT_TIMELIMIT_DRIVING_SKILL = 37, + STAT_TIMELIMIT_FLYING_SKILL = 38, + STAT_TIMELIMIT_CYCLE_SKILL = 39, + STAT_TIMELIMIT_MOTORBIKE_SKILL = 40, + STAT_TIMELIMIT_BOAT_SKILL = 41, + STAT_TIMELIMIT_FAT_ADJUST = 42, + STAT_TIMELIMIT_FAT_ADJUST_STRENUOUS = 43, + STAT_TIMELIMIT_BREATH_UNDERWATER = 44, + STAT_TIMELIMIT_MAX_HEALTH = 45, + STAT_TIMELIMIT_PISTOL_SKILL = 46, + STAT_TIMELIMIT_PISTOL_SILENCED_SKILL = 47, + STAT_TIMELIMIT_DESERT_EAGLE_SKILL = 48, + STAT_TIMELIMIT_SHOTGUN_SKILL = 49, + STAT_TIMELIMIT_SAWNOFF_SHOTGUN_SKILL = 50, + STAT_TIMELIMIT_SPAS12_SHOTGUN_SKILL = 51, + STAT_TIMELIMIT_MICRO_UZI_SKILL = 52, + STAT_TIMELIMIT_MP5_SKILL = 53, + STAT_TIMELIMIT_AK47_SKILL = 54, + STAT_TIMELIMIT_M4_SKILL = 55, + STAT_TIMELIMIT_SNIPERRIFLE_SKILL = 56, + STAT_TIMELIMIT_DEATH_HEALTH = 57, + STAT_TIMELIMIT_ADD_TO_HEALTH = 58 +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eSurfaceType.h b/third-party/plugin-sdk/plugin_sa/game_sa/eSurfaceType.h new file mode 100644 index 00000000..e1fd128c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eSurfaceType.h @@ -0,0 +1,191 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eSurfaceType { + SURFACE_DEFAULT = 0, + SURFACE_TARMAC = 1, + SURFACE_TARMAC_FUCKED = 2, + SURFACE_TARMAC_REALLYFUCKED = 3, + SURFACE_PAVEMENT = 4, + SURFACE_PAVEMENT_FUCKED = 5, + SURFACE_GRAVEL = 6, + SURFACE_FUCKED_CONCRETE = 7, + SURFACE_PAINTED_GROUND = 8, + SURFACE_GRASS_SHORT_LUSH = 9, + SURFACE_GRASS_MEDIUM_LUSH = 10, + SURFACE_GRASS_LONG_LUSH = 11, + SURFACE_GRASS_SHORT_DRY = 12, + SURFACE_GRASS_MEDIUM_DRY = 13, + SURFACE_GRASS_LONG_DRY = 14, + SURFACE_GOLFGRASS_ROUGH = 15, + SURFACE_GOLFGRASS_SMOOTH = 16, + SURFACE_STEEP_SLIDYGRASS = 17, + SURFACE_STEEP_CLIFF = 18, + SURFACE_FLOWERBED = 19, + SURFACE_MEADOW = 20, + SURFACE_WASTEGROUND = 21, + SURFACE_WOODLANDGROUND = 22, + SURFACE_VEGETATION = 23, + SURFACE_MUD_WET = 24, + SURFACE_MUD_DRY = 25, + SURFACE_DIRT = 26, + SURFACE_DIRTTRACK = 27, + SURFACE_SAND_DEEP = 28, + SURFACE_SAND_MEDIUM = 29, + SURFACE_SAND_COMPACT = 30, + SURFACE_SAND_ARID = 31, + SURFACE_SAND_MORE = 32, + SURFACE_SAND_BEACH = 33, + SURFACE_CONCRETE_BEACH = 34, + SURFACE_ROCK_DRY = 35, + SURFACE_ROCK_WET = 36, + SURFACE_ROCK_CLIFF = 37, + SURFACE_WATER_RIVERBED = 38, + SURFACE_WATER_SHALLOW = 39, + SURFACE_CORNFIELD = 40, + SURFACE_HEDGE = 41, + SURFACE_WOOD_CRATES = 42, + SURFACE_WOOD_SOLID = 43, + SURFACE_WOOD_THIN = 44, + SURFACE_GLASS = 45, + SURFACE_GLASS_WINDOWS_LARGE = 46, + SURFACE_GLASS_WINDOWS_SMALL = 47, + SURFACE_EMPTY1 = 48, + SURFACE_EMPTY2 = 49, + SURFACE_GARAGE_DOOR = 50, + SURFACE_THICK_METAL_PLATE = 51, + SURFACE_SCAFFOLD_POLE = 52, + SURFACE_LAMP_POST = 53, + SURFACE_METAL_GATE = 54, + SURFACE_METAL_CHAIN_FENCE = 55, + SURFACE_GIRDER = 56, + SURFACE_SURFACE_FIRE_HYDRANT = 57, + SURFACE_CONTAINER = 58, + SURFACE_NEWS_VENDOR = 59, + SURFACE_WHEELBASE = 60, + SURFACE_CARDBOARDBOX = 61, + SURFACE_PED = 62, + SURFACE_CAR = 63, + SURFACE_CAR_PANEL = 64, + SURFACE_CAR_MOVINGCOMPONENT = 65, + SURFACE_TRANSPARENT_CLOTH = 66, + SURFACE_RUBBER = 67, + SURFACE_PLASTIC = 68, + SURFACE_TRANSPARENT_STONE = 69, + SURFACE_WOOD_BENCH = 70, + SURFACE_CARPET = 71, + SURFACE_FLOORBOARD = 72, + SURFACE_STAIRSWOOD = 73, + SURFACE_P_SAND = 74, + SURFACE_P_SAND_DENSE = 75, + SURFACE_P_SAND_ARID = 76, + SURFACE_P_SAND_COMPACT = 77, + SURFACE_P_SAND_ROCKY = 78, + SURFACE_P_SANDBEACH = 79, + SURFACE_P_GRASS_SHORT = 80, + SURFACE_P_GRASS_MEADOW = 81, + SURFACE_P_GRASS_DRY = 82, + SURFACE_P_WOODLAND = 83, + SURFACE_P_WOODDENSE = 84, + SURFACE_P_ROADSIDE = 85, + SURFACE_P_ROADSIDEDES = 86, + SURFACE_P_FLOWERBED = 87, + SURFACE_P_WASTEGROUND = 88, + SURFACE_P_CONCRETE = 89, + SURFACE_P_OFFICEDESK = 90, + SURFACE_P_711SHELF1 = 91, + SURFACE_P_711SHELF2 = 92, + SURFACE_P_711SHELF3 = 93, + SURFACE_P_RESTUARANTTABLE = 94, + SURFACE_P_BARTABLE = 95, + SURFACE_P_UNDERWATERLUSH = 96, + SURFACE_P_UNDERWATERBARREN = 97, + SURFACE_P_UNDERWATERCORAL = 98, + SURFACE_P_UNDERWATERDEEP = 99, + SURFACE_P_RIVERBED = 100, + SURFACE_P_RUBBLE = 101, + SURFACE_P_BEDROOMFLOOR = 102, + SURFACE_P_KIRCHENFLOOR = 103, + SURFACE_P_LIVINGRMFLOOR = 104, + SURFACE_P_CORRIDORFLOOR = 105, + SURFACE_P_711FLOOR = 106, + SURFACE_P_FASTFOODFLOOR = 107, + SURFACE_P_SKANKYFLOOR = 108, + SURFACE_P_MOUNTAIN = 109, + SURFACE_P_MARSH = 110, + SURFACE_P_BUSHY = 111, + SURFACE_P_BUSHYMIX = 112, + SURFACE_P_BUSHYDRY = 113, + SURFACE_P_BUSHYMID = 114, + SURFACE_P_GRASSWEEFLOWERS = 115, + SURFACE_P_GRASSDRYTALL = 116, + SURFACE_P_GRASSLUSHTALL = 117, + SURFACE_P_GRASSGRNMIX = 118, + SURFACE_P_GRASSBRNMIX = 119, + SURFACE_P_GRASSLOW = 120, + SURFACE_P_GRASSROCKY = 121, + SURFACE_P_GRASSSMALLTREES = 122, + SURFACE_P_DIRTROCKY = 123, + SURFACE_P_DIRTWEEDS = 124, + SURFACE_P_GRASSWEEDS = 125, + SURFACE_P_RIVEREDGE = 126, + SURFACE_P_POOLSIDE = 127, + SURFACE_P_FORESTSTUMPS = 128, + SURFACE_P_FORESTSTICKS = 129, + SURFACE_P_FORRESTLEAVES = 130, + SURFACE_P_DESERTROCKS = 131, + SURFACE_P_FORRESTDRY = 132, + SURFACE_P_SPARSEFLOWERS = 133, + SURFACE_P_BUILDINGSITE = 134, + SURFACE_P_DOCKLANDS = 135, + SURFACE_P_INDUSTRIAL = 136, + SURFACE_P_INDUSTJETTY = 137, + SURFACE_P_CONCRETELITTER = 138, + SURFACE_P_ALLEYRUBISH = 139, + SURFACE_P_JUNKYARDPILES = 140, + SURFACE_P_JUNKYARDGRND = 141, + SURFACE_P_DUMP = 142, + SURFACE_P_CACTUSDENSE = 143, + SURFACE_P_AIRPORTGRND = 144, + SURFACE_P_CORNFIELD = 145, + SURFACE_P_GRASSLIGHT = 146, + SURFACE_P_GRASSLIGHTER = 147, + SURFACE_P_GRASSLIGHTER2 = 148, + SURFACE_P_GRASSMID1 = 149, + SURFACE_P_GRASSMID2 = 150, + SURFACE_P_GRASSDARK = 151, + SURFACE_P_GRASSDARK2 = 152, + SURFACE_P_GRASSDIRTMIX = 153, + SURFACE_P_RIVERBEDSTONE = 154, + SURFACE_P_RIVERBEDSHALLOW = 155, + SURFACE_P_RIVERBEDWEEDS = 156, + SURFACE_P_SEAWEED = 157, + SURFACE_DOOR = 158, + SURFACE_PLASTICBARRIER = 159, + SURFACE_PARKGRASS = 160, + SURFACE_STAIRSSTONE = 161, + SURFACE_STAIRSMETAL = 162, + SURFACE_STAIRSCARPET = 163, + SURFACE_FLOORMETAL = 164, + SURFACE_FLOORCONCRETE = 165, + SURFACE_BIN_BAG = 166, + SURFACE_THIN_METAL_SHEET = 167, + SURFACE_METAL_BARREL = 168, + SURFACE_PLASTIC_CONE = 169, + SURFACE_PLASTIC_DUMPSTER = 170, + SURFACE_METAL_DUMPSTER = 171, + SURFACE_WOOD_PICKET_FENCE = 172, + SURFACE_WOOD_SLATTED_FENCE = 173, + SURFACE_WOOD_RANCH_FENCE = 174, + SURFACE_UNBREAKABLE_GLASS = 175, + SURFACE_HAY_BALE = 176, + SURFACE_GORE = 177, + SURFACE_RAILTRACK = 178, + + TOTAL_NUM_SURFACE_TYPES +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eTaskType.h b/third-party/plugin-sdk/plugin_sa/game_sa/eTaskType.h new file mode 100644 index 00000000..80e9ed6a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eTaskType.h @@ -0,0 +1,574 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +/* multitheftauto /MTA10/sdk/game/TaskTypes.h */ + +enum eTaskType : int +{ + //player tasks + TASK_SIMPLE_PLAYER_ON_FOOT = 0, + + TASK_SIMPLE_PLAYER_IN_CAR, + + //emergency services tasks + TASK_COMPLEX_MEDIC_TREAT_INJURED_PED = 100, + TASK_COMPLEX_TREAT_ACCIDENT, + TASK_SIMPLE_GIVE_CPR, + TASK_COMPLEX_COP_ARREST_PED, + TASK_COMPLEX_COP_HASSLE_PED, + TASK_COMPLEX_HASSLED_BY_COP, + TASK_COMPLEX_PRESENT_ID_TO_COP, + TASK_COMPLEX_DRIVE_FIRE_TRUCK, + TASK_COMPLEX_USE_SWAT_ROPE, + TASK_COMPLEX_USE_WATER_CANNON, + TASK_COMPLEX_EXTINGUISH_FIRE_ON_FOOT, + //SCRIPT_DECISION + + //basic tasks + TASK_NONE = 200, + //SCRIPT_DECISION + TASK_SIMPLE_UNINTERRUPTABLE, + TASK_SIMPLE_PAUSE, + //SCRIPT_DECISION + TASK_SIMPLE_STAND_STILL, + //SCRIPT_DECISION + TASK_SIMPLE_SET_STAY_IN_SAME_PLACE, + TASK_SIMPLE_GET_UP, + TASK_COMPLEX_GET_UP_AND_STAND_STILL, + TASK_SIMPLE_FALL, + TASK_COMPLEX_FALL_AND_GET_UP, + //SCRIPT_DECISION + TASK_COMPLEX_FALL_AND_STAY_DOWN, + //SCRIPT_DECISION + TASK_SIMPLE_JUMP, + TASK_COMPLEX_JUMP, + //SCRIPT_DECISION + TASK_SIMPLE_DIE, + TASK_SIMPLE_DROWN, + TASK_SIMPLE_DIE_IN_CAR, + TASK_COMPLEX_DIE_IN_CAR, + TASK_SIMPLE_DROWN_IN_CAR, + TASK_COMPLEX_DIE, + //SCRIPT_DECISION + TASK_SIMPLE_DEAD, + TASK_SIMPLE_TIRED, + TASK_SIMPLE_SIT_DOWN, + TASK_SIMPLE_SIT_IDLE, + TASK_SIMPLE_STAND_UP, + TASK_COMPLEX_SIT_DOWN_THEN_IDLE_THEN_STAND_UP, + TASK_COMPLEX_OBSERVE_TRAFFIC_LIGHTS, + TASK_COMPLEX_OBSERVE_TRAFFIC_LIGHTS_AND_ACHIEVE_HEADING, + TASK_NOT_USED, + TASK_COMPLEX_CROSS_ROAD_LOOK_AND_ACHIEVE_HEADING, + TASK_SIMPLE_TURN_180, + TASK_SIMPLE_HAIL_TAXI, + TASK_COMPLEX_HIT_RESPONSE, + TASK_COMPLEX_HIT_BY_GUN_RESPONSE, + TASK_UNUSED_SLOT, + TASK_COMPLEX_USE_EFFECT, + //SCRIPT_DECISION + TASK_COMPLEX_WAIT_AT_ATTRACTOR, + TASK_COMPLEX_USE_ATTRACTOR, + TASK_COMPLEX_WAIT_FOR_DRY_WEATHER, + TASK_COMPLEX_WAIT_FOR_BUS, + TASK_SIMPLE_WAIT_FOR_BUS, + TASK_SIMPLE_WAIT_FOR_PIZZA, + TASK_COMPLEX_IN_AIR_AND_LAND, + TASK_SIMPLE_IN_AIR, + TASK_SIMPLE_LAND, + TASK_COMPLEX_BE_IN_GROUP, + TASK_COMPLEX_SEQUENCE, + //SCRIPT_DECISION + TASK_SIMPLE_CALL_FOR_BACKUP, + + TASK_COMPLEX_USE_PAIRED_ATTRACTOR, + TASK_COMPLEX_USE_ATTRACTOR_PARTNER, + TASK_COMPLEX_ATTRACTOR_PARTNER_WAIT, + TASK_COMPLEX_USE_SCRIPTED_ATTRACTOR, + TASK_COMPLEX_ON_FIRE, + TASK_SIMPLE_BE_DAMAGED, + //SCRIPT_DECISION + TASK_SIMPLE_TRIGGER_EVENT, + TASK_SIMPLE_RAGDOLL, + TASK_SIMPLE_CLIMB, + TASK_SIMPLE_PLAYER_ON_FIRE, + TASK_COMPLEX_PARTNER, + TASK_COMPLEX_STARE_AT_PED, + TASK_COMPLEX_USE_CLOSEST_FREE_SCRIPTED_ATTRACTOR, + //SCRIPT_DECISION + TASK_COMPLEX_USE_EFFECT_RUNNING, + //SCRIPT_DECISION + TASK_COMPLEX_USE_EFFECT_SPRINTING, + //SCRIPT_DECISION + TASK_COMPLEX_USE_CLOSEST_FREE_SCRIPTED_ATTRACTOR_RUN, + //SCRIPT_DECISION + TASK_COMPLEX_USE_CLOSEST_FREE_SCRIPTED_ATTRACTOR_SPRINT, + //SCRIPT_DECISION + TASK_SIMPLE_CHOKING, + TASK_SIMPLE_IK_CHAIN, + TASK_SIMPLE_IK_MANAGER, + TASK_SIMPLE_IK_LOOK_AT, + TASK_COMPLEX_CLIMB, + TASK_COMPLEX_IN_WATER, + TASK_SIMPLE_TRIGGER_LOOK_AT, + //SCRIPT_DECISION + TASK_SIMPLE_CLEAR_LOOK_AT, + TASK_SIMPLE_SET_CHAR_DECISION_MAKER, + TASK_SIMPLE_IK_POINT_R_ARM, + TASK_SIMPLE_IK_POINT_L_ARM, + TASK_COMPLEX_BE_STILL, + TASK_COMPLEX_USE_SEQUENCE, + TASK_SIMPLE_SET_KINDA_STAY_IN_SAME_PLACE, + TASK_COMPLEX_FALL_TO_DEATH, + TASK_WAIT_FOR_MATCHING_LEADER_AREA_CODES, + + //secondary tasks + TASK_SIMPLE_LOOK_AT_ENTITY_OR_COORD = 300, + //SCRIPT_DECISION + TASK_SIMPLE_SAY, + //SCRIPT_DECISION + TASK_SIMPLE_SHAKE_FIST, + //SCRIPT_DECISION + TASK_SIMPLE_FACIAL, + //SCRIPT_DECISION + TASK_COMPLEX_CHAINED_FACIAL, + TASK_COMPLEX_FACIAL, + TASK_SIMPLE_AFFECT_SECONDARY_BEHAVIOUR, + TASK_SIMPLE_HOLD_ENTITY, + TASK_SIMPLE_PICKUP_ENTITY, // these three aren't really secondary tasks + TASK_SIMPLE_PUTDOWN_ENTITY, // but they exist around the secondary hold entity + TASK_COMPLEX_GO_PICKUP_ENTITY, // task at the start and finish + TASK_SIMPLE_DUCK_WHILE_SHOTS_WHIZZING, + //SCRIPT_DECISION + + //anims (tasks that are sub-classes of CTaskSimpleRunUnloopedAnim) + TASK_SIMPLE_ANIM = 400, + TASK_SIMPLE_NAMED_ANIM, + TASK_SIMPLE_TIMED_ANIM, + TASK_SIMPLE_HIT_BACK, + TASK_SIMPLE_HIT_FRONT, + TASK_SIMPLE_HIT_LEFT, + TASK_SIMPLE_HIT_RIGHT, + TASK_SIMPLE_HIT_BY_GUN_BACK, + TASK_SIMPLE_HIT_BY_GUN_FRONT, + TASK_SIMPLE_HIT_BY_GUN_LEFT, + TASK_SIMPLE_HIT_BY_GUN_RIGHT, + TASK_SIMPLE_HIT_WALL, + TASK_SIMPLE_COWER, + //SCRIPT_DECISION + TASK_SIMPLE_HANDS_UP, + //SCRIPT_DECISION + TASK_SIMPLE_HIT_BEHIND, + TASK_SIMPLE_DUCK, + //SCRIPT_DECISION + TASK_SIMPLE_CHAT, + TASK_COMPLEX_SUNBATHE, + TASK_SIMPLE_SUNBATHE, + TASK_SIMPLE_DETONATE, + TASK_SIMPLE_USE_ATM, + TASK_SIMPLE_SCRATCH_HEAD, + TASK_SIMPLE_LOOK_ABOUT, + TASK_SIMPLE_ABSEIL, + TASK_SIMPLE_ANIM_LOOPED_MIDDLE, + TASK_SIMPLE_HANDSIGNAL_ANIM, + TASK_COMPLEX_HANDSIGNAL_ANIM, + TASK_SIMPLE_DUCK_FOREVER, + //SCRIPT_DECISION + TASK_SIMPLE_START_SUNBATHING, + TASK_SIMPLE_IDLE_SUNBATHING, + TASK_SIMPLE_STOP_SUNBATHING, + + //collision response tasks + TASK_SIMPLE_HIT_HEAD = 500, + TASK_SIMPLE_EVASIVE_STEP, + TASK_COMPLEX_EVASIVE_STEP, + TASK_SIMPLE_EVASIVE_DIVE, + TASK_COMPLEX_EVASIVE_DIVE_AND_GET_UP, + TASK_COMPLEX_HIT_PED_WITH_CAR, + TASK_SIMPLE_KILL_PED_WITH_CAR, + TASK_SIMPLE_HURT_PED_WITH_CAR, + TASK_COMPLEX_WALK_ROUND_CAR, + //SCRIPT_DECISION + TASK_COMPLEX_WALK_ROUND_BUILDING_ATTEMPT, + TASK_COMPLEX_WALK_ROUND_OBJECT, + //SCRIPT_DECISION + TASK_COMPLEX_MOVE_BACK_AND_JUMP, + TASK_COMPLEX_EVASIVE_COWER, + TASK_COMPLEX_DIVE_FROM_ATTACHED_ENTITY_AND_GET_UP, + //SCRIPT_DECISION + TASK_COMPLEX_WALK_ROUND_FIRE, + //SCRIPT_DECISION + TASK_COMPLEX_STUCK_IN_AIR, + + //threat response tasks + TASK_COMPLEX_INVESTIGATE_DEAD_PED = 600, + //SCRIPT_DECISION + TASK_COMPLEX_REACT_TO_GUN_AIMED_AT, + //SCRIPT_DECISION + TASK_COMPLEX_WAIT_FOR_BACKUP, + TASK_COMPLEX_GET_OUT_OF_WAY_OF_CAR, + //SCRIPT_DECISION + TASK_COMPLEX_EXTINGUISH_FIRES, + //SCRIPT_DECISION + + //car tasks + + //public car tasks + TASK_COMPLEX_ENTER_CAR_AS_PASSENGER = 700, + //SCRIPT_DECISION + TASK_COMPLEX_ENTER_CAR_AS_DRIVER, + //SCRIPT_DECISION + TASK_COMPLEX_STEAL_CAR, + //SCRIPT_DECISION + TASK_COMPLEX_DRAG_PED_FROM_CAR, + //SCRIPT_DECISION + TASK_COMPLEX_LEAVE_CAR, + //SCRIPT_DECISION + TASK_COMPLEX_LEAVE_CAR_AND_DIE, + //SCRIPT_DECISION + TASK_COMPLEX_LEAVE_CAR_AND_FLEE, + //SCRIPT_DECISION + TASK_COMPLEX_LEAVE_CAR_AND_WANDER, + //SCRIPT_DECISION + TASK_COMPLEX_SCREAM_IN_CAR_THEN_LEAVE, + //SCRIPT_DECISION + TASK_SIMPLE_CAR_DRIVE, + //SCRIPT_DECISION + TASK_COMPLEX_CAR_DRIVE_TO_POINT, + //SCRIPT_DECISION + TASK_COMPLEX_CAR_DRIVE_WANDER, + //SCRIPT_DECISION + TASK_COMPLEX_ENTER_CAR_AS_PASSENGER_TIMED, + //SCRIPT_DECISION + TASK_COMPLEX_ENTER_CAR_AS_DRIVER_TIMED, + //SCRIPT_DECISION + TASK_COMPLEX_LEAVE_ANY_CAR, + //SCRIPT_DECISION + TASK_COMPLEX_ENTER_BOAT_AS_DRIVER, + + TASK_COMPLEX_LEAVE_BOAT, + TASK_COMPLEX_ENTER_ANY_CAR_AS_DRIVER, + TASK_COMPLEX_ENTER_CAR_AS_PASSENGER_WAIT, + TASK_SIMPLE_CAR_DRIVE_TIMED, + TASK_COMPLEX_SHUFFLE_SEATS, + + TASK_COMPLEX_CAR_DRIVE_POINT_ROUTE, + TASK_COMPLEX_CAR_OPEN_DRIVER_DOOR, + TASK_SIMPLE_CAR_SET_TEMP_ACTION, + TASK_COMPLEX_CAR_DRIVE_MISSION, + TASK_COMPLEX_CAR_DRIVE, + TASK_COMPLEX_CAR_DRIVE_MISSION_FLEE_SCENE, + //SCRIPT_DECISION + TASK_COMPLEX_ENTER_LEADER_CAR_AS_PASSENGER, + TASK_COMPLEX_CAR_OPEN_PASSENGER_DOOR, + TASK_COMPLEX_CAR_DRIVE_MISSION_KILL_PED, + //SCRIPT_DECISION + TASK_COMPLEX_LEAVE_CAR_AS_PASSENGER_WAIT, + + //private car tasks (used only by public car tasks) + TASK_COMPLEX_GO_TO_CAR_DOOR_AND_STAND_STILL = 800, + TASK_SIMPLE_CAR_ALIGN, + TASK_SIMPLE_CAR_OPEN_DOOR_FROM_OUTSIDE, + TASK_SIMPLE_CAR_OPEN_LOCKED_DOOR_FROM_OUTSIDE, + TASK_SIMPLE_BIKE_PICK_UP, + TASK_SIMPLE_CAR_CLOSE_DOOR_FROM_INSIDE, + TASK_SIMPLE_CAR_CLOSE_DOOR_FROM_OUTSIDE, + TASK_SIMPLE_CAR_GET_IN, + + TASK_SIMPLE_CAR_SHUFFLE, + TASK_SIMPLE_CAR_WAIT_TO_SLOW_DOWN, + TASK_SIMPLE_CAR_WAIT_FOR_DOOR_NOT_TO_BE_IN_USE, + TASK_SIMPLE_CAR_SET_PED_IN_AS_PASSENGER, + TASK_SIMPLE_CAR_SET_PED_IN_AS_DRIVER, + TASK_SIMPLE_CAR_GET_OUT, + TASK_SIMPLE_CAR_JUMP_OUT, + TASK_SIMPLE_CAR_FORCE_PED_OUT, + TASK_SIMPLE_CAR_SET_PED_OUT, + + TASK_SIMPLE_CAR_QUICK_DRAG_PED_OUT, + TASK_SIMPLE_CAR_QUICK_BE_DRAGGED_OUT, + TASK_SIMPLE_CAR_SET_PED_QUICK_DRAGGED_OUT, + TASK_SIMPLE_CAR_SLOW_DRAG_PED_OUT, + TASK_SIMPLE_CAR_SLOW_BE_DRAGGED_OUT, + TASK_SIMPLE_CAR_SET_PED_SLOW_DRAGGED_OUT, + TASK_COMPLEX_CAR_SLOW_BE_DRAGGED_OUT, + TASK_COMPLEX_CAR_SLOW_BE_DRAGGED_OUT_AND_STAND_UP, + TASK_COMPLEX_CAR_QUICK_BE_DRAGGED_OUT, + TASK_SIMPLE_BIKE_JACKED, + TASK_SIMPLE_SET_PED_AS_AUTO_DRIVER, + TASK_SIMPLE_GO_TO_POINT_NEAR_CAR_DOOR_UNTIL_DOOR_NOT_IN_USE, + TASK_SIMPLE_WAIT_UNTIL_PED_OUT_CAR, + TASK_COMPLEX_GO_TO_BOAT_STEERING_WHEEL, + TASK_COMPLEX_GET_ON_BOAT_SEAT, + TASK_SIMPLE_CREATE_CAR_AND_GET_IN, + TASK_SIMPLE_WAIT_UNTIL_PED_IN_CAR, + TASK_SIMPLE_CAR_FALL_OUT, + + //goto tasks + TASK_SIMPLE_GO_TO_POINT = 900, + //SCRIPT_DECISION + TASK_COMPLEX_GO_TO_POINT_SHOOTING, + TASK_SIMPLE_ACHIEVE_HEADING, + TASK_COMPLEX_GO_TO_POINT_AND_STAND_STILL, + TASK_COMPLEX_GO_TO_POINT_AND_STAND_STILL_AND_ACHIEVE_HEADING, + TASK_COMPLEX_FOLLOW_POINT_ROUTE, + TASK_COMPLEX_FOLLOW_NODE_ROUTE, + TASK_COMPLEX_SEEK_ENTITY, + //SCRIPT_DECISION + TASK_COMPLEX_FLEE_POINT, + //SCRIPT_DECISION + TASK_COMPLEX_FLEE_ENTITY, + //SCRIPT_DECISION + TASK_COMPLEX_SMART_FLEE_POINT, + //SCRIPT_DECISION + TASK_COMPLEX_SMART_FLEE_ENTITY, + //SCRIPT_DECISION + TASK_COMPLEX_WANDER, + TASK_COMPLEX_FOLLOW_LEADER_IN_FORMATION, + TASK_COMPLEX_FOLLOW_SEXY_PED, + //SCRIPT_DECISION + TASK_COMPLEX_GO_TO_ATTRACTOR, + TASK_COMPLEX_LEAVE_ATTRACTOR, + TASK_COMPLEX_AVOID_OTHER_PED_WHILE_WANDERING, + //SCRIPT_DECISION + TASK_COMPLEX_GO_TO_POINT_ANY_MEANS, + TASK_COMPLEX_WALK_ROUND_SHOP, + TASK_COMPLEX_TURN_TO_FACE_ENTITY, + //SCRIPT_DECISION + TASK_COMPLEX_AVOID_BUILDING, + TASK_COMPLEX_SEEK_ENTITY_ANY_MEANS, + TASK_COMPLEX_FOLLOW_LEADER_ANY_MEANS, + TASK_COMPLEX_GO_TO_POINT_AIMING, + TASK_COMPLEX_TRACK_ENTITY, + TASK_SIMPLE_GO_TO_POINT_FINE, + TASK_COMPLEX_FLEE_ANY_MEANS, + //SCRIPT_DECISION + TASK_COMPLEX_FLEE_SHOOTING, + TASK_COMPLEX_SEEK_ENTITY_SHOOTING, + TASK_UNUSED1, + TASK_COMPLEX_FOLLOW_PATROL_ROUTE, + TASK_COMPLEX_GOTO_DOOR_AND_OPEN, + TASK_COMPLEX_SEEK_ENTITY_AIMING, + //SCRIPT_DECISION + TASK_SIMPLE_SLIDE_TO_COORD, + TASK_COMPLEX_INVESTIGATE_DISTURBANCE, + //SCRIPT_DECISION + TASK_COMPLEX_FOLLOW_PED_FOOTSTEPS, + TASK_COMPLEX_FOLLOW_NODE_ROUTE_SHOOTING, + TASK_COMPLEX_USE_ENTRYEXIT, + TASK_COMPLEX_AVOID_ENTITY, + TASK_SMART_FLEE_ENTITY_WALKING, + + //fight tasks + + TASK_COMPLEX_KILL_PED_ON_FOOT = 1000, + //SCRIPT_DECISION + TASK_COMPLEX_KILL_PED_ON_FOOT_MELEE, + TASK_COMPLEX_KILL_PED_ON_FOOT_ARMED, + TASK_COMPLEX_DESTROY_CAR, + //SCRIPT_DECISION + TASK_COMPLEX_DESTROY_CAR_MELEE, + TASK_COMPLEX_DESTROY_CAR_ARMED, + // TASK_COMPLEX_FIGHT, + // TASK_SIMPLE_FIRE_RANGED, + // TASK_SIMPLE_FIRE_RANGED_CROUCHED, + // TASK_SIMPLE_FIRE_RELOAD, + // TASK_SIMPLE_FIRE_SNIPER, + + // TASK_COMPLEX_ATTACK_RANGED, + // TASK_SIMPLE_AIM_GUN, + // TASK_SIMPLE_FIGHT_IDLE, + // TASK_SIMPLE_FIGHT_SHUFFLE, + // TASK_SIMPLE_ATTACK_MELEE, + // TASK_SIMPLE_FIRE_PROJECTILE, + // TASK_SIMPLE_ATTACK_UNARMED, + // TASK_COMPLEX_THROW_PROJECTILE, + // TASK_SIMPLE_THROW_WEAPON, + TASK_COMPLEX_REACT_TO_ATTACK, + TASK_SIMPLE_BE_KICKED_ON_GROUND, + TASK_SIMPLE_BE_HIT, + TASK_SIMPLE_BE_HIT_WHILE_MOVING, + TASK_COMPLEX_SIDE_STEP_AND_SHOOT, + TASK_SIMPLE_DRIVEBY_SHOOT, + TASK_SIMPLE_DRIVEBY_WATCH_FOR_TARGET, + TASK_COMPLEX_DO_DRIVEBY, + TASK_KILL_ALL_THREATS, + TASK_KILL_PED_GROUP_ON_FOOT, + + // new weapon/fight tasks + TASK_SIMPLE_FIGHT, + TASK_SIMPLE_USE_GUN, + TASK_SIMPLE_THROW, + TASK_SIMPLE_FIGHT_CTRL, + TASK_SIMPLE_GUN_CTRL, + //SCRIPT_DECISION + TASK_SIMPLE_THROW_CTRL, + TASK_SIMPLE_GANG_DRIVEBY, + //SCRIPT_DECISION + + TASK_COMPLEX_KILL_PED_ON_FOOT_TIMED, //SCRIPT_DECISION + TASK_COMPLEX_KILL_PED_ON_FOOT_STAND_STILL, //SCRIPT_DECISION + TASK_UNUSED2, + TASK_KILL_PED_ON_FOOT_WHILE_DUCKING, + //SCRIPT_DECISION + TASK_SIMPLE_STEALTH_KILL, + TASK_COMPLEX_KILL_PED_ON_FOOT_STEALTH, + //SCRIPT_DECISION + TASK_COMPLEX_KILL_PED_ON_FOOT_KINDA_STAND_STILL, + //SCRIPT_DECISION + TASK_COMPLEX_KILL_PED_AND_REENTER_CAR, + TASK_COMPLEX_ROAD_RAGE, + //SCRIPT_DECISION + TASK_KILL_PED_FROM_BOAT, + TASK_SIMPLE_SET_CHAR_IGNORE_WEAPON_RANGE_FLAG, + + TASK_SEEK_COVER_UNTIL_TARGET_DEAD, + + //police tasks + + TASK_SIMPLE_ARREST_PED = 1100, + + TASK_COMPLEX_ARREST_PED, + //SCRIPT_DECISION + TASK_SIMPLE_BE_ARRESTED, + TASK_COMPLEX_POLICE_PURSUIT, + TASK_COMPLEX_BE_COP, + TASK_COMPLEX_KILL_CRIMINAL, + //SCRIPT_DECISION + TASK_COMPLEX_COP_IN_CAR, + + //gang/partner tasks + + TASK_SIMPLE_INFORM_GROUP = 1200, + //SCRIPT_DECISION + TASK_COMPLEX_GANG_LEADER, + TASK_COMPLEX_PARTNER_DEAL, + //SCRIPT_DECISION + TASK_COMPLEX_PARTNER_GREET, + //SCRIPT_DECISION + TASK_COMPLEX_PARTNER_CHAT, + TASK_COMPLEX_GANG_HASSLE_VEHICLE, + //SCRIPT_DECISION + TASK_COMPLEX_WALK_WITH_PED, + TASK_COMPLEX_GANG_FOLLOWER, + TASK_COMPLEX_WALK_ALONGSIDE_PED, + TASK_COMPLEX_PARTNER_SHOVE, + //SCRIPT_DECISION + TASK_COMPLEX_SIGNAL_AT_PED, + //SCRIPT_DECISION + TASK_COMPLEX_PASS_OBJECT, + TASK_COMPLEX_GANG_HASSLE_PED, + //SCRIPT_DECISION + TASK_COMPLEX_WAIT_FOR_PED, + TASK_SIMPLE_DO_HAND_SIGNAL, + // TASK_COMPLEX_THROW_OBJECT_BEING_HELD, + TASK_COMPLEX_BE_IN_COUPLE, + TASK_COMPLEX_GOTO_VEHICLE_AND_LEAN, + TASK_COMPLEX_LEAN_ON_VEHICLE, + //SCRIPT_DECISION + TASK_COMPLEX_CHAT, + TASK_COMPLEX_GANG_JOIN_RESPOND, + + //misc + TASK_ZONE_RESPONSE = 1300, + //SCRIPT_DECISION + TASK_SIMPLE_TOGGLE_PED_THREAT_SCANNER, + TASK_FINISHED, + TASK_SIMPLE_JETPACK, + TASK_SIMPLE_SWIM, + TASK_COMPLEX_SWIM_AND_CLIMB_OUT, + TASK_SIMPLE_DUCK_TOGGLE, + TASK_WAIT_FOR_MATCHING_AREA_CODES, + TASK_SIMPLE_ON_ESCALATOR, + TASK_COMPLEX_PROSTITUTE_SOLICIT, + + // interior tasks + + TASK_INTERIOR_USE_INFO = 1400, + TASK_INTERIOR_GOTO_INFO, + TASK_INTERIOR_BE_IN_HOUSE, + TASK_INTERIOR_BE_IN_OFFICE, + TASK_INTERIOR_BE_IN_SHOP, + TASK_INTERIOR_SHOPKEEPER, + TASK_INTERIOR_LIE_IN_BED, + TASK_INTERIOR_SIT_ON_CHAIR, + TASK_INTERIOR_SIT_AT_DESK, + TASK_INTERIOR_LEAVE, + TASK_INTERIOR_SIT_IN_RESTAURANT, + TASK_INTERIOR_RESERVED2, + TASK_INTERIOR_RESERVED3, + TASK_INTERIOR_RESERVED4, + TASK_INTERIOR_RESERVED5, + TASK_INTERIOR_RESERVED6, + TASK_INTERIOR_RESERVED7, + TASK_INTERIOR_RESERVED8, + + // group tasks + TASK_GROUP_FOLLOW_LEADER_ANY_MEANS = 1500, + //SCRIPT_DECISION + TASK_GROUP_FOLLOW_LEADER_WITH_LIMITS, + //SCRIPT_DECISION + TASK_GROUP_KILL_THREATS_BASIC, + //SCRIPT_DECISION + TASK_GROUP_KILL_PLAYER_BASIC, + //SCRIPT_DECISION + TASK_GROUP_STARE_AT_PED, + //SCRIPT_DECISION + TASK_GROUP_FLEE_THREAT, + //SCRIPT_DECISION + TASK_GROUP_PARTNER_DEAL, + //SCRIPT_DECISION + TASK_GROUP_PARTNER_GREET, + //SCRIPT_DECISION + TASK_GROUP_HASSLE_SEXY_PED, + //SCRIPT_DECISION + TASK_GROUP_HASSLE_THREAT, + //SCRIPT_DECISION + TASK_GROUP_USE_MEMBER_DECISION, + //SCRIPT_DECISION + TASK_GROUP_EXIT_CAR, + //SCRIPT_DECISION + TASK_GROUP_ENTER_CAR, + //SCRIPT_DECISION + TASK_GROUP_ENTER_CAR_AND_PERFORM_SEQUENCE, + //SCRIPT_DECISION + TASK_GROUP_RESPOND_TO_LEADER_COMMAND, + //SCRIPT_DECISION + TASK_GROUP_HAND_SIGNAL, + //SCRIPT_DECISION + TASK_GROUP_DRIVEBY, + //SCRIPT_DECISION + TASK_GROUP_HASSLE_THREAT_PASSIVE, + //SCRIPT_DECISION + + // phone / goggles tasks + TASK_COMPLEX_USE_MOBILE_PHONE = 1600, + TASK_SIMPLE_PHONE_TALK, + TASK_SIMPLE_PHONE_IN, + TASK_SIMPLE_PHONE_OUT, + TASK_COMPLEX_USE_GOGGLES, + TASK_SIMPLE_GOGGLES_ON, + TASK_SIMPLE_GOGGLES_OFF, + + // inform friends + TASK_SIMPLE_INFORM_RESPECTED_FRIENDS = 1700, + //SCRIPT_DECISION + + // brain tasks + TASK_COMPLEX_USE_SCRIPTED_BRAIN = 1800, + TASK_SIMPLE_FINISH_BRAIN, + /* + // test tasks + TASK_COMPLEX_A, + TASK_COMPLEX_B, + TASK_COMPLEX_C, + TASK_COMPLEX_D, + TASK_COMPLEX_E, + */ + MAX_NUM_TASK_TYPES +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eVehicleClass.h b/third-party/plugin-sdk/plugin_sa/game_sa/eVehicleClass.h new file mode 100644 index 00000000..c5378c14 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eVehicleClass.h @@ -0,0 +1,26 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +enum eVehicleClass +{ + CLASS_NORMAL, + CLASS_POORFAMILY, + CLASS_RICHFAMILY, + CLASS_EXECUTIVE, + CLASS_WORKER, + CLASS_BIG, + CLASS_TAXI, + CLASS_MOPED, + CLASS_MOTORBIKE, + CLASS_LEISUREBOAT, + CLASS_WORKERBOAT, + CLASS_BICYCLE, + CLASS_IGNORE = -1 +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eVehicleHandlingFlags.h b/third-party/plugin-sdk/plugin_sa/game_sa/eVehicleHandlingFlags.h new file mode 100644 index 00000000..c72ba913 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eVehicleHandlingFlags.h @@ -0,0 +1,40 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +enum PLUGIN_API eVehicleHandlingFlags : unsigned int { + VEHICLE_HANDLING_1G_BOOST = 0x1, + VEHICLE_HANDLING_2G_BOOST = 0x2, + VEHICLE_HANDLING_NPC_ANTI_ROLL = 0x4, + VEHICLE_HANDLING_NPC_NEUTRAL_HANDL = 0x8, + VEHICLE_HANDLING_NO_HANDBRAKE = 0x10, + VEHICLE_HANDLING_STEER_REARWHEELS = 0x20, + VEHICLE_HANDLING_HB_REARWHEEL_STEER = 0x40, + VEHICLE_HANDLING_ALT_STEER_OPT = 0x80, + VEHICLE_HANDLING_WHEEL_F_NARROW2 = 0x100, + VEHICLE_HANDLING_WHEEL_F_NARROW = 0x200, + VEHICLE_HANDLING_WHEEL_F_WIDE = 0x400, + VEHICLE_HANDLING_WHEEL_F_WIDE2 = 0x800, + VEHICLE_HANDLING_WHEEL_R_NARROW2 = 0x1000, + VEHICLE_HANDLING_WHEEL_R_NARROW = 0x2000, + VEHICLE_HANDLING_WHEEL_R_WIDE = 0x4000, + VEHICLE_HANDLING_WHEEL_R_WIDE2 = 0x8000, + VEHICLE_HANDLING_HYDRAULIC_GEOM = 0x10000, + VEHICLE_HANDLING_HYDRAULIC_INST = 0x20000, + VEHICLE_HANDLING_HYDRAULIC_NONE = 0x40000, + VEHICLE_HANDLING_NOS_INST = 0x80000, + VEHICLE_HANDLING_OFFROAD_ABILITY = 0x100000, + VEHICLE_HANDLING_OFFROAD_ABILITY2 = 0x200000, + VEHICLE_HANDLING_HALOGEN_LIGHTS = 0x400000, + VEHICLE_HANDLING_PROC_REARWHEEL_1ST = 0x800000, + VEHICLE_HANDLING_USE_MAXSP_LIMIT = 0x1000000, + VEHICLE_HANDLING_LOW_RIDER = 0x2000000, + VEHICLE_HANDLING_STREET_RACER = 0x4000000, + VEHICLE_HANDLING_SWINGING_CHASSIS = 0x10000000 +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eVehicleHandlingModelFlags.h b/third-party/plugin-sdk/plugin_sa/game_sa/eVehicleHandlingModelFlags.h new file mode 100644 index 00000000..ecdd7b64 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eVehicleHandlingModelFlags.h @@ -0,0 +1,44 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +enum PLUGIN_API eVehicleHandlingModelFlags : unsigned int { + VEHICLE_HANDLING_MODEL_IS_VAN = 0x1, + VEHICLE_HANDLING_MODEL_IS_BUS = 0x2, + VEHICLE_HANDLING_MODEL_IS_LOW = 0x4, + VEHICLE_HANDLING_MODEL_IS_BIG = 0x8, + VEHICLE_HANDLING_MODEL_REVERSE_BONNET = 0x10, + VEHICLE_HANDLING_MODEL_HANGING_BOOT = 0x20, + VEHICLE_HANDLING_MODEL_TAILGATE_BOOT = 0x40, + VEHICLE_HANDLING_MODEL_NOSWING_BOOT = 0x80, + VEHICLE_HANDLING_MODEL_NO_DOORS = 0x100, + VEHICLE_HANDLING_MODEL_TANDEM_SEATS = 0x200, + VEHICLE_HANDLING_MODEL_SIT_IN_BOAT = 0x400, + VEHICLE_HANDLING_MODEL_CONVERTIBLE = 0x800, + VEHICLE_HANDLING_MODEL_NO_EXHAUST = 0x1000, + VEHICLE_HANDLING_MODEL_DOUBLE_EXHAUST = 0x2000, + VEHICLE_HANDLING_MODEL_NO1FPS_LOOK_BEHIND = 0x4000, + VEHICLE_HANDLING_MODEL_FORCE_DOOR_CHECK = 0x8000, + VEHICLE_HANDLING_MODEL_AXLE_F_NOTILT = 0x10000, + VEHICLE_HANDLING_MODEL_AXLE_F_SOLID = 0x20000, + VEHICLE_HANDLING_MODEL_AXLE_F_MCPHERSON = 0x40000, + VEHICLE_HANDLING_MODEL_AXLE_F_REVERSE = 0x80000, + VEHICLE_HANDLING_MODEL_AXLE_R_NOTILT = 0x100000, + VEHICLE_HANDLING_MODEL_AXLE_R_SOLID = 0x200000, + VEHICLE_HANDLING_MODEL_AXLE_R_MCPHERSON = 0x400000, + VEHICLE_HANDLING_MODEL_AXLE_R_REVERSE = 0x800000, + VEHICLE_HANDLING_MODEL_IS_BIKE = 0x1000000, + VEHICLE_HANDLING_MODEL_IS_HELI = 0x2000000, + VEHICLE_HANDLING_MODEL_IS_PLANE = 0x4000000, + VEHICLE_HANDLING_MODEL_IS_BOAT = 0x8000000, + VEHICLE_HANDLING_MODEL_BOUNCE_PANELS = 0x10000000, + VEHICLE_HANDLING_MODEL_DOUBLE_RWHEELS = 0x20000000, + VEHICLE_HANDLING_MODEL_FORCE_GROUND_CLEARANCE = 0x40000000, + VEHICLE_HANDLING_MODEL_IS_HATCHBACK = 0x80000000 +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eWeaponFire.h b/third-party/plugin-sdk/plugin_sa/game_sa/eWeaponFire.h new file mode 100644 index 00000000..a9ace5f2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eWeaponFire.h @@ -0,0 +1,18 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +enum PLUGIN_API eWeaponFire : unsigned int { + WEAPON_FIRE_MELEE, + WEAPON_FIRE_INSTANT_HIT, + WEAPON_FIRE_PROJECTILE, + WEAPON_FIRE_AREA_EFFECT, + WEAPON_FIRE_CAMERA, + WEAPON_FIRE_USE +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eWeaponFlags.h b/third-party/plugin-sdk/plugin_sa/game_sa/eWeaponFlags.h new file mode 100644 index 00000000..c7219392 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eWeaponFlags.h @@ -0,0 +1,29 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +enum PLUGIN_API eWeaponFlags : unsigned int { + WEAPON_CANAIM = 0x1, + WEAPON_AIMWITHARM = 0x2, + WEAPON_1STPERSON = 0x4, + WEAPON_ONLYFREEAIM = 0x8, + WEAPON_MOVEAIM = 0x10, + WEAPON_MOVEFIRE = 0x20, + WEAPON_THROW = 0x100, + WEAPON_HEAVY = 0x200, + WEAPON_CONTINUOUSFIRE = 0x400, + WEAPON_TWIN_PISTOL = 0x800, + WEAPON_RELOAD = 0x1000, + WEAPON_CROUCHFIRE = 0x2000, + WEAPON_RELOAD2START = 0x4000, + WEAPON_LONG_RELOAD = 0x8000, + WEAPON_SLOWSDWN = 0x10000, + WEAPON_RANDSPEED = 0x20000, + WEAPON_EXPANDS = 0x40000 +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eWeaponModel.h b/third-party/plugin-sdk/plugin_sa/game_sa/eWeaponModel.h new file mode 100644 index 00000000..f5d2b5cf --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eWeaponModel.h @@ -0,0 +1,61 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eWeaponModel : unsigned int +{ + MODEL_UNARMED = 0, + MODEL_GUN_DILDO1 = 321, + MODEL_GUN_DILDO2, + MODEL_GUN_VIBE1, + MODEL_GUN_VIBE2, + MODEL_FLOWERA, + MODEL_GUN_CANE, + MODEL_GUN_BOXWEE, + MODEL_GUN_BOXBIG, + MODEL_CELLPHONE = 330, + MODEL_BRASSKNUCKLE, + MODEL_GOLFCLUB = 333, + MODEL_NITESTICK, + MODEL_KNIFECUR, + MODEL_BAT, + MODEL_SHOVEL, + MODEL_POOLCUE, + MODEL_KATANA, + MODEL_CHNSAW = 341, + MODEL_GRENADE, + MODEL_TEARGAS, + MODEL_MOLOTOV, + MODEL_MISSILE, + MODEL_COLT45, + MODEL_SILENCED, + MODEL_DESERT_EAGLE, + MODEL_CHROMEGUN, + MODEL_SAWNOFF, + MODEL_SHOTGSPA, + MODEL_MICRO_UZI, + MODEL_MP5LNG, + MODEL_FLARE, + MODEL_AK47, + MODEL_M4, + MODEL_CUNTGUN, + MODEL_SNIPER, + MODEL_ROCKETLA, + MODEL_HEATSEEK, + MODEL_FLAME, + MODEL_MINIGUN, + MODEL_SATCHEL, + MODEL_BOMB, + MODEL_SPRAYCAN, + MODEL_FIRE_EX, + MODEL_CAMERA, + MODEL_NVGOGGLES, + MODEL_IRGOGGLES, + MODEL_JETPACK, + MODEL_GUN_PARA, + MODEL_TEC9, +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eWeaponType.h b/third-party/plugin-sdk/plugin_sa/game_sa/eWeaponType.h new file mode 100644 index 00000000..13a87c4b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eWeaponType.h @@ -0,0 +1,61 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +enum eWeaponType : unsigned int +{ + WEAPON_UNARMED = 0x0, + WEAPON_BRASSKNUCKLE = 0x1, + WEAPON_GOLFCLUB = 0x2, + WEAPON_NIGHTSTICK = 0x3, + WEAPON_KNIFE = 0x4, + WEAPON_BASEBALLBAT = 0x5, + WEAPON_SHOVEL = 0x6, + WEAPON_POOLCUE = 0x7, + WEAPON_KATANA = 0x8, + WEAPON_CHAINSAW = 0x9, + WEAPON_DILDO1 = 0xA, + WEAPON_DILDO2 = 0xB, + WEAPON_VIBE1 = 0xC, + WEAPON_VIBE2 = 0xD, + WEAPON_FLOWERS = 0xE, + WEAPON_CANE = 0xF, + WEAPON_GRENADE = 0x10, + WEAPON_TEARGAS = 0x11, + WEAPON_MOLOTOV = 0x12, + WEAPON_ROCKET = 0x13, + WEAPON_ROCKET_HS = 0x14, + WEAPON_FREEFALL_BOMB = 0x15, + WEAPON_PISTOL = 0x16, + WEAPON_PISTOL_SILENCED = 0x17, + WEAPON_DESERT_EAGLE = 0x18, + WEAPON_SHOTGUN = 0x19, + WEAPON_SAWNOFF = 0x1A, + WEAPON_SPAS12 = 0x1B, + WEAPON_MICRO_UZI = 0x1C, + WEAPON_MP5 = 0x1D, + WEAPON_AK47 = 0x1E, + WEAPON_M4 = 0x1F, + WEAPON_TEC9 = 0x20, + WEAPON_COUNTRYRIFLE = 0x21, + WEAPON_SNIPERRIFLE = 0x22, + WEAPON_RLAUNCHER = 0x23, + WEAPON_RLAUNCHER_HS = 0x24, + WEAPON_FTHROWER = 0x25, + WEAPON_MINIGUN = 0x26, + WEAPON_SATCHEL_CHARGE = 0x27, + WEAPON_DETONATOR = 0x28, + WEAPON_SPRAYCAN = 0x29, + WEAPON_EXTINGUISHER = 0x2A, + WEAPON_CAMERA = 0x2B, + WEAPON_NIGHTVISION = 0x2C, + WEAPON_INFRARED = 0x2D, + WEAPON_PARACHUTE = 0x2E, + WEAPON_UNUSED = 0x2F, + WEAPON_ARMOUR = 0x30, + WEAPON_FLARE = 0x3A +}; \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/eWinchType.h b/third-party/plugin-sdk/plugin_sa/game_sa/eWinchType.h new file mode 100644 index 00000000..07e50277 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/eWinchType.h @@ -0,0 +1,15 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +enum PLUGIN_API eWinchType : unsigned int { + WINCH_NONE = 0x0, + WINCH_BIG_MAGNET = 0x1, + WINCH_SMALL_MAGNET = 0x3, +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CAnimBlendAssociation.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CAnimBlendAssociation.h new file mode 100644 index 00000000..6ef91283 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CAnimBlendAssociation.h @@ -0,0 +1,735 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +CTOR_META_BEGIN(CAnimBlendAssociation) + static int address; + static int global_address; + static const int id = 0x4CE9B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CE9B0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = CAnimBlendAssociation *(CAnimBlendAssociation *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CAnimBlendAssociation::AllocateAnimBlendNodeArray) + static int address; + static int global_address; + static const int id = 0x4CE9F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CE9F0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4CED70, GAME_10US_COMPACT, H_CALL, 0x4CED50, 1, + 0x4CEE75, GAME_10US_COMPACT, H_CALL, 0x4CEE40, 1, + 0x4CEEF5, GAME_10US_COMPACT, H_CALL, 0x4CEEC0, 1>; + using def_t = void(CAnimBlendAssociation *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CAnimBlendAssociation::FreeAnimBlendNodeArray) + static int address; + static int global_address; + static const int id = 0x4CEA40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEA40, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CAnimBlendAssociation *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CAnimBlendAssociation::ReferenceAnimBlock) + static int address; + static int global_address; + static const int id = 0x4CEA50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEA50, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D438D, GAME_10US_COMPACT, H_CALL, 0x4D4330, 1, + 0x4D4568, GAME_10US_COMPACT, H_CALL, 0x4D4410, 1>; + using def_t = void(CAnimBlendAssociation *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CAnimBlendAssociation::SetCurrentTime) + static int address; + static int global_address; + static const int id = 0x4CEA80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEA80, 0, 0, 0, 0, 0>; + // total references count: 10us (59), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x45B55C, GAME_10US_COMPACT, H_CALL, 0x45B4D0, 1, + 0x45B636, GAME_10US_COMPACT, H_CALL, 0x45B4D0, 2, + 0x45B703, GAME_10US_COMPACT, H_CALL, 0x45B4D0, 3, + 0x470CE8, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x491863, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x4C0517, GAME_10US_COMPACT, H_CALL, 0x4C0170, 1, + 0x4C054C, GAME_10US_COMPACT, H_CALL, 0x4C0170, 2, + 0x4CEB57, GAME_10US_COMPACT, H_CALL, 0x4CEB40, 1, + 0x4CEB74, GAME_10US_COMPACT, H_JUMP, 0x4CEB70, 1, + 0x533E86, GAME_10US_COMPACT, H_CALL, 0x533D30, 1, + 0x5B03D5, GAME_10US_COMPACT, H_CALL, 0x5B0390, 1, + 0x60AA7B, GAME_10US_COMPACT, H_CALL, 0x60A9C0, 1, + 0x60AA88, GAME_10US_COMPACT, H_CALL, 0x60A9C0, 2, + 0x60AA99, GAME_10US_COMPACT, H_CALL, 0x60A9C0, 3, + 0x60AEF4, GAME_10US_COMPACT, H_CALL, 0x60A9C0, 4, + 0x60AF01, GAME_10US_COMPACT, H_CALL, 0x60A9C0, 5, + 0x61BD21, GAME_10US_COMPACT, H_CALL, 0x61BCB0, 1, + 0x61E5B5, GAME_10US_COMPACT, H_CALL, 0x61E3F0, 1, + 0x61E5C1, GAME_10US_COMPACT, H_CALL, 0x61E3F0, 2, + 0x61E5CD, GAME_10US_COMPACT, H_CALL, 0x61E3F0, 3, + 0x61E5D9, GAME_10US_COMPACT, H_CALL, 0x61E3F0, 4, + 0x61E920, GAME_10US_COMPACT, H_CALL, 0x61E8E0, 1, + 0x61FD72, GAME_10US_COMPACT, H_CALL, 0x61FD20, 1, + 0x62005A, GAME_10US_COMPACT, H_CALL, 0x61FF40, 1, + 0x62025C, GAME_10US_COMPACT, H_CALL, 0x61FF40, 2, + 0x6209E4, GAME_10US_COMPACT, H_CALL, 0x620910, 1, + 0x623BD4, GAME_10US_COMPACT, H_CALL, 0x623B10, 1, + 0x6250B8, GAME_10US_COMPACT, H_CALL, 0x624F30, 1, + 0x627C52, GAME_10US_COMPACT, H_CALL, 0x627B20, 1, + 0x629D68, GAME_10US_COMPACT, H_CALL, 0x629920, 1, + 0x629F8C, GAME_10US_COMPACT, H_CALL, 0x629920, 2, + 0x62A8CB, GAME_10US_COMPACT, H_CALL, 0x62A380, 1, + 0x62AB00, GAME_10US_COMPACT, H_CALL, 0x62A380, 2, + 0x62AB7B, GAME_10US_COMPACT, H_CALL, 0x62A380, 3, + 0x62ABCF, GAME_10US_COMPACT, H_CALL, 0x62A380, 4, + 0x62ABE6, GAME_10US_COMPACT, H_CALL, 0x62A380, 5, + 0x62D6FE, GAME_10US_COMPACT, H_CALL, 0x62D3B0, 1, + 0x62D789, GAME_10US_COMPACT, H_CALL, 0x62D3B0, 2, + 0x62D7BE, GAME_10US_COMPACT, H_CALL, 0x62D3B0, 3, + 0x65F05E, GAME_10US_COMPACT, H_CALL, 0x65EF80, 1, + 0x65F06B, GAME_10US_COMPACT, H_CALL, 0x65EF80, 2, + 0x65F078, GAME_10US_COMPACT, H_CALL, 0x65EF80, 3, + 0x65F107, GAME_10US_COMPACT, H_CALL, 0x65EF80, 4, + 0x65F114, GAME_10US_COMPACT, H_CALL, 0x65EF80, 5, + 0x678609, GAME_10US_COMPACT, H_CALL, 0x6784C0, 1, + 0x67CABE, GAME_10US_COMPACT, H_CALL, 0x67CA40, 1, + 0x67CB3D, GAME_10US_COMPACT, H_CALL, 0x67CA40, 2, + 0x67D3DC, GAME_10US_COMPACT, H_CALL, 0x67D380, 1, + 0x6B7DD0, GAME_10US_COMPACT, H_CALL, 0x6B7280, 1, + 0x6B7DFA, GAME_10US_COMPACT, H_CALL, 0x6B7280, 2, + 0x6B7E6C, GAME_10US_COMPACT, H_CALL, 0x6B7280, 3, + 0x6B7E96, GAME_10US_COMPACT, H_CALL, 0x6B7280, 4, + 0x6BFFEC, GAME_10US_COMPACT, H_CALL, 0x6BFB50, 1, + 0x6C064B, GAME_10US_COMPACT, H_CALL, 0x6C0590, 1, + 0x6C0787, GAME_10US_COMPACT, H_CALL, 0x6C0590, 2, + 0x6C07D2, GAME_10US_COMPACT, H_CALL, 0x6C0590, 3, + 0x7363BD, GAME_10US_COMPACT, H_CALL, 0x7360D0, 1, + 0x73A657, GAME_10US_COMPACT, H_CALL, 0x73A530, 1, + 0x73A7A4, GAME_10US_COMPACT, H_CALL, 0x73A530, 2>; + using def_t = void(CAnimBlendAssociation *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CAnimBlendAssociation::SyncAnimation) + static int address; + static int global_address; + static const int id = 0x4CEB40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEB40, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D3B1E, GAME_10US_COMPACT, H_CALL, 0x4D3AA0, 1, + 0x4D3B71, GAME_10US_COMPACT, H_CALL, 0x4D3B30, 1, + 0x4D4402, GAME_10US_COMPACT, H_CALL, 0x4D4330, 1>; + using def_t = void(CAnimBlendAssociation *, CAnimBlendAssociation *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CAnimBlendAssociation::GetNode) + static int address; + static int global_address; + static const int id = 0x4CEB60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEB60, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D3561, GAME_10US_COMPACT, H_CALL, 0x4D34F0, 1, + 0x61AAAA, GAME_10US_COMPACT, H_CALL, 0x61AAA0, 1>; + using def_t = CAnimBlendNode *(CAnimBlendAssociation *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CAnimBlendAssociation::Start) + static int address; + static int global_address; + static const int id = 0x4CEB70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEB70, 0, 0, 0, 0, 0>; + // total references count: 10us (9), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D3AF8, GAME_10US_COMPACT, H_CALL, 0x4D3AA0, 1, + 0x4D3B80, GAME_10US_COMPACT, H_CALL, 0x4D3B30, 1, + 0x4D43CD, GAME_10US_COMPACT, H_CALL, 0x4D4330, 1, + 0x4D4595, GAME_10US_COMPACT, H_CALL, 0x4D4410, 1, + 0x4D45E3, GAME_10US_COMPACT, H_CALL, 0x4D4410, 2, + 0x4D47D5, GAME_10US_COMPACT, H_CALL, 0x4D4610, 1, + 0x4D67BE, GAME_10US_COMPACT, H_CALL, 0x4D6790, 1, + 0x62516E, GAME_10US_COMPACT, H_CALL, 0x624F30, 1, + 0x689EF6, GAME_10US_COMPACT, H_CALL, 0x6899F0, 1>; + using def_t = void(CAnimBlendAssociation *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CAnimBlendAssociation::SetBlendTo) + static int address; + static int global_address; + static const int id = 0x4CEB80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEB80, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CAnimBlendAssociation *, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CAnimBlendAssociation::SetBlend) + static int address; + static int global_address; + static const int id = 0x4CEBA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEBA0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x45B582, GAME_10US_COMPACT, H_CALL, 0x45B4D0, 1, + 0x45B64E, GAME_10US_COMPACT, H_CALL, 0x45B4D0, 2>; + using def_t = void(CAnimBlendAssociation *, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CAnimBlendAssociation::SetDeleteCallback) + static int address; + static int global_address; + static const int id = 0x4CEBC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEBC0, 0, 0, 0, 0, 0>; + // total references count: 10us (67), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D1512, GAME_10US_COMPACT, H_CALL, 0x4D1490, 1, + 0x60B13E, GAME_10US_COMPACT, H_CALL, 0x60A9C0, 1, + 0x60B164, GAME_10US_COMPACT, H_CALL, 0x60A9C0, 2, + 0x61AAE1, GAME_10US_COMPACT, H_CALL, 0x61AAA0, 1, + 0x61AC7A, GAME_10US_COMPACT, H_CALL, 0x61AC50, 1, + 0x61BB89, GAME_10US_COMPACT, H_CALL, 0x61BB10, 1, + 0x61C579, GAME_10US_COMPACT, H_CALL, 0x61C530, 1, + 0x61C58C, GAME_10US_COMPACT, H_CALL, 0x61C530, 2, + 0x61DF79, GAME_10US_COMPACT, H_CALL, 0x61DF30, 1, + 0x61E1CF, GAME_10US_COMPACT, H_CALL, 0x61E190, 1, + 0x621920, GAME_10US_COMPACT, H_CALL, 0x6218C0, 1, + 0x6226C9, GAME_10US_COMPACT, H_CALL, 0x622680, 1, + 0x622714, GAME_10US_COMPACT, H_CALL, 0x6226F0, 1, + 0x622770, GAME_10US_COMPACT, H_CALL, 0x6226F0, 2, + 0x623A53, GAME_10US_COMPACT, H_CALL, 0x6239F0, 1, + 0x623A71, GAME_10US_COMPACT, H_CALL, 0x6239F0, 2, + 0x623B2D, GAME_10US_COMPACT, H_CALL, 0x623B10, 1, + 0x623D6C, GAME_10US_COMPACT, H_CALL, 0x623B10, 2, + 0x623EAC, GAME_10US_COMPACT, H_CALL, 0x623B10, 3, + 0x624E9B, GAME_10US_COMPACT, H_CALL, 0x624E30, 1, + 0x624F9C, GAME_10US_COMPACT, H_CALL, 0x624F30, 1, + 0x627BE8, GAME_10US_COMPACT, H_CALL, 0x627B20, 1, + 0x627C1E, GAME_10US_COMPACT, H_CALL, 0x627B20, 2, + 0x62993D, GAME_10US_COMPACT, H_CALL, 0x629920, 1, + 0x629B7B, GAME_10US_COMPACT, H_CALL, 0x629920, 2, + 0x629DB2, GAME_10US_COMPACT, H_CALL, 0x629920, 3, + 0x62A5F1, GAME_10US_COMPACT, H_CALL, 0x62A380, 1, + 0x62D389, GAME_10US_COMPACT, H_CALL, 0x62D290, 1, + 0x661079, GAME_10US_COMPACT, H_CALL, 0x661030, 1, + 0x661132, GAME_10US_COMPACT, H_CALL, 0x661110, 1, + 0x664953, GAME_10US_COMPACT, H_CALL, 0x6648C0, 1, + 0x6649F6, GAME_10US_COMPACT, H_CALL, 0x6648C0, 2, + 0x675CC9, GAME_10US_COMPACT, H_CALL, 0x675C90, 1, + 0x675DA7, GAME_10US_COMPACT, H_CALL, 0x675D60, 1, + 0x675EC9, GAME_10US_COMPACT, H_CALL, 0x675E90, 1, + 0x675F82, GAME_10US_COMPACT, H_CALL, 0x675F60, 1, + 0x6760B9, GAME_10US_COMPACT, H_CALL, 0x676080, 1, + 0x676172, GAME_10US_COMPACT, H_CALL, 0x676150, 1, + 0x676DC8, GAME_10US_COMPACT, H_CALL, 0x676D30, 1, + 0x67701C, GAME_10US_COMPACT, H_CALL, 0x676D30, 2, + 0x677384, GAME_10US_COMPACT, H_CALL, 0x6772E0, 1, + 0x6775C3, GAME_10US_COMPACT, H_CALL, 0x6772E0, 2, + 0x677794, GAME_10US_COMPACT, H_CALL, 0x677780, 1, + 0x677892, GAME_10US_COMPACT, H_CALL, 0x677880, 1, + 0x677A10, GAME_10US_COMPACT, H_CALL, 0x677920, 1, + 0x677C17, GAME_10US_COMPACT, H_CALL, 0x677920, 2, + 0x678D89, GAME_10US_COMPACT, H_CALL, 0x678D50, 1, + 0x678F78, GAME_10US_COMPACT, H_CALL, 0x678F40, 1, + 0x67A219, GAME_10US_COMPACT, H_CALL, 0x67A1D0, 1, + 0x67A2D2, GAME_10US_COMPACT, H_CALL, 0x67A280, 1, + 0x67DC0D, GAME_10US_COMPACT, H_CALL, 0x67DBE0, 1, + 0x67DC92, GAME_10US_COMPACT, H_CALL, 0x67DBE0, 2, + 0x67DCCA, GAME_10US_COMPACT, H_CALL, 0x67DBE0, 3, + 0x67DCF0, GAME_10US_COMPACT, H_CALL, 0x67DBE0, 4, + 0x67DD65, GAME_10US_COMPACT, H_CALL, 0x67DBE0, 5, + 0x67DDAA, GAME_10US_COMPACT, H_CALL, 0x67DBE0, 6, + 0x680780, GAME_10US_COMPACT, H_CALL, 0x680600, 1, + 0x680802, GAME_10US_COMPACT, H_CALL, 0x680600, 2, + 0x680BB9, GAME_10US_COMPACT, H_CALL, 0x680600, 3, + 0x680BDE, GAME_10US_COMPACT, H_CALL, 0x680600, 4, + 0x68B810, GAME_10US_COMPACT, H_CALL, 0x68B7E0, 1, + 0x692E26, GAME_10US_COMPACT, H_CALL, 0x692DF0, 1, + 0x6930E1, GAME_10US_COMPACT, H_CALL, 0x692FF0, 1, + 0x693ACB, GAME_10US_COMPACT, H_CALL, 0x6939F0, 1, + 0x693B46, GAME_10US_COMPACT, H_CALL, 0x6939F0, 2, + 0x694545, GAME_10US_COMPACT, H_CALL, 0x694390, 1, + 0x694672, GAME_10US_COMPACT, H_CALL, 0x694640, 1>; + using def_t = void(CAnimBlendAssociation *, void(*)(CAnimBlendAssociation *, void *), void *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CAnimBlendAssociation::SetFinishCallback) + static int address; + static int global_address; + static const int id = 0x4CEBE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEBE0, 0, 0, 0, 0, 0>; + // total references count: 10us (150), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4543F8, GAME_10US_COMPACT, H_CALL, 0x454340, 1, + 0x45473A, GAME_10US_COMPACT, H_CALL, 0x454340, 2, + 0x4D1475, GAME_10US_COMPACT, H_CALL, 0x4D13D0, 1, + 0x4D1525, GAME_10US_COMPACT, H_CALL, 0x4D1490, 1, + 0x61A729, GAME_10US_COMPACT, H_CALL, 0x61A6F0, 1, + 0x61A87C, GAME_10US_COMPACT, H_CALL, 0x61A790, 1, + 0x61A97A, GAME_10US_COMPACT, H_CALL, 0x61A950, 1, + 0x61AE39, GAME_10US_COMPACT, H_CALL, 0x61ADF0, 1, + 0x61B003, GAME_10US_COMPACT, H_CALL, 0x61AF60, 1, + 0x61B1B4, GAME_10US_COMPACT, H_CALL, 0x61AF60, 2, + 0x61BB65, GAME_10US_COMPACT, H_CALL, 0x61BB10, 1, + 0x61BBA3, GAME_10US_COMPACT, H_CALL, 0x61BB10, 2, + 0x61C0AC, GAME_10US_COMPACT, H_CALL, 0x61BF20, 1, + 0x61F739, GAME_10US_COMPACT, H_CALL, 0x61F700, 1, + 0x61F798, GAME_10US_COMPACT, H_CALL, 0x61F780, 1, + 0x61F7EB, GAME_10US_COMPACT, H_CALL, 0x61F780, 2, + 0x61FC93, GAME_10US_COMPACT, H_CALL, 0x61FC50, 1, + 0x61FCFA, GAME_10US_COMPACT, H_CALL, 0x61FCC0, 1, + 0x61FDEE, GAME_10US_COMPACT, H_CALL, 0x61FD20, 1, + 0x61FEB3, GAME_10US_COMPACT, H_CALL, 0x61FE70, 1, + 0x61FF1A, GAME_10US_COMPACT, H_CALL, 0x61FEE0, 1, + 0x620278, GAME_10US_COMPACT, H_CALL, 0x61FF40, 1, + 0x6203B3, GAME_10US_COMPACT, H_CALL, 0x620370, 1, + 0x620420, GAME_10US_COMPACT, H_CALL, 0x6203F0, 1, + 0x620462, GAME_10US_COMPACT, H_CALL, 0x6203F0, 2, + 0x620572, GAME_10US_COMPACT, H_CALL, 0x620490, 1, + 0x6205BA, GAME_10US_COMPACT, H_CALL, 0x620490, 2, + 0x6205DF, GAME_10US_COMPACT, H_CALL, 0x620490, 3, + 0x6206BA, GAME_10US_COMPACT, H_CALL, 0x620660, 1, + 0x6206E3, GAME_10US_COMPACT, H_CALL, 0x620660, 2, + 0x620853, GAME_10US_COMPACT, H_CALL, 0x620810, 1, + 0x6208E2, GAME_10US_COMPACT, H_CALL, 0x620890, 1, + 0x6209F6, GAME_10US_COMPACT, H_CALL, 0x620910, 1, + 0x623BA2, GAME_10US_COMPACT, H_CALL, 0x623B10, 1, + 0x623EE1, GAME_10US_COMPACT, H_CALL, 0x623B10, 2, + 0x623F52, GAME_10US_COMPACT, H_CALL, 0x623B10, 3, + 0x6250CD, GAME_10US_COMPACT, H_CALL, 0x624F30, 1, + 0x62517C, GAME_10US_COMPACT, H_CALL, 0x624F30, 2, + 0x6251EF, GAME_10US_COMPACT, H_CALL, 0x624F30, 3, + 0x625B4F, GAME_10US_COMPACT, H_CALL, 0x6259E0, 1, + 0x62987D, GAME_10US_COMPACT, H_CALL, 0x6296D0, 1, + 0x62FB79, GAME_10US_COMPACT, H_CALL, 0x62FB40, 1, + 0x6310A9, GAME_10US_COMPACT, H_CALL, 0x631070, 1, + 0x6310F4, GAME_10US_COMPACT, H_CALL, 0x6310D0, 1, + 0x631119, GAME_10US_COMPACT, H_CALL, 0x6310D0, 2, + 0x631202, GAME_10US_COMPACT, H_CALL, 0x6311E0, 1, + 0x631359, GAME_10US_COMPACT, H_CALL, 0x631320, 1, + 0x6313A4, GAME_10US_COMPACT, H_CALL, 0x631380, 1, + 0x6313C9, GAME_10US_COMPACT, H_CALL, 0x631380, 2, + 0x631452, GAME_10US_COMPACT, H_CALL, 0x631410, 1, + 0x631D39, GAME_10US_COMPACT, H_CALL, 0x631D00, 1, + 0x637562, GAME_10US_COMPACT, H_CALL, 0x637520, 1, + 0x637A32, GAME_10US_COMPACT, H_CALL, 0x6379F0, 1, + 0x63800A, GAME_10US_COMPACT, H_CALL, 0x637FE0, 1, + 0x6399E1, GAME_10US_COMPACT, H_CALL, 0x639990, 1, + 0x63C4CC, GAME_10US_COMPACT, H_CALL, 0x63C460, 1, + 0x64274E, GAME_10US_COMPACT, H_CALL, 0x642700, 1, + 0x645C29, GAME_10US_COMPACT, H_CALL, 0x645BE0, 1, + 0x645F29, GAME_10US_COMPACT, H_CALL, 0x645EE0, 1, + 0x646139, GAME_10US_COMPACT, H_CALL, 0x6460F0, 1, + 0x646279, GAME_10US_COMPACT, H_CALL, 0x646230, 1, + 0x6463C9, GAME_10US_COMPACT, H_CALL, 0x646380, 1, + 0x6465B9, GAME_10US_COMPACT, H_CALL, 0x646570, 1, + 0x646759, GAME_10US_COMPACT, H_CALL, 0x646710, 1, + 0x6468D9, GAME_10US_COMPACT, H_CALL, 0x646890, 1, + 0x6472A9, GAME_10US_COMPACT, H_CALL, 0x647260, 1, + 0x6474D9, GAME_10US_COMPACT, H_CALL, 0x647490, 1, + 0x6480B9, GAME_10US_COMPACT, H_CALL, 0x648070, 1, + 0x648309, GAME_10US_COMPACT, H_CALL, 0x6482C0, 1, + 0x648CB2, GAME_10US_COMPACT, H_CALL, 0x648C40, 1, + 0x64ACCB, GAME_10US_COMPACT, H_CALL, 0x64AC00, 1, + 0x64ADD1, GAME_10US_COMPACT, H_CALL, 0x64AD90, 1, + 0x64AE5F, GAME_10US_COMPACT, H_CALL, 0x64AE00, 1, + 0x64AF26, GAME_10US_COMPACT, H_CALL, 0x64AE90, 1, + 0x64AFF1, GAME_10US_COMPACT, H_CALL, 0x64AFB0, 1, + 0x64B2A0, GAME_10US_COMPACT, H_CALL, 0x64B080, 1, + 0x64B38F, GAME_10US_COMPACT, H_CALL, 0x64B2D0, 1, + 0x64B42F, GAME_10US_COMPACT, H_CALL, 0x64B3E0, 1, + 0x64BE29, GAME_10US_COMPACT, H_CALL, 0x64BDE0, 1, + 0x64BF41, GAME_10US_COMPACT, H_CALL, 0x64BF00, 1, + 0x64C051, GAME_10US_COMPACT, H_CALL, 0x64C010, 1, + 0x64C1D9, GAME_10US_COMPACT, H_CALL, 0x64C190, 1, + 0x64CBAE, GAME_10US_COMPACT, H_CALL, 0x64C970, 1, + 0x64CC83, GAME_10US_COMPACT, H_CALL, 0x64CC60, 1, + 0x64CD49, GAME_10US_COMPACT, H_CALL, 0x64CCE0, 1, + 0x6530C9, GAME_10US_COMPACT, H_CALL, 0x653090, 1, + 0x65312D, GAME_10US_COMPACT, H_CALL, 0x6530F0, 1, + 0x653209, GAME_10US_COMPACT, H_CALL, 0x6531D0, 1, + 0x65326F, GAME_10US_COMPACT, H_CALL, 0x653240, 1, + 0x653619, GAME_10US_COMPACT, H_CALL, 0x6535D0, 1, + 0x655E77, GAME_10US_COMPACT, H_CALL, 0x655E50, 1, + 0x655ECC, GAME_10US_COMPACT, H_CALL, 0x655EA0, 1, + 0x655F5E, GAME_10US_COMPACT, H_CALL, 0x655F20, 1, + 0x657A4B, GAME_10US_COMPACT, H_CALL, 0x657A10, 1, + 0x6588D9, GAME_10US_COMPACT, H_CALL, 0x6588A0, 1, + 0x658A7E, GAME_10US_COMPACT, H_CALL, 0x6589B0, 1, + 0x659E5A, GAME_10US_COMPACT, H_CALL, 0x659E30, 1, + 0x65A81A, GAME_10US_COMPACT, H_CALL, 0x65A7C0, 1, + 0x664A1E, GAME_10US_COMPACT, H_CALL, 0x6648C0, 1, + 0x676DF0, GAME_10US_COMPACT, H_CALL, 0x676D30, 1, + 0x676E7D, GAME_10US_COMPACT, H_CALL, 0x676D30, 2, + 0x676EAD, GAME_10US_COMPACT, H_CALL, 0x676D30, 3, + 0x676EFB, GAME_10US_COMPACT, H_CALL, 0x676D30, 4, + 0x677044, GAME_10US_COMPACT, H_CALL, 0x676D30, 5, + 0x6773AE, GAME_10US_COMPACT, H_CALL, 0x6772E0, 1, + 0x67745F, GAME_10US_COMPACT, H_CALL, 0x6772E0, 2, + 0x6775ED, GAME_10US_COMPACT, H_CALL, 0x6772E0, 3, + 0x677860, GAME_10US_COMPACT, H_CALL, 0x677780, 1, + 0x677909, GAME_10US_COMPACT, H_CALL, 0x677880, 1, + 0x677A38, GAME_10US_COMPACT, H_CALL, 0x677920, 1, + 0x677AC1, GAME_10US_COMPACT, H_CALL, 0x677920, 2, + 0x677C3F, GAME_10US_COMPACT, H_CALL, 0x677920, 3, + 0x677FB9, GAME_10US_COMPACT, H_CALL, 0x677F80, 1, + 0x6780BE, GAME_10US_COMPACT, H_CALL, 0x677FE0, 1, + 0x678349, GAME_10US_COMPACT, H_CALL, 0x678310, 1, + 0x67847D, GAME_10US_COMPACT, H_CALL, 0x678370, 1, + 0x678E29, GAME_10US_COMPACT, H_CALL, 0x678DC0, 1, + 0x678F19, GAME_10US_COMPACT, H_CALL, 0x678EE0, 1, + 0x678F69, GAME_10US_COMPACT, H_CALL, 0x678F40, 1, + 0x679B29, GAME_10US_COMPACT, H_CALL, 0x679AF0, 1, + 0x67C9D5, GAME_10US_COMPACT, H_CALL, 0x67C770, 1, + 0x67CA9A, GAME_10US_COMPACT, H_CALL, 0x67CA40, 1, + 0x67CAEE, GAME_10US_COMPACT, H_CALL, 0x67CA40, 2, + 0x67CB2A, GAME_10US_COMPACT, H_CALL, 0x67CA40, 3, + 0x67CD1A, GAME_10US_COMPACT, H_CALL, 0x67CCB0, 1, + 0x67D42A, GAME_10US_COMPACT, H_CALL, 0x67D380, 1, + 0x67D947, GAME_10US_COMPACT, H_CALL, 0x67D7A0, 1, + 0x680C30, GAME_10US_COMPACT, H_CALL, 0x680600, 1, + 0x68B6CA, GAME_10US_COMPACT, H_CALL, 0x68B690, 1, + 0x68B762, GAME_10US_COMPACT, H_CALL, 0x68B740, 1, + 0x690BE9, GAME_10US_COMPACT, H_CALL, 0x690BB0, 1, + 0x690C4D, GAME_10US_COMPACT, H_CALL, 0x690C10, 1, + 0x69169A, GAME_10US_COMPACT, H_CALL, 0x691630, 1, + 0x692069, GAME_10US_COMPACT, H_CALL, 0x692030, 1, + 0x6920B0, GAME_10US_COMPACT, H_CALL, 0x692030, 2, + 0x692156, GAME_10US_COMPACT, H_CALL, 0x692100, 1, + 0x692176, GAME_10US_COMPACT, H_CALL, 0x692100, 2, + 0x69228E, GAME_10US_COMPACT, H_CALL, 0x692100, 3, + 0x6922F3, GAME_10US_COMPACT, H_CALL, 0x692100, 4, + 0x692351, GAME_10US_COMPACT, H_CALL, 0x692340, 1, + 0x692375, GAME_10US_COMPACT, H_CALL, 0x692340, 2, + 0x692747, GAME_10US_COMPACT, H_CALL, 0x692700, 1, + 0x692761, GAME_10US_COMPACT, H_CALL, 0x692700, 2, + 0x6930C2, GAME_10US_COMPACT, H_CALL, 0x692FF0, 1, + 0x693A29, GAME_10US_COMPACT, H_CALL, 0x6939F0, 1, + 0x693A70, GAME_10US_COMPACT, H_CALL, 0x6939F0, 2, + 0x693AA2, GAME_10US_COMPACT, H_CALL, 0x6939F0, 3, + 0x693B1D, GAME_10US_COMPACT, H_CALL, 0x6939F0, 4, + 0x693C0D, GAME_10US_COMPACT, H_CALL, 0x693BD0, 1, + 0x6C07EB, GAME_10US_COMPACT, H_CALL, 0x6C0590, 1>; + using def_t = void(CAnimBlendAssociation *, void(*)(CAnimBlendAssociation *, void *), void *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +DTOR_META_BEGIN(CAnimBlendAssociation) + static int address; + static int global_address; + static const int id = 0x4CECF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CECF0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4CEFA3, GAME_10US_COMPACT, H_CALL, 0x4CEFA0, 1>; + using def_t = void(CAnimBlendAssociation *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CAnimBlendAssociation::Init, void (CAnimBlendAssociation::*)(RpClump *, CAnimBlendHierarchy *)) + static int address; + static int global_address; + static const int id = 0x4CED50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CED50, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4CF006, GAME_10US_COMPACT, H_CALL, 0x4CEFC0, 1>; + using def_t = void(CAnimBlendAssociation *, RpClump *, CAnimBlendHierarchy *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN_OVERLOADED(CAnimBlendAssociation::Init, void (CAnimBlendAssociation::*)(CAnimBlendAssociation &)) + static int address; + static int global_address; + static const int id = 0x4CEE40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEE40, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4CF052, GAME_10US_COMPACT, H_CALL, 0x4CF020, 1>; + using def_t = void(CAnimBlendAssociation *, CAnimBlendAssociation &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN_OVERLOADED(CAnimBlendAssociation::Init, void (CAnimBlendAssociation::*)(CAnimBlendStaticAssociation &)) + static int address; + static int global_address; + static const int id = 0x4CEEC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEEC0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4CF0B2, GAME_10US_COMPACT, H_CALL, 0x4CF080, 1>; + using def_t = void(CAnimBlendAssociation *, CAnimBlendStaticAssociation &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +DEL_DTOR_META_BEGIN(CAnimBlendAssociation) + static int address; + static int global_address; + static const int id = 0x4CEFA0; + static const bool is_virtual = true; + static const int vtable_index = 0; + using mv_addresses_t = MvAddresses<0x4CEFA0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x85C6D0, GAME_10US_COMPACT, H_CALLBACK, 0x85C6D0, 1>; + using def_t = void(CAnimBlendAssociation *, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +CTOR_META_BEGIN_OVERLOADED(CAnimBlendAssociation, void(RpClump *, CAnimBlendHierarchy *)) + static int address; + static int global_address; + static const int id = 0x4CEFC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEFC0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D436F, GAME_10US_COMPACT, H_CALL, 0x4D4330, 1, + 0x4D4546, GAME_10US_COMPACT, H_CALL, 0x4D4410, 1>; + using def_t = CAnimBlendAssociation *(CAnimBlendAssociation *, RpClump *, CAnimBlendHierarchy *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +CTOR_META_BEGIN_OVERLOADED(CAnimBlendAssociation, void(CAnimBlendAssociation &)) + static int address; + static int global_address; + static const int id = 0x4CF020; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CF020, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = CAnimBlendAssociation *(CAnimBlendAssociation *, CAnimBlendAssociation &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +CTOR_META_BEGIN_OVERLOADED(CAnimBlendAssociation, void(CAnimBlendHierarchy &)) + static int address; + static int global_address; + static const int id = 0x4CF080; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CF080, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4CE0FC, GAME_10US_COMPACT, H_CALL, 0x4CE0B0, 1, + 0x4CE182, GAME_10US_COMPACT, H_CALL, 0x4CE130, 1>; + using def_t = CAnimBlendAssociation *(CAnimBlendAssociation *, CAnimBlendHierarchy &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CAnimBlendAssociation::UpdateTimeStep) + static int address; + static int global_address; + static const int id = 0x4D13A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4D13A0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CAnimBlendAssociation *, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CAnimBlendAssociation::UpdateTime) + static int address; + static int global_address; + static const int id = 0x4D13D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4D13D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D3751, GAME_10US_COMPACT, H_CALL, 0x4D34F0, 1>; + using def_t = bool(CAnimBlendAssociation *, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CAnimBlendAssociation::UpdateBlend) + static int address; + static int global_address; + static const int id = 0x4D1490; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4D1490, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D353C, GAME_10US_COMPACT, H_CALL, 0x4D34F0, 1>; + using def_t = bool(CAnimBlendAssociation *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +template<> +struct stack_object : stack_object_no_default { + SUPPORTED_10US stack_object() { + plugin::CallMethodDynGlobal(ctor_gaddr(CAnimBlendAssociation), reinterpret_cast(objBuff)); + } + SUPPORTED_10US stack_object(CAnimBlendHierarchy &rhs) { + plugin::CallMethodDynGlobal(ctor_gaddr_o(CAnimBlendAssociation, void(CAnimBlendHierarchy &)), reinterpret_cast(objBuff), rhs); + } + SUPPORTED_10US stack_object(RpClump *clump, CAnimBlendHierarchy *hier) { + plugin::CallMethodDynGlobal(ctor_gaddr_o(CAnimBlendAssociation, void(RpClump *, CAnimBlendHierarchy *)), reinterpret_cast(objBuff), clump, hier); + } + SUPPORTED_10US stack_object(CAnimBlendAssociation &rhs) { + plugin::CallMethodDynGlobal(ctor_gaddr_o(CAnimBlendAssociation, void(CAnimBlendAssociation &)), reinterpret_cast(objBuff), rhs); + } + SUPPORTED_10US ~stack_object() { + plugin::CallMethodDynGlobal(dtor_gaddr(CAnimBlendAssociation), reinterpret_cast(objBuff)); + } +}; + +template <> +SUPPORTED_10US inline CAnimBlendAssociation *operator_new() { + void *objData = operator new(sizeof(CAnimBlendAssociation)); + CAnimBlendAssociation *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr(CAnimBlendAssociation), obj); + return obj; +} +template <> +SUPPORTED_10US inline CAnimBlendAssociation *operator_new_array(unsigned int objCount) { + void *objData = operator new(sizeof(CAnimBlendAssociation) * objCount + 4); + *reinterpret_cast(objData) = objCount; + CAnimBlendAssociation *objArray = reinterpret_cast(reinterpret_cast(objData) + 4); + for (unsigned int i = 0; i < objCount; i++) + plugin::CallMethodDynGlobal(ctor_gaddr(CAnimBlendAssociation), &objArray[i]); + return objArray; +} +template <> +SUPPORTED_10US inline CAnimBlendAssociation *operator_new(CAnimBlendHierarchy &rhs) { + void *objData = operator new(sizeof(CAnimBlendAssociation)); + CAnimBlendAssociation *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr_o(CAnimBlendAssociation, void(CAnimBlendHierarchy &)), obj, rhs); + return obj; +} +template <> +SUPPORTED_10US inline CAnimBlendAssociation *operator_new(RpClump *clump, CAnimBlendHierarchy *hier) { + void *objData = operator new(sizeof(CAnimBlendAssociation)); + CAnimBlendAssociation *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr_o(CAnimBlendAssociation, void(RpClump *, CAnimBlendHierarchy *)), obj, clump, hier); + return obj; +} +template <> +SUPPORTED_10US inline CAnimBlendAssociation *operator_new(CAnimBlendAssociation &rhs) { + void *objData = operator new(sizeof(CAnimBlendAssociation)); + CAnimBlendAssociation *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr_o(CAnimBlendAssociation, void(CAnimBlendAssociation &)), obj, rhs); + return obj; +} +template <> +SUPPORTED_10US inline void operator_delete(CAnimBlendAssociation *obj) { + if (obj == nullptr) return; + plugin::CallVirtualMethod<0, CAnimBlendAssociation *, unsigned char>(obj, 1); +} +template <> +SUPPORTED_10US inline void operator_delete_array(CAnimBlendAssociation *objArray) { + if (objArray == nullptr) return; + void *objData = reinterpret_cast(reinterpret_cast(objArray) - 4); + unsigned int arraySize = *reinterpret_cast(objData); + for (unsigned int i = 0; i < arraySize; i++) + plugin::CallVirtualMethod<0, CAnimBlendAssociation *, unsigned char>(&objArray[i], 1); + operator delete(objData); +} + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CAnimBlendClumpData.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CAnimBlendClumpData.h new file mode 100644 index 00000000..57106fbb --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CAnimBlendClumpData.h @@ -0,0 +1,135 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +CTOR_META_BEGIN(CAnimBlendClumpData) + static int address; + static int global_address; + static const int id = 0x4CF0E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CF0E0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D5F60, GAME_10US_COMPACT, H_CALL, 0x4D5F50, 1>; + using def_t = CAnimBlendClumpData *(CAnimBlendClumpData *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +DTOR_META_BEGIN(CAnimBlendClumpData) + static int address; + static int global_address; + static const int id = 0x4CF100; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CF100, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D5F23, GAME_10US_COMPACT, H_CALL, 0x4D5F20, 1, + 0x4D612D, GAME_10US_COMPACT, H_CALL, 0x4D6110, 1>; + using def_t = void(CAnimBlendClumpData *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CAnimBlendClumpData::SetNumberOfBones) + static int address; + static int global_address; + static const int id = 0x4CF140; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CF140, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D6210, GAME_10US_COMPACT, H_JUMP, 0x4D6210, 1, + 0x4D6552, GAME_10US_COMPACT, H_CALL, 0x4D6510, 1, + 0x4D66DA, GAME_10US_COMPACT, H_CALL, 0x4D66A0, 1>; + using def_t = void(CAnimBlendClumpData *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CAnimBlendClumpData::ForAllFrames) + static int address; + static int global_address; + static const int id = 0x4CF190; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CF190, 0, 0, 0, 0, 0>; + // total references count: 10us (13), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D3664, GAME_10US_COMPACT, H_CALL, 0x4D34F0, 1, + 0x4D367A, GAME_10US_COMPACT, H_CALL, 0x4D34F0, 2, + 0x4D36D0, GAME_10US_COMPACT, H_CALL, 0x4D34F0, 3, + 0x4D36EB, GAME_10US_COMPACT, H_CALL, 0x4D34F0, 4, + 0x4D3706, GAME_10US_COMPACT, H_CALL, 0x4D34F0, 5, + 0x4D62E6, GAME_10US_COMPACT, H_CALL, 0x4D62A0, 1, + 0x4D62FE, GAME_10US_COMPACT, H_CALL, 0x4D62A0, 2, + 0x4D63B6, GAME_10US_COMPACT, H_CALL, 0x4D6370, 1, + 0x4D63CE, GAME_10US_COMPACT, H_CALL, 0x4D6370, 2, + 0x4D6421, GAME_10US_COMPACT, H_CALL, 0x4D6400, 1, + 0x4D64EE, GAME_10US_COMPACT, H_CALL, 0x4D64A0, 1, + 0x4D65FE, GAME_10US_COMPACT, H_CALL, 0x4D6510, 1, + 0x4D6702, GAME_10US_COMPACT, H_CALL, 0x4D66A0, 1>; + using def_t = void(CAnimBlendClumpData *, void(*)(AnimBlendFrameData *, void *), void *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CAnimBlendClumpData::LoadFramesIntoSPR) + static int address; + static int global_address; + static const int id = 0x4CF1D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CF1D0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CAnimBlendClumpData *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CAnimBlendClumpData::ForAllFramesInSPR) + static int address; + static int global_address; + static const int id = 0x4CF1E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CF1E0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CAnimBlendClumpData *, void(*)(AnimBlendFrameData *, void *), void *, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +DEL_DTOR_META_BEGIN(CAnimBlendClumpData) + static int address; + static int global_address; + static const int id = 0x4D5F20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4D5F20, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CAnimBlendClumpData *, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CAnimBlendStaticAssociation.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CAnimBlendStaticAssociation.h new file mode 100644 index 00000000..ac143319 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CAnimBlendStaticAssociation.h @@ -0,0 +1,181 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +DEL_DTOR_META_BEGIN(CAnimBlendStaticAssociation) + static int address; + static int global_address; + static const int id = 0x4CDF50; + static const bool is_virtual = true; + static const int vtable_index = 0; + using mv_addresses_t = MvAddresses<0x4CDF50, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x85C6CC, GAME_10US_COMPACT, H_CALLBACK, 0x85C6CC, 1>; + using def_t = void(void *, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +CTOR_META_BEGIN(CAnimBlendStaticAssociation) + static int address; + static int global_address; + static const int id = 0x4CE940; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CE940, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4CE299, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x4CE435, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x4CE63A, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x4CE75A, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = CAnimBlendStaticAssociation *(CAnimBlendStaticAssociation *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CAnimBlendStaticAssociation::AllocateSequenceArray) + static int address; + static int global_address; + static const int id = 0x4CE960; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CE960, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4CEC54, GAME_10US_COMPACT, H_CALL, 0x4CEC20, 1>; + using def_t = void(CAnimBlendStaticAssociation *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CAnimBlendStaticAssociation::FreeSequenceArray) + static int address; + static int global_address; + static const int id = 0x4CE9A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CE9A0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CAnimBlendStaticAssociation *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +DTOR_META_BEGIN(CAnimBlendStaticAssociation) + static int address; + static int global_address; + static const int id = 0x4CEC00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEC00, 0, 0, 0, 0, 0>; + // total references count: 10us (6), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4CDF8A, GAME_10US_COMPACT, H_CALL, 0x4CDF50, 1, + 0x4CDF62, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x4CE294, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x4CE430, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x4CE635, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x4CE755, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(CAnimBlendStaticAssociation *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CAnimBlendStaticAssociation::Init) + static int address; + static int global_address; + static const int id = 0x4CEC20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEC20, 0, 0, 0, 0, 0>; + // total references count: 10us (6), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4CDFD7, GAME_10US_COMPACT, H_CALL, 0x4CDFB0, 1, + 0x4CE314, GAME_10US_COMPACT, H_CALL, 0x4CE220, 1, + 0x4CE520, GAME_10US_COMPACT, H_CALL, 0x4CE3B0, 1, + 0x4CE688, GAME_10US_COMPACT, H_CALL, 0x4CE5C0, 1, + 0x4CE7A7, GAME_10US_COMPACT, H_CALL, 0x4CE6E0, 1, + 0x4CEF89, GAME_10US_COMPACT, H_CALL, 0x4CEF60, 1>; + using def_t = void(CAnimBlendStaticAssociation *, RpClump *, CAnimBlendHierarchy *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +CTOR_META_BEGIN_OVERLOADED(CAnimBlendStaticAssociation, void(RpClump *, CAnimBlendHierarchy *)) + static int address; + static int global_address; + static const int id = 0x4CEF60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4CEF60, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = CAnimBlendStaticAssociation *(CAnimBlendStaticAssociation *, RpClump *, CAnimBlendHierarchy *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +template<> +struct stack_object : stack_object_no_default { + SUPPORTED_10US stack_object() { + plugin::CallMethodDynGlobal(ctor_gaddr(CAnimBlendStaticAssociation), reinterpret_cast(objBuff)); + } + SUPPORTED_10US stack_object(RpClump *clump, CAnimBlendHierarchy *hierarchy) { + plugin::CallMethodDynGlobal(ctor_gaddr_o(CAnimBlendStaticAssociation, void(RpClump *, CAnimBlendHierarchy *)), reinterpret_cast(objBuff), clump, hierarchy); + } + SUPPORTED_10US ~stack_object() { + plugin::CallMethodDynGlobal(dtor_gaddr(CAnimBlendStaticAssociation), reinterpret_cast(objBuff)); + } +}; + +template <> +SUPPORTED_10US inline CAnimBlendStaticAssociation *operator_new() { + void *objData = operator new(sizeof(CAnimBlendStaticAssociation)); + CAnimBlendStaticAssociation *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr(CAnimBlendStaticAssociation), obj); + return obj; +} +template <> +SUPPORTED_10US inline CAnimBlendStaticAssociation *operator_new_array(unsigned int objCount) { + void *objData = operator new(sizeof(CAnimBlendStaticAssociation) * objCount + 4); + *reinterpret_cast(objData) = objCount; + CAnimBlendStaticAssociation *objArray = reinterpret_cast(reinterpret_cast(objData) + 4); + for (unsigned int i = 0; i < objCount; i++) + plugin::CallMethodDynGlobal(ctor_gaddr(CAnimBlendStaticAssociation), &objArray[i]); + return objArray; +} +template <> +SUPPORTED_10US inline CAnimBlendStaticAssociation *operator_new(RpClump *clump, CAnimBlendHierarchy *hierarchy) { + void *objData = operator new(sizeof(CAnimBlendStaticAssociation)); + CAnimBlendStaticAssociation *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr_o(CAnimBlendStaticAssociation, void(RpClump *, CAnimBlendHierarchy *)), obj, clump, hierarchy); + return obj; +} +template <> +SUPPORTED_10US inline void operator_delete(CAnimBlendStaticAssociation *obj) { + if (obj == nullptr) return; + plugin::CallVirtualMethod<0, CAnimBlendStaticAssociation *, unsigned char>(obj, 1); +} +template <> +SUPPORTED_10US inline void operator_delete_array(CAnimBlendStaticAssociation *objArray) { + if (objArray == nullptr) return; + plugin::CallVirtualMethod<0, CAnimBlendStaticAssociation *, unsigned char>(objArray, 3); +} + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCamera.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCamera.h new file mode 100644 index 00000000..012301d2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCamera.h @@ -0,0 +1,2187 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN_OVERLOADED(CCamera::IsSphereVisible, bool (CCamera::*)(CVector const &, float, RwMatrixTag *)) + static int address; + static int global_address; + static const int id = 0x420C40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x420C40, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x420D56, GAME_10US_COMPACT, H_CALL, 0x420D40, 1, + 0x420D7C, GAME_10US_COMPACT, H_CALL, 0x420D40, 2, + 0x440E82, GAME_10US_COMPACT, H_CALL, 0x440D10, 1, + 0x440EAC, GAME_10US_COMPACT, H_CALL, 0x440D10, 2, + 0x44EB48, GAME_10US_COMPACT, H_CALL, 0x44E790, 1, + 0x456B90, GAME_10US_COMPACT, H_CALL, 0x456A70, 1, + 0x456BB6, GAME_10US_COMPACT, H_CALL, 0x456A70, 2, + 0x463A78, GAME_10US_COMPACT, H_CALL, 0x463A60, 1, + 0x463A9E, GAME_10US_COMPACT, H_CALL, 0x463A60, 2, + 0x53458B, GAME_10US_COMPACT, H_CALL, 0x534540, 1, + 0x5345B4, GAME_10US_COMPACT, H_CALL, 0x534540, 2, + 0x55681A, GAME_10US_COMPACT, H_CALL, 0x556800, 1, + 0x556840, GAME_10US_COMPACT, H_CALL, 0x556800, 2, + 0x5DB4FB, GAME_10US_COMPACT, H_CALL, 0x5DB4E0, 1, + 0x5DB519, GAME_10US_COMPACT, H_CALL, 0x5DB4E0, 2, + 0x5DBC09, GAME_10US_COMPACT, H_CALL, 0x5DBAE0, 1, + 0x5DBC2F, GAME_10US_COMPACT, H_CALL, 0x5DBAE0, 2, + 0x612D04, GAME_10US_COMPACT, H_CALL, 0x612CD0, 1, + 0x612D27, GAME_10US_COMPACT, H_CALL, 0x612CD0, 2, + 0x6EB8A5, GAME_10US_COMPACT, H_CALL, 0x6EB810, 1, + 0x6EB8CF, GAME_10US_COMPACT, H_CALL, 0x6EB810, 2, + 0x6EDE3E, GAME_10US_COMPACT, H_CALL, 0x6EDDC0, 1, + 0x6EDE64, GAME_10US_COMPACT, H_CALL, 0x6EDDC0, 2, + 0x720F11, GAME_10US_COMPACT, H_CALL, 0x720F00, 1, + 0x7250A5, GAME_10US_COMPACT, H_CALL, 0x725040, 1, + 0x726F30, GAME_10US_COMPACT, H_CALL, 0x726DF0, 1, + 0x726F55, GAME_10US_COMPACT, H_CALL, 0x726DF0, 2>; + using def_t = bool(CCamera *, CVector const *, float, RwMatrixTag *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN_OVERLOADED(CCamera::IsSphereVisible, bool (CCamera::*)(CVector const &, float)) + static int address; + static int global_address; + static const int id = 0x420D40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x420D40, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x42484E, GAME_10US_COMPACT, H_CALL, 0x424210, 1, + 0x42498E, GAME_10US_COMPACT, H_CALL, 0x424210, 2, + 0x42C4B8, GAME_10US_COMPACT, H_CALL, 0x42C2B0, 1, + 0x444B56, GAME_10US_COMPACT, H_CALL, 0x444810, 1, + 0x44EB5E, GAME_10US_COMPACT, H_CALL, 0x44E790, 1, + 0x4657C8, GAME_10US_COMPACT, H_CALL, 0x465680, 1, + 0x468320, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1, + 0x47FE2A, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1, + 0x47FE82, GAME_10US_COMPACT, H_CALL, 0x47FA30, 2, + 0x5FCA07, GAME_10US_COMPACT, H_CALL, 0x5FC9B0, 1, + 0x5FCEF6, GAME_10US_COMPACT, H_CALL, 0x5FCE80, 1, + 0x5FD3A6, GAME_10US_COMPACT, H_CALL, 0x5FD330, 1, + 0x613DB0, GAME_10US_COMPACT, H_CALL, 0x613D60, 1, + 0x614C10, GAME_10US_COMPACT, H_CALL, 0x614720, 1, + 0x615278, GAME_10US_COMPACT, H_CALL, 0x614720, 2, + 0x615B36, GAME_10US_COMPACT, H_CALL, 0x615970, 1, + 0x64D03C, GAME_10US_COMPACT, H_CALL, 0x64CF40, 1, + 0x64D078, GAME_10US_COMPACT, H_CALL, 0x64CF40, 2, + 0x6E503F, GAME_10US_COMPACT, H_CALL, 0x6E4F10, 1, + 0x6F3041, GAME_10US_COMPACT, H_CALL, 0x6F2F40, 1, + 0x707BDE, GAME_10US_COMPACT, H_CALL, 0x707B40, 1, + 0x707D67, GAME_10US_COMPACT, H_CALL, 0x707CA0, 1, + 0x720DE1, GAME_10US_COMPACT, H_CALL, 0x720930, 1, + 0x7364BE, GAME_10US_COMPACT, H_CALL, 0x7360D0, 1, + 0x736510, GAME_10US_COMPACT, H_CALL, 0x7360D0, 2, + 0x73BB4F, GAME_10US_COMPACT, H_CALL, 0x73B550, 1, + 0x73BEED, GAME_10US_COMPACT, H_CALL, 0x73B550, 2, + 0x73C014, GAME_10US_COMPACT, H_CALL, 0x73B550, 3>; + using def_t = bool(CCamera *, CVector const *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCamera::VectorTrackRunning) + static int address; + static int global_address; + static const int id = 0x474870; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x474870, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x476F82, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1>; + using def_t = bool(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::VectorMoveRunning) + static int address; + static int global_address; + static const int id = 0x4748A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4748A0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x476F62, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1>; + using def_t = bool(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::InitCameraVehicleTweaks) + static int address; + static int global_address; + static const int id = 0x50A3B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50A3B0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x50A495, GAME_10US_COMPACT, H_CALL, 0x50A480, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::ApplyVehicleCameraTweaks) + static int address; + static int global_address; + static const int id = 0x50A480; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50A480, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52461F, GAME_10US_COMPACT, H_CALL, 0x5245B0, 1>; + using def_t = void(CCamera *, CVehicle *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +DTOR_META_BEGIN(CCamera) + static int address; + static int global_address; + static const int id = 0x50A870; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50A870, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x514013, GAME_10US_COMPACT, H_CALL, 0x514010, 1, + 0x856415, GAME_10US_COMPACT, H_JUMP, 0x856410, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::CamShake) + static int address; + static int global_address; + static const int id = 0x50A9F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50A9F0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x6B3949, GAME_10US_COMPACT, H_CALL, 0x6B3780, 1, + 0x6B3D65, GAME_10US_COMPACT, H_CALL, 0x6B3BB0, 1, + 0x6BEA9C, GAME_10US_COMPACT, H_CALL, 0x6BEA10, 1, + 0x6C6F3D, GAME_10US_COMPACT, H_CALL, 0x6C6D30, 1, + 0x6CCF7C, GAME_10US_COMPACT, H_CALL, 0x6CCCF0, 1, + 0x6F2253, GAME_10US_COMPACT, H_CALL, 0x6F21B0, 1, + 0x6F8CC7, GAME_10US_COMPACT, H_CALL, 0x6F86A0, 1, + 0x73751F, GAME_10US_COMPACT, H_CALL, 0x736A50, 1, + 0x737554, GAME_10US_COMPACT, H_CALL, 0x736A50, 2>; + using def_t = void(CCamera *, float, float, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCamera::ClearPlayerWeaponMode) + static int address; + static int global_address; + static const int id = 0x50AB10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AB10, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x529C43, GAME_10US_COMPACT, H_CALL, 0x527FA0, 1, + 0x5BC60A, GAME_10US_COMPACT, H_CALL, 0x5BC520, 1, + 0x6098BB, GAME_10US_COMPACT, H_CALL, 0x609830, 1, + 0x609CB4, GAME_10US_COMPACT, H_CALL, 0x609C80, 1, + 0x60A02E, GAME_10US_COMPACT, H_JUMP, 0x60A020, 1, + 0x60B48B, GAME_10US_COMPACT, H_CALL, 0x60B460, 1, + 0x60B542, GAME_10US_COMPACT, H_CALL, 0x60B460, 2, + 0x634CAE, GAME_10US_COMPACT, H_CALL, 0x634C10, 1, + 0x68596F, GAME_10US_COMPACT, H_CALL, 0x6857E0, 1, + 0x685A25, GAME_10US_COMPACT, H_CALL, 0x6859A0, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::DontProcessObbeCinemaCamera) + static int address; + static int global_address; + static const int id = 0x50AB40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AB40, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCamera::GetScreenRect) + static int address; + static int global_address; + static const int id = 0x50AB50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AB50, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x514878, GAME_10US_COMPACT, H_CALL, 0x514860, 1>; + using def_t = void(CCamera *, CRect *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::Enable1rstPersonCamCntrlsScript) + static int address; + static int global_address; + static const int id = 0x50AC00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AC00, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::Enable1rstPersonWeaponsCamera) + static int address; + static int global_address; + static const int id = 0x50AC10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AC10, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::Fade) + static int address; + static int global_address; + static const int id = 0x50AC20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AC20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4405D4, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x4409BD, GAME_10US_COMPACT, H_CALL, 0x4404A0, 2, + 0x440ACF, GAME_10US_COMPACT, H_CALL, 0x4404A0, 3, + 0x441288, GAME_10US_COMPACT, H_CALL, 0x441240, 1, + 0x441593, GAME_10US_COMPACT, H_CALL, 0x441560, 1, + 0x44208C, GAME_10US_COMPACT, H_CALL, 0x442060, 1, + 0x4423E5, GAME_10US_COMPACT, H_CALL, 0x4423C0, 1, + 0x442590, GAME_10US_COMPACT, H_CALL, 0x442480, 1, + 0x442859, GAME_10US_COMPACT, H_CALL, 0x442480, 2, + 0x442DF2, GAME_10US_COMPACT, H_CALL, 0x442AD0, 1, + 0x443105, GAME_10US_COMPACT, H_CALL, 0x442AD0, 2, + 0x443498, GAME_10US_COMPACT, H_CALL, 0x442AD0, 3, + 0x4436F8, GAME_10US_COMPACT, H_CALL, 0x442AD0, 4, + 0x45F0E6, GAME_10US_COMPACT, H_CALL, 0x45F050, 1, + 0x45F101, GAME_10US_COMPACT, H_CALL, 0x45F050, 2, + 0x460321, GAME_10US_COMPACT, H_CALL, 0x4600F0, 1, + 0x46033C, GAME_10US_COMPACT, H_CALL, 0x4600F0, 2, + 0x465029, GAME_10US_COMPACT, H_CALL, 0x465000, 1, + 0x468592, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x47C7EB, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x53E664, GAME_10US_COMPACT, H_CALL, 0x53E600, 1, + 0x53E693, GAME_10US_COMPACT, H_CALL, 0x53E600, 2, + 0x570B07, GAME_10US_COMPACT, H_CALL, 0x56F8D0, 1, + 0x570B53, GAME_10US_COMPACT, H_CALL, 0x56F8D0, 2, + 0x5733B4, GAME_10US_COMPACT, H_CALL, 0x573330, 1, + 0x5733CF, GAME_10US_COMPACT, H_CALL, 0x573330, 2, + 0x576DBD, GAME_10US_COMPACT, H_CALL, 0x576B70, 1, + 0x576DD8, GAME_10US_COMPACT, H_CALL, 0x576B70, 2, + 0x5B1942, GAME_10US_COMPACT, H_CALL, 0x5B1720, 1, + 0x618F00, GAME_10US_COMPACT, H_CALL, 0x618E90, 1>; + using def_t = void(CCamera *, float, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCamera::FindCamFOV) + static int address; + static int global_address; + static const int id = 0x50AD20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AD20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x456B1B, GAME_10US_COMPACT, H_CALL, 0x456A70, 1, + 0x56ED9C, GAME_10US_COMPACT, H_CALL, 0x56EC80, 1, + 0x56EDDF, GAME_10US_COMPACT, H_CALL, 0x56EC80, 2>; + using def_t = float(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::Find3rdPersonQuickAimPitch) + static int address; + static int global_address; + static const int id = 0x50AD40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AD40, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x522C54, GAME_10US_COMPACT, H_CALL, 0x521500, 1>; + using def_t = float(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::GetCutSceneFinishTime) + static int address; + static int global_address; + static const int id = 0x50AD90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AD90, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5B04DF, GAME_10US_COMPACT, H_CALL, 0x5B04D0, 1, + 0x5B1919, GAME_10US_COMPACT, H_CALL, 0x5B1720, 1>; + using def_t = unsigned int(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::GetFading) + static int address; + static int global_address; + static const int id = 0x50ADE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50ADE0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x44057F, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x440A97, GAME_10US_COMPACT, H_CALL, 0x4404A0, 2, + 0x47C836, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x58AB18, GAME_10US_COMPACT, H_CALL, 0x58AA50, 1, + 0x58AB9A, GAME_10US_COMPACT, H_CALL, 0x58AA50, 2>; + using def_t = bool(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::GetFadingDirection) + static int address; + static int global_address; + static const int id = 0x50ADF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50ADF0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x524078, GAME_10US_COMPACT, H_CALL, 0x522D40, 1>; + using def_t = int(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::Get_Just_Switched_Status) + static int address; + static int global_address; + static const int id = 0x50AE10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AE10, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4D7E51, GAME_10US_COMPACT, H_CALL, 0x4D7E40, 1>; + using def_t = bool(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::GetScreenFadeStatus) + static int address; + static int global_address; + static const int id = 0x50AE20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AE20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4054CB, GAME_10US_COMPACT, H_CALL, 0x4053F0, 1, + 0x410BA0, GAME_10US_COMPACT, H_CALL, 0x410AD0, 1, + 0x53E9BE, GAME_10US_COMPACT, H_CALL, 0x53E920, 1, + 0x58AB26, GAME_10US_COMPACT, H_CALL, 0x58AA50, 1, + 0x58AB7A, GAME_10US_COMPACT, H_CALL, 0x58AA50, 2, + 0x58ABA8, GAME_10US_COMPACT, H_CALL, 0x58AA50, 3, + 0x58ABF3, GAME_10US_COMPACT, H_CALL, 0x58AA50, 4, + 0x5AFFA5, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1>; + using def_t = signed int(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::GetGameCamPosition) + static int address; + static int global_address; + static const int id = 0x50AE50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AE50, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x441EAD, GAME_10US_COMPACT, H_CALL, 0x441E10, 1, + 0x5DE292, GAME_10US_COMPACT, H_CALL, 0x5DE160, 1, + 0x6DB885, GAME_10US_COMPACT, H_CALL, 0x6DAF00, 1, + 0x6DB915, GAME_10US_COMPACT, H_CALL, 0x6DAF00, 2, + 0x72DF45, GAME_10US_COMPACT, H_CALL, 0x72DEC0, 1>; + using def_t = CVector *(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::GetLookingLRBFirstPerson) + static int address; + static int global_address; + static const int id = 0x50AE60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AE60, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x72AA33, GAME_10US_COMPACT, H_CALL, 0x72A9A0, 1>; + using def_t = bool(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::GetLookDirection) + static int address; + static int global_address; + static const int id = 0x50AE90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AE90, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x425094, GAME_10US_COMPACT, H_CALL, 0x424F80, 1, + 0x553B7E, GAME_10US_COMPACT, H_CALL, 0x553AA0, 1, + 0x553B8D, GAME_10US_COMPACT, H_CALL, 0x553AA0, 2, + 0x583699, GAME_10US_COMPACT, H_CALL, 0x583670, 1, + 0x58375C, GAME_10US_COMPACT, H_CALL, 0x583670, 2, + 0x67E906, GAME_10US_COMPACT, H_CALL, 0x67E7B0, 1, + 0x688BB3, GAME_10US_COMPACT, H_CALL, 0x688A90, 1, + 0x68915B, GAME_10US_COMPACT, H_CALL, 0x688A90, 2, + 0x6FAE63, GAME_10US_COMPACT, H_CALL, 0x6FADF0, 1>; + using def_t = signed int(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::GetLookingForwardFirstPerson) + static int address; + static int global_address; + static const int id = 0x50AED0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AED0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x6ABCD4, GAME_10US_COMPACT, H_CALL, 0x6AAB50, 1, + 0x6DD189, GAME_10US_COMPACT, H_CALL, 0x6DD130, 1>; + using def_t = bool(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::GetArrPosForVehicleType) + static int address; + static int global_address; + static const int id = 0x50AF00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AF00, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x50C1E9, GAME_10US_COMPACT, H_CALL, 0x50C1B0, 1, + 0x5246FE, GAME_10US_COMPACT, H_CALL, 0x5245B0, 1, + 0x528AE1, GAME_10US_COMPACT, H_CALL, 0x527FA0, 1>; + using def_t = void(CCamera *, int, int *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCamera::GetPositionAlongSpline) + static int address; + static int global_address; + static const int id = 0x50AF80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AF80, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5B057E, GAME_10US_COMPACT, H_CALL, 0x5B0570, 1>; + using def_t = float(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::CopyCameraMatrixToRWCam) + static int address; + static int global_address; + static const int id = 0x50AFA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50AFA0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x51A587, GAME_10US_COMPACT, H_CALL, 0x51A560, 1, + 0x51A5B1, GAME_10US_COMPACT, H_CALL, 0x51A5A0, 1, + 0x52C98B, GAME_10US_COMPACT, H_CALL, 0x52B730, 1>; + using def_t = void(CCamera *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::CalculateMirroredMatrix) + static int address; + static int global_address; + static const int id = 0x50B380; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50B380, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x50B57D, GAME_10US_COMPACT, H_CALL, 0x50B510, 1>; + using def_t = void(CCamera *, CVector, float, CMatrix *, CMatrix *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCamera::DealWithMirrorBeforeConstructRenderList) + static int address; + static int global_address; + static const int id = 0x50B510; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50B510, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x7270A8, GAME_10US_COMPACT, H_CALL, 0x726DF0, 1, + 0x72710D, GAME_10US_COMPACT, H_CALL, 0x726DF0, 2>; + using def_t = void(CCamera *, bool, CVector, float, CMatrix *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCamera::ProcessFade) + static int address; + static int global_address; + static const int id = 0x50B5D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50B5D0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x45F0F0, GAME_10US_COMPACT, H_CALL, 0x45F050, 1, + 0x46032B, GAME_10US_COMPACT, H_CALL, 0x4600F0, 1, + 0x52B86C, GAME_10US_COMPACT, H_CALL, 0x52B730, 1, + 0x53C10B, GAME_10US_COMPACT, H_CALL, 0x53BEE0, 1, + 0x53E66E, GAME_10US_COMPACT, H_CALL, 0x53E600, 1, + 0x53E69D, GAME_10US_COMPACT, H_CALL, 0x53E600, 2, + 0x5733BE, GAME_10US_COMPACT, H_CALL, 0x573330, 1, + 0x576DC7, GAME_10US_COMPACT, H_CALL, 0x576B70, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::ProcessMusicFade) + static int address; + static int global_address; + static const int id = 0x50B6D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50B6D0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52B87A, GAME_10US_COMPACT, H_CALL, 0x52B730, 1, + 0x53E678, GAME_10US_COMPACT, H_CALL, 0x53E600, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::ProcessObbeCinemaCameraPed) + static int address; + static int global_address; + static const int id = 0x50B880; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50B880, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = unsigned int(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::ProcessWideScreenOn) + static int address; + static int global_address; + static const int id = 0x50B890; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50B890, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52B888, GAME_10US_COMPACT, H_CALL, 0x52B730, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::RenderMotionBlur) + static int address; + static int global_address; + static const int id = 0x50B8F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50B8F0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53EB0D, GAME_10US_COMPACT, H_CALL, 0x53E920, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::Restore) + static int address; + static int global_address; + static const int id = 0x50B930; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50B930, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4602FB, GAME_10US_COMPACT, H_CALL, 0x4600F0, 1, + 0x468A38, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x47C4CC, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x528105, GAME_10US_COMPACT, H_CALL, 0x527FA0, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::RestoreWithJumpCut) + static int address; + static int global_address; + static const int id = 0x50BAB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50BAB0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x440775, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x4422F9, GAME_10US_COMPACT, H_CALL, 0x442060, 1, + 0x4807A3, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1, + 0x49C533, GAME_10US_COMPACT, H_CALL, 0x49C490, 1, + 0x52B64F, GAME_10US_COMPACT, H_CALL, 0x527FA0, 1, + 0x570B35, GAME_10US_COMPACT, H_CALL, 0x56F8D0, 1, + 0x5AFEEE, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::SetCamCutSceneOffSet) + static int address; + static int global_address; + static const int id = 0x50BD20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50BD20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5B147D, GAME_10US_COMPACT, H_CALL, 0x5B1460, 1>; + using def_t = void(CCamera *, CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::SetCameraDirectlyBehindForFollowPed_CamOnAString) + static int address; + static int global_address; + static const int id = 0x50BD40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50BD40, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4422EF, GAME_10US_COMPACT, H_CALL, 0x442060, 1, + 0x483320, GAME_10US_COMPACT, H_CALL, 0x481300, 1, + 0x52A31E, GAME_10US_COMPACT, H_CALL, 0x527FA0, 1, + 0x52AF7D, GAME_10US_COMPACT, H_CALL, 0x527FA0, 2>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::SetCameraDirectlyBehindForFollowPed_ForAPed_CamOnAString) + static int address; + static int global_address; + static const int id = 0x50BDA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50BDA0, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CCamera *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::SetCamPositionForFixedMode) + static int address; + static int global_address; + static const int id = 0x50BEC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50BEC0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4403BB, GAME_10US_COMPACT, H_CALL, 0x43FFD0, 1, + 0x47C589, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x49C8B4, GAME_10US_COMPACT, H_CALL, 0x49C490, 1, + 0x51E8FA, GAME_10US_COMPACT, H_CALL, 0x51E560, 1, + 0x51EB74, GAME_10US_COMPACT, H_CALL, 0x51E560, 2, + 0x51ECD2, GAME_10US_COMPACT, H_CALL, 0x51E560, 3, + 0x51EEA7, GAME_10US_COMPACT, H_CALL, 0x51E560, 4, + 0x528A57, GAME_10US_COMPACT, H_CALL, 0x527FA0, 1, + 0x529903, GAME_10US_COMPACT, H_CALL, 0x527FA0, 2, + 0x529B95, GAME_10US_COMPACT, H_CALL, 0x527FA0, 3, + 0x529FEF, GAME_10US_COMPACT, H_CALL, 0x527FA0, 4>; + using def_t = void(CCamera *, CVector const *, CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCamera::SetFadeColour) + static int address; + static int global_address; + static const int id = 0x50BF00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50BF00, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4405C3, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x440ABE, GAME_10US_COMPACT, H_CALL, 0x4404A0, 2, + 0x441277, GAME_10US_COMPACT, H_CALL, 0x441240, 1, + 0x441582, GAME_10US_COMPACT, H_CALL, 0x441560, 1, + 0x44207B, GAME_10US_COMPACT, H_CALL, 0x442060, 1, + 0x4423D4, GAME_10US_COMPACT, H_CALL, 0x4423C0, 1, + 0x44257F, GAME_10US_COMPACT, H_CALL, 0x442480, 1, + 0x442848, GAME_10US_COMPACT, H_CALL, 0x442480, 2, + 0x442DE2, GAME_10US_COMPACT, H_CALL, 0x442AD0, 1, + 0x4430F5, GAME_10US_COMPACT, H_CALL, 0x442AD0, 2, + 0x443488, GAME_10US_COMPACT, H_CALL, 0x442AD0, 3, + 0x4436E7, GAME_10US_COMPACT, H_CALL, 0x442AD0, 4, + 0x45F0D8, GAME_10US_COMPACT, H_CALL, 0x45F050, 1, + 0x460315, GAME_10US_COMPACT, H_CALL, 0x4600F0, 1, + 0x47C7B4, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x53C753, GAME_10US_COMPACT, H_CALL, 0x53C680, 1, + 0x53E687, GAME_10US_COMPACT, H_CALL, 0x53E600, 1, + 0x570AF7, GAME_10US_COMPACT, H_CALL, 0x56F8D0, 1, + 0x570B42, GAME_10US_COMPACT, H_CALL, 0x56F8D0, 2, + 0x5733A6, GAME_10US_COMPACT, H_CALL, 0x573330, 1, + 0x576DB1, GAME_10US_COMPACT, H_CALL, 0x576B70, 1>; + using def_t = void(CCamera *, unsigned char, unsigned char, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CCamera::SetMotionBlur) + static int address; + static int global_address; + static const int id = 0x50BF40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50BF40, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x442A62, GAME_10US_COMPACT, H_CALL, 0x442980, 1, + 0x44306C, GAME_10US_COMPACT, H_CALL, 0x442AD0, 1, + 0x443403, GAME_10US_COMPACT, H_CALL, 0x442AD0, 2, + 0x4436A1, GAME_10US_COMPACT, H_CALL, 0x442AD0, 3, + 0x5184EC, GAME_10US_COMPACT, H_CALL, 0x517EA0, 1, + 0x5BC857, GAME_10US_COMPACT, H_CALL, 0x5BC520, 1>; + using def_t = void(CCamera *, int, int, int, int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4,5>; +META_END + +META_BEGIN(CCamera::SetMotionBlurAlpha) + static int address; + static int global_address; + static const int id = 0x50BF80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50BF80, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53EB03, GAME_10US_COMPACT, H_CALL, 0x53E920, 1>; + using def_t = void(CCamera *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::SetNearClipScript) + static int address; + static int global_address; + static const int id = 0x50BF90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50BF90, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x489B68, GAME_10US_COMPACT, H_CALL, 0x489500, 1, + 0x5B0715, GAME_10US_COMPACT, H_CALL, 0x5B05A0, 1>; + using def_t = void(CCamera *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::SetNewPlayerWeaponMode) + static int address; + static int global_address; + static const int id = 0x50BFB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50BFB0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5E7DCD, GAME_10US_COMPACT, H_CALL, 0x5E7CB0, 1, + 0x5E7E00, GAME_10US_COMPACT, H_CALL, 0x5E7CB0, 2, + 0x609862, GAME_10US_COMPACT, H_CALL, 0x609830, 1, + 0x609875, GAME_10US_COMPACT, H_CALL, 0x609830, 2, + 0x609888, GAME_10US_COMPACT, H_CALL, 0x609830, 3, + 0x60989B, GAME_10US_COMPACT, H_CALL, 0x609830, 4, + 0x6098AE, GAME_10US_COMPACT, H_CALL, 0x609830, 5, + 0x621ACA, GAME_10US_COMPACT, H_CALL, 0x621960, 1, + 0x685B97, GAME_10US_COMPACT, H_CALL, 0x6859A0, 1, + 0x686D6E, GAME_10US_COMPACT, H_CALL, 0x6859A0, 2>; + using def_t = void(CCamera *, short, short, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CCamera::Using1stPersonWeaponMode) + static int address; + static int global_address; + static const int id = 0x50BFF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50BFF0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x60F259, GAME_10US_COMPACT, H_CALL, 0x60EA90, 1, + 0x68590A, GAME_10US_COMPACT, H_CALL, 0x6857E0, 1, + 0x685AD5, GAME_10US_COMPACT, H_CALL, 0x6859A0, 1, + 0x6868D2, GAME_10US_COMPACT, H_CALL, 0x6859A0, 2, + 0x686EF4, GAME_10US_COMPACT, H_CALL, 0x6859A0, 3, + 0x687C86, GAME_10US_COMPACT, H_CALL, 0x687C20, 1>; + using def_t = bool(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::SetParametersForScriptInterpolation) + static int address; + static int global_address; + static const int id = 0x50C030; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C030, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x48A752, GAME_10US_COMPACT, H_CALL, 0x48A320, 1>; + using def_t = void(CCamera *, float, float, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CCamera::SetPercentAlongCutScene) + static int address; + static int global_address; + static const int id = 0x50C070; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C070, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x514958, GAME_10US_COMPACT, H_CALL, 0x514950, 1>; + using def_t = void(CCamera *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::SetRwCamera) + static int address; + static int global_address; + static const int id = 0x50C100; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C100, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53BD21, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1, + 0x5BD6A9, GAME_10US_COMPACT, H_CALL, 0x5BD600, 1>; + using def_t = void(CCamera *, RwCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::SetWideScreenOn) + static int address; + static int global_address; + static const int id = 0x50C140; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C140, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x454705, GAME_10US_COMPACT, H_CALL, 0x454340, 1, + 0x47F69B, GAME_10US_COMPACT, H_CALL, 0x47F370, 1, + 0x5B1493, GAME_10US_COMPACT, H_CALL, 0x5B1460, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::SetWideScreenOff) + static int address; + static int global_address; + static const int id = 0x50C150; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C150, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x45439F, GAME_10US_COMPACT, H_CALL, 0x454340, 1, + 0x468687, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x47F6AC, GAME_10US_COMPACT, H_CALL, 0x47F370, 1, + 0x5AFEF8, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::SetZoomValueFollowPedScript) + static int address; + static int global_address; + static const int id = 0x50C160; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C160, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x48164B, GAME_10US_COMPACT, H_CALL, 0x481300, 1, + 0x50C1CA, GAME_10US_COMPACT, H_CALL, 0x50C1B0, 1>; + using def_t = void(CCamera *, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::SetZoomValueCamStringScript) + static int address; + static int global_address; + static const int id = 0x50C1B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C1B0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x45AD1E, GAME_10US_COMPACT, H_CALL, 0x45AB10, 1, + 0x45AE73, GAME_10US_COMPACT, H_CALL, 0x45AD40, 1, + 0x48166E, GAME_10US_COMPACT, H_CALL, 0x481300, 1>; + using def_t = void(CCamera *, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::StartCooperativeCamMode) + static int address; + static int global_address; + static const int id = 0x50C260; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C260, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4980F5, GAME_10US_COMPACT, H_CALL, 0x496E00, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::StopCooperativeCamMode) + static int address; + static int global_address; + static const int id = 0x50C270; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C270, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::AllowShootingWith2PlayersInCar) + static int address; + static int global_address; + static const int id = 0x50C280; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C280, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CCamera *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::StoreValuesDuringInterPol) + static int address; + static int global_address; + static const int id = 0x50C290; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C290, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52BEDA, GAME_10US_COMPACT, H_CALL, 0x52B730, 1, + 0x52C214, GAME_10US_COMPACT, H_CALL, 0x52B730, 2>; + using def_t = void(CCamera *, CVector *, CVector *, CVector *, float *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCamera::UpdateTargetEntity) + static int address; + static int global_address; + static const int id = 0x50C360; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C360, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52B78C, GAME_10US_COMPACT, H_CALL, 0x52B730, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::TakeControl) + static int address; + static int global_address; + static const int id = 0x50C7C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C7C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x45AD12, GAME_10US_COMPACT, H_CALL, 0x45AB10, 1, + 0x45AE67, GAME_10US_COMPACT, H_CALL, 0x45AD40, 1, + 0x47C437, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x47C492, GAME_10US_COMPACT, H_CALL, 0x47C100, 2, + 0x47C4B8, GAME_10US_COMPACT, H_CALL, 0x47C100, 3, + 0x49C8C5, GAME_10US_COMPACT, H_CALL, 0x49C490, 1, + 0x51E67C, GAME_10US_COMPACT, H_CALL, 0x51E560, 1, + 0x51EB8C, GAME_10US_COMPACT, H_CALL, 0x51E560, 2, + 0x51ECEA, GAME_10US_COMPACT, H_CALL, 0x51E560, 3, + 0x51EECA, GAME_10US_COMPACT, H_CALL, 0x51E560, 4, + 0x51F0CA, GAME_10US_COMPACT, H_CALL, 0x51E560, 5, + 0x51F35B, GAME_10US_COMPACT, H_CALL, 0x51E560, 6, + 0x51FFBA, GAME_10US_COMPACT, H_CALL, 0x51E560, 7, + 0x5200FC, GAME_10US_COMPACT, H_CALL, 0x51E560, 8>; + using def_t = void(CCamera *, CEntity *, short, short, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCamera::TakeControlNoEntity) + static int address; + static int global_address; + static const int id = 0x50C8B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C8B0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4403CE, GAME_10US_COMPACT, H_CALL, 0x43FFD0, 1, + 0x47C601, GAME_10US_COMPACT, H_CALL, 0x47C100, 1>; + using def_t = void(CCamera *, CVector const *, short, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CCamera::TakeControlAttachToEntity) + static int address; + static int global_address; + static const int id = 0x50C910; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50C910, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4950F8, GAME_10US_COMPACT, H_CALL, 0x493FE0, 1, + 0x49517B, GAME_10US_COMPACT, H_CALL, 0x493FE0, 2, + 0x495200, GAME_10US_COMPACT, H_CALL, 0x493FE0, 3, + 0x49529D, GAME_10US_COMPACT, H_CALL, 0x493FE0, 4, + 0x495391, GAME_10US_COMPACT, H_CALL, 0x493FE0, 5>; + using def_t = void(CCamera *, CEntity *, CEntity *, CVector *, CVector *, float, short, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4,5,6,7>; +META_END + +META_BEGIN(CCamera::TakeControlWithSpline) + static int address; + static int global_address; + static const int id = 0x50CAE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CAE0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5B1489, GAME_10US_COMPACT, H_CALL, 0x5B1460, 1>; + using def_t = void(CCamera *, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::UpdateAimingCoors) + static int address; + static int global_address; + static const int id = 0x50CB10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CB10, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x686DFF, GAME_10US_COMPACT, H_CALL, 0x6859A0, 1>; + using def_t = void(CCamera *, CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::SetCamCollisionVarDataSet) + static int address; + static int global_address; + static const int id = 0x50CB60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CB60, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x50CC08, GAME_10US_COMPACT, H_JUMP, 0x50CBF0, 1, + 0x50CC15, GAME_10US_COMPACT, H_JUMP, 0x50CBF0, 2, + 0x50CC22, GAME_10US_COMPACT, H_JUMP, 0x50CBF0, 3, + 0x50CC2F, GAME_10US_COMPACT, H_JUMP, 0x50CBF0, 4, + 0x50CCB8, GAME_10US_COMPACT, H_CALL, 0x50CCA0, 1, + 0x50CCC9, GAME_10US_COMPACT, H_CALL, 0x50CCA0, 2, + 0x50CCDA, GAME_10US_COMPACT, H_CALL, 0x50CCA0, 3, + 0x50CCEB, GAME_10US_COMPACT, H_CALL, 0x50CCA0, 4, + 0x50CCFC, GAME_10US_COMPACT, H_CALL, 0x50CCA0, 5, + 0x50CD0D, GAME_10US_COMPACT, H_CALL, 0x50CCA0, 6>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::SetNearClipBasedOnPedCollision) + static int address; + static int global_address; + static const int id = 0x50CB90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CB90, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CCamera *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::SetColVarsAimWeapon) + static int address; + static int global_address; + static const int id = 0x50CBF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CBF0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x522A40, GAME_10US_COMPACT, H_CALL, 0x521500, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::SetColVarsPed) + static int address; + static int global_address; + static const int id = 0x50CC50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CC50, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52448C, GAME_10US_COMPACT, H_CALL, 0x522D40, 1>; + using def_t = void(int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::SetColVarsVehicle) + static int address; + static int global_address; + static const int id = 0x50CCA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CCA0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x525D52, GAME_10US_COMPACT, H_CALL, 0x5245B0, 1>; + using def_t = void(int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::CameraGenericModeSpecialCases) + static int address; + static int global_address; + static const int id = 0x50CD30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CD30, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x522A57, GAME_10US_COMPACT, H_CALL, 0x521500, 1, + 0x5244A4, GAME_10US_COMPACT, H_CALL, 0x522D40, 1>; + using def_t = void(CCamera *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::CameraPedModeSpecialCases) + static int address; + static int global_address; + static const int id = 0x50CD80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CD80, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::CameraPedAimModeSpecialCases) + static int address; + static int global_address; + static const int id = 0x50CDA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CDA0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x522A62, GAME_10US_COMPACT, H_CALL, 0x521500, 1>; + using def_t = void(CCamera *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::CameraVehicleModeSpecialCases) + static int address; + static int global_address; + static const int id = 0x50CDE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CDE0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x520897, GAME_10US_COMPACT, H_CALL, 0x520690, 1, + 0x521022, GAME_10US_COMPACT, H_CALL, 0x520E40, 1, + 0x525D78, GAME_10US_COMPACT, H_CALL, 0x5245B0, 1>; + using def_t = void(CCamera *, CVehicle *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::IsExtraEntityToIgnore) + static int address; + static int global_address; + static const int id = 0x50CE80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CE80, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x419F34, GAME_10US_COMPACT, H_CALL, 0x419F00, 1, + 0x41A5CC, GAME_10US_COMPACT, H_CALL, 0x41A5A0, 1>; + using def_t = bool(CCamera *, CEntity *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::ConsiderPedAsDucking) + static int address; + static int global_address; + static const int id = 0x50CEB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CEB0, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = bool(CCamera *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::ResetDuckingSystem) + static int address; + static int global_address; + static const int id = 0x50CEF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CEF0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4686CC, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x5219FD, GAME_10US_COMPACT, H_CALL, 0x521500, 1, + 0x52318B, GAME_10US_COMPACT, H_CALL, 0x522D40, 1>; + using def_t = void(CCamera *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::HandleCameraMotionForDucking) + static int address; + static int global_address; + static const int id = 0x50CFA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50CFA0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x520D38, GAME_10US_COMPACT, H_CALL, 0x520690, 1, + 0x524439, GAME_10US_COMPACT, H_CALL, 0x522D40, 1>; + using def_t = void(CCamera *, CPed *, CVector *, CVector *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCamera::HandleCameraMotionForDuckingDuringAim) + static int address; + static int global_address; + static const int id = 0x50D090; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50D090, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x522A1C, GAME_10US_COMPACT, H_CALL, 0x521500, 1>; + using def_t = void(CCamera *, CPed *, CVector *, CVector *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCamera::VectorMoveLinear) + static int address; + static int global_address; + static const int id = 0x50D160; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50D160, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x477004, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1>; + using def_t = void(CCamera *, CVector *, CVector *, float, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCamera::VectorTrackLinear) + static int address; + static int global_address; + static const int id = 0x50D1D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50D1D0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x476C45, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1>; + using def_t = void(CCamera *, CVector *, CVector *, float, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCamera::AddShakeSimple) + static int address; + static int global_address; + static const int id = 0x50D240; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50D240, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x478F90, GAME_10US_COMPACT, H_CALL, 0x478000, 1>; + using def_t = void(CCamera *, float, int, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CCamera::LerpFOV) + static int address; + static int global_address; + static const int id = 0x50D280; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50D280, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x476C88, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1>; + using def_t = void(CCamera *, float, float, float, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCamera::InitialiseScriptableComponents) + static int address; + static int global_address; + static const int id = 0x50D2D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50D2D0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4686C1, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x476CFD, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1, + 0x51A541, GAME_10US_COMPACT, H_CALL, 0x51A450, 1, + 0x5BC544, GAME_10US_COMPACT, H_CALL, 0x5BC520, 1>; + using def_t = int(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CCamera::ProcessVectorTrackLinear, void (CCamera::*)(float)) + static int address; + static int global_address; + static const int id = 0x50D350; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50D350, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x51647B, GAME_10US_COMPACT, H_CALL, 0x516440, 1>; + using def_t = void(CCamera *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN_OVERLOADED(CCamera::ProcessVectorMoveLinear, void (CCamera::*)(float)) + static int address; + static int global_address; + static const int id = 0x50D430; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50D430, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5164DB, GAME_10US_COMPACT, H_CALL, 0x5164A0, 1>; + using def_t = void(CCamera *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN_OVERLOADED(CCamera::ProcessFOVLerp, void (CCamera::*)(float)) + static int address; + static int global_address; + static const int id = 0x50D510; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x50D510, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x51653B, GAME_10US_COMPACT, H_CALL, 0x516500, 1>; + using def_t = void(CCamera *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +DEL_DTOR_META_BEGIN(CCamera) + static int address; + static int global_address; + static const int id = 0x514010; + static const bool is_virtual = true; + static const int vtable_index = 0; + using mv_addresses_t = MvAddresses<0x514010, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8630E8, GAME_10US_COMPACT, H_CALLBACK, 0x8630E8, 1>; + using def_t = void(CCamera *, char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::AvoidTheGeometry) + static int address; + static int global_address; + static const int id = 0x514030; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x514030, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5175B9, GAME_10US_COMPACT, H_CALL, 0x517500, 1, + 0x518776, GAME_10US_COMPACT, H_CALL, 0x518500, 1, + 0x51910C, GAME_10US_COMPACT, H_CALL, 0x518500, 2, + 0x51915C, GAME_10US_COMPACT, H_CALL, 0x518500, 3, + 0x5197EF, GAME_10US_COMPACT, H_CALL, 0x519250, 1, + 0x51A0C0, GAME_10US_COMPACT, H_CALL, 0x519810, 1>; + using def_t = void(CCamera *, CVector const *, CVector const *, CVector *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCamera::DrawBordersForWideScreen) + static int address; + static int global_address; + static const int id = 0x514860; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x514860, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53E2B4, GAME_10US_COMPACT, H_CALL, 0x53E230, 1, + 0x5AF8C0, GAME_10US_COMPACT, H_CALL, 0x5A87F0, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::FinishCutscene) + static int address; + static int global_address; + static const int id = 0x514950; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x514950, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5B0507, GAME_10US_COMPACT, H_CALL, 0x5B04D0, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::Find3rdPersonCamTargetVector) + static int address; + static int global_address; + static const int id = 0x514970; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x514970, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x60B703, GAME_10US_COMPACT, H_CALL, 0x60B650, 1, + 0x61F06D, GAME_10US_COMPACT, H_CALL, 0x61ED10, 1, + 0x627E34, GAME_10US_COMPACT, H_CALL, 0x627CC0, 1, + 0x628469, GAME_10US_COMPACT, H_CALL, 0x628350, 1, + 0x62AD98, GAME_10US_COMPACT, H_CALL, 0x62A380, 1, + 0x73E8CC, GAME_10US_COMPACT, H_CALL, 0x73E800, 1, + 0x7403BE, GAME_10US_COMPACT, H_CALL, 0x73FB10, 1>; + using def_t = void(CCamera *, float, CVector, CVector *, CVector *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCamera::CalculateGroundHeight) + static int address; + static int global_address; + static const int id = 0x514B80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x514B80, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x40D15B, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 1, + 0x40E69E, GAME_10US_COMPACT, H_CALL, 0x40E670, 1, + 0x516B05, GAME_10US_COMPACT, H_CALL, 0x516B00, 1, + 0x516BDA, GAME_10US_COMPACT, H_CALL, 0x516B20, 1, + 0x55576C, GAME_10US_COMPACT, H_CALL, 0x5556E0, 1, + 0x55577C, GAME_10US_COMPACT, H_CALL, 0x5556E0, 2, + 0x56EBE9, GAME_10US_COMPACT, H_CALL, 0x56EB30, 1, + 0x67F255, GAME_10US_COMPACT, H_CALL, 0x67EF20, 1, + 0x67F27E, GAME_10US_COMPACT, H_CALL, 0x67EF20, 2>; + using def_t = float(CCamera *, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::CalculateFrustumPlanes) + static int address; + static int global_address; + static const int id = 0x514D60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x514D60, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x51513B, GAME_10US_COMPACT, H_CALL, 0x5150E0, 1>; + using def_t = void(CCamera *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::CalculateDerivedValues) + static int address; + static int global_address; + static const int id = 0x5150E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5150E0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x45D370, GAME_10US_COMPACT, H_CALL, 0x45D060, 1, + 0x45DD41, GAME_10US_COMPACT, H_CALL, 0x45D760, 1, + 0x51A592, GAME_10US_COMPACT, H_CALL, 0x51A560, 1, + 0x51A5BC, GAME_10US_COMPACT, H_CALL, 0x51A5A0, 1, + 0x52C983, GAME_10US_COMPACT, H_CALL, 0x52B730, 1>; + using def_t = void(CCamera *, bool, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCamera::StartTransition) + static int address; + static int global_address; + static const int id = 0x515200; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x515200, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x515BC4, GAME_10US_COMPACT, H_JUMP, 0x515BC0, 1, + 0x52B106, GAME_10US_COMPACT, H_CALL, 0x527FA0, 1, + 0x52B1C7, GAME_10US_COMPACT, H_CALL, 0x527FA0, 2, + 0x52B1FD, GAME_10US_COMPACT, H_CALL, 0x527FA0, 3, + 0x52B20B, GAME_10US_COMPACT, H_CALL, 0x527FA0, 4, + 0x52B2FC, GAME_10US_COMPACT, H_CALL, 0x527FA0, 5, + 0x52B32F, GAME_10US_COMPACT, H_CALL, 0x527FA0, 6>; + using def_t = void(CCamera *, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::StartTransitionWhenNotFinishedInter) + static int address; + static int global_address; + static const int id = 0x515BC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x515BC0, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CCamera *, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::UpdateSoundDistances) + static int address; + static int global_address; + static const int id = 0x515BD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x515BD0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52C9B6, GAME_10US_COMPACT, H_CALL, 0x52B730, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CCamera::ProcessVectorTrackLinear, void (CCamera::*)()) + static int address; + static int global_address; + static const int id = 0x516440; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x516440, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x516AE9, GAME_10US_COMPACT, H_CALL, 0x516AE0, 1, + 0x52B854, GAME_10US_COMPACT, H_CALL, 0x52B730, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CCamera::ProcessVectorMoveLinear, void (CCamera::*)()) + static int address; + static int global_address; + static const int id = 0x5164A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5164A0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x516AE2, GAME_10US_COMPACT, H_CALL, 0x516AE0, 1, + 0x52B84A, GAME_10US_COMPACT, H_CALL, 0x52B730, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CCamera::ProcessFOVLerp, void (CCamera::*)()) + static int address; + static int global_address; + static const int id = 0x516500; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x516500, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x516AF0, GAME_10US_COMPACT, H_JUMP, 0x516AE0, 1, + 0x52B85E, GAME_10US_COMPACT, H_CALL, 0x52B730, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CCamera::ProcessShake, void (CCamera::*)(float)) + static int address; + static int global_address; + static const int id = 0x516560; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x516560, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x51A72B, GAME_10US_COMPACT, H_CALL, 0x51A6F0, 1, + 0x52BA68, GAME_10US_COMPACT, H_CALL, 0x52B730, 1>; + using def_t = void(CCamera *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::ProcessScriptedCommands) + static int address; + static int global_address; + static const int id = 0x516AE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x516AE0, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::GetRoughDistanceToGround) + static int address; + static int global_address; + static const int id = 0x516B00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x516B00, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x516D86, GAME_10US_COMPACT, H_CALL, 0x516B20, 1, + 0x51C822, GAME_10US_COMPACT, H_CALL, 0x51C760, 1>; + using def_t = float(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::ImproveNearClip) + static int address; + static int global_address; + static const int id = 0x516B20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x516B20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52090E, GAME_10US_COMPACT, H_CALL, 0x520690, 1, + 0x520DF3, GAME_10US_COMPACT, H_CALL, 0x520690, 2, + 0x522A85, GAME_10US_COMPACT, H_CALL, 0x521500, 1, + 0x5244DC, GAME_10US_COMPACT, H_CALL, 0x522D40, 1, + 0x525DAA, GAME_10US_COMPACT, H_CALL, 0x5245B0, 1>; + using def_t = void(CCamera *, CVehicle *, CPed *, CVector *, CVector *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +CTOR_META_BEGIN(CCamera) + static int address; + static int global_address; + static const int id = 0x51A450; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x51A450, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x84D705, GAME_10US_COMPACT, H_CALL, 0x84D700, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::SetCameraUpForMirror) + static int address; + static int global_address; + static const int id = 0x51A560; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x51A560, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x72717A, GAME_10US_COMPACT, H_CALL, 0x727140, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::RestoreCameraAfterMirror) + static int address; + static int global_address; + static const int id = 0x51A5A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x51A5A0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x72721D, GAME_10US_COMPACT, H_CALL, 0x727140, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::ConeCastCollisionResolve) + static int address; + static int global_address; + static const int id = 0x51A5D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x51A5D0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x51D735, GAME_10US_COMPACT, H_CALL, 0x51D470, 1, + 0x5204C4, GAME_10US_COMPACT, H_CALL, 0x520190, 1>; + using def_t = bool(CCamera *, CVector *, CVector *, CVector *, float, float, float *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4,5,6>; +META_END + +META_BEGIN_OVERLOADED(CCamera::ProcessShake, void (CCamera::*)()) + static int address; + static int global_address; + static const int id = 0x51A6F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x51A6F0, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::IsItTimeForNewcam) + static int address; + static int global_address; + static const int id = 0x51D770; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x51D770, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52683E, GAME_10US_COMPACT, H_CALL, 0x5267C0, 1, + 0x5269CE, GAME_10US_COMPACT, H_CALL, 0x526950, 1, + 0x526B67, GAME_10US_COMPACT, H_CALL, 0x526AE0, 1, + 0x526D09, GAME_10US_COMPACT, H_CALL, 0x526C80, 1, + 0x526E9E, GAME_10US_COMPACT, H_CALL, 0x526E20, 1>; + using def_t = bool(CCamera *, int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCamera::TryToStartNewCamMode) + static int address; + static int global_address; + static const int id = 0x51E560; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x51E560, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x526888, GAME_10US_COMPACT, H_CALL, 0x5267C0, 1, + 0x5268D4, GAME_10US_COMPACT, H_CALL, 0x5267C0, 2, + 0x5268FF, GAME_10US_COMPACT, H_CALL, 0x5267C0, 3, + 0x526A18, GAME_10US_COMPACT, H_CALL, 0x526950, 1, + 0x526A64, GAME_10US_COMPACT, H_CALL, 0x526950, 2, + 0x526A8F, GAME_10US_COMPACT, H_CALL, 0x526950, 3, + 0x526BB1, GAME_10US_COMPACT, H_CALL, 0x526AE0, 1, + 0x526C03, GAME_10US_COMPACT, H_CALL, 0x526AE0, 2, + 0x526C34, GAME_10US_COMPACT, H_CALL, 0x526AE0, 3, + 0x526D53, GAME_10US_COMPACT, H_CALL, 0x526C80, 1, + 0x526DA3, GAME_10US_COMPACT, H_CALL, 0x526C80, 2, + 0x526DD4, GAME_10US_COMPACT, H_CALL, 0x526C80, 3, + 0x526EE8, GAME_10US_COMPACT, H_CALL, 0x526E20, 1, + 0x526F38, GAME_10US_COMPACT, H_CALL, 0x526E20, 2, + 0x526F69, GAME_10US_COMPACT, H_CALL, 0x526E20, 3>; + using def_t = bool(CCamera *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::CameraColDetAndReact) + static int address; + static int global_address; + static const int id = 0x520190; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x520190, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5208A7, GAME_10US_COMPACT, H_CALL, 0x520690, 1, + 0x520D9E, GAME_10US_COMPACT, H_CALL, 0x520690, 2, + 0x52102D, GAME_10US_COMPACT, H_CALL, 0x520E40, 1, + 0x522A72, GAME_10US_COMPACT, H_CALL, 0x521500, 1, + 0x5244C9, GAME_10US_COMPACT, H_CALL, 0x522D40, 1, + 0x525D98, GAME_10US_COMPACT, H_CALL, 0x5245B0, 1>; + using def_t = char(CCamera *, CVector *, CVector *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCamera::ProcessObbeCinemaCameraCar) + static int address; + static int global_address; + static const int id = 0x5267C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5267C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52A72D, GAME_10US_COMPACT, H_CALL, 0x527FA0, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::ProcessObbeCinemaCameraTrain) + static int address; + static int global_address; + static const int id = 0x526950; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x526950, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52A71F, GAME_10US_COMPACT, H_CALL, 0x527FA0, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::ProcessObbeCinemaCameraHeli) + static int address; + static int global_address; + static const int id = 0x526AE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x526AE0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52A6F9, GAME_10US_COMPACT, H_CALL, 0x527FA0, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::ProcessObbeCinemaCameraPlane) + static int address; + static int global_address; + static const int id = 0x526C80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x526C80, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52A6DF, GAME_10US_COMPACT, H_CALL, 0x527FA0, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::ProcessObbeCinemaCameraBoat) + static int address; + static int global_address; + static const int id = 0x526E20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x526E20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52A70C, GAME_10US_COMPACT, H_CALL, 0x527FA0, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::CamControl) + static int address; + static int global_address; + static const int id = 0x527FA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x527FA0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x52B840, GAME_10US_COMPACT, H_CALL, 0x52B730, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::Process) + static int address; + static int global_address; + static const int id = 0x52B730; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x52B730, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53BCD3, GAME_10US_COMPACT, H_CALL, 0x53BC80, 1, + 0x53BE97, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1, + 0x53C104, GAME_10US_COMPACT, H_CALL, 0x53BEE0, 1, + 0x570B5D, GAME_10US_COMPACT, H_CALL, 0x56F8D0, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::DeleteCutSceneCamDataMemory) + static int address; + static int global_address; + static const int id = 0x5B24A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B24A0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5AFF02, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1, + 0x5B24D6, GAME_10US_COMPACT, H_CALL, 0x5B24D0, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCamera::LoadPathSplines) + static int address; + static int global_address; + static const int id = 0x5B24D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B24D0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5AFCF7, GAME_10US_COMPACT, H_CALL, 0x5AFBC0, 1>; + using def_t = void(CCamera *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCamera::Init) + static int address; + static int global_address; + static const int id = 0x5BC520; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5BC520, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53BCF8, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1, + 0x53BD11, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 2, + 0x5BD699, GAME_10US_COMPACT, H_CALL, 0x5BD600, 1>; + using def_t = void(CCamera *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +template<> +struct stack_object : stack_object_no_default { + SUPPORTED_10US stack_object() { + plugin::CallMethodDynGlobal(ctor_gaddr(CCamera), reinterpret_cast(objBuff)); + } + SUPPORTED_10US ~stack_object() { + plugin::CallMethodDynGlobal(dtor_gaddr(CCamera), reinterpret_cast(objBuff)); + } +}; + +template <> +SUPPORTED_10US inline CCamera *operator_new() { + void *objData = operator new(sizeof(CCamera)); + CCamera *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr(CCamera), obj); + return obj; +} +template <> +SUPPORTED_10US inline CCamera *operator_new_array(unsigned int objCount) { + void *objData = operator new(sizeof(CCamera) * objCount + 4); + *reinterpret_cast(objData) = objCount; + CCamera *objArray = reinterpret_cast(reinterpret_cast(objData) + 4); + for (unsigned int i = 0; i < objCount; i++) + plugin::CallMethodDynGlobal(ctor_gaddr(CCamera), &objArray[i]); + return objArray; +} +template <> +SUPPORTED_10US inline void operator_delete(CCamera *obj) { + if (obj == nullptr) return; + plugin::CallVirtualMethod<0, CCamera *, char>(obj, 1); +} +template <> +SUPPORTED_10US inline void operator_delete_array(CCamera *objArray) { + if (objArray == nullptr) return; + void *objData = reinterpret_cast(reinterpret_cast(objArray) - 4); + unsigned int arraySize = *reinterpret_cast(objData); + for (unsigned int i = 0; i < arraySize; i++) + plugin::CallVirtualMethod<0, CCamera *, char>(&objArray[i], 1); + operator delete(objData); +} + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCarEnterExit.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCarEnterExit.h new file mode 100644 index 00000000..b1757dab --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCarEnterExit.h @@ -0,0 +1,673 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CCarEnterExit::ComputeDoorFlag) + static int address; + static int global_address; + static const int id = 0x64E550; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64E550, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63AB9F, GAME_10US_COMPACT, H_CALL, 0x63AB90, 1, + 0x63ABD0, GAME_10US_COMPACT, H_CALL, 0x63AB90, 2, + 0x63BA0F, GAME_10US_COMPACT, H_CALL, 0x63BA00, 1, + 0x64C266, GAME_10US_COMPACT, H_CALL, 0x64C220, 1>; + using def_t = int(CVehicle const *, int, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCarEnterExit::ComputeOppositeDoorFlag) + static int address; + static int global_address; + static const int id = 0x64E610; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64E610, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x647830, GAME_10US_COMPACT, H_CALL, 0x6477F0, 1>; + using def_t = int(CVehicle const *, int, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCarEnterExit::GetPositionToOpenCarDoor) + static int address; + static int global_address; + static const int id = 0x64E740; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64E740, 0, 0, 0, 0, 0>; + // total references count: 10us (26), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5E0987, GAME_10US_COMPACT, H_CALL, 0x5E0820, 1, + 0x5E0A0B, GAME_10US_COMPACT, H_CALL, 0x5E0820, 2, + 0x63ACFA, GAME_10US_COMPACT, H_CALL, 0x63ACC0, 1, + 0x63D684, GAME_10US_COMPACT, H_CALL, 0x63D610, 1, + 0x645C83, GAME_10US_COMPACT, H_CALL, 0x645C70, 1, + 0x646F56, GAME_10US_COMPACT, H_CALL, 0x646F40, 1, + 0x64A8C2, GAME_10US_COMPACT, H_CALL, 0x64A820, 1, + 0x64A90D, GAME_10US_COMPACT, H_CALL, 0x64A820, 2, + 0x64AA11, GAME_10US_COMPACT, H_CALL, 0x64A820, 3, + 0x64AB8E, GAME_10US_COMPACT, H_CALL, 0x64A820, 4, + 0x64AC15, GAME_10US_COMPACT, H_CALL, 0x64AC00, 1, + 0x64D3B1, GAME_10US_COMPACT, H_CALL, 0x64D2B0, 1, + 0x64D4A7, GAME_10US_COMPACT, H_CALL, 0x64D440, 1, + 0x64D64F, GAME_10US_COMPACT, H_CALL, 0x64D440, 2, + 0x650662, GAME_10US_COMPACT, H_CALL, 0x6504C0, 1, + 0x650C80, GAME_10US_COMPACT, H_CALL, 0x650BB0, 1, + 0x650D25, GAME_10US_COMPACT, H_CALL, 0x650BB0, 2, + 0x650DB9, GAME_10US_COMPACT, H_CALL, 0x650BB0, 3, + 0x650E8A, GAME_10US_COMPACT, H_CALL, 0x650BB0, 4, + 0x650F46, GAME_10US_COMPACT, H_CALL, 0x650BB0, 5, + 0x651091, GAME_10US_COMPACT, H_CALL, 0x650BB0, 6, + 0x652923, GAME_10US_COMPACT, H_CALL, 0x6528F0, 1, + 0x652930, GAME_10US_COMPACT, H_CALL, 0x6528F0, 2, + 0x652AA2, GAME_10US_COMPACT, H_CALL, 0x6528F0, 3, + 0x666539, GAME_10US_COMPACT, H_CALL, 0x666360, 1, + 0x66654F, GAME_10US_COMPACT, H_CALL, 0x666360, 2>; + using def_t = CVector *(CVector *, CVehicle const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCarEnterExit::IsCarDoorInUse) + static int address; + static int global_address; + static const int id = 0x64EC90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64EC90, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63EC24, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x646CA5, GAME_10US_COMPACT, H_CALL, 0x646C90, 1>; + using def_t = bool(CVehicle const *, int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCarEnterExit::IsCarDoorReady) + static int address; + static int global_address; + static const int id = 0x64ED90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64ED90, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63ECBC, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63F22B, GAME_10US_COMPACT, H_CALL, 0x63E990, 2>; + using def_t = bool(CVehicle const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCarEnterExit::CarHasDoorToOpen) + static int address; + static int global_address; + static const int id = 0x64EDD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64EDD0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63AC47, GAME_10US_COMPACT, H_CALL, 0x63AC10, 1, + 0x63FA3A, GAME_10US_COMPACT, H_CALL, 0x63F970, 1, + 0x63FAC5, GAME_10US_COMPACT, H_CALL, 0x63F970, 2, + 0x64DCEB, GAME_10US_COMPACT, H_CALL, 0x64DC70, 1>; + using def_t = bool(CVehicle const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCarEnterExit::CarHasDoorToClose) + static int address; + static int global_address; + static const int id = 0x64EE10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64EE10, 0, 0, 0, 0, 0>; + // total references count: 10us (8), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63A7EA, GAME_10US_COMPACT, H_CALL, 0x63A730, 1, + 0x63EF2F, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63F475, GAME_10US_COMPACT, H_CALL, 0x63E990, 2, + 0x63F4B1, GAME_10US_COMPACT, H_CALL, 0x63E990, 3, + 0x63FCBD, GAME_10US_COMPACT, H_CALL, 0x63F970, 1, + 0x641D93, GAME_10US_COMPACT, H_CALL, 0x6419F0, 1, + 0x641DC9, GAME_10US_COMPACT, H_CALL, 0x6419F0, 2, + 0x642C1F, GAME_10US_COMPACT, H_CALL, 0x642AE0, 1>; + using def_t = bool(CVehicle const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCarEnterExit::CarHasOpenableDoor) + static int address; + static int global_address; + static const int id = 0x64EE50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64EE50, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63AC5C, GAME_10US_COMPACT, H_CALL, 0x63AC10, 1, + 0x63FA4F, GAME_10US_COMPACT, H_CALL, 0x63F970, 1, + 0x63FADA, GAME_10US_COMPACT, H_CALL, 0x63F970, 2>; + using def_t = bool(CVehicle const *, int, CPed const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCarEnterExit::CarHasPartiallyOpenDoor) + static int address; + static int global_address; + static const int id = 0x64EE70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64EE70, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63ECD0, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63F23F, GAME_10US_COMPACT, H_CALL, 0x63E990, 2>; + using def_t = bool(CVehicle const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCarEnterExit::IsVehicleHealthy) + static int address; + static int global_address; + static const int id = 0x64EEC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64EEC0, 0, 0, 0, 0, 0>; + // total references count: 10us (7), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x6268C3, GAME_10US_COMPACT, H_CALL, 0x626260, 1, + 0x63A9E2, GAME_10US_COMPACT, H_CALL, 0x63A890, 1, + 0x63D5DB, GAME_10US_COMPACT, H_CALL, 0x63D5C0, 1, + 0x63EA82, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63F69A, GAME_10US_COMPACT, H_CALL, 0x63E990, 2, + 0x643710, GAME_10US_COMPACT, H_CALL, 0x643700, 1, + 0x643AA4, GAME_10US_COMPACT, H_CALL, 0x643A60, 1>; + using def_t = bool(CVehicle const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCarEnterExit::IsPedHealthy) + static int address; + static int global_address; + static const int id = 0x64EEE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64EEE0, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63A9F3, GAME_10US_COMPACT, H_CALL, 0x63A890, 1, + 0x63D5E8, GAME_10US_COMPACT, H_CALL, 0x63D5C0, 1, + 0x63F6AB, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x64371D, GAME_10US_COMPACT, H_CALL, 0x643700, 1, + 0x643AB5, GAME_10US_COMPACT, H_CALL, 0x643A60, 1>; + using def_t = bool(CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCarEnterExit::IsCarQuickJackPossible) + static int address; + static int global_address; + static const int id = 0x64EF00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64EF00, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63FA8D, GAME_10US_COMPACT, H_CALL, 0x63F970, 1>; + using def_t = bool(CVehicle const *, int, CPed const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCarEnterExit::IsCarSlowJackRequired) + static int address; + static int global_address; + static const int id = 0x64EF70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64EF70, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63EE6A, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63FB36, GAME_10US_COMPACT, H_CALL, 0x63F970, 1, + 0x63FE3C, GAME_10US_COMPACT, H_CALL, 0x63F970, 2>; + using def_t = bool(CVehicle const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCarEnterExit::ComputeSlowJackedPed) + static int address; + static int global_address; + static const int id = 0x64F070; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64F070, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63A9AF, GAME_10US_COMPACT, H_CALL, 0x63A890, 1, + 0x63EE82, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63FB4E, GAME_10US_COMPACT, H_CALL, 0x63F970, 1, + 0x63FE54, GAME_10US_COMPACT, H_CALL, 0x63F970, 2>; + using def_t = int(CVehicle const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCarEnterExit::ComputeTargetDoorToExit) + static int address; + static int global_address; + static const int id = 0x64F110; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64F110, 0, 0, 0, 0, 0>; + // total references count: 10us (20), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x47A8D5, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x5F7B86, GAME_10US_COMPACT, H_CALL, 0x5F7AD0, 1, + 0x6265AA, GAME_10US_COMPACT, H_CALL, 0x626260, 1, + 0x62668C, GAME_10US_COMPACT, H_CALL, 0x626260, 2, + 0x626834, GAME_10US_COMPACT, H_CALL, 0x626260, 3, + 0x62698C, GAME_10US_COMPACT, H_CALL, 0x626260, 4, + 0x62B6E7, GAME_10US_COMPACT, H_CALL, 0x62B490, 1, + 0x630650, GAME_10US_COMPACT, H_CALL, 0x630600, 1, + 0x63BAC3, GAME_10US_COMPACT, H_CALL, 0x63BAB0, 1, + 0x63C6B4, GAME_10US_COMPACT, H_CALL, 0x63C670, 1, + 0x63D3BD, GAME_10US_COMPACT, H_CALL, 0x63D240, 1, + 0x63F59C, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63F5DA, GAME_10US_COMPACT, H_CALL, 0x63E990, 2, + 0x63F76D, GAME_10US_COMPACT, H_CALL, 0x63E990, 3, + 0x63F7A9, GAME_10US_COMPACT, H_CALL, 0x63E990, 4, + 0x642BFD, GAME_10US_COMPACT, H_CALL, 0x642AE0, 1, + 0x643DC7, GAME_10US_COMPACT, H_CALL, 0x643D00, 1, + 0x64B774, GAME_10US_COMPACT, H_CALL, 0x64B5D0, 1, + 0x64BA34, GAME_10US_COMPACT, H_CALL, 0x64B950, 1, + 0x64F58D, GAME_10US_COMPACT, H_CALL, 0x64F540, 1>; + using def_t = int(CVehicle const *, CPed const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCarEnterExit::ComputeTargetDoorToEnterAsPassenger) + static int address; + static int global_address; + static const int id = 0x64F190; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64F190, 0, 0, 0, 0, 0>; + // total references count: 10us (8), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x46DB8C, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x47D96C, GAME_10US_COMPACT, H_CALL, 0x47D210, 1, + 0x489E17, GAME_10US_COMPACT, H_CALL, 0x489500, 1, + 0x4903AB, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 1, + 0x5F70F5, GAME_10US_COMPACT, H_CALL, 0x5F6FC0, 1, + 0x613B97, GAME_10US_COMPACT, H_CALL, 0x613A00, 1, + 0x640956, GAME_10US_COMPACT, H_CALL, 0x6408D0, 1, + 0x6E29F8, GAME_10US_COMPACT, H_CALL, 0x6E2900, 1>; + using def_t = signed int(CVehicle const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCarEnterExit::ComputePassengerIndexFromCarDoor) + static int address; + static int global_address; + static const int id = 0x64F1E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64F1E0, 0, 0, 0, 0, 0>; + // total references count: 10us (9), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63B254, GAME_10US_COMPACT, H_CALL, 0x63B1A0, 1, + 0x63D54A, GAME_10US_COMPACT, H_CALL, 0x63D420, 1, + 0x63EF10, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63FC9E, GAME_10US_COMPACT, H_CALL, 0x63F970, 1, + 0x647854, GAME_10US_COMPACT, H_CALL, 0x6477F0, 1, + 0x64B6B7, GAME_10US_COMPACT, H_CALL, 0x64B5D0, 1, + 0x64D609, GAME_10US_COMPACT, H_CALL, 0x64D440, 1, + 0x64E0D4, GAME_10US_COMPACT, H_CALL, 0x64E060, 1, + 0x650356, GAME_10US_COMPACT, H_CALL, 0x650280, 1>; + using def_t = signed int(CVehicle const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCarEnterExit::IsPlayerToQuitCarEnter) + static int address; + static int global_address; + static const int id = 0x64F240; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64F240, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63A8E6, GAME_10US_COMPACT, H_CALL, 0x63A890, 1, + 0x63AA63, GAME_10US_COMPACT, H_CALL, 0x63A890, 2, + 0x64E3D4, GAME_10US_COMPACT, H_CALL, 0x64E3B0, 1, + 0x6543BE, GAME_10US_COMPACT, H_CALL, 0x654370, 1>; + using def_t = bool(CPed const *, CVehicle const *, int, CTask *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CCarEnterExit::MakeUndraggedPassengerPedsLeaveCar) + static int address; + static int global_address; + static const int id = 0x64F540; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64F540, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63F2ED, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63F3AF, GAME_10US_COMPACT, H_CALL, 0x63E990, 2>; + using def_t = void(CVehicle const *, CPed const *, CPed const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCarEnterExit::MakeUndraggedDriverPedLeaveCar) + static int address; + static int global_address; + static const int id = 0x64F600; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64F600, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CVehicle const *, CPed const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCarEnterExit::RemoveCarSitAnim) + static int address; + static int global_address; + static const int id = 0x64F680; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64F680, 0, 0, 0, 0, 0>; + // total references count: 10us (6), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4AFFF0, GAME_10US_COMPACT, H_CALL, 0x4AFF60, 1, + 0x647D6E, GAME_10US_COMPACT, H_CALL, 0x647D10, 1, + 0x64BDEA, GAME_10US_COMPACT, H_CALL, 0x64BDE0, 1, + 0x64C19A, GAME_10US_COMPACT, H_CALL, 0x64C190, 1, + 0x64CCEA, GAME_10US_COMPACT, H_CALL, 0x64CCE0, 1, + 0x64DEE6, GAME_10US_COMPACT, H_CALL, 0x64DD60, 1>; + using def_t = void(CPed const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCarEnterExit::RemoveGetInAnims) + static int address; + static int global_address; + static const int id = 0x64F6E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64F6E0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x64B89F, GAME_10US_COMPACT, H_CALL, 0x64B5D0, 1, + 0x64BC8B, GAME_10US_COMPACT, H_CALL, 0x64B950, 1, + 0x650137, GAME_10US_COMPACT, H_CALL, 0x650130, 1>; + using def_t = void(CPed const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCarEnterExit::AddInCarAnim) + static int address; + static int global_address; + static const int id = 0x64F720; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64F720, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x64B8AB, GAME_10US_COMPACT, H_CALL, 0x64B5D0, 1, + 0x64BC97, GAME_10US_COMPACT, H_CALL, 0x64B950, 1>; + using def_t = void(CVehicle const *, CPed *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCarEnterExit::SetAnimOffsetForEnterOrExitVehicle) + static int address; + static int global_address; + static const int id = 0x64F860; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x64F860, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5DEBB5, GAME_10US_COMPACT, H_JUMP, 0x5DEBB0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCarEnterExit::QuitEnteringCar) + static int address; + static int global_address; + static const int id = 0x650130; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x650130, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CPed *, CVehicle *, int, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CCarEnterExit::SetPedInCarDirect) + static int address; + static int global_address; + static const int id = 0x650280; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x650280, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x613BA7, GAME_10US_COMPACT, H_CALL, 0x613A00, 1, + 0x6E29DB, GAME_10US_COMPACT, H_CALL, 0x6E2900, 1, + 0x6E2A02, GAME_10US_COMPACT, H_CALL, 0x6E2900, 2>; + using def_t = void(CPed *, CVehicle *, int, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CCarEnterExit::IsRoomForPedToLeaveCar) + static int address; + static int global_address; + static const int id = 0x6504C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6504C0, 0, 0, 0, 0, 0>; + // total references count: 10us (27), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x62669F, GAME_10US_COMPACT, H_CALL, 0x626260, 1, + 0x626847, GAME_10US_COMPACT, H_CALL, 0x626260, 2, + 0x62699F, GAME_10US_COMPACT, H_CALL, 0x626260, 3, + 0x62B6FA, GAME_10US_COMPACT, H_CALL, 0x62B490, 1, + 0x641B85, GAME_10US_COMPACT, H_CALL, 0x6419F0, 1, + 0x641C8F, GAME_10US_COMPACT, H_CALL, 0x6419F0, 2, + 0x64C52B, GAME_10US_COMPACT, H_CALL, 0x64C220, 1, + 0x650C68, GAME_10US_COMPACT, H_CALL, 0x650BB0, 1, + 0x650D11, GAME_10US_COMPACT, H_CALL, 0x650BB0, 2, + 0x650DA5, GAME_10US_COMPACT, H_CALL, 0x650BB0, 3, + 0x650E76, GAME_10US_COMPACT, H_CALL, 0x650BB0, 4, + 0x650F32, GAME_10US_COMPACT, H_CALL, 0x650BB0, 5, + 0x65107D, GAME_10US_COMPACT, H_CALL, 0x650BB0, 6, + 0x652A84, GAME_10US_COMPACT, H_CALL, 0x6528F0, 1, + 0x652BED, GAME_10US_COMPACT, H_CALL, 0x6528F0, 2, + 0x652C37, GAME_10US_COMPACT, H_CALL, 0x6528F0, 3, + 0x652C80, GAME_10US_COMPACT, H_CALL, 0x6528F0, 4, + 0x652D58, GAME_10US_COMPACT, H_CALL, 0x6528F0, 5, + 0x652DBC, GAME_10US_COMPACT, H_CALL, 0x6528F0, 6, + 0x652DD5, GAME_10US_COMPACT, H_CALL, 0x6528F0, 7, + 0x652E3D, GAME_10US_COMPACT, H_CALL, 0x6528F0, 8, + 0x652E79, GAME_10US_COMPACT, H_CALL, 0x6528F0, 9, + 0x652E8D, GAME_10US_COMPACT, H_CALL, 0x6528F0, 10, + 0x68D4C4, GAME_10US_COMPACT, H_CALL, 0x68D350, 1, + 0x68D4E2, GAME_10US_COMPACT, H_CALL, 0x68D350, 2, + 0x68D599, GAME_10US_COMPACT, H_CALL, 0x68D350, 3, + 0x68D5B7, GAME_10US_COMPACT, H_CALL, 0x68D350, 4>; + using def_t = bool(CVehicle const *, int, CVector *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCarEnterExit::IsClearToDriveAway) + static int address; + static int global_address; + static const int id = 0x6509B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6509B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x6511ED, GAME_10US_COMPACT, H_CALL, 0x6510D0, 1>; + using def_t = bool(CVehicle const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCarEnterExit::GetNearestCarPassengerDoor) + static int address; + static int global_address; + static const int id = 0x650BB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x650BB0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x64AA99, GAME_10US_COMPACT, H_CALL, 0x64A820, 1, + 0x64AB22, GAME_10US_COMPACT, H_CALL, 0x64A820, 2, + 0x64D572, GAME_10US_COMPACT, H_CALL, 0x64D440, 1, + 0x64D5CB, GAME_10US_COMPACT, H_CALL, 0x64D440, 2>; + using def_t = bool(CPed const *, CVehicle const *, CVector *, int *, bool, bool, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5,6>; +META_END + +META_BEGIN(CCarEnterExit::IsVehicleStealable) + static int address; + static int global_address; + static const int id = 0x6510D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6510D0, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x643548, GAME_10US_COMPACT, H_CALL, 0x643510, 1, + 0x643612, GAME_10US_COMPACT, H_CALL, 0x643510, 2, + 0x65D8E4, GAME_10US_COMPACT, H_CALL, 0x65D780, 1, + 0x66B53E, GAME_10US_COMPACT, H_CALL, 0x66B4F0, 1, + 0x672B64, GAME_10US_COMPACT, H_CALL, 0x672A50, 1>; + using def_t = bool(CVehicle const *, CPed const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCarEnterExit::IsPathToDoorBlockedByVehicleCollisionModel) + static int address; + static int global_address; + static const int id = 0x651210; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x651210, 0, 0, 0, 0, 0>; + // total references count: 10us (8), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x64A965, GAME_10US_COMPACT, H_CALL, 0x64A820, 1, + 0x64D4C7, GAME_10US_COMPACT, H_CALL, 0x64D440, 1, + 0x64D52C, GAME_10US_COMPACT, H_CALL, 0x64D440, 2, + 0x64D597, GAME_10US_COMPACT, H_CALL, 0x64D440, 3, + 0x64D5DD, GAME_10US_COMPACT, H_CALL, 0x64D440, 4, + 0x64D682, GAME_10US_COMPACT, H_CALL, 0x64D440, 5, + 0x652B6A, GAME_10US_COMPACT, H_CALL, 0x6528F0, 1, + 0x652B8F, GAME_10US_COMPACT, H_CALL, 0x6528F0, 2>; + using def_t = bool(CPed const *, CVehicle *, CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCarEnterExit::GetNearestCarDoor) + static int address; + static int global_address; + static const int id = 0x6528F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6528F0, 0, 0, 0, 0, 0>; + // total references count: 10us (7), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x56F639, GAME_10US_COMPACT, H_CALL, 0x56F4E0, 1, + 0x56F6FB, GAME_10US_COMPACT, H_CALL, 0x56F4E0, 2, + 0x57082F, GAME_10US_COMPACT, H_CALL, 0x56F8D0, 1, + 0x643C0F, GAME_10US_COMPACT, H_CALL, 0x643A60, 1, + 0x64AA85, GAME_10US_COMPACT, H_CALL, 0x64A820, 1, + 0x64D503, GAME_10US_COMPACT, H_CALL, 0x64D440, 1, + 0x6F849A, GAME_10US_COMPACT, H_CALL, 0x6F8170, 1>; + using def_t = bool(CPed const *, CVehicle const *, CVector *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCarGenerator.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCarGenerator.h new file mode 100644 index 00000000..c3a1b030 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCarGenerator.h @@ -0,0 +1,147 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CCarGenerator::Get) + static int address; + static int global_address; + static const int id = 0x479D60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x479D60, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = CCarGenerator *(unsigned short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCarGenerator::SwitchOff) + static int address; + static int global_address; + static const int id = 0x6F2E30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F2E30, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47C251, GAME_10US_COMPACT, H_CALL, 0x47C100, 1>; + using def_t = void(CCarGenerator *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCarGenerator::CalcNextGen) + static int address; + static int global_address; + static const int id = 0x6F2E40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F2E40, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = unsigned int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCarGenerator::Setup) + static int address; + static int global_address; + static const int id = 0x6F2E50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F2E50, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x6F3227, GAME_10US_COMPACT, H_CALL, 0x6F31A0, 1>; + using def_t = void(CCarGenerator *, float, float, float, float, int, short, short, unsigned char, unsigned char, unsigned char, unsigned short, unsigned short, unsigned char, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14>; +META_END + +META_BEGIN(CCarGenerator::CheckIfWithinRangeOfAnyPlayers) + static int address; + static int global_address; + static const int id = 0x6F2F40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F2F40, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x6F3EB6, GAME_10US_COMPACT, H_CALL, 0x6F3E90, 1>; + using def_t = bool(CCarGenerator *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCarGenerator::SwitchOn) + static int address; + static int global_address; + static const int id = 0x6F32C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F32C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47C0E3, GAME_10US_COMPACT, H_CALL, 0x47C0E0, 1, + 0x47C265, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x537A0A, GAME_10US_COMPACT, H_JUMP, 0x537990, 1>; + using def_t = void(CCarGenerator *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCarGenerator::CheckForBlockage) + static int address; + static int global_address; + static const int id = 0x6F32E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F32E0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x6F35D6, GAME_10US_COMPACT, H_CALL, 0x6F34D0, 1, + 0x6F35FF, GAME_10US_COMPACT, H_CALL, 0x6F34D0, 2>; + using def_t = bool(CCarGenerator *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCarGenerator::DoInternalProcessing) + static int address; + static int global_address; + static const int id = 0x6F34D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F34D0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x6F3EC1, GAME_10US_COMPACT, H_CALL, 0x6F3E90, 1>; + using def_t = void(CCarGenerator *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCarGenerator::Process) + static int address; + static int global_address; + static const int id = 0x6F3E90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F3E90, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x6F3F99, GAME_10US_COMPACT, H_CALL, 0x6F3F40, 1>; + using def_t = void(CCarGenerator *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCarPathLink.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCarPathLink.h new file mode 100644 index 00000000..e4bb5801 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCarPathLink.h @@ -0,0 +1,26 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CCarPathLink::OneWayLaneOffset) +static int address; +static int global_address; +static const int id = 0x44DB00; +static const bool is_virtual = false; +static const int vtable_index = -1; +using mv_addresses_t = MvAddresses<0x44DB00, 0, 0, 0, 0, 0>; +// total references count: 10us (24), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) +using refs_t = RefList<0x41BAC1,1001,0,0x41B980,1, 0x41BAF7,1001,0,0x41B980,2, 0x427704,1001,0,0x426EF0,1, 0x427727,1001,0,0x426EF0,2, 0x427D0F,1001,0,0x427740,1, 0x427D4B,1001,0,0x427740,2, 0x428482,1001,0,0x428040,1, 0x4284B4,1001,0,0x428040,2, 0x4284E5,1001,0,0x428040,3, 0x42851A,1001,0,0x428040,4, 0x428611,1001,0,0x428040,5, 0x428642,1001,0,0x428040,6, 0x428674,1001,0,0x428040,7, 0x4286A9,1001,0,0x428040,8, 0x42EA0D,1001,0,0x42DE80,1, 0x42EA49,1001,0,0x42DE80,2, 0x43110C,1001,0,0x430050,1, 0x431148,1001,0,0x430050,2, 0x434A9D,1001,0,0x434900,1, 0x434AD9,1001,0,0x434900,2, 0x434EB0,1001,0,0x434900,3, 0x43539B,1001,0,0x434900,4, 0x4366F2,1001,0,0x436540,1, 0x43672C,1001,0,0x436540,2>; +using def_t = float(CCarPathLink *); +static const int cb_priority = PRIORITY_BEFORE; +using calling_convention_t = CallingConventions::Thiscall; +using args_t = ArgPick, 0>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCheat.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCheat.h new file mode 100644 index 00000000..81c0bc48 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCheat.h @@ -0,0 +1,1145 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CCheat::AddToCheatString) + static int address; + static int global_address; + static const int id = 0x438480; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438480, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x439B0A, GAME_10US_COMPACT, H_CALL, 0x439AF0, 1>; + using def_t = void(char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCheat::WeaponCheat1) + static int address; + static int global_address; + static const int id = 0x4385B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4385B0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43857F, GAME_10US_COMPACT, H_CALL, 0x438480, 1, + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::WeaponCheat2) + static int address; + static int global_address; + static const int id = 0x438890; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438890, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::WeaponCheat3) + static int address; + static int global_address; + static const int id = 0x438B30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438B30, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::HealthCheat) + static int address; + static int global_address; + static const int id = 0x438D60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438D60, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x438E89, GAME_10US_COMPACT, H_JUMP, 0x438E40, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::MoneyArmourHealthCheat) + static int address; + static int global_address; + static const int id = 0x438E40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438E40, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::WantedLevelUpCheat) + static int address; + static int global_address; + static const int id = 0x438E90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438E90, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::WantedLevelDownCheat) + static int address; + static int global_address; + static const int id = 0x438F20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438F20, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::SunnyWeatherCheat) + static int address; + static int global_address; + static const int id = 0x438F40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438F40, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::ExtraSunnyWeatherCheat) + static int address; + static int global_address; + static const int id = 0x438F50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438F50, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::CloudyWeatherCheat) + static int address; + static int global_address; + static const int id = 0x438F60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438F60, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::RainyWeatherCheat) + static int address; + static int global_address; + static const int id = 0x438F70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438F70, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::FoggyWeatherCheat) + static int address; + static int global_address; + static const int id = 0x438F80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438F80, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::FastTimeCheat) + static int address; + static int global_address; + static const int id = 0x438F90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438F90, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::SlowTimeCheat) + static int address; + static int global_address; + static const int id = 0x438FC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438FC0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::SuicideCheat) + static int address; + static int global_address; + static const int id = 0x438FF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x438FF0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::PinkCarsCheat) + static int address; + static int global_address; + static const int id = 0x4390D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4390D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::BlackCarsCheat) + static int address; + static int global_address; + static const int id = 0x4390F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4390F0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::FatCheat) + static int address; + static int global_address; + static const int id = 0x439110; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439110, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::MuscleCheat) + static int address; + static int global_address; + static const int id = 0x439150; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439150, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::SkinnyCheat) + static int address; + static int global_address; + static const int id = 0x439190; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439190, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::ElvisLivesCheat) + static int address; + static int global_address; + static const int id = 0x4391D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4391D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::BeachPartyCheat) + static int address; + static int global_address; + static const int id = 0x439230; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439230, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x439A23, GAME_10US_COMPACT, H_CALL, 0x439A10, 1, + 0x439EB5, GAME_10US_COMPACT, H_CALL, 0x439E50, 1, + 0x43A064, GAME_10US_COMPACT, H_CALL, 0x439F60, 1, + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::GangsCheat) + static int address; + static int global_address; + static const int id = 0x439360; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439360, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::GangLandCheat) + static int address; + static int global_address; + static const int id = 0x4393D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4393D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::LoveConquersAllCheat) + static int address; + static int global_address; + static const int id = 0x4393F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4393F0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::AllCarsAreShitCheat) + static int address; + static int global_address; + static const int id = 0x4394B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4394B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::AllCarsAreGreatCheat) + static int address; + static int global_address; + static const int id = 0x4394E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4394E0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::MidnightCheat) + static int address; + static int global_address; + static const int id = 0x439510; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439510, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::DuskCheat) + static int address; + static int global_address; + static const int id = 0x439540; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439540, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::StormCheat) + static int address; + static int global_address; + static const int id = 0x439570; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439570, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::SandstormCheat) + static int address; + static int global_address; + static const int id = 0x439590; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439590, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::PredatorCheat) + static int address; + static int global_address; + static const int id = 0x4395A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4395A0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::ParachuteCheat) + static int address; + static int global_address; + static const int id = 0x4395B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4395B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::JetpackCheat) + static int address; + static int global_address; + static const int id = 0x439600; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439600, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::NotWantedCheat) + static int address; + static int global_address; + static const int id = 0x4396C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4396C0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::WantedCheat) + static int address; + static int global_address; + static const int id = 0x4396F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4396F0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::RiotCheat) + static int address; + static int global_address; + static const int id = 0x439710; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439710, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::FunhouseCheat) + static int address; + static int global_address; + static const int id = 0x439720; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439720, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x439A60, GAME_10US_COMPACT, H_CALL, 0x439A10, 1, + 0x439EDE, GAME_10US_COMPACT, H_CALL, 0x439E50, 1, + 0x43A092, GAME_10US_COMPACT, H_CALL, 0x439F60, 1, + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::AdrenalineCheat) + static int address; + static int global_address; + static const int id = 0x439880; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439880, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::DrivebyCheat) + static int address; + static int global_address; + static const int id = 0x4398D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4398D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::StaminaCheat) + static int address; + static int global_address; + static const int id = 0x439930; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439930, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::WeaponSkillsCheat) + static int address; + static int global_address; + static const int id = 0x439940; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439940, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::VehicleSkillsCheat) + static int address; + static int global_address; + static const int id = 0x4399D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4399D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::HandleSpecialCheats) + static int address; + static int global_address; + static const int id = 0x439A10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439A10, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43934E, GAME_10US_COMPACT, H_CALL, 0x439230, 1, + 0x4394C6, GAME_10US_COMPACT, H_CALL, 0x4394B0, 1, + 0x4394F6, GAME_10US_COMPACT, H_CALL, 0x4394E0, 1, + 0x439856, GAME_10US_COMPACT, H_CALL, 0x439720, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCheat::MayhemCheat) + static int address; + static int global_address; + static const int id = 0x439B20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439B20, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::EverybodyAttacksPlayerCheat) + static int address; + static int global_address; + static const int id = 0x439C70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439C70, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x439E2D, GAME_10US_COMPACT, H_CALL, 0x439DD0, 1, + 0x439E47, GAME_10US_COMPACT, H_JUMP, 0x439DD0, 2, + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::BlowUpCarsCheat) + static int address; + static int global_address; + static const int id = 0x439D80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439D80, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::VillagePeopleCheat) + static int address; + static int global_address; + static const int id = 0x439DD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439DD0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::NinjaCheat) + static int address; + static int global_address; + static const int id = 0x439E50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439E50, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::CountrysideInvasionCheat) + static int address; + static int global_address; + static const int id = 0x439F60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x439F60, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x439A74, GAME_10US_COMPACT, H_JUMP, 0x439A10, 1, + 0x439EEB, GAME_10US_COMPACT, H_CALL, 0x439E50, 1, + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::VehicleCheat) + static int address; + static int global_address; + static const int id = 0x43A0B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A0B0, 0, 0, 0, 0, 0>; + // total references count: 10us (17), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43A4A5, GAME_10US_COMPACT, H_CALL, 0x43A4A0, 1, + 0x43A4B5, GAME_10US_COMPACT, H_CALL, 0x43A4B0, 1, + 0x43A4C5, GAME_10US_COMPACT, H_CALL, 0x43A4C0, 1, + 0x43A4D5, GAME_10US_COMPACT, H_CALL, 0x43A4D0, 1, + 0x43A4E5, GAME_10US_COMPACT, H_CALL, 0x43A4E0, 1, + 0x43A4F5, GAME_10US_COMPACT, H_CALL, 0x43A4F0, 1, + 0x43A505, GAME_10US_COMPACT, H_CALL, 0x43A500, 1, + 0x43A515, GAME_10US_COMPACT, H_CALL, 0x43A510, 1, + 0x43A525, GAME_10US_COMPACT, H_CALL, 0x43A520, 1, + 0x43A535, GAME_10US_COMPACT, H_CALL, 0x43A530, 1, + 0x43A545, GAME_10US_COMPACT, H_CALL, 0x43A540, 1, + 0x43A555, GAME_10US_COMPACT, H_CALL, 0x43A550, 1, + 0x43A565, GAME_10US_COMPACT, H_CALL, 0x43A560, 1, + 0x43A58C, GAME_10US_COMPACT, H_CALL, 0x43A570, 1, + 0x43A665, GAME_10US_COMPACT, H_CALL, 0x43A660, 1, + 0x43A675, GAME_10US_COMPACT, H_CALL, 0x43A670, 1, + 0x43A685, GAME_10US_COMPACT, H_CALL, 0x43A680, 1>; + using def_t = CVehicle*(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCheat::TankCheat) + static int address; + static int global_address; + static const int id = 0x43A4A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A4A0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::StockCarCheat) + static int address; + static int global_address; + static const int id = 0x43A4B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A4B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::StockCar2Cheat) + static int address; + static int global_address; + static const int id = 0x43A4C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A4C0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::StockCar3Cheat) + static int address; + static int global_address; + static const int id = 0x43A4D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A4D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::StockCar4Cheat) + static int address; + static int global_address; + static const int id = 0x43A4E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A4E0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::HearseCheat) + static int address; + static int global_address; + static const int id = 0x43A4F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A4F0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::LovefistCheat) + static int address; + static int global_address; + static const int id = 0x43A500; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A500, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::TrashmasterCheat) + static int address; + static int global_address; + static const int id = 0x43A510; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A510, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::GolfcartCheat) + static int address; + static int global_address; + static const int id = 0x43A520; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A520, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::FlyboyCheat) + static int address; + static int global_address; + static const int id = 0x43A530; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A530, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::VortexCheat) + static int address; + static int global_address; + static const int id = 0x43A540; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A540, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::ApacheCheat) + static int address; + static int global_address; + static const int id = 0x43A550; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A550, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::QuadCheat) + static int address; + static int global_address; + static const int id = 0x43A560; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A560, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::TankerCheat) + static int address; + static int global_address; + static const int id = 0x43A570; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A570, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::DozerCheat) + static int address; + static int global_address; + static const int id = 0x43A660; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A660, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::StuntPlaneCheat) + static int address; + static int global_address; + static const int id = 0x43A670; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A670, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCheat::MonsterTruckCheat) + static int address; + static int global_address; + static const int id = 0x43A680; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43A680, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x8A5B58, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CClock.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CClock.h new file mode 100644 index 00000000..7bcc232a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CClock.h @@ -0,0 +1,169 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CClock::Initialise) + static int address; + static int global_address; + static const int id = 0x52CD90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x52CD90, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53BDF0, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1, + 0x5BA363, GAME_10US_COMPACT, H_CALL, 0x5BA1A0, 1>; + using def_t = void(unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CClock::NormaliseGameClock) + static int address; + static int global_address; + static const int id = 0x52CDE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x52CDE0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x52D18A, GAME_10US_COMPACT, H_JUMP, 0x52D150, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CClock::GetGameClockMinutesUntil) + static int address; + static int global_address; + static const int id = 0x52CEB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x52CEB0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x46828C, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1>; + using def_t = unsigned short(unsigned char, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CClock::GetIsTimeInRange) + static int address; + static int global_address; + static const int id = 0x52CEE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x52CEE0, 0, 0, 0, 0, 0>; + // total references count: 10us (11), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40C31D, GAME_10US_COMPACT, H_CALL, 0x40C270, 1, + 0x40C4DF, GAME_10US_COMPACT, H_CALL, 0x40C450, 1, + 0x44000C, GAME_10US_COMPACT, H_CALL, 0x43FFD0, 1, + 0x440ED1, GAME_10US_COMPACT, H_CALL, 0x440D10, 1, + 0x554452, GAME_10US_COMPACT, H_CALL, 0x554230, 1, + 0x5546A8, GAME_10US_COMPACT, H_CALL, 0x554650, 1, + 0x554EF5, GAME_10US_COMPACT, H_CALL, 0x554EB0, 1, + 0x594F31, GAME_10US_COMPACT, H_CALL, 0x594E90, 1, + 0x594F4C, GAME_10US_COMPACT, H_CALL, 0x594E90, 2, + 0x594F5C, GAME_10US_COMPACT, H_CALL, 0x594E90, 3, + 0x6C5489, GAME_10US_COMPACT, H_CALL, 0x6C5420, 1>; + using def_t = bool(unsigned char, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CClock::Update) + static int address; + static int global_address; + static const int id = 0x52CF10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x52CF10, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53BFBD, GAME_10US_COMPACT, H_CALL, 0x53BEE0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CClock::StoreClock) + static int address; + static int global_address; + static const int id = 0x52D020; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x52D020, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x47F1AC, GAME_10US_COMPACT, H_CALL, 0x47E090, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CClock::RestoreClock) + static int address; + static int global_address; + static const int id = 0x52D070; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x52D070, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x47F1C7, GAME_10US_COMPACT, H_CALL, 0x47E090, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CClock::OffsetClockByADay) + static int address; + static int global_address; + static const int id = 0x52D0B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x52D0B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x47207F, GAME_10US_COMPACT, H_CALL, 0x470A90, 1>; + using def_t = void(unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CClock::SetGameClock) + static int address; + static int global_address; + static const int id = 0x52D150; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x52D150, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x441534, GAME_10US_COMPACT, H_CALL, 0x4414C0, 1, + 0x45EE76, GAME_10US_COMPACT, H_CALL, 0x45ECD0, 1, + 0x45FE40, GAME_10US_COMPACT, H_CALL, 0x45F380, 1, + 0x468255, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1>; + using def_t = void(unsigned char, unsigned char, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCover.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCover.h new file mode 100644 index 00000000..df295bfc --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCover.h @@ -0,0 +1,268 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CCover::Init) + static int address; + static int global_address; + static const int id = 0x698710; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x698710, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53BD30, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1, + 0x5BF914, GAME_10US_COMPACT, H_CALL, 0x5BF840, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CCover::RemoveCoverPointsForThisEntity) + static int address; + static int global_address; + static const int id = 0x698740; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x698740, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x699A9A, GAME_10US_COMPACT, H_CALL, 0x6997E0, 1>; + using def_t = void(CEntity *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCover::FindVectorFromFirstToMissingVertex) + static int address; + static int global_address; + static const int id = 0x698790; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x698790, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = CVector *(CVector *, CColTriangle *, int *, CVector *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CCover::CalculateHorizontalSize) + static int address; + static int global_address; + static const int id = 0x6987F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6987F0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = float(CColTriangle *, CVector *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCover::Find2HighestPoints) + static int address; + static int global_address; + static const int id = 0x6988E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6988E0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CColTriangle *, CVector *, int &, int &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CCover::DoLineCheckWithinObject) + static int address; + static int global_address; + static const int id = 0x698990; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x698990, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = char(CColTriangle *, int, CVector *, CVector *, CVector, CVector); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5>; +META_END + +META_BEGIN(CCover::FindDirFromVector) + static int address; + static int global_address; + static const int id = 0x698D40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x698D40, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = unsigned char(float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCover::FindVectorFromDir) + static int address; + static int global_address; + static const int id = 0x698D60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x698D60, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x698E2C, GAME_10US_COMPACT, H_CALL, 0x698DD0, 1>; + using def_t = CVector *(CVector *, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCover::RemoveCoverPointIfEntityLost) + static int address; + static int global_address; + static const int id = 0x698DB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x698DB0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CCoverPoint *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCover::DoesCoverPointStillProvideCover) + static int address; + static int global_address; + static const int id = 0x698DD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x698DD0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x62C636, GAME_10US_COMPACT, H_CALL, 0x62C190, 1>; + using def_t = bool(CCoverPoint *, CVector); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCover::AddCoverPoint) + static int address; + static int global_address; + static const int id = 0x698F30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x698F30, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69920D, GAME_10US_COMPACT, H_CALL, 0x699120, 1, + 0x69998F, GAME_10US_COMPACT, H_CALL, 0x6997E0, 1, + 0x699A59, GAME_10US_COMPACT, H_CALL, 0x6997E0, 2>; + using def_t = void(int, CEntity *, CVector *, char, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CCover::FindCoverPointsForThisBuilding) + static int address; + static int global_address; + static const int id = 0x699120; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x699120, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x699D64, GAME_10US_COMPACT, H_CALL, 0x6997E0, 1>; + using def_t = void(CBuilding *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCover::ShouldThisBuildingHaveItsCoverPointsCreated) + static int address; + static int global_address; + static const int id = 0x699230; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x699230, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x699A8D, GAME_10US_COMPACT, H_CALL, 0x6997E0, 1, + 0x699D14, GAME_10US_COMPACT, H_CALL, 0x6997E0, 2>; + using def_t = bool(CBuilding *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCover::FindAndReserveCoverPoint) + static int address; + static int global_address; + static const int id = 0x6992B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6992B0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x62C03A, GAME_10US_COMPACT, H_CALL, 0x62BF00, 1, + 0x62C8A1, GAME_10US_COMPACT, H_CALL, 0x62C190, 1>; + using def_t = CCoverPoint *(CPed *, CVector &, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CCover::FindCoordinatesCoverPoint) + static int address; + static int global_address; + static const int id = 0x699570; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x699570, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x62C06A, GAME_10US_COMPACT, H_CALL, 0x62BF00, 1, + 0x62C666, GAME_10US_COMPACT, H_CALL, 0x62C190, 1, + 0x62C8D1, GAME_10US_COMPACT, H_CALL, 0x62C190, 2>; + using def_t = bool(CCoverPoint *, CPed *, CVector &, CVector &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CCover::Update) + static int address; + static int global_address; + static const int id = 0x6997E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6997E0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53BF4E, GAME_10US_COMPACT, H_CALL, 0x53BEE0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCoverPoint.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCoverPoint.h new file mode 100644 index 00000000..aee27698 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CCoverPoint.h @@ -0,0 +1,60 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CCoverPoint::CanAccomodateAnotherPed) + static int address; + static int global_address; + static const int id = 0x698E70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x698E70, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = bool(CCoverPoint *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CCoverPoint::ReserveCoverPointForPed) + static int address; + static int global_address; + static const int id = 0x698EB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x698EB0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CCoverPoint *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CCoverPoint::ReleaseCoverPointForPed) + static int address; + static int global_address; + static const int id = 0x698EF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x698EF0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5E027E, GAME_10US_COMPACT, H_CALL, 0x5E0270, 1, + 0x5E451D, GAME_10US_COMPACT, H_CALL, 0x5E4500, 1, + 0x5E7C42, GAME_10US_COMPACT, H_CALL, 0x5E7B70, 1, + 0x5E8724, GAME_10US_COMPACT, H_CALL, 0x5E8620, 1>; + using def_t = void(CCoverPoint *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CDate.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CDate.h new file mode 100644 index 00000000..fbd44932 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CDate.h @@ -0,0 +1,86 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +CTOR_META_BEGIN(CDate) + static int address; + static int global_address; + static const int id = 0x618D10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x618D10, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = CDate *(CDate *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CDate::operator>) + static int address; + static int global_address; + static const int id = 0x618D30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x618D30, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = bool(CDate *, CDate const &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CDate::operator<) + static int address; + static int global_address; + static const int id = 0x618D90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x618D90, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = bool(CDate *, CDate const &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CDate::operator==) + static int address; + static int global_address; + static const int id = 0x618DF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x618DF0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = bool(CDate *, CDate const &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CDate::PopulateDateFields) + static int address; + static int global_address; + static const int id = 0x618E30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x618E30, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CDate *, char const &, char const &, char const &, char const &, char const &, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4,5,6>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CEntryExit.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CEntryExit.h new file mode 100644 index 00000000..a5fe99fd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CEntryExit.h @@ -0,0 +1,201 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CEntryExit::IsInArea) + static int address; + static int global_address; + static const int id = 0x43E460; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43E460, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x441030, GAME_10US_COMPACT, H_CALL, 0x440D10, 1>; + using def_t = bool(CEntryExit *, CVector const &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CEntryExit::GetEntryExitToDisplayNameOf) + static int address; + static int global_address; + static const int id = 0x43E650; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43E650, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x440B56, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1>; + using def_t = CEntryExit *(CEntryExit *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CEntryExit::RequestObjectsInFrustum) + static int address; + static int global_address; + static const int id = 0x43E690; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43E690, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x440552, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x440816, GAME_10US_COMPACT, H_CALL, 0x4404A0, 2>; + using def_t = void(CEntryExit *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CEntryExit::RequestAmbientPeds) + static int address; + static int global_address; + static const int id = 0x43E6D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43E6D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4407BE, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1>; + using def_t = void(CEntryExit *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CEntryExit::GenerateAmbientPeds) + static int address; + static int global_address; + static const int id = 0x43E8B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43E8B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x440836, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1>; + using def_t = void(CEntryExit *, CVector const &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CEntryExit::GetPositionRelativeToOutsideWorld) + static int address; + static int global_address; + static const int id = 0x43EA00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43EA00, 0, 0, 0, 0, 0>; + // total references count: 10us (7), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43F169, GAME_10US_COMPACT, H_CALL, 0x43F150, 1, + 0x442F48, GAME_10US_COMPACT, H_CALL, 0x442AD0, 1, + 0x4432F3, GAME_10US_COMPACT, H_CALL, 0x442AD0, 2, + 0x44359E, GAME_10US_COMPACT, H_CALL, 0x442AD0, 3, + 0x586E6E, GAME_10US_COMPACT, H_CALL, 0x586D60, 1, + 0x5871E4, GAME_10US_COMPACT, H_CALL, 0x587000, 1, + 0x5874A4, GAME_10US_COMPACT, H_CALL, 0x587000, 2>; + using def_t = void(CEntryExit *, CVector &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +CTOR_META_BEGIN(CEntryExit) + static int address; + static int global_address; + static const int id = 0x43F130; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43F130, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = CEntryExit *(CEntryExit *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CEntryExit::WarpGangWithPlayer) + static int address; + static int global_address; + static const int id = 0x43F1F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43F1F0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x440A21, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1>; + using def_t = void(CEntryExit *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CEntryExit::TransitionStarted) + static int address; + static int global_address; + static const int id = 0x43FFD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43FFD0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x44104C, GAME_10US_COMPACT, H_CALL, 0x440D10, 1>; + using def_t = bool(CEntryExit *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CEntryExit::TransitionFinished) + static int address; + static int global_address; + static const int id = 0x4404A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4404A0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x440F89, GAME_10US_COMPACT, H_CALL, 0x440D10, 1>; + using def_t = bool(CEntryExit *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +template<> +struct stack_object : stack_object_no_default { + SUPPORTED_10US stack_object() { + plugin::CallMethodDynGlobal(ctor_gaddr(CEntryExit), reinterpret_cast(objBuff)); + } +}; + +template <> +SUPPORTED_10US inline CEntryExit *operator_new() { + void *objData = operator new(sizeof(CEntryExit)); + CEntryExit *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr(CEntryExit), obj); + return obj; +} +template <> +SUPPORTED_10US inline CEntryExit *operator_new_array(unsigned int objCount) { + void *objData = operator new(sizeof(CEntryExit) * objCount + 4); + *reinterpret_cast(objData) = objCount; + CEntryExit *objArray = reinterpret_cast(reinterpret_cast(objData) + 4); + for (unsigned int i = 0; i < objCount; i++) + plugin::CallMethodDynGlobal(ctor_gaddr(CEntryExit), &objArray[i]); + return objArray; +} + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CEntryExitManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CEntryExitManager.h new file mode 100644 index 00000000..1c9c0b34 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CEntryExitManager.h @@ -0,0 +1,476 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CEntryExitManager::WeAreInInteriorTransition) + static int address; + static int global_address; + static const int id = 0x43E400; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43E400, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x60F879, GAME_10US_COMPACT, H_CALL, 0x60EA90, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CEntryExitManager::AddEntryExitToStack) + static int address; + static int global_address; + static const int id = 0x43E410; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43E410, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4406E4, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x47513C, GAME_10US_COMPACT, H_CALL, 0x474900, 1>; + using def_t = void(CEntryExit *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CEntryExitManager::SetAreaCodeForVisibleObjects) + static int address; + static int global_address; + static const int id = 0x43ECF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43ECF0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4405E8, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CEntryExitManager::ResetAreaCodeForVisibleObjects) + static int address; + static int global_address; + static const int id = 0x43ED80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43ED80, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4407A7, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x440CEC, GAME_10US_COMPACT, H_CALL, 0x440C40, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CEntryExitManager::GetEntryExit) + static int address; + static int global_address; + static const int id = 0x43EF00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43EF00, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x471568, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x4750F5, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x47587B, GAME_10US_COMPACT, H_CALL, 0x474900, 2>; + using def_t = CEntryExit *(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CEntryExitManager::SetEntryExitFlag) + static int address; + static int global_address; + static const int id = 0x43EF20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43EF20, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43F9BF, GAME_10US_COMPACT, H_CALL, 0x43F9B0, 1, + 0x478D96, GAME_10US_COMPACT, H_CALL, 0x478000, 1>; + using def_t = void(char const *, unsigned int, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CEntryExitManager::SetEntryExitFlagWithIndex) + static int address; + static int global_address; + static const int id = 0x43EF90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43EF90, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x47957D, GAME_10US_COMPACT, H_CALL, 0x478000, 1>; + using def_t = void(int, unsigned int, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CEntryExitManager::GetEntryExitIndex) + static int address; + static int global_address; + static const int id = 0x43EFD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43EFD0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43F05A, GAME_10US_COMPACT, H_CALL, 0x43F050, 1, + 0x43F0E7, GAME_10US_COMPACT, H_CALL, 0x43F0A0, 1, + 0x43FCC2, GAME_10US_COMPACT, H_CALL, 0x43FA00, 1, + 0x43FEA9, GAME_10US_COMPACT, H_CALL, 0x43FEA0, 1>; + using def_t = int(char const *, unsigned short, unsigned short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CEntryExitManager::LinkEntryExit) + static int address; + static int global_address; + static const int id = 0x43F050; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43F050, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CEntryExit *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CEntryExitManager::PostEntryExitsCreation) + static int address; + static int global_address; + static const int id = 0x43F0A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43F0A0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5BA1B7, GAME_10US_COMPACT, H_CALL, 0x5BA1A0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CEntryExitManager::GetPositionRelativeToOutsideWorld) + static int address; + static int global_address; + static const int id = 0x43F150; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43F150, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x56E426, GAME_10US_COMPACT, H_CALL, 0x56E400, 1, + 0x571E04, GAME_10US_COMPACT, H_CALL, 0x571D90, 1, + 0x571F97, GAME_10US_COMPACT, H_CALL, 0x571F20, 1>; + using def_t = void(CVector &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CEntryExitManager::EnableBurglaryHouses) + static int address; + static int global_address; + static const int id = 0x43F180; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43F180, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x440CDB, GAME_10US_COMPACT, H_CALL, 0x440C40, 1, + 0x47B0FA, GAME_10US_COMPACT, H_CALL, 0x47A760, 1>; + using def_t = void(bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CEntryExitManager::FindNearestEntryExit) + static int address; + static int global_address; + static const int id = 0x43F4B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43F4B0, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x471562, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x4750EF, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x475875, GAME_10US_COMPACT, H_CALL, 0x474900, 2, + 0x479564, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x533CCB, GAME_10US_COMPACT, H_CALL, 0x533BF0, 1>; + using def_t = int(CVector2D const &, float, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CEntryExitManager::FindNearestDoor) + static int address; + static int global_address; + static const int id = 0x43F630; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43F630, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x440179, GAME_10US_COMPACT, H_CALL, 0x43FFD0, 1, + 0x67124D, GAME_10US_COMPACT, H_CALL, 0x671210, 1>; + using def_t = CEntity *(CEntryExit const &, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CEntryExitManager::Init) + static int address; + static int global_address; + static const int id = 0x43F880; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43F880, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5BF92D, GAME_10US_COMPACT, H_CALL, 0x5BF840, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CEntryExitManager::SetEnabledByName) + static int address; + static int global_address; + static const int id = 0x43F9B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43F9B0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4730CF, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x4730E5, GAME_10US_COMPACT, H_CALL, 0x472310, 2>; + using def_t = void(char const *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CEntryExitManager::SetEnabled) + static int address; + static int global_address; + static const int id = 0x43F9D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43F9D0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(int, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CEntryExitManager::AddOne) + static int address; + static int global_address; + static const int id = 0x43FA00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43FA00, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x533A8D, GAME_10US_COMPACT, H_CALL, 0x533790, 1, + 0x5B812D, GAME_10US_COMPACT, H_CALL, 0x5B8030, 1>; + using def_t = int(float, float, float, float, float, float, int, float, float, float, float, int, int, int, int, int, int, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17>; +META_END + +META_BEGIN(CEntryExitManager::DeleteOne) + static int address; + static int global_address; + static const int id = 0x43FD50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43FD50, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x440A60, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x533D0C, GAME_10US_COMPACT, H_CALL, 0x533BF0, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CEntryExitManager::GotoEntryExit) + static int address; + static int global_address; + static const int id = 0x43FDB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43FDB0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43FECB, GAME_10US_COMPACT, H_JUMP, 0x43FEA0, 1, + 0x43FEDB, GAME_10US_COMPACT, H_JUMP, 0x43FEA0, 2, + 0x43FF4B, GAME_10US_COMPACT, H_CALL, 0x43FEF0, 1, + 0x43FFBC, GAME_10US_COMPACT, H_CALL, 0x43FF60, 1>; + using def_t = void(CEntryExit *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CEntryExitManager::GotoEntryExitVC) + static int address; + static int global_address; + static const int id = 0x43FEA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43FEA0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CEntryExitManager::GotoNextEntryExit) + static int address; + static int global_address; + static const int id = 0x43FEF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43FEF0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CEntryExitManager::GotoPreviousEntryExit) + static int address; + static int global_address; + static const int id = 0x43FF60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x43FF60, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CEntryExitManager::Shutdown) + static int address; + static int global_address; + static const int id = 0x440B90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x440B90, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C9C1, GAME_10US_COMPACT, H_CALL, 0x53C900, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CEntryExitManager::ShutdownForRestart) + static int address; + static int global_address; + static const int id = 0x440C40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x440C40, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C64D, GAME_10US_COMPACT, H_CALL, 0x53C550, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CEntryExitManager::Update) + static int address; + static int global_address; + static const int id = 0x440D10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x440D10, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C0BC, GAME_10US_COMPACT, H_CALL, 0x53BEE0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CEntryExitManager::Load) + static int address; + static int global_address; + static const int id = 0x5D55C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D55C0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D19C0, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CEntryExitManager::Save) + static int address; + static int global_address; + static const int id = 0x5D5970; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D5970, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D1598, GAME_10US_COMPACT, H_CALL, 0x5D13E0, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CFileLoader.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CFileLoader.h new file mode 100644 index 00000000..71531a5c --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CFileLoader.h @@ -0,0 +1,1006 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN_OVERLOADED(CFileLoader::LoadLine, char *(*)(FILESTREAM)) + static int address; + static int global_address; + static const int id = 0x536F80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x536F80, 0, 0, 0, 0, 0>; + // total references count: 10us (74), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x49AE7B, GAME_10US_COMPACT, H_CALL, 0x49AE70, 1, + 0x49AEF7, GAME_10US_COMPACT, H_CALL, 0x49AE70, 2, + 0x49AF17, GAME_10US_COMPACT, H_CALL, 0x49AF10, 1, + 0x49AF55, GAME_10US_COMPACT, H_CALL, 0x49AF10, 2, + 0x49B70E, GAME_10US_COMPACT, H_CALL, 0x49B6A0, 1, + 0x49B896, GAME_10US_COMPACT, H_CALL, 0x49B6A0, 2, + 0x49B963, GAME_10US_COMPACT, H_CALL, 0x49B8D0, 1, + 0x49BB68, GAME_10US_COMPACT, H_CALL, 0x49B8D0, 2, + 0x49BCBC, GAME_10US_COMPACT, H_CALL, 0x49BBE0, 1, + 0x49BDAC, GAME_10US_COMPACT, H_CALL, 0x49BBE0, 2, + 0x5598A5, GAME_10US_COMPACT, H_CALL, 0x559860, 1, + 0x55997B, GAME_10US_COMPACT, H_CALL, 0x559860, 2, + 0x5599E0, GAME_10US_COMPACT, H_CALL, 0x5599B0, 1, + 0x559A28, GAME_10US_COMPACT, H_CALL, 0x5599B0, 2, + 0x55D112, GAME_10US_COMPACT, H_CALL, 0x55D0E0, 1, + 0x55D1F7, GAME_10US_COMPACT, H_CALL, 0x55D0E0, 2, + 0x55EBB0, GAME_10US_COMPACT, H_CALL, 0x55EB90, 1, + 0x55F282, GAME_10US_COMPACT, H_CALL, 0x55EB90, 2, + 0x55F2C9, GAME_10US_COMPACT, H_CALL, 0x55F2B0, 1, + 0x55F3F9, GAME_10US_COMPACT, H_CALL, 0x55F2B0, 2, + 0x5A315C, GAME_10US_COMPACT, H_CALL, 0x5A3140, 1, + 0x5A3236, GAME_10US_COMPACT, H_CALL, 0x5A3140, 2, + 0x5A7B60, GAME_10US_COMPACT, H_CALL, 0x5A7B30, 1, + 0x5A7E58, GAME_10US_COMPACT, H_CALL, 0x5A7B30, 2, + 0x5B24ED, GAME_10US_COMPACT, H_CALL, 0x5B24D0, 1, + 0x5B25D6, GAME_10US_COMPACT, H_CALL, 0x5B24D0, 2, + 0x5B5454, GAME_10US_COMPACT, H_CALL, 0x5B5360, 1, + 0x5B5798, GAME_10US_COMPACT, H_CALL, 0x5B5360, 2, + 0x5B65D6, GAME_10US_COMPACT, H_CALL, 0x5B65A0, 1, + 0x5B6864, GAME_10US_COMPACT, H_CALL, 0x5B65A0, 2, + 0x5B6E2D, GAME_10US_COMPACT, H_CALL, 0x5B6E10, 1, + 0x5B6F0F, GAME_10US_COMPACT, H_CALL, 0x5B6E10, 2, + 0x5B844B, GAME_10US_COMPACT, H_CALL, 0x5B8400, 1, + 0x5B8603, GAME_10US_COMPACT, H_CALL, 0x5B8400, 2, + 0x5B8722, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1, + 0x5B8A0F, GAME_10US_COMPACT, H_CALL, 0x5B8700, 2, + 0x5B906A, GAME_10US_COMPACT, H_CALL, 0x5B9030, 1, + 0x5B92E6, GAME_10US_COMPACT, H_CALL, 0x5B9030, 2, + 0x5BB8A9, GAME_10US_COMPACT, H_CALL, 0x5BB890, 1, + 0x5BB9CA, GAME_10US_COMPACT, H_CALL, 0x5BB890, 2, + 0x5BBB21, GAME_10US_COMPACT, H_CALL, 0x5BBAC0, 1, + 0x5BBB3C, GAME_10US_COMPACT, H_CALL, 0x5BBAC0, 2, + 0x5BC115, GAME_10US_COMPACT, H_CALL, 0x5BC090, 1, + 0x5BC12D, GAME_10US_COMPACT, H_CALL, 0x5BC090, 2, + 0x5BC937, GAME_10US_COMPACT, H_CALL, 0x5BC910, 1, + 0x5BC9ED, GAME_10US_COMPACT, H_CALL, 0x5BC910, 2, + 0x5BCCE6, GAME_10US_COMPACT, H_CALL, 0x5BCCD0, 1, + 0x5BCEF7, GAME_10US_COMPACT, H_CALL, 0x5BCCD0, 2, + 0x5BD7CD, GAME_10US_COMPACT, H_CALL, 0x5BD7B0, 1, + 0x5BD874, GAME_10US_COMPACT, H_CALL, 0x5BD830, 1, + 0x5BE456, GAME_10US_COMPACT, H_CALL, 0x5BD830, 2, + 0x5BE699, GAME_10US_COMPACT, H_CALL, 0x5BE670, 1, + 0x5BEC55, GAME_10US_COMPACT, H_CALL, 0x5BE670, 2, + 0x5BEF63, GAME_10US_COMPACT, H_CALL, 0x5BEDC0, 1, + 0x5BF2C8, GAME_10US_COMPACT, H_CALL, 0x5BEDC0, 2, + 0x5C02AA, GAME_10US_COMPACT, H_CALL, 0x5C0280, 1, + 0x5C0477, GAME_10US_COMPACT, H_CALL, 0x5C0280, 2, + 0x5DD3EF, GAME_10US_COMPACT, H_CALL, 0x5DD3B0, 1, + 0x5DD4E8, GAME_10US_COMPACT, H_CALL, 0x5DD3B0, 2, + 0x608B51, GAME_10US_COMPACT, H_CALL, 0x608B30, 1, + 0x608D79, GAME_10US_COMPACT, H_CALL, 0x608B30, 2, + 0x6EAF6E, GAME_10US_COMPACT, H_CALL, 0x6EAE80, 1, + 0x6EB5D7, GAME_10US_COMPACT, H_CALL, 0x6EAE80, 2, + 0x6FDC31, GAME_10US_COMPACT, H_CALL, 0x6FDC00, 1, + 0x6FDD30, GAME_10US_COMPACT, H_CALL, 0x6FDC00, 2, + 0x7187E3, GAME_10US_COMPACT, H_CALL, 0x7187C0, 1, + 0x718830, GAME_10US_COMPACT, H_CALL, 0x7187C0, 2, + 0x718862, GAME_10US_COMPACT, H_CALL, 0x7187C0, 3, + 0x718898, GAME_10US_COMPACT, H_CALL, 0x7187C0, 4, + 0x7188F1, GAME_10US_COMPACT, H_CALL, 0x7187C0, 5, + 0x71895E, GAME_10US_COMPACT, H_CALL, 0x7187C0, 6, + 0x71898A, GAME_10US_COMPACT, H_CALL, 0x7187C0, 7, + 0x71D50D, GAME_10US_COMPACT, H_CALL, 0x71D4E0, 1, + 0x71D57B, GAME_10US_COMPACT, H_CALL, 0x71D4E0, 2>; + using def_t = char *(FILESTREAM); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CFileLoader::LoadLine, char *(*)(char **, int &)) + static int address; + static int global_address; + static const int id = 0x536FE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x536FE0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x405D90, GAME_10US_COMPACT, H_CALL, 0x405C00, 1, + 0x405E9E, GAME_10US_COMPACT, H_CALL, 0x405C00, 2, + 0x406296, GAME_10US_COMPACT, H_CALL, 0x406080, 1, + 0x406338, GAME_10US_COMPACT, H_CALL, 0x406080, 2>; + using def_t = char *(char **, int &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFileLoader::LoadAtomicFile2Return) + static int address; + static int global_address; + static const int id = 0x537060; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x537060, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = RpClump *(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::SetRelatedModelInfoCB) + static int address; + static int global_address; + static const int id = 0x537150; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x537150, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x537241, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = RpAtomic *(RpAtomic *, void *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN_OVERLOADED(CFileLoader::LoadAtomicFile, void (*)(RwStream *, unsigned int)) + static int address; + static int global_address; + static const int id = 0x5371F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5371F0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40C7E6, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 1>; + using def_t = void(RwStream *, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN_OVERLOADED(CFileLoader::LoadClumpFile, bool (*)(RwStream *, unsigned int)) + static int address; + static int global_address; + static const int id = 0x5372D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5372D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40C80F, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 1>; + using def_t = bool(RwStream *, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFileLoader::StartLoadClumpFile) + static int address; + static int global_address; + static const int id = 0x5373F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5373F0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = bool(RwStream *, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFileLoader::FinishLoadClumpFile) + static int address; + static int global_address; + static const int id = 0x537450; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x537450, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x408D34, GAME_10US_COMPACT, H_CALL, 0x408CB0, 1>; + using def_t = bool(RwStream *, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFileLoader::LoadBoundingBox) + static int address; + static int global_address; + static const int id = 0x5374B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5374B0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(unsigned char *, CBoundingBox &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFileLoader::LoadCollisionModel) + static int address; + static int global_address; + static const int id = 0x537580; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x537580, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x41B2A5, GAME_10US_COMPACT, H_CALL, 0x41B1D0, 1, + 0x5385D3, GAME_10US_COMPACT, H_CALL, 0x538440, 1, + 0x5B4FB5, GAME_10US_COMPACT, H_CALL, 0x5B4E60, 1, + 0x5B5181, GAME_10US_COMPACT, H_CALL, 0x5B5000, 1>; + using def_t = void(unsigned char *, CColModel &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN_OVERLOADED(CFileLoader::LoadCarGenerator, void (*)(CFileCarGenerator *, int)) + static int address; + static int global_address; + static const int id = 0x537990; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x537990, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x406267, GAME_10US_COMPACT, H_CALL, 0x406080, 1, + 0x5B47A0, GAME_10US_COMPACT, H_CALL, 0x5B4740, 1>; + using def_t = void(CFileCarGenerator *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFileLoader::LoadCollisionModelVer4) + static int address; + static int global_address; + static const int id = 0x537AE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x537AE0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x538618, GAME_10US_COMPACT, H_CALL, 0x538440, 1>; + using def_t = void(void *, unsigned int, CColModel &, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CFileLoader::LoadCollisionModelVer3) + static int address; + static int global_address; + static const int id = 0x537CE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x537CE0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x41B27E, GAME_10US_COMPACT, H_CALL, 0x41B1D0, 1, + 0x538602, GAME_10US_COMPACT, H_CALL, 0x538440, 1, + 0x5B4F83, GAME_10US_COMPACT, H_CALL, 0x5B4E60, 1, + 0x5B5157, GAME_10US_COMPACT, H_CALL, 0x5B5000, 1>; + using def_t = void(unsigned char *, unsigned int, CColModel &, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CFileLoader::LoadCollisionModelVer2) + static int address; + static int global_address; + static const int id = 0x537EE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x537EE0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x41B296, GAME_10US_COMPACT, H_CALL, 0x41B1D0, 1, + 0x5385EC, GAME_10US_COMPACT, H_CALL, 0x538440, 1, + 0x5B4FA0, GAME_10US_COMPACT, H_CALL, 0x5B4E60, 1, + 0x5B5170, GAME_10US_COMPACT, H_CALL, 0x5B5000, 1>; + using def_t = void(unsigned char *, unsigned int, CColModel &, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN_OVERLOADED(CFileLoader::LoadObjectInstance, CEntity *(*)(CFileObjectInstance *, char const *)) + static int address; + static int global_address; + static const int id = 0x538090; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x538090, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x405C99, GAME_10US_COMPACT, H_CALL, 0x405C00, 1, + 0x4061E8, GAME_10US_COMPACT, H_CALL, 0x406080, 1, + 0x5386E3, GAME_10US_COMPACT, H_CALL, 0x538690, 1>; + using def_t = CEntity *(CFileObjectInstance *, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN_OVERLOADED(CFileLoader::LoadCollisionFile, bool (*)(unsigned char *, unsigned int, unsigned char)) + static int address; + static int global_address; + static const int id = 0x538440; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x538440, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x410717, GAME_10US_COMPACT, H_CALL, 0x4106D0, 1>; + using def_t = bool(unsigned char *, unsigned int, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN_OVERLOADED(CFileLoader::LoadObjectInstance, CEntity *(*)(char const *)) + static int address; + static int global_address; + static const int id = 0x538690; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x538690, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x405E0A, GAME_10US_COMPACT, H_CALL, 0x405C00, 1, + 0x4062F2, GAME_10US_COMPACT, H_CALL, 0x406080, 1, + 0x5B892A, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = CEntity *(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadTexDictionary) + static int address; + static int global_address; + static const int id = 0x5B3860; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B3860, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B910A, GAME_10US_COMPACT, H_CALL, 0x5B9030, 1>; + using def_t = RwTexDictionary *(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::SaveTexDictionary) + static int address; + static int global_address; + static const int id = 0x5B38C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B38C0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(RwTexDictionary *, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFileLoader::AddTexDictionaries) + static int address; + static int global_address; + static const int id = 0x5B3910; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B3910, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(RwTexDictionary *, RwTexDictionary *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFileLoader::FindRelatedModelInfoCB) + static int address; + static int global_address; + static const int id = 0x5B3930; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B3930, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B3A06, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = RpAtomic *(RpAtomic *, void *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN_OVERLOADED(CFileLoader::LoadAtomicFile, void (*)(char const *)) + static int address; + static int global_address; + static const int id = 0x5B39D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B39D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B91B0, GAME_10US_COMPACT, H_CALL, 0x5B9030, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CFileLoader::LoadClumpFile, void (*)(char const *)) + static int address; + static int global_address; + static const int id = 0x5B3A30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B3A30, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B91DB, GAME_10US_COMPACT, H_CALL, 0x5B9030, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::ReloadObjectTypes) + static int address; + static int global_address; + static const int id = 0x5B3AC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B3AC0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadObject) + static int address; + static int global_address; + static const int id = 0x5B3C60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B3C60, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B85DD, GAME_10US_COMPACT, H_CALL, 0x5B8400, 1>; + using def_t = int(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadTimeObject) + static int address; + static int global_address; + static const int id = 0x5B3DE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B3DE0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B862C, GAME_10US_COMPACT, H_CALL, 0x5B8400, 1>; + using def_t = int(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadWeaponObject) + static int address; + static int global_address; + static const int id = 0x5B3FB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B3FB0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8634, GAME_10US_COMPACT, H_CALL, 0x5B8400, 1>; + using def_t = int(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadClumpObject) + static int address; + static int global_address; + static const int id = 0x5B4040; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B4040, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B863C, GAME_10US_COMPACT, H_CALL, 0x5B8400, 1>; + using def_t = int(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadAnimatedClumpObject) + static int address; + static int global_address; + static const int id = 0x5B40C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B40C0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8644, GAME_10US_COMPACT, H_CALL, 0x5B8400, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadPathHeader) + static int address; + static int global_address; + static const int id = 0x5B41C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B41C0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8666, GAME_10US_COMPACT, H_CALL, 0x5B8400, 1, + 0x5B899A, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = int(char const *, int &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFileLoader::LoadPedPathNode) + static int address; + static int global_address; + static const int id = 0x5B41F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B41F0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B6EE0, GAME_10US_COMPACT, H_CALL, 0x5B6E10, 1, + 0x5B867F, GAME_10US_COMPACT, H_CALL, 0x5B8400, 1, + 0x5B89B2, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = void(char const *, int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CFileLoader::LoadCarPathNode) + static int address; + static int global_address; + static const int id = 0x5B4380; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B4380, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B6EFD, GAME_10US_COMPACT, H_CALL, 0x5B6E10, 1, + 0x5B869C, GAME_10US_COMPACT, H_CALL, 0x5B8400, 1, + 0x5B89D0, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = void(char const *, int, int, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CFileLoader::LoadGarage) + static int address; + static int global_address; + static const int id = 0x5B4530; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B4530, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8988, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadStuntJump) + static int address; + static int global_address; + static const int id = 0x5B45D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B45D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B89F9, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CFileLoader::LoadCarGenerator, void (*)(char const *, int)) + static int address; + static int global_address; + static const int id = 0x5B4740; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B4740, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B89EE, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = void(char const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFileLoader::LoadPickup) + static int address; + static int global_address; + static const int id = 0x5B47B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B47B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B89E4, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadZone) + static int address; + static int global_address; + static const int id = 0x5B4AB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B4AB0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B894C, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadCullZone) + static int address; + static int global_address; + static const int id = 0x5B4B40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B4B40, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8957, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadOcclusionVolume) + static int address; + static int global_address; + static const int id = 0x5B4C80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B4C80, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8967, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = void(char const *, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFileLoader::LoadAudioZone) + static int address; + static int global_address; + static const int id = 0x5B4D70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B4D70, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8975, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CFileLoader::LoadCollisionFile, void (*)(char const *, unsigned char)) + static int address; + static int global_address; + static const int id = 0x5B4E60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B4E60, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4106B7, GAME_10US_COMPACT, H_CALL, 0x410690, 1, + 0x5B9188, GAME_10US_COMPACT, H_CALL, 0x5B9030, 1>; + using def_t = void(char const *, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFileLoader::LoadCollisionFileFirstTime) + static int address; + static int global_address; + static const int id = 0x5B5000; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B5000, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x410706, GAME_10US_COMPACT, H_CALL, 0x4106D0, 1>; + using def_t = bool(unsigned char *, unsigned int, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CFileLoader::ReloadPaths) + static int address; + static int global_address; + static const int id = 0x5B6E10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B6E10, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadVehicleObject) + static int address; + static int global_address; + static const int id = 0x5B6F30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B6F30, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B864C, GAME_10US_COMPACT, H_CALL, 0x5B8400, 1>; + using def_t = int(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadPedObject) + static int address; + static int global_address; + static const int id = 0x5B7420; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B7420, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8654, GAME_10US_COMPACT, H_CALL, 0x5B8400, 1>; + using def_t = int(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadTXDParent) + static int address; + static int global_address; + static const int id = 0x5B75E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B75E0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B86C5, GAME_10US_COMPACT, H_CALL, 0x5B8400, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadEntryExit) + static int address; + static int global_address; + static const int id = 0x5B8030; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B8030, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8980, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadTimeCyclesModifier) + static int address; + static int global_address; + static const int id = 0x5B81D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B81D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8A01, GAME_10US_COMPACT, H_CALL, 0x5B8700, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadObjectTypes) + static int address; + static int global_address; + static const int id = 0x5B8400; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B8400, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B9206, GAME_10US_COMPACT, H_CALL, 0x5B9030, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadScene) + static int address; + static int global_address; + static const int id = 0x5B8700; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B8700, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B92C7, GAME_10US_COMPACT, H_CALL, 0x5B9030, 1>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFileLoader::LoadLevel) + static int address; + static int global_address; + static const int id = 0x5B9030; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B9030, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53BC95, GAME_10US_COMPACT, H_CALL, 0x53BC80, 1, + 0x53BC9B, GAME_10US_COMPACT, H_CALL, 0x53BC80, 2>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(GetNameAndDamage) + static int address; + static int global_address; + static const int id = 0x5370A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5370A0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x537183, GAME_10US_COMPACT, H_CALL, 0x537150, 1, + 0x5B394F, GAME_10US_COMPACT, H_CALL, 0x5B3930, 1>; + using def_t = void(char const *, char *, bool &); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CloneAtomicToClumpCB) + static int address; + static int global_address; + static const int id = 0x537290; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x537290, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x537346, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = RpAtomic *(RpAtomic *, void *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(GetFilename) + static int address; + static int global_address; + static const int id = 0x5B3660; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B3660, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = char const *(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(LoadingScreenLoadingFile) + static int address; + static int global_address; + static const int id = 0x5B3680; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B3680, 0, 0, 0, 0, 0>; + // total references count: 10us (9), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B9180, GAME_10US_COMPACT, H_CALL, 0x5B9030, 1, + 0x5B91AA, GAME_10US_COMPACT, H_CALL, 0x5B9030, 2, + 0x5B91D5, GAME_10US_COMPACT, H_CALL, 0x5B9030, 3, + 0x5B9200, GAME_10US_COMPACT, H_CALL, 0x5B9030, 4, + 0x5B9253, GAME_10US_COMPACT, H_CALL, 0x5B9030, 5, + 0x5B9269, GAME_10US_COMPACT, H_CALL, 0x5B9030, 6, + 0x5B9278, GAME_10US_COMPACT, H_CALL, 0x5B9030, 7, + 0x5B928C, GAME_10US_COMPACT, H_CALL, 0x5B9030, 8, + 0x5B92BD, GAME_10US_COMPACT, H_CALL, 0x5B9030, 9>; + using def_t = void(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(AddTextureCB) + static int address; + static int global_address; + static const int id = 0x5B38F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B38F0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B391A, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x5B9113, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = RwTexture *(RwTexture *, void *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CFormation.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CFormation.h new file mode 100644 index 00000000..0830d855 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CFormation.h @@ -0,0 +1,172 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CFormation::ReturnTargetPedForPed) + static int address; + static int global_address; + static const int id = 0x699F50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x699F50, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69C60F, GAME_10US_COMPACT, H_CALL, 0x69C4D0, 1>; + using def_t = int(CPed *, CPed **); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFormation::ReturnDestinationForPed) + static int address; + static int global_address; + static const int id = 0x699FA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x699FA0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FAC0E, GAME_10US_COMPACT, H_CALL, 0x5FAB60, 1>; + using def_t = bool(CPed *, CVector *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFormation::FindCoverPointsBehindBox) + static int address; + static int global_address; + static const int id = 0x699FF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x699FF0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x699629, GAME_10US_COMPACT, H_CALL, 0x699570, 1, + 0x69B97B, GAME_10US_COMPACT, H_CALL, 0x69B860, 1>; + using def_t = void(CPointList *, CVector, CMatrix *, CVector const *, CVector const *, CVector const *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5,6>; +META_END + +META_BEGIN(CFormation::GenerateGatherDestinations) + static int address; + static int global_address; + static const int id = 0x69A620; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x69A620, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FABCC, GAME_10US_COMPACT, H_CALL, 0x5FAB60, 1>; + using def_t = void(CPedList *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFormation::GenerateGatherDestinations_AroundCar) + static int address; + static int global_address; + static const int id = 0x69A770; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x69A770, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FABBF, GAME_10US_COMPACT, H_CALL, 0x5FAB60, 1>; + using def_t = void(CPedList *, CVehicle *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFormation::FindNearestAvailableDestination) + static int address; + static int global_address; + static const int id = 0x69B1B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x69B1B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69B553, GAME_10US_COMPACT, H_CALL, 0x69B240, 1>; + using def_t = signed int(CVector, float *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFormation::DistributeDestinations) + static int address; + static int global_address; + static const int id = 0x69B240; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x69B240, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FABD9, GAME_10US_COMPACT, H_CALL, 0x5FAB60, 1>; + using def_t = void(CPedList *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFormation::DistributeDestinations_CoverPoints) + static int address; + static int global_address; + static const int id = 0x69B5B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x69B5B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69BDDC, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 1>; + using def_t = void(CPedList *, CVector); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CFormation::DistributeDestinations_PedsToAttack) + static int address; + static int global_address; + static const int id = 0x69B700; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x69B700, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69C57F, GAME_10US_COMPACT, H_CALL, 0x69C4D0, 1>; + using def_t = void(CPedList *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CFormation::FindCoverPoints) + static int address; + static int global_address; + static const int id = 0x69B860; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x69B860, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69BDA5, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 1>; + using def_t = void(CVector, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGame.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGame.h new file mode 100644 index 00000000..c7e60542 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGame.h @@ -0,0 +1,490 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CGame::InitialiseOnceBeforeRW) + static int address; + static int global_address; + static const int id = 0x53BB50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53BB50, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53EC2B, GAME_10US_COMPACT, H_CALL, 0x53EC10, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::ShutdownRenderWare) + static int address; + static int global_address; + static const int id = 0x53BB80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53BB80, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53D910, GAME_10US_COMPACT, H_CALL, 0x53D910, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::FinalShutdown) + static int address; + static int global_address; + static const int id = 0x53BC30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53BC30, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53EC96, GAME_10US_COMPACT, H_CALL, 0x53EC10, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::InitAfterLostFocus) + static int address; + static int global_address; + static const int id = 0x53BC60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53BC60, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x748063, GAME_10US_COMPACT, H_CALL, 0x747EB0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::Initialise) + static int address; + static int global_address; + static const int id = 0x53BC80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53BC80, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53DF24, GAME_10US_COMPACT, H_CALL, 0x53DF10, 1, + 0x53E58E, GAME_10US_COMPACT, H_CALL, 0x53E580, 1>; + using def_t = bool(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGame::ReInitGameObjectVariables) + static int address; + static int global_address; + static const int id = 0x53BCF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53BCF0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C6DB, GAME_10US_COMPACT, H_CALL, 0x53C680, 1, + 0x53C76D, GAME_10US_COMPACT, H_CALL, 0x53C680, 2>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::ReloadIPLs) + static int address; + static int global_address; + static const int id = 0x53BED0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53BED0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::Process) + static int address; + static int global_address; + static const int id = 0x53BEE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53BEE0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53E981, GAME_10US_COMPACT, H_CALL, 0x53E920, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::GenerateTempPedAtStartOfNetworkGame) + static int address; + static int global_address; + static const int id = 0x53C240; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53C240, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::CanSeeOutSideFromCurrArea) + static int address; + static int global_address; + static const int id = 0x53C4A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53C4A0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x6FC625, GAME_10US_COMPACT, H_CALL, 0x6FC5A0, 1, + 0x713953, GAME_10US_COMPACT, H_CALL, 0x713950, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::CanSeeWaterFromCurrArea) + static int address; + static int global_address; + static const int id = 0x53C4B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53C4B0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x6E7670, GAME_10US_COMPACT, H_JUMP, 0x6E7670, 1, + 0x6EB710, GAME_10US_COMPACT, H_CALL, 0x6EB710, 1, + 0x6EF657, GAME_10US_COMPACT, H_CALL, 0x6EF650, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::TidyUpMemory) + static int address; + static int global_address; + static const int id = 0x53C500; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53C500, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x440A83, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x572EEB, GAME_10US_COMPACT, H_CALL, 0x572EC0, 1, + 0x572F82, GAME_10US_COMPACT, H_CALL, 0x572EC0, 2, + 0x618EE1, GAME_10US_COMPACT, H_CALL, 0x618E90, 1, + 0x618FE3, GAME_10US_COMPACT, H_CALL, 0x618F50, 1>; + using def_t = void(bool, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGame::ShutDownForRestart) + static int address; + static int global_address; + static const int id = 0x53C550; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53C550, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C758, GAME_10US_COMPACT, H_CALL, 0x53C680, 1, + 0x748E04, GAME_10US_COMPACT, H_CALL, 0x748710, 1, + 0x748E3E, GAME_10US_COMPACT, H_CALL, 0x748710, 2>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::InitialiseWhenRestarting) + static int address; + static int global_address; + static const int id = 0x53C680; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53C680, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x748E09, GAME_10US_COMPACT, H_CALL, 0x748710, 1, + 0x748E48, GAME_10US_COMPACT, H_CALL, 0x748710, 2>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::DrasticTidyUpMemory) + static int address; + static int global_address; + static const int id = 0x53C810; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53C810, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x44148E, GAME_10US_COMPACT, H_CALL, 0x441440, 1, + 0x4D5AFE, GAME_10US_COMPACT, H_CALL, 0x4D5AF0, 1, + 0x4D5BF4, GAME_10US_COMPACT, H_CALL, 0x4D5AF0, 2, + 0x5AFFB4, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1, + 0x5B1434, GAME_10US_COMPACT, H_CALL, 0x5B13F0, 1>; + using def_t = void(bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGame::Shutdown) + static int address; + static int global_address; + static const int id = 0x53C900; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53C900, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x748E6B, GAME_10US_COMPACT, H_CALL, 0x748710, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::InitialiseEssentialsAfterRW) + static int address; + static int global_address; + static const int id = 0x5BA160; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5BA160, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x748C30, GAME_10US_COMPACT, H_CALL, 0x748710, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::Init2) + static int address; + static int global_address; + static const int id = 0x5BA1A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5BA1A0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53BCA6, GAME_10US_COMPACT, H_CALL, 0x53BC80, 1>; + using def_t = bool(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGame::Init3) + static int address; + static int global_address; + static const int id = 0x5BA400; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5BA400, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53BCD9, GAME_10US_COMPACT, H_CALL, 0x53BC80, 1>; + using def_t = bool(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGame::InitialiseRenderWare) + static int address; + static int global_address; + static const int id = 0x5BD600; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5BD600, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5BF3A1, GAME_10US_COMPACT, H_CALL, 0x5BF390, 1, + 0x5BF3BE, GAME_10US_COMPACT, H_CALL, 0x5BF3B0, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGame::Init1) + static int address; + static int global_address; + static const int id = 0x5BF840; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5BF840, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53BC86, GAME_10US_COMPACT, H_CALL, 0x53BC80, 1>; + using def_t = bool(char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGame::InitialiseCoreDataAfterRW) + static int address; + static int global_address; + static const int id = 0x5BFA90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5BFA90, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x748C3F, GAME_10US_COMPACT, H_CALL, 0x748710, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(MoveMem) + static int address; + static int global_address; + static const int id = 0x53C250; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53C250, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C352, GAME_10US_COMPACT, H_CALL, 0x53C290, 1, + 0x53C366, GAME_10US_COMPACT, H_CALL, 0x53C290, 2, + 0x53C37A, GAME_10US_COMPACT, H_CALL, 0x53C290, 3, + 0x53C38E, GAME_10US_COMPACT, H_CALL, 0x53C290, 4>; + using def_t = bool(void **); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(MoveColModelMemory) + static int address; + static int global_address; + static const int id = 0x53C290; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53C290, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = bool(CColModel &, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(MoveGeometryMemory) + static int address; + static int global_address; + static const int id = 0x53C3E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53C3E0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C46F, GAME_10US_COMPACT, H_CALL, 0x53C440, 1>; + using def_t = RpGeometry *(RpGeometry *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(TidyUpModelInfo2) + static int address; + static int global_address; + static const int id = 0x53C440; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x53C440, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = bool(CEntity *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(ValidateVersion) + static int address; + static int global_address; + static const int id = 0x5BA060; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5BA060, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5BD606, GAME_10US_COMPACT, H_CALL, 0x5BD600, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(D3DDeviceRestoreCallback) + static int address; + static int global_address; + static const int id = 0x5BA120; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5BA120, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5BD798, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(DoHaspChecks) + static int address; + static int global_address; + static const int id = 0x5BA150; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5BA150, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGangInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGangInfo.h new file mode 100644 index 00000000..9e1f5344 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGangInfo.h @@ -0,0 +1,86 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +CTOR_META_BEGIN(CGangInfo) + static int address; + static int global_address; + static const int id = 0x5DE520; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5DE520, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x850CE6, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(CGangInfo *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +DTOR_META_BEGIN(CGangInfo) + static int address; + static int global_address; + static const int id = 0x5DE540; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5DE540, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x850CE1, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x856761, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(CGangInfo *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +template<> +struct stack_object : stack_object_no_default { + SUPPORTED_10US stack_object() { + plugin::CallMethodDynGlobal(ctor_gaddr(CGangInfo), reinterpret_cast(objBuff)); + } + SUPPORTED_10US ~stack_object() { + plugin::CallMethodDynGlobal(dtor_gaddr(CGangInfo), reinterpret_cast(objBuff)); + } +}; + +template <> +SUPPORTED_10US inline CGangInfo *operator_new() { + void *objData = operator new(sizeof(CGangInfo)); + CGangInfo *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr(CGangInfo), obj); + return obj; +} +template <> +SUPPORTED_10US inline CGangInfo *operator_new_array(unsigned int objCount) { + void *objData = operator new(sizeof(CGangInfo) * objCount + 4); + *reinterpret_cast(objData) = objCount; + CGangInfo *objArray = reinterpret_cast(reinterpret_cast(objData) + 4); + for (unsigned int i = 0; i < objCount; i++) + plugin::CallMethodDynGlobal(ctor_gaddr(CGangInfo), &objArray[i]); + return objArray; +} +template <> +SUPPORTED_10US inline void operator_delete(CGangInfo *obj) { + if (obj == nullptr) return; + plugin::CallMethodDynGlobal(dtor_gaddr(CGangInfo), obj); + operator delete(obj); +} +template <> +SUPPORTED_10US inline void operator_delete_array(CGangInfo *objArray) { + if (objArray == nullptr) return; + void *objData = reinterpret_cast(reinterpret_cast(objArray) - 4); + unsigned int arraySize = *reinterpret_cast(objData); + for (unsigned int i = 0; i < arraySize; i++) + plugin::CallMethodDynGlobal(dtor_gaddr(CGangInfo), &objArray[i]); + operator delete(objData); +} + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGangWars.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGangWars.h new file mode 100644 index 00000000..307e0901 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGangWars.h @@ -0,0 +1,617 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CGangWars::InitAtStartOfGame) + static int address; + static int global_address; + static const int id = 0x443920; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x443920, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53BD02, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1, + 0x5BF8D6, GAME_10US_COMPACT, H_CALL, 0x5BF840, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::AddKillToProvocation) + static int address; + static int global_address; + static const int id = 0x443950; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x443950, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43DEE9, GAME_10US_COMPACT, H_CALL, 0x43DCD0, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWars::DontCreateCivilians) + static int address; + static int global_address; + static const int id = 0x4439C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4439C0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4341D1, GAME_10US_COMPACT, H_CALL, 0x4341C0, 1, + 0x61477A, GAME_10US_COMPACT, H_CALL, 0x614720, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::PedStreamedInForThisGang) + static int address; + static int global_address; + static const int id = 0x4439D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4439D0, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4448BE, GAME_10US_COMPACT, H_CALL, 0x444810, 1, + 0x4448FB, GAME_10US_COMPACT, H_CALL, 0x444810, 2, + 0x444A53, GAME_10US_COMPACT, H_CALL, 0x444810, 3, + 0x444A69, GAME_10US_COMPACT, H_CALL, 0x444810, 4, + 0x4453F3, GAME_10US_COMPACT, H_CALL, 0x4453D0, 1>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWars::PickStreamedInPedForThisGang) + static int address; + static int global_address; + static const int id = 0x443A20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x443A20, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x444D8A, GAME_10US_COMPACT, H_CALL, 0x444810, 1, + 0x44554B, GAME_10US_COMPACT, H_CALL, 0x4453D0, 1>; + using def_t = bool(int, int *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGangWars::GangWarGoingOn) + static int address; + static int global_address; + static const int id = 0x443AA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x443AA0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x471A66, GAME_10US_COMPACT, H_CALL, 0x470A90, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::GangWarFightingGoingOn) + static int address; + static int global_address; + static const int id = 0x443AC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x443AC0, 0, 0, 0, 0, 0>; + // total references count: 10us (9), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x424DEE, GAME_10US_COMPACT, H_CALL, 0x424CE0, 1, + 0x42F9D1, GAME_10US_COMPACT, H_CALL, 0x42F9C0, 1, + 0x4301C1, GAME_10US_COMPACT, H_CALL, 0x430050, 1, + 0x47B677, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x562167, GAME_10US_COMPACT, H_CALL, 0x562120, 1, + 0x56218E, GAME_10US_COMPACT, H_CALL, 0x562120, 2, + 0x60FCC2, GAME_10US_COMPACT, H_CALL, 0x60FBD0, 1, + 0x612045, GAME_10US_COMPACT, H_CALL, 0x611FC0, 1, + 0x6147F5, GAME_10US_COMPACT, H_CALL, 0x614720, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::DoesPlayerControlThisZone) + static int address; + static int global_address; + static const int id = 0x443AE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x443AE0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = bool(CZoneInfo *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWars::PickZoneToAttack) + static int address; + static int global_address; + static const int id = 0x443B00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x443B00, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x444303, GAME_10US_COMPACT, H_CALL, 0x444300, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::TellStreamingWhichGangsAreNeeded) + static int address; + static int global_address; + static const int id = 0x443D50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x443D50, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40AABF, GAME_10US_COMPACT, H_CALL, 0x40AA10, 1>; + using def_t = void(int *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWars::CalculateTimeTillNextAttack) + static int address; + static int global_address; + static const int id = 0x443DB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x443DB0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x446B25, GAME_10US_COMPACT, H_CALL, 0x446610, 1, + 0x446BCB, GAME_10US_COMPACT, H_CALL, 0x446610, 2, + 0x446D49, GAME_10US_COMPACT, H_CALL, 0x446610, 3>; + using def_t = unsigned int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::UpdateTerritoryUnderControlPercentage) + static int address; + static int global_address; + static const int id = 0x443DE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x443DE0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x44665D, GAME_10US_COMPACT, H_CALL, 0x446610, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::CanPlayerStartAGangWarHere) + static int address; + static int global_address; + static const int id = 0x443F80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x443F80, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4460A0, GAME_10US_COMPACT, H_CALL, 0x446050, 1, + 0x5724F9, GAME_10US_COMPACT, H_CALL, 0x572440, 1, + 0x5866F7, GAME_10US_COMPACT, H_CALL, 0x586650, 1>; + using def_t = bool(CZoneInfo *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWars::ClearSpecificZonesToTriggerGangWar) + static int address; + static int global_address; + static const int id = 0x443FF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x443FF0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x468601, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x476646, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1, + 0x618F26, GAME_10US_COMPACT, H_CALL, 0x618E90, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::SetSpecificZoneToTriggerGangWar) + static int address; + static int global_address; + static const int id = 0x444010; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x444010, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x476630, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWars::CheerVictory) + static int address; + static int global_address; + static const int id = 0x444040; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x444040, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x446411, GAME_10US_COMPACT, H_CALL, 0x446400, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::StartDefensiveGangWar) + static int address; + static int global_address; + static const int id = 0x444300; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x444300, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x446E46, GAME_10US_COMPACT, H_CALL, 0x446610, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::ClearTheStreets) + static int address; + static int global_address; + static const int id = 0x4444B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4444B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4462E8, GAME_10US_COMPACT, H_CALL, 0x446050, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::TellGangMembersTo) + static int address; + static int global_address; + static const int id = 0x444530; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x444530, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x446395, GAME_10US_COMPACT, H_CALL, 0x446050, 1, + 0x446470, GAME_10US_COMPACT, H_CALL, 0x446400, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWars::CreateAttackWave) + static int address; + static int global_address; + static const int id = 0x444810; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x444810, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x446710, GAME_10US_COMPACT, H_CALL, 0x446610, 1, + 0x4467F4, GAME_10US_COMPACT, H_CALL, 0x446610, 2, + 0x4468D3, GAME_10US_COMPACT, H_CALL, 0x446610, 3>; + using def_t = bool(int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGangWars::CreateDefendingGroup) + static int address; + static int global_address; + static const int id = 0x4453D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4453D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x446CA1, GAME_10US_COMPACT, H_CALL, 0x446610, 1>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWars::AttackWaveOvercome) + static int address; + static int global_address; + static const int id = 0x445B30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x445B30, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x446739, GAME_10US_COMPACT, H_CALL, 0x446610, 1, + 0x44681F, GAME_10US_COMPACT, H_CALL, 0x446610, 2, + 0x4468F5, GAME_10US_COMPACT, H_CALL, 0x446610, 3, + 0x446B12, GAME_10US_COMPACT, H_CALL, 0x446610, 4>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::ReleasePedsInAttackWave) + static int address; + static int global_address; + static const int id = 0x445C30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x445C30, 0, 0, 0, 0, 0>; + // total references count: 10us (8), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x446404, GAME_10US_COMPACT, H_CALL, 0x446400, 1, + 0x446524, GAME_10US_COMPACT, H_CALL, 0x4464C0, 1, + 0x446554, GAME_10US_COMPACT, H_CALL, 0x4464C0, 2, + 0x446748, GAME_10US_COMPACT, H_CALL, 0x446610, 1, + 0x44682E, GAME_10US_COMPACT, H_CALL, 0x446610, 2, + 0x446A32, GAME_10US_COMPACT, H_CALL, 0x446610, 3, + 0x446B95, GAME_10US_COMPACT, H_CALL, 0x446610, 4, + 0x446C2E, GAME_10US_COMPACT, H_CALL, 0x446610, 5>; + using def_t = int(bool, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGangWars::ReleaseCarsInAttackWave) + static int address; + static int global_address; + static const int id = 0x445E20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x445E20, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x44640C, GAME_10US_COMPACT, H_CALL, 0x446400, 1, + 0x44655C, GAME_10US_COMPACT, H_JUMP, 0x4464C0, 1, + 0x44674D, GAME_10US_COMPACT, H_CALL, 0x446610, 1, + 0x446833, GAME_10US_COMPACT, H_CALL, 0x446610, 2, + 0x446A37, GAME_10US_COMPACT, H_CALL, 0x446610, 3>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::MakePlayerGainInfluenceInZone) + static int address; + static int global_address; + static const int id = 0x445E80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x445E80, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x446757, GAME_10US_COMPACT, H_CALL, 0x446610, 1, + 0x44683D, GAME_10US_COMPACT, H_CALL, 0x446610, 2, + 0x446903, GAME_10US_COMPACT, H_CALL, 0x446610, 3>; + using def_t = bool(float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWars::StrengthenPlayerInfluenceInZone) + static int address; + static int global_address; + static const int id = 0x445F50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x445F50, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x446B87, GAME_10US_COMPACT, H_CALL, 0x446610, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWars::MakeEnemyGainInfluenceInZone) + static int address; + static int global_address; + static const int id = 0x445FD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x445FD0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x446534, GAME_10US_COMPACT, H_CALL, 0x4464C0, 1, + 0x446C3D, GAME_10US_COMPACT, H_CALL, 0x446610, 1, + 0x446D3E, GAME_10US_COMPACT, H_CALL, 0x446610, 2>; + using def_t = void(int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGangWars::StartOffensiveGangWar) + static int address; + static int global_address; + static const int id = 0x446050; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x446050, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4466DC, GAME_10US_COMPACT, H_CALL, 0x446610, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::DoStuffWhenPlayerVictorious) + static int address; + static int global_address; + static const int id = 0x446400; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x446400, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x44690B, GAME_10US_COMPACT, H_CALL, 0x446610, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::EndGangWar) + static int address; + static int global_address; + static const int id = 0x4464C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4464C0, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4465D4, GAME_10US_COMPACT, H_CALL, 0x446570, 1, + 0x446631, GAME_10US_COMPACT, H_CALL, 0x446610, 1, + 0x56E5C3, GAME_10US_COMPACT, H_CALL, 0x56E580, 1, + 0x56E5FE, GAME_10US_COMPACT, H_CALL, 0x56E5D0, 1, + 0x618F87, GAME_10US_COMPACT, H_CALL, 0x618F50, 1>; + using def_t = void(bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWars::SetGangWarsActive) + static int address; + static int global_address; + static const int id = 0x446570; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x446570, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4465FC, GAME_10US_COMPACT, H_CALL, 0x4465F0, 1, + 0x471A41, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x471A52, GAME_10US_COMPACT, H_CALL, 0x470A90, 2>; + using def_t = void(bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWars::SwitchGangWarsActive) + static int address; + static int global_address; + static const int id = 0x4465F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4465F0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::Update) + static int address; + static int global_address; + static const int id = 0x446610; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x446610, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C122, GAME_10US_COMPACT, H_CALL, 0x53BEE0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::Load) + static int address; + static int global_address; + static const int id = 0x5D3EB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D3EB0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D19B2, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangWars::Save) + static int address; + static int global_address; + static const int id = 0x5D5530; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D5530, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D158A, GAME_10US_COMPACT, H_CALL, 0x5D13E0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGangWarsSaveStructure.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGangWarsSaveStructure.h new file mode 100644 index 00000000..ad2c92d3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGangWarsSaveStructure.h @@ -0,0 +1,43 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CGangWarsSaveStructure::Construct) + static int address; + static int global_address; + static const int id = 0x5D2620; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D2620, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D553F, GAME_10US_COMPACT, H_CALL, 0x5D5530, 1>; + using def_t = void(CGangWarsSaveStructure *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangWarsSaveStructure::Extract) + static int address; + static int global_address; + static const int id = 0x5D2740; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D2740, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D3ED2, GAME_10US_COMPACT, H_CALL, 0x5D3EB0, 1>; + using def_t = void(CGangWarsSaveStructure *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGangs.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGangs.h new file mode 100644 index 00000000..01fe30c7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGangs.h @@ -0,0 +1,139 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CGangs::Save) + static int address; + static int global_address; + static const int id = 0x5D3A60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D3A60, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D1531, GAME_10US_COMPACT, H_CALL, 0x5D13E0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangs::Load) + static int address; + static int global_address; + static const int id = 0x5D3A90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D3A90, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D1959, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGangs::SetWillAttackPlayerWithCops) + static int address; + static int global_address; + static const int id = 0x5DE4E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5DE4E0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(ePedType, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGangs::GetWillAttackPlayerWithCops) + static int address; + static int global_address; + static const int id = 0x5DE500; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5DE500, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = bool(ePedType); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangs::SetGangWeapons) + static int address; + static int global_address; + static const int id = 0x5DE550; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5DE550, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x47ED26, GAME_10US_COMPACT, H_CALL, 0x47E090, 1>; + using def_t = void(short, int, int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CGangs::SetGangPedModelOverride) + static int address; + static int global_address; + static const int id = 0x5DE580; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5DE580, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(short, signed char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGangs::ChooseGangPedModel) + static int address; + static int global_address; + static const int id = 0x5DE5A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5DE5A0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4613AC, GAME_10US_COMPACT, H_CALL, 0x461170, 1, + 0x611550, GAME_10US_COMPACT, H_JUMP, 0x611550, 1, + 0x613B22, GAME_10US_COMPACT, H_CALL, 0x613A00, 1>; + using def_t = signed int(short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGangs::Initialise) + static int address; + static int global_address; + static const int id = 0x5DE680; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5DE680, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53BDE1, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1, + 0x5BA345, GAME_10US_COMPACT, H_CALL, 0x5BA1A0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGenericGameStorage.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGenericGameStorage.h new file mode 100644 index 00000000..d602ad80 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGenericGameStorage.h @@ -0,0 +1,703 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CGenericGameStorage::ReportError) + static int address; + static int global_address; + static const int id = 0x5D08C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D08C0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D1A71, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1, + 0x5D1AD1, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 2>; + using def_t = void(eSaveLoadBlocks, eSaveLoadError); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGenericGameStorage::OpenFileForReading) + static int address; + static int global_address; + static const int id = 0x5D0D20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D0D20, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D118B, GAME_10US_COMPACT, H_CALL, 0x5D1170, 1, + 0x5D17D4, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1>; + using def_t = bool(char *, unsigned int *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGenericGameStorage::OpenFileForWriting) + static int address; + static int global_address; + static const int id = 0x5D0DD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D0DD0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D13ED, GAME_10US_COMPACT, H_CALL, 0x5D13E0, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGenericGameStorage::MakeValidSaveName) + static int address; + static int global_address; + static const int id = 0x5D0E90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D0E90, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x619066, GAME_10US_COMPACT, H_CALL, 0x619060, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGenericGameStorage::GetNameOfSavedGame) + static int address; + static int global_address; + static const int id = 0x5D0F40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D0F40, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x579BE4, GAME_10US_COMPACT, H_CALL, 0x5794A0, 1>; + using def_t = char *(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGenericGameStorage::GetCurrentVersionNumber) + static int address; + static int global_address; + static const int id = 0x5D0F50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D0F50, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D18E6, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1, + 0x5D1C12, GAME_10US_COMPACT, H_CALL, 0x5D1B80, 1>; + using def_t = int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGenericGameStorage::SaveWorkBuffer) + static int address; + static int global_address; + static const int id = 0x5D0F80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D0F80, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D0FDA, GAME_10US_COMPACT, H_CALL, 0x5D0F80, 1, + 0x5D12BC, GAME_10US_COMPACT, H_CALL, 0x5D1270, 1, + 0x5D145E, GAME_10US_COMPACT, H_CALL, 0x5D13E0, 1, + 0x5D1604, GAME_10US_COMPACT, H_CALL, 0x5D13E0, 2, + 0x5D16A2, GAME_10US_COMPACT, H_CALL, 0x5D13E0, 3>; + using def_t = bool(bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGenericGameStorage::LoadWorkBuffer) + static int address; + static int global_address; + static const int id = 0x5D10B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D10B0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D119C, GAME_10US_COMPACT, H_CALL, 0x5D1170, 1, + 0x5D11C2, GAME_10US_COMPACT, H_CALL, 0x5D1170, 2, + 0x5D134C, GAME_10US_COMPACT, H_CALL, 0x5D1300, 1, + 0x5D1846, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGenericGameStorage::CheckDataNotCorrupt) + static int address; + static int global_address; + static const int id = 0x5D1170; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D1170, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D13A4, GAME_10US_COMPACT, H_CALL, 0x5D1380, 1, + 0x61925C, GAME_10US_COMPACT, H_CALL, 0x619140, 1>; + using def_t = bool(int, char *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGenericGameStorage::_SaveDataToWorkBuffer) + static int address; + static int global_address; + static const int id = 0x5D1270; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D1270, 0, 0, 0, 0, 0>; + // total references count: 10us (176), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D12A4, GAME_10US_COMPACT, H_CALL, 0x5D1270, 1, + 0x5D1444, GAME_10US_COMPACT, H_CALL, 0x5D13E0, 1, + 0x5D14BD, GAME_10US_COMPACT, H_CALL, 0x5D13E0, 2, + 0x5D284C, GAME_10US_COMPACT, H_CALL, 0x5D2830, 1, + 0x5D2858, GAME_10US_COMPACT, H_CALL, 0x5D2830, 2, + 0x5D29C8, GAME_10US_COMPACT, H_CALL, 0x5D29A0, 1, + 0x5D2E68, GAME_10US_COMPACT, H_CALL, 0x5D2E60, 1, + 0x5D2E74, GAME_10US_COMPACT, H_CALL, 0x5D2E60, 2, + 0x5D2E80, GAME_10US_COMPACT, H_CALL, 0x5D2E60, 3, + 0x5D2E8C, GAME_10US_COMPACT, H_CALL, 0x5D2E60, 4, + 0x5D2EAE, GAME_10US_COMPACT, H_CALL, 0x5D2E60, 5, + 0x5D2EDF, GAME_10US_COMPACT, H_CALL, 0x5D2E60, 6, + 0x5D2F0F, GAME_10US_COMPACT, H_CALL, 0x5D2E60, 7, + 0x5D2F28, GAME_10US_COMPACT, H_CALL, 0x5D2E60, 8, + 0x5D2F34, GAME_10US_COMPACT, H_CALL, 0x5D2E60, 9, + 0x5D3171, GAME_10US_COMPACT, H_CALL, 0x5D3160, 1, + 0x5D317D, GAME_10US_COMPACT, H_CALL, 0x5D3160, 2, + 0x5D3189, GAME_10US_COMPACT, H_CALL, 0x5D3160, 3, + 0x5D3195, GAME_10US_COMPACT, H_CALL, 0x5D3160, 4, + 0x5D31A1, GAME_10US_COMPACT, H_CALL, 0x5D3160, 5, + 0x5D31AD, GAME_10US_COMPACT, H_CALL, 0x5D3160, 6, + 0x5D31B9, GAME_10US_COMPACT, H_CALL, 0x5D3160, 7, + 0x5D31C9, GAME_10US_COMPACT, H_CALL, 0x5D3160, 8, + 0x5D31E4, GAME_10US_COMPACT, H_CALL, 0x5D3160, 9, + 0x5D31FB, GAME_10US_COMPACT, H_CALL, 0x5D3160, 10, + 0x5D3241, GAME_10US_COMPACT, H_CALL, 0x5D3160, 11, + 0x5D33C8, GAME_10US_COMPACT, H_CALL, 0x5D33C0, 1, + 0x5D33D4, GAME_10US_COMPACT, H_CALL, 0x5D33C0, 2, + 0x5D33E0, GAME_10US_COMPACT, H_CALL, 0x5D33C0, 3, + 0x5D33EC, GAME_10US_COMPACT, H_CALL, 0x5D33C0, 4, + 0x5D33F8, GAME_10US_COMPACT, H_CALL, 0x5D33C0, 5, + 0x5D341A, GAME_10US_COMPACT, H_CALL, 0x5D33C0, 6, + 0x5D3422, GAME_10US_COMPACT, H_CALL, 0x5D33C0, 7, + 0x5D34CE, GAME_10US_COMPACT, H_CALL, 0x5D34C0, 1, + 0x5D34E7, GAME_10US_COMPACT, H_CALL, 0x5D34C0, 2, + 0x5D354A, GAME_10US_COMPACT, H_CALL, 0x5D3540, 1, + 0x5D3564, GAME_10US_COMPACT, H_CALL, 0x5D3540, 2, + 0x5D3570, GAME_10US_COMPACT, H_CALL, 0x5D3540, 3, + 0x5D3585, GAME_10US_COMPACT, H_CALL, 0x5D3540, 4, + 0x5D3629, GAME_10US_COMPACT, H_CALL, 0x5D3620, 1, + 0x5D3650, GAME_10US_COMPACT, H_CALL, 0x5D3620, 2, + 0x5D365F, GAME_10US_COMPACT, H_CALL, 0x5D3620, 3, + 0x5D366E, GAME_10US_COMPACT, H_CALL, 0x5D3620, 4, + 0x5D3687, GAME_10US_COMPACT, H_CALL, 0x5D3620, 5, + 0x5D36B0, GAME_10US_COMPACT, H_CALL, 0x5D3620, 6, + 0x5D36BF, GAME_10US_COMPACT, H_CALL, 0x5D3620, 7, + 0x5D36CE, GAME_10US_COMPACT, H_CALL, 0x5D3620, 8, + 0x5D36E7, GAME_10US_COMPACT, H_CALL, 0x5D3620, 9, + 0x5D36F3, GAME_10US_COMPACT, H_CALL, 0x5D3620, 10, + 0x5D36FF, GAME_10US_COMPACT, H_CALL, 0x5D3620, 11, + 0x5D370B, GAME_10US_COMPACT, H_CALL, 0x5D3620, 12, + 0x5D3717, GAME_10US_COMPACT, H_CALL, 0x5D3620, 13, + 0x5D3723, GAME_10US_COMPACT, H_CALL, 0x5D3620, 14, + 0x5D372F, GAME_10US_COMPACT, H_CALL, 0x5D3620, 15, + 0x5D373B, GAME_10US_COMPACT, H_CALL, 0x5D3620, 16, + 0x5D374A, GAME_10US_COMPACT, H_CALL, 0x5D3620, 17, + 0x5D3756, GAME_10US_COMPACT, H_CALL, 0x5D3620, 18, + 0x5D38F6, GAME_10US_COMPACT, H_CALL, 0x5D38C0, 1, + 0x5D3902, GAME_10US_COMPACT, H_CALL, 0x5D38C0, 2, + 0x5D390E, GAME_10US_COMPACT, H_CALL, 0x5D38C0, 3, + 0x5D3941, GAME_10US_COMPACT, H_CALL, 0x5D38C0, 4, + 0x5D3957, GAME_10US_COMPACT, H_CALL, 0x5D38C0, 5, + 0x5D3976, GAME_10US_COMPACT, H_CALL, 0x5D38C0, 6, + 0x5D3992, GAME_10US_COMPACT, H_CALL, 0x5D38C0, 7, + 0x5D3A73, GAME_10US_COMPACT, H_CALL, 0x5D3A60, 1, + 0x5D3ADC, GAME_10US_COMPACT, H_CALL, 0x5D3AC0, 1, + 0x5D3AE8, GAME_10US_COMPACT, H_CALL, 0x5D3AC0, 2, + 0x5D3B6F, GAME_10US_COMPACT, H_CALL, 0x5D3B40, 1, + 0x5D3B7E, GAME_10US_COMPACT, H_CALL, 0x5D3B40, 2, + 0x5D3B8D, GAME_10US_COMPACT, H_CALL, 0x5D3B40, 3, + 0x5D3B99, GAME_10US_COMPACT, H_CALL, 0x5D3B40, 4, + 0x5D3BAA, GAME_10US_COMPACT, H_CALL, 0x5D3B40, 5, + 0x5D3BB9, GAME_10US_COMPACT, H_CALL, 0x5D3B40, 6, + 0x5D3BD3, GAME_10US_COMPACT, H_CALL, 0x5D3B40, 7, + 0x5D3C77, GAME_10US_COMPACT, H_CALL, 0x5D3C70, 1, + 0x5D3C86, GAME_10US_COMPACT, H_CALL, 0x5D3C70, 2, + 0x5D3CF0, GAME_10US_COMPACT, H_CALL, 0x5D3CD0, 1, + 0x5D3D68, GAME_10US_COMPACT, H_CALL, 0x5D3D60, 1, + 0x5D3D84, GAME_10US_COMPACT, H_CALL, 0x5D3D60, 2, + 0x5D3DA8, GAME_10US_COMPACT, H_CALL, 0x5D3DA0, 1, + 0x5D3DE8, GAME_10US_COMPACT, H_CALL, 0x5D3DE0, 1, + 0x5D3E04, GAME_10US_COMPACT, H_CALL, 0x5D3DE0, 2, + 0x5D3E21, GAME_10US_COMPACT, H_CALL, 0x5D3DE0, 3, + 0x5D3E31, GAME_10US_COMPACT, H_CALL, 0x5D3DE0, 4, + 0x5D3F08, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 1, + 0x5D3F23, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 2, + 0x5D3F39, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 3, + 0x5D3F56, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 4, + 0x5D3F82, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 5, + 0x5D3F8E, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 6, + 0x5D3F9A, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 7, + 0x5D3FA6, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 8, + 0x5D3FB2, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 9, + 0x5D3FBE, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 10, + 0x5D3FCA, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 11, + 0x5D3FD6, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 12, + 0x5D3FE5, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 13, + 0x5D3FF1, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 14, + 0x5D3FFD, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 15, + 0x5D4009, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 16, + 0x5D4015, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 17, + 0x5D4021, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 18, + 0x5D402D, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 19, + 0x5D4039, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 20, + 0x5D4048, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 21, + 0x5D4054, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 22, + 0x5D4060, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 23, + 0x5D406C, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 24, + 0x5D4078, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 25, + 0x5D4084, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 26, + 0x5D4090, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 27, + 0x5D409C, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 28, + 0x5D40AB, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 29, + 0x5D40B7, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 30, + 0x5D40C3, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 31, + 0x5D40CF, GAME_10US_COMPACT, H_CALL, 0x5D3EE0, 32, + 0x5D4309, GAME_10US_COMPACT, H_CALL, 0x5D4300, 1, + 0x5D479F, GAME_10US_COMPACT, H_CALL, 0x5D4760, 1, + 0x5D47AB, GAME_10US_COMPACT, H_CALL, 0x5D4760, 2, + 0x5D47F1, GAME_10US_COMPACT, H_CALL, 0x5D47E0, 1, + 0x5D487F, GAME_10US_COMPACT, H_CALL, 0x5D4800, 1, + 0x5D48FE, GAME_10US_COMPACT, H_CALL, 0x5D4800, 2, + 0x5D490A, GAME_10US_COMPACT, H_CALL, 0x5D4800, 3, + 0x5D498E, GAME_10US_COMPACT, H_CALL, 0x5D4940, 1, + 0x5D49D6, GAME_10US_COMPACT, H_CALL, 0x5D4940, 2, + 0x5D49E2, GAME_10US_COMPACT, H_CALL, 0x5D4940, 3, + 0x5D4A03, GAME_10US_COMPACT, H_CALL, 0x5D4940, 4, + 0x5D4A0F, GAME_10US_COMPACT, H_CALL, 0x5D4940, 5, + 0x5D4B99, GAME_10US_COMPACT, H_CALL, 0x5D4B40, 1, + 0x5D4BF7, GAME_10US_COMPACT, H_CALL, 0x5D4B40, 2, + 0x5D4C03, GAME_10US_COMPACT, H_CALL, 0x5D4B40, 3, + 0x5D4C0F, GAME_10US_COMPACT, H_CALL, 0x5D4B40, 4, + 0x5D4C5B, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 1, + 0x5D4C9E, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 2, + 0x5D4CB7, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 3, + 0x5D4CD3, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 4, + 0x5D4CE7, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 5, + 0x5D4CF2, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 6, + 0x5D4D45, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 7, + 0x5D4D50, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 8, + 0x5D4D5D, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 9, + 0x5D4D6A, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 10, + 0x5D4E0E, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 11, + 0x5D4E19, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 12, + 0x5D4E38, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 13, + 0x5D4E53, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 14, + 0x5D4E73, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 15, + 0x5D4E88, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 16, + 0x5D4E94, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 17, + 0x5D4E9F, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 18, + 0x5D4EAA, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 19, + 0x5D4EB6, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 20, + 0x5D4EC2, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 21, + 0x5D4ECD, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 22, + 0x5D4F08, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 23, + 0x5D4F53, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 24, + 0x5D4F5E, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 25, + 0x5D4F76, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 26, + 0x5D4FA2, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 27, + 0x5D5434, GAME_10US_COMPACT, H_CALL, 0x5D5420, 1, + 0x5D5483, GAME_10US_COMPACT, H_CALL, 0x5D5420, 2, + 0x5D554B, GAME_10US_COMPACT, H_CALL, 0x5D5530, 1, + 0x5D5557, GAME_10US_COMPACT, H_CALL, 0x5D5530, 2, + 0x5D5579, GAME_10US_COMPACT, H_CALL, 0x5D5570, 1, + 0x5D55A1, GAME_10US_COMPACT, H_CALL, 0x5D5570, 2, + 0x5D578A, GAME_10US_COMPACT, H_CALL, 0x5D5730, 1, + 0x5D5799, GAME_10US_COMPACT, H_CALL, 0x5D5730, 2, + 0x5D583F, GAME_10US_COMPACT, H_CALL, 0x5D57E0, 1, + 0x5D584E, GAME_10US_COMPACT, H_CALL, 0x5D57E0, 2, + 0x5D58E1, GAME_10US_COMPACT, H_CALL, 0x5D5860, 1, + 0x5D597E, GAME_10US_COMPACT, H_CALL, 0x5D5970, 1, + 0x5D59BF, GAME_10US_COMPACT, H_CALL, 0x5D5970, 2, + 0x5D5A36, GAME_10US_COMPACT, H_CALL, 0x5D5970, 3, + 0x5D5A41, GAME_10US_COMPACT, H_CALL, 0x5D5970, 4, + 0x5D5A4D, GAME_10US_COMPACT, H_CALL, 0x5D5970, 5, + 0x5D5A7A, GAME_10US_COMPACT, H_CALL, 0x5D5970, 6>; + using def_t = bool(void *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGenericGameStorage::_LoadDataFromWorkBuffer) + static int address; + static int global_address; + static const int id = 0x5D1300; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D1300, 0, 0, 0, 0, 0>; + // total references count: 10us (174), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D1336, GAME_10US_COMPACT, H_CALL, 0x5D1300, 1, + 0x5D1830, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1, + 0x5D18BF, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 2, + 0x5D287D, GAME_10US_COMPACT, H_CALL, 0x5D2870, 1, + 0x5D2889, GAME_10US_COMPACT, H_CALL, 0x5D2870, 2, + 0x5D2930, GAME_10US_COMPACT, H_CALL, 0x5D2900, 1, + 0x5D293C, GAME_10US_COMPACT, H_CALL, 0x5D2900, 2, + 0x5D2991, GAME_10US_COMPACT, H_CALL, 0x5D2980, 1, + 0x5D29EE, GAME_10US_COMPACT, H_CALL, 0x5D29E0, 1, + 0x5D2A47, GAME_10US_COMPACT, H_CALL, 0x5D2A20, 1, + 0x5D2A67, GAME_10US_COMPACT, H_CALL, 0x5D2A20, 2, + 0x5D2A73, GAME_10US_COMPACT, H_CALL, 0x5D2A20, 3, + 0x5D2D95, GAME_10US_COMPACT, H_CALL, 0x5D2D70, 1, + 0x5D2DB7, GAME_10US_COMPACT, H_CALL, 0x5D2D70, 2, + 0x5D2DC3, GAME_10US_COMPACT, H_CALL, 0x5D2D70, 3, + 0x5D2DCF, GAME_10US_COMPACT, H_CALL, 0x5D2D70, 4, + 0x5D2F4D, GAME_10US_COMPACT, H_CALL, 0x5D2F40, 1, + 0x5D2F59, GAME_10US_COMPACT, H_CALL, 0x5D2F40, 2, + 0x5D2F65, GAME_10US_COMPACT, H_CALL, 0x5D2F40, 3, + 0x5D2F71, GAME_10US_COMPACT, H_CALL, 0x5D2F40, 4, + 0x5D2F92, GAME_10US_COMPACT, H_CALL, 0x5D2F40, 5, + 0x5D2FBF, GAME_10US_COMPACT, H_CALL, 0x5D2F40, 6, + 0x5D2FEF, GAME_10US_COMPACT, H_CALL, 0x5D2F40, 7, + 0x5D3008, GAME_10US_COMPACT, H_CALL, 0x5D2F40, 8, + 0x5D3014, GAME_10US_COMPACT, H_CALL, 0x5D2F40, 9, + 0x5D3282, GAME_10US_COMPACT, H_CALL, 0x5D3270, 1, + 0x5D328E, GAME_10US_COMPACT, H_CALL, 0x5D3270, 2, + 0x5D329A, GAME_10US_COMPACT, H_CALL, 0x5D3270, 3, + 0x5D32A6, GAME_10US_COMPACT, H_CALL, 0x5D3270, 4, + 0x5D32B2, GAME_10US_COMPACT, H_CALL, 0x5D3270, 5, + 0x5D32BE, GAME_10US_COMPACT, H_CALL, 0x5D3270, 6, + 0x5D32CA, GAME_10US_COMPACT, H_CALL, 0x5D3270, 7, + 0x5D32DA, GAME_10US_COMPACT, H_CALL, 0x5D3270, 8, + 0x5D32F4, GAME_10US_COMPACT, H_CALL, 0x5D3270, 9, + 0x5D330B, GAME_10US_COMPACT, H_CALL, 0x5D3270, 10, + 0x5D3347, GAME_10US_COMPACT, H_CALL, 0x5D3270, 11, + 0x5D3448, GAME_10US_COMPACT, H_CALL, 0x5D3440, 1, + 0x5D3454, GAME_10US_COMPACT, H_CALL, 0x5D3440, 2, + 0x5D3460, GAME_10US_COMPACT, H_CALL, 0x5D3440, 3, + 0x5D346C, GAME_10US_COMPACT, H_CALL, 0x5D3440, 4, + 0x5D3478, GAME_10US_COMPACT, H_CALL, 0x5D3440, 5, + 0x5D349A, GAME_10US_COMPACT, H_CALL, 0x5D3440, 6, + 0x5D34A2, GAME_10US_COMPACT, H_CALL, 0x5D3440, 7, + 0x5D350E, GAME_10US_COMPACT, H_CALL, 0x5D3500, 1, + 0x5D3527, GAME_10US_COMPACT, H_CALL, 0x5D3500, 2, + 0x5D35AD, GAME_10US_COMPACT, H_CALL, 0x5D35A0, 1, + 0x5D35EA, GAME_10US_COMPACT, H_CALL, 0x5D35A0, 2, + 0x5D35F6, GAME_10US_COMPACT, H_CALL, 0x5D35A0, 3, + 0x5D360B, GAME_10US_COMPACT, H_CALL, 0x5D35A0, 4, + 0x5D377E, GAME_10US_COMPACT, H_CALL, 0x5D3770, 1, + 0x5D37A1, GAME_10US_COMPACT, H_CALL, 0x5D3770, 2, + 0x5D37B0, GAME_10US_COMPACT, H_CALL, 0x5D3770, 3, + 0x5D37BF, GAME_10US_COMPACT, H_CALL, 0x5D3770, 4, + 0x5D37D8, GAME_10US_COMPACT, H_CALL, 0x5D3770, 5, + 0x5D3800, GAME_10US_COMPACT, H_CALL, 0x5D3770, 6, + 0x5D380F, GAME_10US_COMPACT, H_CALL, 0x5D3770, 7, + 0x5D381E, GAME_10US_COMPACT, H_CALL, 0x5D3770, 8, + 0x5D3837, GAME_10US_COMPACT, H_CALL, 0x5D3770, 9, + 0x5D3843, GAME_10US_COMPACT, H_CALL, 0x5D3770, 10, + 0x5D384F, GAME_10US_COMPACT, H_CALL, 0x5D3770, 11, + 0x5D385B, GAME_10US_COMPACT, H_CALL, 0x5D3770, 12, + 0x5D3867, GAME_10US_COMPACT, H_CALL, 0x5D3770, 13, + 0x5D3873, GAME_10US_COMPACT, H_CALL, 0x5D3770, 14, + 0x5D387F, GAME_10US_COMPACT, H_CALL, 0x5D3770, 15, + 0x5D388B, GAME_10US_COMPACT, H_CALL, 0x5D3770, 16, + 0x5D389A, GAME_10US_COMPACT, H_CALL, 0x5D3770, 17, + 0x5D38A6, GAME_10US_COMPACT, H_CALL, 0x5D3770, 18, + 0x5D39BF, GAME_10US_COMPACT, H_CALL, 0x5D39B0, 1, + 0x5D39CB, GAME_10US_COMPACT, H_CALL, 0x5D39B0, 2, + 0x5D39D7, GAME_10US_COMPACT, H_CALL, 0x5D39B0, 3, + 0x5D39F7, GAME_10US_COMPACT, H_CALL, 0x5D39B0, 4, + 0x5D3A19, GAME_10US_COMPACT, H_CALL, 0x5D39B0, 5, + 0x5D3A35, GAME_10US_COMPACT, H_CALL, 0x5D39B0, 6, + 0x5D3A4A, GAME_10US_COMPACT, H_CALL, 0x5D39B0, 7, + 0x5D3AA3, GAME_10US_COMPACT, H_CALL, 0x5D3A90, 1, + 0x5D3B0D, GAME_10US_COMPACT, H_CALL, 0x5D3B00, 1, + 0x5D3B19, GAME_10US_COMPACT, H_CALL, 0x5D3B00, 2, + 0x5D3BFC, GAME_10US_COMPACT, H_CALL, 0x5D3BF0, 1, + 0x5D3C0B, GAME_10US_COMPACT, H_CALL, 0x5D3BF0, 2, + 0x5D3C1A, GAME_10US_COMPACT, H_CALL, 0x5D3BF0, 3, + 0x5D3C26, GAME_10US_COMPACT, H_CALL, 0x5D3BF0, 4, + 0x5D3C32, GAME_10US_COMPACT, H_CALL, 0x5D3BF0, 5, + 0x5D3C41, GAME_10US_COMPACT, H_CALL, 0x5D3BF0, 6, + 0x5D3C56, GAME_10US_COMPACT, H_CALL, 0x5D3BF0, 7, + 0x5D3CA7, GAME_10US_COMPACT, H_CALL, 0x5D3CA0, 1, + 0x5D3CB6, GAME_10US_COMPACT, H_CALL, 0x5D3CA0, 2, + 0x5D3D1E, GAME_10US_COMPACT, H_CALL, 0x5D3D10, 1, + 0x5D3DC4, GAME_10US_COMPACT, H_CALL, 0x5D3DA0, 1, + 0x5D3E48, GAME_10US_COMPACT, H_CALL, 0x5D3E40, 1, + 0x5D3E64, GAME_10US_COMPACT, H_CALL, 0x5D3E40, 2, + 0x5D3E81, GAME_10US_COMPACT, H_CALL, 0x5D3E40, 3, + 0x5D3E91, GAME_10US_COMPACT, H_CALL, 0x5D3E40, 4, + 0x5D3EBA, GAME_10US_COMPACT, H_CALL, 0x5D3EB0, 1, + 0x5D3EC6, GAME_10US_COMPACT, H_CALL, 0x5D3EB0, 2, + 0x5D4108, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 1, + 0x5D4123, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 2, + 0x5D4139, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 3, + 0x5D4156, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 4, + 0x5D4182, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 5, + 0x5D418E, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 6, + 0x5D419A, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 7, + 0x5D41A6, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 8, + 0x5D41B2, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 9, + 0x5D41BE, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 10, + 0x5D41CA, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 11, + 0x5D41D6, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 12, + 0x5D41E5, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 13, + 0x5D41F1, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 14, + 0x5D41FD, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 15, + 0x5D4209, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 16, + 0x5D4215, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 17, + 0x5D4221, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 18, + 0x5D422D, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 19, + 0x5D4239, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 20, + 0x5D4248, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 21, + 0x5D4254, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 22, + 0x5D4260, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 23, + 0x5D426C, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 24, + 0x5D4278, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 25, + 0x5D4284, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 26, + 0x5D4290, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 27, + 0x5D429C, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 28, + 0x5D42AB, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 29, + 0x5D42B7, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 30, + 0x5D42C3, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 31, + 0x5D42CF, GAME_10US_COMPACT, H_CALL, 0x5D40E0, 32, + 0x5D42E9, GAME_10US_COMPACT, H_CALL, 0x5D42E0, 1, + 0x5D4688, GAME_10US_COMPACT, H_CALL, 0x5D4640, 1, + 0x5D4697, GAME_10US_COMPACT, H_CALL, 0x5D4640, 2, + 0x5D4701, GAME_10US_COMPACT, H_CALL, 0x5D46E0, 1, + 0x5D4710, GAME_10US_COMPACT, H_CALL, 0x5D46E0, 2, + 0x5D4A55, GAME_10US_COMPACT, H_CALL, 0x5D4A40, 1, + 0x5D4A77, GAME_10US_COMPACT, H_CALL, 0x5D4A40, 2, + 0x5D4A83, GAME_10US_COMPACT, H_CALL, 0x5D4A40, 3, + 0x5D4AFE, GAME_10US_COMPACT, H_CALL, 0x5D4A40, 4, + 0x5D4B0A, GAME_10US_COMPACT, H_CALL, 0x5D4A40, 5, + 0x5D4FE3, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 1, + 0x5D502C, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 2, + 0x5D5045, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 3, + 0x5D505A, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 4, + 0x5D506F, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 5, + 0x5D507B, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 6, + 0x5D508C, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 7, + 0x5D5098, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 8, + 0x5D50A6, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 9, + 0x5D50B4, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 10, + 0x5D514F, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 11, + 0x5D515B, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 12, + 0x5D5217, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 13, + 0x5D5233, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 14, + 0x5D5253, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 15, + 0x5D527C, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 16, + 0x5D5288, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 17, + 0x5D5294, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 18, + 0x5D52A0, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 19, + 0x5D52AC, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 20, + 0x5D52B8, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 21, + 0x5D52C4, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 22, + 0x5D52F6, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 23, + 0x5D5317, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 24, + 0x5D5335, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 25, + 0x5D5346, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 26, + 0x5D536A, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 27, + 0x5D53D8, GAME_10US_COMPACT, H_CALL, 0x5D53C0, 1, + 0x5D54AD, GAME_10US_COMPACT, H_CALL, 0x5D54A0, 1, + 0x5D54DD, GAME_10US_COMPACT, H_CALL, 0x5D54A0, 2, + 0x5D55CC, GAME_10US_COMPACT, H_CALL, 0x5D55C0, 1, + 0x5D55E7, GAME_10US_COMPACT, H_CALL, 0x5D55C0, 2, + 0x5D5627, GAME_10US_COMPACT, H_CALL, 0x5D55C0, 3, + 0x5D5666, GAME_10US_COMPACT, H_CALL, 0x5D55C0, 4, + 0x5D5672, GAME_10US_COMPACT, H_CALL, 0x5D55C0, 5, + 0x5D56C5, GAME_10US_COMPACT, H_CALL, 0x5D55C0, 6, + 0x5D5929, GAME_10US_COMPACT, H_CALL, 0x5D5920, 1, + 0x5D594E, GAME_10US_COMPACT, H_CALL, 0x5D5920, 2>; + using def_t = bool(void *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGenericGameStorage::CheckSlotDataValid) + static int address; + static int global_address; + static const int id = 0x5D1380; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D1380, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x578EF2, GAME_10US_COMPACT, H_CALL, 0x578D60, 1>; + using def_t = bool(int, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGenericGameStorage::GenericSave) + static int address; + static int global_address; + static const int id = 0x5D13E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D13E0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x619081, GAME_10US_COMPACT, H_CALL, 0x619060, 1>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGenericGameStorage::GenericLoad) + static int address; + static int global_address; + static const int id = 0x5D17B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D17B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C70B, GAME_10US_COMPACT, H_CALL, 0x53C680, 1>; + using def_t = bool(bool *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CGenericGameStorage::InitRadioStationPositionList) + static int address; + static int global_address; + static const int id = 0x618E70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x618E70, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C701, GAME_10US_COMPACT, H_CALL, 0x53C680, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGenericGameStorage::GetSavedRadioStationPosition) + static int address; + static int global_address; + static const int id = 0x618E80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x618E80, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGenericGameStorage::DoGameSpecificStuffAfterSucessLoad) + static int address; + static int global_address; + static const int id = 0x618E90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x618E90, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D1A1D, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGenericGameStorage::DoGameSpecificStuffBeforeSave) + static int address; + static int global_address; + static const int id = 0x618F50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x618F50, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x61907A, GAME_10US_COMPACT, H_CALL, 0x619060, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGenericGameStorage::InitNewSettingsAfterLoad) + static int address; + static int global_address; + static const int id = 0x618FF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x618FF0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGenericGameStorage::RestoreForStartLoad) + static int address; + static int global_address; + static const int id = 0x619000; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x619000, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C6D1, GAME_10US_COMPACT, H_CALL, 0x53C680, 1>; + using def_t = char(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CGenericGameStorage::GetNameOfSavedGame_Alt) + static int address; + static int global_address; + static const int id = 0x619030; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x619030, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = char *(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGridRef.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGridRef.h new file mode 100644 index 00000000..0ce62887 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CGridRef.h @@ -0,0 +1,87 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CGridRef::Init) + static int address; + static int global_address; + static const int id = 0x71D4E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x71D4E0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5BA392, GAME_10US_COMPACT, H_CALL, 0x5BA1A0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN_OVERLOADED(CGridRef::GetGridRefPositions, void (*)(CVector, unsigned char *, unsigned char *)) + static int address; + static int global_address; + static const int id = 0x71D5A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x71D5A0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CVector, unsigned char *, unsigned char *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN_OVERLOADED(CGridRef::GetGridRefPositions, void (*)(unsigned char *, unsigned char *)) + static int address; + static int global_address; + static const int id = 0x71D5E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x71D5E0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(unsigned char *, unsigned char *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGridRef::GetAreaName) + static int address; + static int global_address; + static const int id = 0x71D650; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x71D650, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = char *(unsigned char, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CGridRef::GetArtistBugstarID) + static int address; + static int global_address; + static const int id = 0x71D670; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x71D670, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = unsigned int(unsigned char, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CMatrixLink.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CMatrixLink.h new file mode 100644 index 00000000..ad5ae8da --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CMatrixLink.h @@ -0,0 +1,124 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +DTOR_META_BEGIN(CMatrixLink) + static int address; + static int global_address; + static const int id = 0x54E8E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x54E8E0, 0, 0, 0, 0, 0>; + // total references count: 10us (10), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x54E96A, GAME_10US_COMPACT, H_CALL, 0x54E930, 1, + 0x83CAC3, GAME_10US_COMPACT, H_JUMP, 0x54EB70, 1, + 0x83CACE, GAME_10US_COMPACT, H_JUMP, 0x54EB70, 2, + 0x83CADC, GAME_10US_COMPACT, H_JUMP, 0x54EB70, 3, + 0x83CAEA, GAME_10US_COMPACT, H_JUMP, 0x54EB70, 4, + 0x83CAF8, GAME_10US_COMPACT, H_JUMP, 0x54EB70, 5, + 0x54E942, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x54E9A5, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x54EFE1, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x54F10F, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(CMatrix *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CMatrixLink::Insert) + static int address; + static int global_address; + static const int id = 0x54E8F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x54E8F0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CMatrixLink *, CMatrixLink *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CMatrixLink::Remove) + static int address; + static int global_address; + static const int id = 0x54E910; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x54E910, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CMatrixLink *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +CTOR_META_BEGIN(CMatrixLink) + static int address; + static int global_address; + static const int id = 0x54F0C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x54F0C0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x54F114, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = CMatrixLink *(CMatrixLink *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +template<> +struct stack_object : stack_object_no_default { + SUPPORTED_10US stack_object() { + plugin::CallMethodDynGlobal(ctor_gaddr(CMatrixLink), reinterpret_cast(objBuff)); + } + SUPPORTED_10US ~stack_object() { + plugin::CallMethodDynGlobal(dtor_gaddr(CMatrixLink), reinterpret_cast(objBuff)); + } +}; + +template <> +SUPPORTED_10US inline CMatrixLink *operator_new() { + void *objData = operator new(sizeof(CMatrixLink)); + CMatrixLink *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr(CMatrixLink), obj); + return obj; +} +template <> +SUPPORTED_10US inline CMatrixLink *operator_new_array(unsigned int objCount) { + void *objData = operator new(sizeof(CMatrixLink) * objCount + 4); + *reinterpret_cast(objData) = objCount; + CMatrixLink *objArray = reinterpret_cast(reinterpret_cast(objData) + 4); + for (unsigned int i = 0; i < objCount; i++) + plugin::CallMethodDynGlobal(ctor_gaddr(CMatrixLink), &objArray[i]); + return objArray; +} +template <> +SUPPORTED_10US inline void operator_delete(CMatrixLink *obj) { + if (obj == nullptr) return; + plugin::CallMethodDynGlobal(dtor_gaddr(CMatrixLink), obj); + operator delete(obj); +} +template <> +SUPPORTED_10US inline void operator_delete_array(CMatrixLink *objArray) { + if (objArray == nullptr) return; + void *objData = reinterpret_cast(reinterpret_cast(objArray) - 4); + unsigned int arraySize = *reinterpret_cast(objData); + for (unsigned int i = 0; i < arraySize; i++) + plugin::CallMethodDynGlobal(dtor_gaddr(CMatrixLink), &objArray[i]); + operator delete(objData); +} + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.COnscreenCounterEntry.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.COnscreenCounterEntry.h new file mode 100644 index 00000000..5e25919a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.COnscreenCounterEntry.h @@ -0,0 +1,39 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(COnscreenCounterEntry::ProcessForDisplayCounter) + static int address; + static int global_address; + static const int id = 0x44CA90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CA90, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(COnscreenCounterEntry *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(COnscreenCounterEntry::SetColourID) + static int address; + static int global_address; + static const int id = 0x44CB00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CB00, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(COnscreenCounterEntry *, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.COnscreenTimer.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.COnscreenTimer.h new file mode 100644 index 00000000..1998e2d0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.COnscreenTimer.h @@ -0,0 +1,178 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(COnscreenTimer::Init) + static int address; + static int global_address; + static const int id = 0x44CBC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CBC0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x571EF8, GAME_10US_COMPACT, H_CALL, 0x571EE0, 1>; + using def_t = void(COnscreenTimer *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(COnscreenTimer::ProcessForDisplay) + static int address; + static int global_address; + static const int id = 0x44CC20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CC20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53E50E, GAME_10US_COMPACT, H_CALL, 0x53E230, 1>; + using def_t = void(COnscreenTimer *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(COnscreenTimer::Process) + static int address; + static int global_address; + static const int id = 0x44CD30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CD30, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5720AF, GAME_10US_COMPACT, H_CALL, 0x5720A0, 1>; + using def_t = void(COnscreenTimer *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(COnscreenTimer::AddClock) + static int address; + static int global_address; + static const int id = 0x44CD50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CD50, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47C2AC, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x47C2C3, GAME_10US_COMPACT, H_CALL, 0x47C100, 2, + 0x484CA7, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1>; + using def_t = void(COnscreenTimer *, unsigned int, char *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(COnscreenTimer::AddCounter) + static int address; + static int global_address; + static const int id = 0x44CDA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CDA0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x484CFC, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1, + 0x48C57D, GAME_10US_COMPACT, H_CALL, 0x48B590, 1>; + using def_t = void(COnscreenTimer *, int, short, char *, unsigned short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(COnscreenTimer::AddCounterCounter) + static int address; + static int global_address; + static const int id = 0x44CE00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CE00, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(COnscreenTimer *, unsigned int, unsigned int, char *, unsigned short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(COnscreenTimer::ClearClock) + static int address; + static int global_address; + static const int id = 0x44CE60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CE60, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47C2E2, GAME_10US_COMPACT, H_CALL, 0x47C100, 1>; + using def_t = int(COnscreenTimer *, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(COnscreenTimer::ClearCounter) + static int address; + static int global_address; + static const int id = 0x44CE80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CE80, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47C301, GAME_10US_COMPACT, H_CALL, 0x47C100, 1>; + using def_t = void(COnscreenTimer *, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(COnscreenTimer::SetCounterFlashWhenFirstDisplayed) + static int address; + static int global_address; + static const int id = 0x44CEB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CEB0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x48EEB6, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 1, + 0x48EECD, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 2>; + using def_t = void(COnscreenTimer *, unsigned int, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(COnscreenTimer::SetClockBeepCountdownSecs) + static int address; + static int global_address; + static const int id = 0x44CEE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CEE0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4720AF, GAME_10US_COMPACT, H_CALL, 0x470A90, 1>; + using def_t = void(COnscreenTimer *, unsigned int, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(COnscreenTimer::SetCounterColourID) + static int address; + static int global_address; + static const int id = 0x44CF10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CF10, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(COnscreenTimer *, unsigned int, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.COnscreenTimerEntry.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.COnscreenTimerEntry.h new file mode 100644 index 00000000..ca59cde3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.COnscreenTimerEntry.h @@ -0,0 +1,40 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(COnscreenTimerEntry::ProcessForDisplayClock) + static int address; + static int global_address; + static const int id = 0x44CA40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CA40, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(COnscreenTimerEntry *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(COnscreenTimerEntry::Process) + static int address; + static int global_address; + static const int id = 0x44CB10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x44CB10, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x44CD43, GAME_10US_COMPACT, H_JUMP, 0x44CD30, 1>; + using def_t = void(COnscreenTimerEntry *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPathNode.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPathNode.h new file mode 100644 index 00000000..14bb8eff --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPathNode.h @@ -0,0 +1,26 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CPathNode::GetNodeCoors) +static int address; +static int global_address; +static const int id = 0x420A10; +static const bool is_virtual = false; +static const int vtable_index = -1; +using mv_addresses_t = MvAddresses<0x420A10, 0, 0, 0, 0, 0>; +// total references count: 10us (109), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) +using refs_t = RefList<0x42210E,1001,0,0x422090,1, 0x42212A,1001,0,0x422090,2, 0x422140,1001,0,0x422090,3, 0x422153,1001,0,0x422090,4, 0x422175,1001,0,0x422090,5, 0x422187,1001,0,0x422090,6, 0x42219D,1001,0,0x422090,7, 0x4221B0,1001,0,0x422090,8, 0x4223F3,1001,0,0x422370,1, 0x42241C,1001,0,0x422370,2, 0x422450,1001,0,0x422370,3, 0x42249F,1001,0,0x422370,4, 0x4248D3,1001,0,0x424210,1, 0x424902,1001,0,0x424210,2, 0x42C376,1001,0,0x42C2B0,1, 0x42DBB7,1001,0,0x42DAB0,1, 0x42DBD5,1001,0,0x42DAB0,2, 0x42DBE2,1001,0,0x42DAB0,3, 0x42DC7F,1001,0,0x42DAB0,4, 0x42DCE7,1001,0,0x42DAB0,5, 0x43097E,1001,0,0x430050,1, 0x4309A7,1001,0,0x430050,2, 0x4309BD,1001,0,0x430050,3, 0x4309CF,1001,0,0x430050,4, 0x4309E2,1001,0,0x430050,5, 0x4309F7,1001,0,0x430050,6, 0x430A08,1001,0,0x430050,7, 0x430A1F,1001,0,0x430050,8, 0x430B7C,1001,0,0x430050,9, 0x430B8C,1001,0,0x430050,10, 0x430CAB,1001,0,0x430050,11, 0x430D25,1001,0,0x430050,12, 0x430DAE,1001,0,0x430050,13, 0x430E1E,1001,0,0x430050,14, 0x430E96,1001,0,0x430050,15, 0x430EFA,1001,0,0x430050,16, 0x430F6F,1001,0,0x430050,17, 0x431601,1001,0,0x430050,18, 0x431611,1001,0,0x430050,19, 0x43169B,1001,0,0x430050,20, 0x4316BB,1001,0,0x430050,21, 0x433C31,1001,0,0x433BA0,1, 0x433C3F,1001,0,0x433BA0,2, 0x433C71,1001,0,0x433BA0,3, 0x433CAB,1001,0,0x433BA0,4, 0x433F39,1001,0,0x433EA0,1, 0x433F4C,1001,0,0x433EA0,2, 0x433F6E,1001,0,0x433EA0,3, 0x433F81,1001,0,0x433EA0,4, 0x434009,1001,0,0x433EA0,5, 0x434068,1001,0,0x433EA0,6, 0x4454B1,1001,0,0x4453D0,1, 0x44E56D,1001,0,0x44E4F0,1, 0x44E57B,1001,0,0x44E4F0,2, 0x44E589,1001,0,0x44E4F0,3, 0x44E5A0,1001,0,0x44E4F0,4, 0x44E992,1001,0,0x44E790,1, 0x44E9A5,1001,0,0x44E790,2, 0x44E9B8,1001,0,0x44E790,3, 0x44E9D5,1001,0,0x44E790,4, 0x44EA6D,1001,0,0x44E790,5, 0x44EAAA,1001,0,0x44E790,6, 0x450636,1001,0,0x4505E0,1, 0x450686,1001,0,0x4505E0,2, 0x450694,1001,0,0x4505E0,3, 0x4506A9,1001,0,0x4505E0,4, 0x4506B7,1001,0,0x4505E0,5, 0x450735,1001,0,0x4505E0,6, 0x4507F8,1001,0,0x450780,1, 0x450806,1001,0,0x450780,2, 0x45081C,1001,0,0x450780,3, 0x45082E,1001,0,0x450780,4, 0x45085A,1001,0,0x450780,5, 0x450871,1001,0,0x450780,6, 0x45087F,1001,0,0x450780,7, 0x450893,1001,0,0x450780,8, 0x4508A1,1001,0,0x450780,9, 0x450909,1001,0,0x450780,10, 0x4509D9,1001,0,0x4509A0,1, 0x451244,1001,0,0x450FB0,1, 0x451252,1001,0,0x450FB0,2, 0x4514DE,1001,0,0x4513F0,1, 0x45150C,1001,0,0x4513F0,2, 0x451BE2,1001,0,0x451B70,1, 0x4528F1,1001,0,0x452820,1, 0x45290F,1001,0,0x452820,2, 0x462C54,1001,0,0x4629E0,1, 0x462CA0,1001,0,0x4629E0,2, 0x462D08,1001,0,0x4629E0,3, 0x462D3E,1001,0,0x4629E0,4, 0x462F19,1001,0,0x4629E0,5, 0x462F2A,1001,0,0x4629E0,6, 0x462F60,1001,0,0x4629E0,7, 0x462F71,1001,0,0x4629E0,8, 0x463026,1001,0,0x4629E0,9, 0x46307A,1001,0,0x4629E0,10, 0x4630F1,1001,0,0x4629E0,11, 0x463101,1001,0,0x4629E0,12, 0x463167,1001,0,0x4629E0,13, 0x4631A1,1001,0,0x4629E0,14, 0x463236,1001,0,0x4629E0,15, 0x46326C,1001,0,0x4629E0,16, 0x47FB93,1001,0,0x47FA30,1, 0x5E1229,1001,0,0x5E0820,1, 0x5E1271,1001,0,0x5E0820,2, 0x5E12CD,1001,0,0x5E0820,3, 0x66A037,1001,0,0x669FF0,1, 0x66A0AC,1001,0,0x669FF0,2, 0x6767EB,1001,0,0x676640,1>; +using def_t = CVector *(CPathNode *, CVector *); +static const int cb_priority = PRIORITY_BEFORE; +using calling_convention_t = CallingConventions::Thiscall; +using args_t = ArgPick, 0,1>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroup.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroup.h new file mode 100644 index 00000000..b99a62a8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroup.h @@ -0,0 +1,254 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CPedGroup::Teleport) + static int address; + static int global_address; + static const int id = 0x5F7AD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7AD0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x464EFD, GAME_10US_COMPACT, H_CALL, 0x464DC0, 1>; + using def_t = void(CPedGroup *, CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroup::PlayerGaveCommand_Attack) + static int address; + static int global_address; + static const int id = 0x5F7CC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7CC0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x60CD10, GAME_10US_COMPACT, H_CALL, 0x60CC50, 1>; + using def_t = void(CPedGroup *, CPed *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CPedGroup::IsAnyoneUsingCar) + static int address; + static int global_address; + static const int id = 0x5F7DB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7DB0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x6511B0, GAME_10US_COMPACT, H_CALL, 0x6510D0, 1>; + using def_t = bool(CPedGroup *, CVehicle const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroup::PlayerGaveCommand_Gather) + static int address; + static int global_address; + static const int id = 0x5FAB60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FAB60, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CPedGroup *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroup::GetClosestGroupPed) + static int address; + static int global_address; + static const int id = 0x5FACD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FACD0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x65EA61, GAME_10US_COMPACT, H_CALL, 0x65EA50, 1>; + using def_t = CPed *(CPedGroup *, CPed *, float *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CPedGroup::FindDistanceToFurthestMember) + static int address; + static int global_address; + static const int id = 0x5FB010; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB010, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x60A396, GAME_10US_COMPACT, H_CALL, 0x60A1D0, 1>; + using def_t = float(CPedGroup *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroup::FindDistanceToNearestMember) + static int address; + static int global_address; + static const int id = 0x5FB0A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB0A0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x44406D, GAME_10US_COMPACT, H_CALL, 0x444040, 1, + 0x60F774, GAME_10US_COMPACT, H_CALL, 0x60EA90, 1, + 0x60F7A1, GAME_10US_COMPACT, H_CALL, 0x60EA90, 2>; + using def_t = float(CPedGroup *, CPed **); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroup::Flush) + static int address; + static int global_address; + static const int id = 0x5FB790; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB790, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FB891, GAME_10US_COMPACT, H_JUMP, 0x5FB870, 1, + 0x5FC874, GAME_10US_COMPACT, H_CALL, 0x5FC800, 1>; + using def_t = void(CPedGroup *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroup::RemoveAllFollowers) + static int address; + static int global_address; + static const int id = 0x5FB7D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB7D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FB8BA, GAME_10US_COMPACT, H_JUMP, 0x5FB8A0, 1>; + using def_t = void(CPedGroup *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +CTOR_META_BEGIN(CPedGroup) + static int address; + static int global_address; + static const int id = 0x5FC150; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FC150, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x851336, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = CPedGroup *(CPedGroup *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +DTOR_META_BEGIN(CPedGroup) + static int address; + static int global_address; + static const int id = 0x5FC190; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FC190, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x851331, GAME_10US_COMPACT, H_CALLBACK, 0, 1, + 0x856861, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = void(CPedGroup *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroup::Process) + static int address; + static int global_address; + static const int id = 0x5FC7E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FC7E0, 0, 0, 0, 0, 0>; + // total references count: 10us (7), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4923AE, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x4924AA, GAME_10US_COMPACT, H_CALL, 0x490DB0, 2, + 0x497D48, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x571B61, GAME_10US_COMPACT, H_JUMP, 0x571AD0, 1, + 0x60CA8B, GAME_10US_COMPACT, H_CALL, 0x60C840, 1, + 0x60D6C3, GAME_10US_COMPACT, H_CALL, 0x60D5B0, 1, + 0x65E57D, GAME_10US_COMPACT, H_CALL, 0x65E200, 1>; + using def_t = void(CPedGroup *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +template<> +struct stack_object : stack_object_no_default { + SUPPORTED_10US stack_object() { + plugin::CallMethodDynGlobal(ctor_gaddr(CPedGroup), reinterpret_cast(objBuff)); + } + SUPPORTED_10US ~stack_object() { + plugin::CallMethodDynGlobal(dtor_gaddr(CPedGroup), reinterpret_cast(objBuff)); + } +}; + +template <> +SUPPORTED_10US inline CPedGroup *operator_new() { + void *objData = operator new(sizeof(CPedGroup)); + CPedGroup *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr(CPedGroup), obj); + return obj; +} +template <> +SUPPORTED_10US inline CPedGroup *operator_new_array(unsigned int objCount) { + void *objData = operator new(sizeof(CPedGroup) * objCount + 4); + *reinterpret_cast(objData) = objCount; + CPedGroup *objArray = reinterpret_cast(reinterpret_cast(objData) + 4); + for (unsigned int i = 0; i < objCount; i++) + plugin::CallMethodDynGlobal(ctor_gaddr(CPedGroup), &objArray[i]); + return objArray; +} +template <> +SUPPORTED_10US inline void operator_delete(CPedGroup *obj) { + if (obj == nullptr) return; + plugin::CallMethodDynGlobal(dtor_gaddr(CPedGroup), obj); + operator delete(obj); +} +template <> +SUPPORTED_10US inline void operator_delete_array(CPedGroup *objArray) { + if (objArray == nullptr) return; + void *objData = reinterpret_cast(reinterpret_cast(objArray) - 4); + unsigned int arraySize = *reinterpret_cast(objData); + for (unsigned int i = 0; i < arraySize; i++) + plugin::CallMethodDynGlobal(dtor_gaddr(CPedGroup), &objArray[i]); + operator delete(objData); +} + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroupIntelligence.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroupIntelligence.h new file mode 100644 index 00000000..6d16d22a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroupIntelligence.h @@ -0,0 +1,641 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +CTOR_META_BEGIN(CPedGroupIntelligence) + static int address; + static int global_address; + static const int id = 0x5F7250; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7250, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FC16D, GAME_10US_COMPACT, H_CALL, 0x5FC150, 1>; + using def_t = CPedGroupIntelligence *(CPedGroupIntelligence *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupIntelligence::SetGroupDecisionMakerType) + static int address; + static int global_address; + static const int id = 0x5F7340; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7340, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x468825, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x4972D6, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x604457, GAME_10US_COMPACT, H_CALL, 0x6043A0, 1>; + using def_t = int(CPedGroupIntelligence *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +DTOR_META_BEGIN(CPedGroupIntelligence) + static int address; + static int global_address; + static const int id = 0x5F7350; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7350, 0, 0, 0, 0, 0>; + // total references count: 10us (6), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5F8500, GAME_10US_COMPACT, H_JUMP, 0x5F8500, 1, + 0x5FB7B9, GAME_10US_COMPACT, H_CALL, 0x5FB790, 1, + 0x5FB850, GAME_10US_COMPACT, H_CALL, 0x5FB800, 1, + 0x5FB900, GAME_10US_COMPACT, H_CALL, 0x5FB8C0, 1, + 0x5FB960, GAME_10US_COMPACT, H_CALL, 0x5FB930, 1, + 0x5FC1BA, GAME_10US_COMPACT, H_CALL, 0x5FC190, 1>; + using def_t = void(CPedGroupIntelligence *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupIntelligence::SetPrimaryTaskAllocator) + static int address; + static int global_address; + static const int id = 0x5F7410; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7410, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CPedGroupIntelligence *, CTaskAllocator *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupIntelligence::SetEventResponseTaskAllocator) + static int address; + static int global_address; + static const int id = 0x5F7440; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7440, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = int(CPedGroupIntelligence *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupIntelligence::AddEvent) + static int address; + static int global_address; + static const int id = 0x5F7470; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7470, 0, 0, 0, 0, 0>; + // total references count: 10us (29), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x440661, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x440B3E, GAME_10US_COMPACT, H_CALL, 0x4404A0, 2, + 0x4925A9, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x4AB8CE, GAME_10US_COMPACT, H_CALL, 0x4AB8A0, 1, + 0x4B2A72, GAME_10US_COMPACT, H_CALL, 0x4B29E0, 1, + 0x4BA6D6, GAME_10US_COMPACT, H_CALL, 0x4B9FF0, 1, + 0x5F7D38, GAME_10US_COMPACT, H_CALL, 0x5F7CC0, 1, + 0x5FC7CB, GAME_10US_COMPACT, H_CALL, 0x5FC4A0, 1, + 0x606D3E, GAME_10US_COMPACT, H_CALL, 0x606BA0, 1, + 0x60A1A4, GAME_10US_COMPACT, H_CALL, 0x60A110, 1, + 0x60A325, GAME_10US_COMPACT, H_CALL, 0x60A1D0, 1, + 0x60B9E4, GAME_10US_COMPACT, H_CALL, 0x60B650, 1, + 0x60CAE9, GAME_10US_COMPACT, H_CALL, 0x60C840, 1, + 0x60CFAA, GAME_10US_COMPACT, H_CALL, 0x60CD20, 1, + 0x60E9E9, GAME_10US_COMPACT, H_CALL, 0x60E530, 1, + 0x63A98D, GAME_10US_COMPACT, H_CALL, 0x63A890, 1, + 0x63AAF7, GAME_10US_COMPACT, H_CALL, 0x63A890, 2, + 0x63E78C, GAME_10US_COMPACT, H_CALL, 0x63E040, 1, + 0x63F00B, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63F13F, GAME_10US_COMPACT, H_CALL, 0x63E990, 2, + 0x63FC13, GAME_10US_COMPACT, H_CALL, 0x63F970, 1, + 0x63FDF0, GAME_10US_COMPACT, H_CALL, 0x63F970, 2, + 0x63FF0E, GAME_10US_COMPACT, H_CALL, 0x63F970, 3, + 0x6420D8, GAME_10US_COMPACT, H_CALL, 0x641FC0, 1, + 0x643B69, GAME_10US_COMPACT, H_CALL, 0x643A60, 1, + 0x64BB39, GAME_10US_COMPACT, H_CALL, 0x64B950, 1, + 0x65E3C7, GAME_10US_COMPACT, H_CALL, 0x65E200, 1, + 0x686BCD, GAME_10US_COMPACT, H_CALL, 0x6859A0, 1, + 0x6CD577, GAME_10US_COMPACT, H_CALL, 0x6CD2F0, 1>; + using def_t = bool(CPedGroupIntelligence *, CEvent *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupIntelligence::SetTask) + static int address; + static int global_address; + static const int id = 0x5F7540; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7540, 0, 0, 0, 0, 0>; + // total references count: 10us (31), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5F8530, GAME_10US_COMPACT, H_CALL, 0x5F8510, 1, + 0x5F8553, GAME_10US_COMPACT, H_CALL, 0x5F8510, 2, + 0x5F8575, GAME_10US_COMPACT, H_CALL, 0x5F8560, 1, + 0x5F8595, GAME_10US_COMPACT, H_CALL, 0x5F8580, 1, + 0x5F8B8B, GAME_10US_COMPACT, H_CALL, 0x5F8900, 1, + 0x5F9066, GAME_10US_COMPACT, H_CALL, 0x5F8900, 2, + 0x5F9273, GAME_10US_COMPACT, H_CALL, 0x5F90A0, 1, + 0x5F9324, GAME_10US_COMPACT, H_CALL, 0x5F90A0, 2, + 0x5F944B, GAME_10US_COMPACT, H_CALL, 0x5F90A0, 3, + 0x5F94BD, GAME_10US_COMPACT, H_CALL, 0x5F90A0, 4, + 0x5F95C7, GAME_10US_COMPACT, H_CALL, 0x5F9530, 1, + 0x5F969C, GAME_10US_COMPACT, H_CALL, 0x5F9530, 2, + 0x5F97D0, GAME_10US_COMPACT, H_CALL, 0x5F9710, 1, + 0x5F99A5, GAME_10US_COMPACT, H_CALL, 0x5F9840, 1, + 0x5F9A90, GAME_10US_COMPACT, H_CALL, 0x5F99F0, 1, + 0x5F9B8B, GAME_10US_COMPACT, H_CALL, 0x5F9B20, 1, + 0x5F9CF8, GAME_10US_COMPACT, H_CALL, 0x5F9BD0, 1, + 0x5F9EA2, GAME_10US_COMPACT, H_CALL, 0x5F9D50, 1, + 0x5F9F5E, GAME_10US_COMPACT, H_CALL, 0x5F9D50, 2, + 0x5F9FBA, GAME_10US_COMPACT, H_CALL, 0x5F9D50, 3, + 0x5FA0D5, GAME_10US_COMPACT, H_CALL, 0x5FA020, 1, + 0x5FA238, GAME_10US_COMPACT, H_CALL, 0x5FA130, 1, + 0x5FA459, GAME_10US_COMPACT, H_CALL, 0x5FA290, 1, + 0x5FA71D, GAME_10US_COMPACT, H_CALL, 0x5FA550, 1, + 0x5FA8B2, GAME_10US_COMPACT, H_CALL, 0x5FA820, 1, + 0x5FAA01, GAME_10US_COMPACT, H_CALL, 0x5FA910, 1, + 0x5FAAF5, GAME_10US_COMPACT, H_CALL, 0x5FAA50, 1, + 0x5FAC6D, GAME_10US_COMPACT, H_CALL, 0x5FAB60, 1, + 0x5FB729, GAME_10US_COMPACT, H_CALL, 0x5FB670, 1, + 0x69C1DA, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 1, + 0x69C6A8, GAME_10US_COMPACT, H_CALL, 0x69C4D0, 1>; + using def_t = void(CPedGroupIntelligence *, CPed *, CTask const *, CPedTaskPair *, int, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4,5>; +META_END + +META_BEGIN(CPedGroupIntelligence::GetTask) + static int address; + static int global_address; + static const int id = 0x5F7660; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7660, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69BE14, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 1, + 0x69C090, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 2>; + using def_t = CTask *(CPedGroupIntelligence *, CPed *, CPedTaskPair const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN_OVERLOADED(CPedGroupIntelligence::ReportFinishedTask, bool (CPedGroupIntelligence::*)(CPed const *, CTask const *, CPedTaskPair *)) + static int address; + static int global_address; + static const int id = 0x5F76C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F76C0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5F8707, GAME_10US_COMPACT, H_CALL, 0x5F86F0, 1, + 0x5F8718, GAME_10US_COMPACT, H_CALL, 0x5F86F0, 2, + 0x5F872E, GAME_10US_COMPACT, H_CALL, 0x5F86F0, 3, + 0x5F873E, GAME_10US_COMPACT, H_CALL, 0x5F86F0, 4>; + using def_t = bool(CPedGroupIntelligence *, CPed const *, CTask const *, CPedTaskPair *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN_OVERLOADED(CPedGroupIntelligence::ReportAllTasksFinished, void (CPedGroupIntelligence::*)(CPedTaskPair *)) + static int address; + static int global_address; + static const int id = 0x5F7730; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7730, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5F8757, GAME_10US_COMPACT, H_CALL, 0x5F8750, 1, + 0x5F8765, GAME_10US_COMPACT, H_CALL, 0x5F8750, 2, + 0x5F8773, GAME_10US_COMPACT, H_CALL, 0x5F8750, 3, + 0x5F8787, GAME_10US_COMPACT, H_CALL, 0x5F8780, 1, + 0x5F8795, GAME_10US_COMPACT, H_CALL, 0x5F8780, 2>; + using def_t = void(CPedGroupIntelligence *, CPedTaskPair *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupIntelligence::IsGroupResponding) + static int address; + static int global_address; + static const int id = 0x5F7760; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7760, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FC4C4, GAME_10US_COMPACT, H_CALL, 0x5FC4A0, 1>; + using def_t = bool(CPedGroupIntelligence *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupIntelligence::IsCurrentEventValid) + static int address; + static int global_address; + static const int id = 0x5F77A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F77A0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FC4CF, GAME_10US_COMPACT, H_CALL, 0x5FC4A0, 1>; + using def_t = bool(CPedGroupIntelligence *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupIntelligence::ComputeScriptCommandTasks) + static int address; + static int global_address; + static const int id = 0x5F7800; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7800, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FC654, GAME_10US_COMPACT, H_CALL, 0x5FC4A0, 1>; + using def_t = void(CPedGroupIntelligence *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupIntelligence::FlushTasks) + static int address; + static int global_address; + static const int id = 0x5F79C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F79C0, 0, 0, 0, 0, 0>; + // total references count: 10us (7), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5F88E0, GAME_10US_COMPACT, H_CALL, 0x5F88D0, 1, + 0x69CC65, GAME_10US_COMPACT, H_CALL, 0x69CC30, 1, + 0x69CC75, GAME_10US_COMPACT, H_CALL, 0x69CC30, 2, + 0x69D1A5, GAME_10US_COMPACT, H_CALL, 0x69D170, 1, + 0x69D1B5, GAME_10US_COMPACT, H_CALL, 0x69D170, 2, + 0x69D495, GAME_10US_COMPACT, H_CALL, 0x69D460, 1, + 0x69D4A5, GAME_10US_COMPACT, H_CALL, 0x69D460, 2>; + using def_t = void(CPedGroupIntelligence *, CPedTaskPair *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CPedGroupIntelligence::SetEventResponseTask) + static int address; + static int global_address; + static const int id = 0x5F8510; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F8510, 0, 0, 0, 0, 0>; + // total references count: 10us (11), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69C01E, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 1, + 0x69CD96, GAME_10US_COMPACT, H_CALL, 0x69CC30, 1, + 0x69CE10, GAME_10US_COMPACT, H_CALL, 0x69CC30, 2, + 0x69CF08, GAME_10US_COMPACT, H_CALL, 0x69CC30, 3, + 0x69D01D, GAME_10US_COMPACT, H_CALL, 0x69CC30, 4, + 0x69D29E, GAME_10US_COMPACT, H_CALL, 0x69D170, 1, + 0x69D3EA, GAME_10US_COMPACT, H_CALL, 0x69D170, 2, + 0x69D5D7, GAME_10US_COMPACT, H_CALL, 0x69D460, 1, + 0x69D658, GAME_10US_COMPACT, H_CALL, 0x69D460, 2, + 0x69D75B, GAME_10US_COMPACT, H_CALL, 0x69D460, 3, + 0x69D864, GAME_10US_COMPACT, H_CALL, 0x69D460, 4>; + using def_t = void(CPedGroupIntelligence *, CPed *, bool, CTask const *, bool, CTask const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4,5,6>; +META_END + +META_BEGIN(CPedGroupIntelligence::SetScriptCommandTask) + static int address; + static int global_address; + static const int id = 0x5F8560; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F8560, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x465D66, GAME_10US_COMPACT, H_CALL, 0x465C20, 1, + 0x4925F1, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x600E64, GAME_10US_COMPACT, H_CALL, 0x600E20, 1>; + using def_t = void(CPedGroupIntelligence *, CPed *, CTask const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CPedGroupIntelligence::SetDefaultTask) + static int address; + static int global_address; + static const int id = 0x5F8580; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F8580, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x492690, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1>; + using def_t = void(CPedGroupIntelligence *, CPed *, CTask const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CPedGroupIntelligence::GetTaskSecondary) + static int address; + static int global_address; + static const int id = 0x5F8620; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F8620, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x6330CD, GAME_10US_COMPACT, H_CALL, 0x6330B0, 1>; + using def_t = CTask *(CPedGroupIntelligence *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupIntelligence::GetTaskSecondarySlot) + static int address; + static int global_address; + static const int id = 0x5F8650; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F8650, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x6330D7, GAME_10US_COMPACT, H_CALL, 0x6330B0, 1>; + using def_t = signed int(CPedGroupIntelligence *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupIntelligence::GetTaskScriptCommand) + static int address; + static int global_address; + static const int id = 0x5F8690; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F8690, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x465D6E, GAME_10US_COMPACT, H_CALL, 0x465C20, 1, + 0x608698, GAME_10US_COMPACT, H_CALL, 0x6085E0, 1>; + using def_t = CTask *(CPedGroupIntelligence *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupIntelligence::GetTaskDefault) + static int address; + static int global_address; + static const int id = 0x5F86C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F86C0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x492668, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1>; + using def_t = CTask *(CPedGroupIntelligence *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN_OVERLOADED(CPedGroupIntelligence::ReportFinishedTask, bool (CPedGroupIntelligence::*)(CPed const *, CTask const *)) + static int address; + static int global_address; + static const int id = 0x5F86F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F86F0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x632EEA, GAME_10US_COMPACT, H_CALL, 0x632EB0, 1, + 0x632F11, GAME_10US_COMPACT, H_CALL, 0x632EB0, 2, + 0x632F5F, GAME_10US_COMPACT, H_CALL, 0x632F40, 1, + 0x633108, GAME_10US_COMPACT, H_CALL, 0x6330B0, 1>; + using def_t = bool(CPedGroupIntelligence *, CPed const *, CTask const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN_OVERLOADED(CPedGroupIntelligence::ReportAllTasksFinished, void (CPedGroupIntelligence::*)()) + static int address; + static int global_address; + static const int id = 0x5F8750; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F8750, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CPedGroupIntelligence *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupIntelligence::ReportAllBarScriptTasksFinished) + static int address; + static int global_address; + static const int id = 0x5F8780; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F8780, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x60CC9A, GAME_10US_COMPACT, H_CALL, 0x60CC50, 1>; + using def_t = void(CPedGroupIntelligence *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupIntelligence::ProcessIgnorePlayerGroup) + static int address; + static int global_address; + static const int id = 0x5F87A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F87A0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FC4A7, GAME_10US_COMPACT, H_CALL, 0x5FC4A0, 1>; + using def_t = void(CPedGroupIntelligence *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupIntelligence::ComputeDefaultTasks) + static int address; + static int global_address; + static const int id = 0x5F88D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F88D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x601796, GAME_10US_COMPACT, H_CALL, 0x601640, 1>; + using def_t = void(CPedGroupIntelligence *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupIntelligence::SetDefaultTaskAllocator) + static int address; + static int global_address; + static const int id = 0x5FB280; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB280, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FBB85, GAME_10US_COMPACT, H_JUMP, 0x5FBB70, 1, + 0x5FCB4B, GAME_10US_COMPACT, H_CALL, 0x5FC9B0, 1, + 0x5FD223, GAME_10US_COMPACT, H_CALL, 0x5FCE80, 1, + 0x5FD6D7, GAME_10US_COMPACT, H_CALL, 0x5FD330, 1>; + using def_t = void(CPedGroupIntelligence *, CPedGroupDefaultTaskAllocator const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupIntelligence::SetDefaultTaskAllocatorType) + static int address; + static int global_address; + static const int id = 0x5FBB70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FBB70, 0, 0, 0, 0, 0>; + // total references count: 10us (7), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x46881D, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x46C4F7, GAME_10US_COMPACT, H_CALL, 0x46B460, 1, + 0x49228F, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x60A267, GAME_10US_COMPACT, H_CALL, 0x60A1D0, 1, + 0x60CEF4, GAME_10US_COMPACT, H_CALL, 0x60CD20, 1, + 0x60D678, GAME_10US_COMPACT, H_CALL, 0x60D5B0, 1, + 0x662481, GAME_10US_COMPACT, H_CALL, 0x662370, 1>; + using def_t = void(CPedGroupIntelligence *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupIntelligence::ComputeEventResponseTasks) + static int address; + static int global_address; + static const int id = 0x5FC440; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FC440, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FC694, GAME_10US_COMPACT, H_CALL, 0x5FC4A0, 1, + 0x5FC75D, GAME_10US_COMPACT, H_CALL, 0x5FC4A0, 2>; + using def_t = void *(CPedGroupIntelligence *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupIntelligence::Process) + static int address; + static int global_address; + static const int id = 0x5FC4A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FC4A0, 0, 0, 0, 0, 0>; + // total references count: 10us (7), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FC7EF, GAME_10US_COMPACT, H_JUMP, 0x5FC7E0, 1, + 0x5FC822, GAME_10US_COMPACT, H_CALL, 0x5FC800, 1, + 0x5FCB68, GAME_10US_COMPACT, H_CALL, 0x5FC9B0, 1, + 0x5FCDFB, GAME_10US_COMPACT, H_CALL, 0x5FC9B0, 2, + 0x5FD240, GAME_10US_COMPACT, H_CALL, 0x5FCE80, 1, + 0x5FD2B5, GAME_10US_COMPACT, H_CALL, 0x5FCE80, 2, + 0x5FD717, GAME_10US_COMPACT, H_CALL, 0x5FD330, 1>; + using def_t = void(CPedGroupIntelligence *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +template<> +struct stack_object : stack_object_no_default { + SUPPORTED_10US stack_object() { + plugin::CallMethodDynGlobal(ctor_gaddr(CPedGroupIntelligence), reinterpret_cast(objBuff)); + } + SUPPORTED_10US ~stack_object() { + plugin::CallMethodDynGlobal(dtor_gaddr(CPedGroupIntelligence), reinterpret_cast(objBuff)); + } +}; + +template <> +SUPPORTED_10US inline CPedGroupIntelligence *operator_new() { + void *objData = operator new(sizeof(CPedGroupIntelligence)); + CPedGroupIntelligence *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr(CPedGroupIntelligence), obj); + return obj; +} +template <> +SUPPORTED_10US inline CPedGroupIntelligence *operator_new_array(unsigned int objCount) { + void *objData = operator new(sizeof(CPedGroupIntelligence) * objCount + 4); + *reinterpret_cast(objData) = objCount; + CPedGroupIntelligence *objArray = reinterpret_cast(reinterpret_cast(objData) + 4); + for (unsigned int i = 0; i < objCount; i++) + plugin::CallMethodDynGlobal(ctor_gaddr(CPedGroupIntelligence), &objArray[i]); + return objArray; +} +template <> +SUPPORTED_10US inline void operator_delete(CPedGroupIntelligence *obj) { + if (obj == nullptr) return; + plugin::CallMethodDynGlobal(dtor_gaddr(CPedGroupIntelligence), obj); + operator delete(obj); +} +template <> +SUPPORTED_10US inline void operator_delete_array(CPedGroupIntelligence *objArray) { + if (objArray == nullptr) return; + void *objData = reinterpret_cast(reinterpret_cast(objArray) - 4); + unsigned int arraySize = *reinterpret_cast(objData); + for (unsigned int i = 0; i < arraySize; i++) + plugin::CallMethodDynGlobal(dtor_gaddr(CPedGroupIntelligence), &objArray[i]); + operator delete(objData); +} + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroupMembership.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroupMembership.h new file mode 100644 index 00000000..1bcf1631 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroupMembership.h @@ -0,0 +1,589 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +CTOR_META_BEGIN(CPedGroupMembership) + static int address; + static int global_address; + static const int id = 0x5F6930; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F6930, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = unsigned int *(CPedGroupMembership *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupMembership::GetObjectForPedToHold) + static int address; + static int global_address; + static const int id = 0x5F6950; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F6950, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5F80B6, GAME_10US_COMPACT, H_CALL, 0x5F8020, 1, + 0x5FBA3D, GAME_10US_COMPACT, H_CALL, 0x5FB9C0, 1>; + using def_t = signed int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CPedGroupMembership::GetLeader) + static int address; + static int global_address; + static const int id = 0x5F69A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F69A0, 0, 0, 0, 0, 0>; + // total references count: 10us (50), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x472F89, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x492478, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x492483, GAME_10US_COMPACT, H_CALL, 0x490DB0, 2, + 0x4924B1, GAME_10US_COMPACT, H_CALL, 0x490DB0, 3, + 0x492728, GAME_10US_COMPACT, H_CALL, 0x490DB0, 4, + 0x492733, GAME_10US_COMPACT, H_CALL, 0x490DB0, 5, + 0x4AD3C8, GAME_10US_COMPACT, H_CALL, 0x4AD3C0, 1, + 0x4AF9D6, GAME_10US_COMPACT, H_CALL, 0x4AF970, 1, + 0x4AF9E1, GAME_10US_COMPACT, H_CALL, 0x4AF970, 2, + 0x4B0FB5, GAME_10US_COMPACT, H_CALL, 0x4B0F80, 1, + 0x4B23B1, GAME_10US_COMPACT, H_CALL, 0x4B23A0, 1, + 0x4B24DC, GAME_10US_COMPACT, H_CALL, 0x4B24D0, 1, + 0x4B5503, GAME_10US_COMPACT, H_CALL, 0x4B54E0, 1, + 0x4B57C6, GAME_10US_COMPACT, H_CALL, 0x4B57A0, 1, + 0x4B585D, GAME_10US_COMPACT, H_CALL, 0x4B57A0, 2, + 0x4B5868, GAME_10US_COMPACT, H_CALL, 0x4B57A0, 3, + 0x4B587A, GAME_10US_COMPACT, H_CALL, 0x4B57A0, 4, + 0x4BA5CD, GAME_10US_COMPACT, H_CALL, 0x4B9FF0, 1, + 0x4BDC70, GAME_10US_COMPACT, H_CALL, 0x4BDB80, 1, + 0x4BDC8F, GAME_10US_COMPACT, H_CALL, 0x4BDB80, 2, + 0x563D5D, GAME_10US_COMPACT, H_CALL, 0x563D00, 1, + 0x5E4BD2, GAME_10US_COMPACT, H_CALL, 0x5E4A00, 1, + 0x5E4BE7, GAME_10US_COMPACT, H_CALL, 0x5E4A00, 2, + 0x603B6B, GAME_10US_COMPACT, H_CALL, 0x603AF0, 1, + 0x603B76, GAME_10US_COMPACT, H_CALL, 0x603AF0, 2, + 0x603B8E, GAME_10US_COMPACT, H_CALL, 0x603AF0, 3, + 0x621326, GAME_10US_COMPACT, H_CALL, 0x621300, 1, + 0x62248A, GAME_10US_COMPACT, H_CALL, 0x622450, 1, + 0x622CDB, GAME_10US_COMPACT, H_CALL, 0x622CC0, 1, + 0x6261D4, GAME_10US_COMPACT, H_CALL, 0x625E70, 1, + 0x6352B0, GAME_10US_COMPACT, H_CALL, 0x635200, 1, + 0x6352BB, GAME_10US_COMPACT, H_CALL, 0x635200, 2, + 0x6352EC, GAME_10US_COMPACT, H_CALL, 0x635200, 3, + 0x64079C, GAME_10US_COMPACT, H_CALL, 0x640730, 1, + 0x66073B, GAME_10US_COMPACT, H_CALL, 0x6605C0, 1, + 0x66074E, GAME_10US_COMPACT, H_CALL, 0x6605C0, 2, + 0x666097, GAME_10US_COMPACT, H_CALL, 0x665E00, 1, + 0x689829, GAME_10US_COMPACT, H_CALL, 0x689640, 1, + 0x696540, GAME_10US_COMPACT, H_CALL, 0x6962A0, 1, + 0x69BD07, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 1, + 0x69BD15, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 2, + 0x69C537, GAME_10US_COMPACT, H_CALL, 0x69C4D0, 1, + 0x69C546, GAME_10US_COMPACT, H_CALL, 0x69C4D0, 2, + 0x69CA76, GAME_10US_COMPACT, H_CALL, 0x69C850, 1, + 0x69CE50, GAME_10US_COMPACT, H_CALL, 0x69CC30, 1, + 0x69D068, GAME_10US_COMPACT, H_CALL, 0x69CC30, 2, + 0x69D2DE, GAME_10US_COMPACT, H_CALL, 0x69D170, 1, + 0x69D42E, GAME_10US_COMPACT, H_CALL, 0x69D170, 2, + 0x69D6A0, GAME_10US_COMPACT, H_CALL, 0x69D460, 1, + 0x69D8AC, GAME_10US_COMPACT, H_CALL, 0x69D460, 2>; + using def_t = CPed *(CPedGroupMembership *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupMembership::GetMember) + static int address; + static int global_address; + static const int id = 0x5F69B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F69B0, 0, 0, 0, 0, 0>; + // total references count: 10us (38), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43F247, GAME_10US_COMPACT, H_CALL, 0x43F1F0, 1, + 0x476E37, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1, + 0x4B0F15, GAME_10US_COMPACT, H_CALL, 0x4B0EF0, 1, + 0x4B0F93, GAME_10US_COMPACT, H_CALL, 0x4B0F80, 1, + 0x4B24F7, GAME_10US_COMPACT, H_CALL, 0x4B24D0, 1, + 0x4B2553, GAME_10US_COMPACT, H_CALL, 0x4B2530, 1, + 0x4B3953, GAME_10US_COMPACT, H_CALL, 0x4B38D0, 1, + 0x4B57ED, GAME_10US_COMPACT, H_CALL, 0x4B57A0, 1, + 0x4E5479, GAME_10US_COMPACT, H_CALL, 0x4E53B0, 1, + 0x60A466, GAME_10US_COMPACT, H_CALL, 0x60A440, 1, + 0x60A4D6, GAME_10US_COMPACT, H_CALL, 0x60A4B0, 1, + 0x60F806, GAME_10US_COMPACT, H_CALL, 0x60EA90, 1, + 0x6224D3, GAME_10US_COMPACT, H_CALL, 0x622450, 1, + 0x622D10, GAME_10US_COMPACT, H_CALL, 0x622CC0, 1, + 0x622D83, GAME_10US_COMPACT, H_CALL, 0x622D50, 1, + 0x65E070, GAME_10US_COMPACT, H_CALL, 0x65DFF0, 1, + 0x65E5AA, GAME_10US_COMPACT, H_CALL, 0x65E200, 1, + 0x6625DC, GAME_10US_COMPACT, H_CALL, 0x662370, 1, + 0x662FB9, GAME_10US_COMPACT, H_CALL, 0x662A10, 1, + 0x666086, GAME_10US_COMPACT, H_CALL, 0x665E00, 1, + 0x69652B, GAME_10US_COMPACT, H_CALL, 0x6962A0, 1, + 0x699DE4, GAME_10US_COMPACT, H_CALL, 0x699DD0, 1, + 0x699DF0, GAME_10US_COMPACT, H_CALL, 0x699DD0, 2, + 0x69A354, GAME_10US_COMPACT, H_CALL, 0x69A340, 1, + 0x69A36F, GAME_10US_COMPACT, H_CALL, 0x69A340, 2, + 0x69C37B, GAME_10US_COMPACT, H_CALL, 0x69C340, 1, + 0x69C387, GAME_10US_COMPACT, H_CALL, 0x69C340, 2, + 0x69C8A5, GAME_10US_COMPACT, H_CALL, 0x69C850, 1, + 0x69C8D5, GAME_10US_COMPACT, H_CALL, 0x69C850, 2, + 0x69CA5A, GAME_10US_COMPACT, H_CALL, 0x69C850, 3, + 0x69CA93, GAME_10US_COMPACT, H_CALL, 0x69C850, 4, + 0x69CAC5, GAME_10US_COMPACT, H_CALL, 0x69C850, 5, + 0x69CCFB, GAME_10US_COMPACT, H_CALL, 0x69CC30, 1, + 0x69CE6E, GAME_10US_COMPACT, H_CALL, 0x69CC30, 2, + 0x69D236, GAME_10US_COMPACT, H_CALL, 0x69D170, 1, + 0x69D2F6, GAME_10US_COMPACT, H_CALL, 0x69D170, 2, + 0x69D539, GAME_10US_COMPACT, H_CALL, 0x69D460, 1, + 0x69D6BE, GAME_10US_COMPACT, H_CALL, 0x69D460, 2>; + using def_t = CPed *(CPedGroupMembership *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupMembership::IsLeader) + static int address; + static int global_address; + static const int id = 0x5F69C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F69C0, 0, 0, 0, 0, 0>; + // total references count: 10us (22), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43F227, GAME_10US_COMPACT, H_CALL, 0x43F1F0, 1, + 0x464ECD, GAME_10US_COMPACT, H_CALL, 0x464DC0, 1, + 0x48AA15, GAME_10US_COMPACT, H_CALL, 0x48A320, 1, + 0x497D31, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x4987E0, GAME_10US_COMPACT, H_CALL, 0x496E00, 2, + 0x4ACBAE, GAME_10US_COMPACT, H_CALL, 0x4ACB10, 1, + 0x4B5025, GAME_10US_COMPACT, H_CALL, 0x4B4FD0, 1, + 0x4BA5B4, GAME_10US_COMPACT, H_CALL, 0x4B9FF0, 1, + 0x4BA683, GAME_10US_COMPACT, H_CALL, 0x4B9FF0, 2, + 0x63A93C, GAME_10US_COMPACT, H_CALL, 0x63A890, 1, + 0x63AAA6, GAME_10US_COMPACT, H_CALL, 0x63A890, 2, + 0x63E73B, GAME_10US_COMPACT, H_CALL, 0x63E040, 1, + 0x63EFB4, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63F0F4, GAME_10US_COMPACT, H_CALL, 0x63E990, 2, + 0x63FBBB, GAME_10US_COMPACT, H_CALL, 0x63F970, 1, + 0x63FDA5, GAME_10US_COMPACT, H_CALL, 0x63F970, 2, + 0x63FEBB, GAME_10US_COMPACT, H_CALL, 0x63F970, 3, + 0x640059, GAME_10US_COMPACT, H_CALL, 0x63F970, 4, + 0x642087, GAME_10US_COMPACT, H_CALL, 0x641FC0, 1, + 0x643B15, GAME_10US_COMPACT, H_CALL, 0x643A60, 1, + 0x64457A, GAME_10US_COMPACT, H_CALL, 0x644470, 1, + 0x64BAE1, GAME_10US_COMPACT, H_CALL, 0x64B950, 1>; + using def_t = bool(CPedGroupMembership *, CPed const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupMembership::IsFollower) + static int address; + static int global_address; + static const int id = 0x5F69E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F69E0, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x482AF8, GAME_10US_COMPACT, H_CALL, 0x481300, 1, + 0x4864A3, GAME_10US_COMPACT, H_CALL, 0x486300, 1, + 0x56A19E, GAME_10US_COMPACT, H_CALL, 0x56A0D0, 1, + 0x56A23E, GAME_10US_COMPACT, H_CALL, 0x56A0D0, 2, + 0x5DF12E, GAME_10US_COMPACT, H_CALL, 0x5DF100, 1>; + using def_t = bool(CPedGroupMembership *, CPed const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupMembership::IsMember) + static int address; + static int global_address; + static const int id = 0x5F6A10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F6A10, 0, 0, 0, 0, 0>; + // total references count: 10us (23), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43D243, GAME_10US_COMPACT, H_CALL, 0x43D210, 1, + 0x43DD64, GAME_10US_COMPACT, H_CALL, 0x43DCD0, 1, + 0x46FDF3, GAME_10US_COMPACT, H_CALL, 0x46F800, 1, + 0x496D53, GAME_10US_COMPACT, H_CALL, 0x496760, 1, + 0x49878F, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x4AE0EB, GAME_10US_COMPACT, H_CALL, 0x4AE0E0, 1, + 0x4AF98C, GAME_10US_COMPACT, H_CALL, 0x4AF970, 1, + 0x4AFA14, GAME_10US_COMPACT, H_CALL, 0x4AF970, 2, + 0x4B5CD6, GAME_10US_COMPACT, H_CALL, 0x4B5AC0, 1, + 0x4B7D86, GAME_10US_COMPACT, H_CALL, 0x4B7CD0, 1, + 0x5E90FA, GAME_10US_COMPACT, H_CALL, 0x5E8CD0, 1, + 0x5F74C5, GAME_10US_COMPACT, H_CALL, 0x5F7470, 1, + 0x5F77E8, GAME_10US_COMPACT, H_CALL, 0x5F77A0, 1, + 0x5F7F85, GAME_10US_COMPACT, H_CALL, 0x5F7F40, 1, + 0x5FB330, GAME_10US_COMPACT, H_CALL, 0x5FB2D0, 1, + 0x5FB341, GAME_10US_COMPACT, H_CALL, 0x5FB2D0, 2, + 0x5FB40F, GAME_10US_COMPACT, H_CALL, 0x5FB390, 1, + 0x60C254, GAME_10US_COMPACT, H_CALL, 0x60C1E0, 1, + 0x60C6BF, GAME_10US_COMPACT, H_CALL, 0x60C5F0, 1, + 0x60C8EB, GAME_10US_COMPACT, H_CALL, 0x60C840, 1, + 0x65E494, GAME_10US_COMPACT, H_CALL, 0x65E200, 1, + 0x665D53, GAME_10US_COMPACT, H_CALL, 0x665760, 1, + 0x673B33, GAME_10US_COMPACT, H_CALL, 0x673540, 1>; + using def_t = bool(CPedGroupMembership *, CPed const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupMembership::CountMembers) + static int address; + static int global_address; + static const int id = 0x5F6A50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F6A50, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4BE93D, GAME_10US_COMPACT, H_CALL, 0x4BE7D0, 1, + 0x65E013, GAME_10US_COMPACT, H_CALL, 0x65DFF0, 1, + 0x662EB9, GAME_10US_COMPACT, H_CALL, 0x662A10, 1, + 0x666070, GAME_10US_COMPACT, H_CALL, 0x665E00, 1, + 0x696514, GAME_10US_COMPACT, H_CALL, 0x6962A0, 1>; + using def_t = int(CPedGroupMembership *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupMembership::CountMembersExcludingLeader) + static int address; + static int global_address; + static const int id = 0x5F6AA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F6AA0, 0, 0, 0, 0, 0>; + // total references count: 10us (19), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43AD65, GAME_10US_COMPACT, H_CALL, 0x43AC40, 1, + 0x472F98, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x475FED, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x47AD91, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x48AA20, GAME_10US_COMPACT, H_CALL, 0x48A320, 1, + 0x49246C, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x4E5437, GAME_10US_COMPACT, H_CALL, 0x4E53B0, 1, + 0x58BDB6, GAME_10US_COMPACT, H_CALL, 0x58B6E0, 1, + 0x60A0B8, GAME_10US_COMPACT, H_CALL, 0x60A0A0, 1, + 0x60A150, GAME_10US_COMPACT, H_CALL, 0x60A110, 1, + 0x60A22D, GAME_10US_COMPACT, H_CALL, 0x60A1D0, 1, + 0x60A372, GAME_10US_COMPACT, H_CALL, 0x60A1D0, 2, + 0x60C992, GAME_10US_COMPACT, H_CALL, 0x60C840, 1, + 0x60C9B1, GAME_10US_COMPACT, H_CALL, 0x60C840, 2, + 0x60C9D3, GAME_10US_COMPACT, H_CALL, 0x60C840, 3, + 0x60CC68, GAME_10US_COMPACT, H_CALL, 0x60CC50, 1, + 0x60F74E, GAME_10US_COMPACT, H_CALL, 0x60EA90, 1, + 0x65E504, GAME_10US_COMPACT, H_CALL, 0x65E200, 1, + 0x670227, GAME_10US_COMPACT, H_CALL, 0x670100, 1>; + using def_t = int(CPedGroupMembership *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupMembership::AddMember) + static int address; + static int global_address; + static const int id = 0x5F6AE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F6AE0, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5F7FF6, GAME_10US_COMPACT, H_CALL, 0x5F7FE0, 1, + 0x5F8090, GAME_10US_COMPACT, H_CALL, 0x5F8020, 1, + 0x5FB277, GAME_10US_COMPACT, H_CALL, 0x5FB240, 1, + 0x5FBA17, GAME_10US_COMPACT, H_CALL, 0x5FB9C0, 1, + 0x5FBAC8, GAME_10US_COMPACT, H_CALL, 0x5FBA60, 1>; + using def_t = void(CPedGroupMembership *, CPed *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CPedGroupMembership::From) + static int address; + static int global_address; + static const int id = 0x5F7FE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7FE0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FB148, GAME_10US_COMPACT, H_CALL, 0x5FB140, 1>; + using def_t = void(CPedGroupMembership *, CPedGroupMembership const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupMembership::AddFollower) + static int address; + static int global_address; + static const int id = 0x5F8020; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F8020, 0, 0, 0, 0, 0>; + // total references count: 10us (6), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x49249F, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x5FCDED, GAME_10US_COMPACT, H_CALL, 0x5FC9B0, 1, + 0x5FD2A7, GAME_10US_COMPACT, H_CALL, 0x5FCE80, 1, + 0x5FD709, GAME_10US_COMPACT, H_CALL, 0x5FD330, 1, + 0x60CA71, GAME_10US_COMPACT, H_CALL, 0x60C840, 1, + 0x65E575, GAME_10US_COMPACT, H_CALL, 0x65E200, 1>; + using def_t = void(CPedGroupMembership *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupMembership::RemoveMember) + static int address; + static int global_address; + static const int id = 0x5F80D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F80D0, 0, 0, 0, 0, 0>; + // total references count: 10us (17), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FB178, GAME_10US_COMPACT, H_CALL, 0x5FB160, 1, + 0x5FB1BB, GAME_10US_COMPACT, H_CALL, 0x5FB190, 1, + 0x5FB1F6, GAME_10US_COMPACT, H_CALL, 0x5FB1D0, 1, + 0x5FB23B, GAME_10US_COMPACT, H_JUMP, 0x5FB210, 1, + 0x5FB26D, GAME_10US_COMPACT, H_CALL, 0x5FB240, 1, + 0x5FB7A8, GAME_10US_COMPACT, H_CALL, 0x5FB790, 1, + 0x5FB7ED, GAME_10US_COMPACT, H_CALL, 0x5FB7D0, 1, + 0x5FB83F, GAME_10US_COMPACT, H_CALL, 0x5FB800, 1, + 0x5FB8EF, GAME_10US_COMPACT, H_CALL, 0x5FB8C0, 1, + 0x5FB94F, GAME_10US_COMPACT, H_CALL, 0x5FB930, 1, + 0x5FB9A8, GAME_10US_COMPACT, H_CALL, 0x5FB990, 1, + 0x5FB9FD, GAME_10US_COMPACT, H_CALL, 0x5FB9C0, 1, + 0x5FBA0D, GAME_10US_COMPACT, H_CALL, 0x5FB9C0, 2, + 0x5FBA8B, GAME_10US_COMPACT, H_CALL, 0x5FBA60, 1, + 0x5FBABE, GAME_10US_COMPACT, H_CALL, 0x5FBA60, 2, + 0x5FBB54, GAME_10US_COMPACT, H_CALL, 0x5FBA60, 3, + 0x5FC1D8, GAME_10US_COMPACT, H_CALL, 0x5FC190, 1>; + using def_t = void(CPedGroupMembership *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +CTOR_META_BEGIN_OVERLOADED(CPedGroupMembership, void(CPedGroupMembership const *)) + static int address; + static int global_address; + static const int id = 0x5FB140; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB140, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = CPedGroupMembership *(CPedGroupMembership *, CPedGroupMembership const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupMembership::Flush) + static int address; + static int global_address; + static const int id = 0x5FB160; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB160, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CPedGroupMembership *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupMembership::RemoveAllFollowers) + static int address; + static int global_address; + static const int id = 0x5FB190; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB190, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x60A0FD, GAME_10US_COMPACT, H_CALL, 0x60A0A0, 1>; + using def_t = void(CPedGroupMembership *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupMembership::RemoveNFollowers) + static int address; + static int global_address; + static const int id = 0x5FB1D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB1D0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x476003, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x47ADAD, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x492497, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1>; + using def_t = char(CPedGroupMembership *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupMembership::AppointNewLeader) + static int address; + static int global_address; + static const int id = 0x5FB240; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB240, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CPedGroupMembership *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +DTOR_META_BEGIN(CPedGroupMembership) + static int address; + static int global_address; + static const int id = 0x5FB990; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB990, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x83E4B6, GAME_10US_COMPACT, H_JUMP, 0x83E4B0, 1>; + using def_t = void(CPedGroupMembership *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroupMembership::SetLeader) + static int address; + static int global_address; + static const int id = 0x5FB9C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB9C0, 0, 0, 0, 0, 0>; + // total references count: 10us (6), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4923A3, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x571B3C, GAME_10US_COMPACT, H_CALL, 0x571AD0, 1, + 0x5FCB5A, GAME_10US_COMPACT, H_CALL, 0x5FC9B0, 1, + 0x5FD232, GAME_10US_COMPACT, H_CALL, 0x5FCE80, 1, + 0x5FD6FB, GAME_10US_COMPACT, H_CALL, 0x5FD330, 1, + 0x60D6A9, GAME_10US_COMPACT, H_CALL, 0x60D5B0, 1>; + using def_t = void(CPedGroupMembership *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroupMembership::Process) + static int address; + static int global_address; + static const int id = 0x5FBA60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FBA60, 0, 0, 0, 0, 0>; + // total references count: 10us (7), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FC7E6, GAME_10US_COMPACT, H_CALL, 0x5FC7E0, 1, + 0x5FC81B, GAME_10US_COMPACT, H_CALL, 0x5FC800, 1, + 0x5FCB61, GAME_10US_COMPACT, H_CALL, 0x5FC9B0, 1, + 0x5FCDF4, GAME_10US_COMPACT, H_CALL, 0x5FC9B0, 2, + 0x5FD239, GAME_10US_COMPACT, H_CALL, 0x5FCE80, 1, + 0x5FD2AE, GAME_10US_COMPACT, H_CALL, 0x5FCE80, 2, + 0x5FD710, GAME_10US_COMPACT, H_CALL, 0x5FD330, 1>; + using def_t = void(CPedGroupMembership *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +template<> +struct stack_object : stack_object_no_default { + SUPPORTED_10US stack_object() { + plugin::CallMethodDynGlobal(ctor_gaddr(CPedGroupMembership), reinterpret_cast(objBuff)); + } + SUPPORTED_10US stack_object(CPedGroupMembership const *Obj) { + plugin::CallMethodDynGlobal(ctor_gaddr_o(CPedGroupMembership, void(CPedGroupMembership const *)), reinterpret_cast(objBuff), Obj); + } + SUPPORTED_10US ~stack_object() { + plugin::CallMethodDynGlobal(dtor_gaddr(CPedGroupMembership), reinterpret_cast(objBuff)); + } +}; + +template <> +SUPPORTED_10US inline CPedGroupMembership *operator_new() { + void *objData = operator new(sizeof(CPedGroupMembership)); + CPedGroupMembership *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr(CPedGroupMembership), obj); + return obj; +} +template <> +SUPPORTED_10US inline CPedGroupMembership *operator_new_array(unsigned int objCount) { + void *objData = operator new(sizeof(CPedGroupMembership) * objCount + 4); + *reinterpret_cast(objData) = objCount; + CPedGroupMembership *objArray = reinterpret_cast(reinterpret_cast(objData) + 4); + for (unsigned int i = 0; i < objCount; i++) + plugin::CallMethodDynGlobal(ctor_gaddr(CPedGroupMembership), &objArray[i]); + return objArray; +} +template <> +SUPPORTED_10US inline CPedGroupMembership *operator_new(CPedGroupMembership const *Obj) { + void *objData = operator new(sizeof(CPedGroupMembership)); + CPedGroupMembership *obj = reinterpret_cast(objData); + plugin::CallMethodDynGlobal(ctor_gaddr_o(CPedGroupMembership, void(CPedGroupMembership const *)), obj, Obj); + return obj; +} +template <> +SUPPORTED_10US inline void operator_delete(CPedGroupMembership *obj) { + if (obj == nullptr) return; + plugin::CallMethodDynGlobal(dtor_gaddr(CPedGroupMembership), obj); + operator delete(obj); +} +template <> +SUPPORTED_10US inline void operator_delete_array(CPedGroupMembership *objArray) { + if (objArray == nullptr) return; + void *objData = reinterpret_cast(reinterpret_cast(objArray) - 4); + unsigned int arraySize = *reinterpret_cast(objData); + for (unsigned int i = 0; i < arraySize; i++) + plugin::CallMethodDynGlobal(dtor_gaddr(CPedGroupMembership), &objArray[i]); + operator delete(objData); +} + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroupPlacer.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroupPlacer.h new file mode 100644 index 00000000..ababfdb2 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroupPlacer.h @@ -0,0 +1,76 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CPedGroupPlacer::PlaceFormationGroup) + static int address; + static int global_address; + static const int id = 0x5FC9B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FC9B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FD824, GAME_10US_COMPACT, H_JUMP, 0x5FD810, 1>; + using def_t = bool(CPedGroupPlacer *, ePedType, int, CVector const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CPedGroupPlacer::PlaceChatGroup) + static int address; + static int global_address; + static const int id = 0x5FCE80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FCE80, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FD82D, GAME_10US_COMPACT, H_JUMP, 0x5FD810, 1>; + using def_t = bool(CPedGroupPlacer *, ePedType, int, CVector const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CPedGroupPlacer::PlaceRandomGroup) + static int address; + static int global_address; + static const int id = 0x5FD330; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FD330, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FD83A, GAME_10US_COMPACT, H_JUMP, 0x5FD810, 1>; + using def_t = bool(CPedGroupPlacer *, ePedType, int, CVector *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CPedGroupPlacer::PlaceGroup) + static int address; + static int global_address; + static const int id = 0x5FD810; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FD810, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x6117E6, GAME_10US_COMPACT, H_CALL, 0x6117D0, 1, + 0x613D4A, GAME_10US_COMPACT, H_CALL, 0x613CD0, 1>; + using def_t = bool(CPedGroupPlacer *, ePedType, int, CVector const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroups.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroups.h new file mode 100644 index 00000000..0eec7002 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedGroups.h @@ -0,0 +1,319 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CPedGroups::RegisterKillByPlayer) + static int address; + static int global_address; + static const int id = 0x5F7E30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7E30, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4B93B4, GAME_10US_COMPACT, H_JUMP, 0x4B9340, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CPedGroups::IsGroupLeader) + static int address; + static int global_address; + static const int id = 0x5F7E40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7E40, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x63A90A, GAME_10US_COMPACT, H_CALL, 0x63A890, 1, + 0x63AA87, GAME_10US_COMPACT, H_CALL, 0x63A890, 2>; + using def_t = bool(CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroups::GetPedsGroup) + static int address; + static int global_address; + static const int id = 0x5F7E80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7E80, 0, 0, 0, 0, 0>; + // total references count: 10us (76), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x440607, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x440ADF, GAME_10US_COMPACT, H_CALL, 0x4404A0, 2, + 0x464EBB, GAME_10US_COMPACT, H_CALL, 0x464DC0, 1, + 0x465C6C, GAME_10US_COMPACT, H_CALL, 0x465C20, 1, + 0x46E238, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x474ABF, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x475A71, GAME_10US_COMPACT, H_CALL, 0x474900, 2, + 0x47A3E6, GAME_10US_COMPACT, H_CALL, 0x479DA0, 1, + 0x480404, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1, + 0x482AE6, GAME_10US_COMPACT, H_CALL, 0x481300, 1, + 0x486491, GAME_10US_COMPACT, H_CALL, 0x486300, 1, + 0x48AA03, GAME_10US_COMPACT, H_CALL, 0x48A320, 1, + 0x497D19, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x4ACB97, GAME_10US_COMPACT, H_CALL, 0x4ACB10, 1, + 0x4B2A28, GAME_10US_COMPACT, H_CALL, 0x4B29E0, 1, + 0x4B5015, GAME_10US_COMPACT, H_CALL, 0x4B4FD0, 1, + 0x4B7DFA, GAME_10US_COMPACT, H_CALL, 0x4B7DF0, 1, + 0x4B9736, GAME_10US_COMPACT, H_CALL, 0x4B96D0, 1, + 0x4BA59A, GAME_10US_COMPACT, H_CALL, 0x4B9FF0, 1, + 0x4BD944, GAME_10US_COMPACT, H_CALL, 0x4BD6A0, 1, + 0x4BDC5B, GAME_10US_COMPACT, H_CALL, 0x4BDB80, 1, + 0x4BDC7E, GAME_10US_COMPACT, H_CALL, 0x4BDB80, 2, + 0x563D4E, GAME_10US_COMPACT, H_CALL, 0x563D00, 1, + 0x56A18E, GAME_10US_COMPACT, H_CALL, 0x56A0D0, 1, + 0x56A211, GAME_10US_COMPACT, H_CALL, 0x56A0D0, 2, + 0x5E4BC7, GAME_10US_COMPACT, H_CALL, 0x5E4A00, 1, + 0x5E4BDC, GAME_10US_COMPACT, H_CALL, 0x5E4A00, 2, + 0x5F882F, GAME_10US_COMPACT, H_CALL, 0x5F87A0, 1, + 0x5FB4CC, GAME_10US_COMPACT, H_CALL, 0x5FB470, 1, + 0x600E40, GAME_10US_COMPACT, H_CALL, 0x600E20, 1, + 0x601771, GAME_10US_COMPACT, H_CALL, 0x601640, 1, + 0x601FCA, GAME_10US_COMPACT, H_CALL, 0x601E00, 1, + 0x603B5A, GAME_10US_COMPACT, H_CALL, 0x603AF0, 1, + 0x606D23, GAME_10US_COMPACT, H_CALL, 0x606BA0, 1, + 0x608686, GAME_10US_COMPACT, H_CALL, 0x6085E0, 1, + 0x60B973, GAME_10US_COMPACT, H_CALL, 0x60B650, 1, + 0x60C9E1, GAME_10US_COMPACT, H_CALL, 0x60C840, 1, + 0x60E979, GAME_10US_COMPACT, H_CALL, 0x60E530, 1, + 0x62130B, GAME_10US_COMPACT, H_CALL, 0x621300, 1, + 0x62247B, GAME_10US_COMPACT, H_CALL, 0x622450, 1, + 0x622D68, GAME_10US_COMPACT, H_CALL, 0x622D50, 1, + 0x6261B9, GAME_10US_COMPACT, H_CALL, 0x625E70, 1, + 0x6261C9, GAME_10US_COMPACT, H_CALL, 0x625E70, 2, + 0x62748C, GAME_10US_COMPACT, H_CALL, 0x626FC0, 1, + 0x627587, GAME_10US_COMPACT, H_CALL, 0x626FC0, 2, + 0x62C96C, GAME_10US_COMPACT, H_CALL, 0x62C190, 1, + 0x62CF5A, GAME_10US_COMPACT, H_CALL, 0x62CCE0, 1, + 0x62D21B, GAME_10US_COMPACT, H_CALL, 0x62CCE0, 2, + 0x63529F, GAME_10US_COMPACT, H_CALL, 0x635200, 1, + 0x63A92A, GAME_10US_COMPACT, H_CALL, 0x63A890, 1, + 0x63AA94, GAME_10US_COMPACT, H_CALL, 0x63A890, 2, + 0x63E729, GAME_10US_COMPACT, H_CALL, 0x63E040, 1, + 0x63EF9B, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63F0DF, GAME_10US_COMPACT, H_CALL, 0x63E990, 2, + 0x63FBA2, GAME_10US_COMPACT, H_CALL, 0x63F970, 1, + 0x63FD90, GAME_10US_COMPACT, H_CALL, 0x63F970, 2, + 0x63FEA6, GAME_10US_COMPACT, H_CALL, 0x63F970, 3, + 0x640040, GAME_10US_COMPACT, H_CALL, 0x63F970, 4, + 0x64078D, GAME_10US_COMPACT, H_CALL, 0x640730, 1, + 0x642075, GAME_10US_COMPACT, H_CALL, 0x641FC0, 1, + 0x643AF8, GAME_10US_COMPACT, H_CALL, 0x643A60, 1, + 0x6444FC, GAME_10US_COMPACT, H_CALL, 0x644470, 1, + 0x644BC7, GAME_10US_COMPACT, H_CALL, 0x644470, 2, + 0x64BACA, GAME_10US_COMPACT, H_CALL, 0x64B950, 1, + 0x6511A1, GAME_10US_COMPACT, H_CALL, 0x6510D0, 1, + 0x65E458, GAME_10US_COMPACT, H_CALL, 0x65E200, 1, + 0x670125, GAME_10US_COMPACT, H_CALL, 0x670100, 1, + 0x670218, GAME_10US_COMPACT, H_CALL, 0x670100, 2, + 0x686B5C, GAME_10US_COMPACT, H_CALL, 0x6859A0, 1, + 0x68980A, GAME_10US_COMPACT, H_CALL, 0x689640, 1, + 0x68981B, GAME_10US_COMPACT, H_CALL, 0x689640, 2, + 0x696AD6, GAME_10US_COMPACT, H_CALL, 0x696940, 1, + 0x69D1CF, GAME_10US_COMPACT, H_CALL, 0x69D170, 1, + 0x69D4C3, GAME_10US_COMPACT, H_CALL, 0x69D460, 1, + 0x6CD537, GAME_10US_COMPACT, H_CALL, 0x6CD2F0, 1, + 0x6F832C, GAME_10US_COMPACT, H_CALL, 0x6F8170, 1>; + using def_t = char *(CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroups::GetGroupId) + static int address; + static int global_address; + static const int id = 0x5F7EE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7EE0, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4B2A37, GAME_10US_COMPACT, H_CALL, 0x4B29E0, 1, + 0x5FB4D9, GAME_10US_COMPACT, H_CALL, 0x5FB470, 1, + 0x65E4F4, GAME_10US_COMPACT, H_CALL, 0x65E200, 1, + 0x69D1E0, GAME_10US_COMPACT, H_CALL, 0x69D170, 1, + 0x69D4D4, GAME_10US_COMPACT, H_CALL, 0x69D460, 1>; + using def_t = signed int(CPedGroup *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroups::IsInPlayersGroup) + static int address; + static int global_address; + static const int id = 0x5F7F10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7F10, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4BF6C0, GAME_10US_COMPACT, H_CALL, 0x4BF2B0, 1, + 0x5E4BBA, GAME_10US_COMPACT, H_CALL, 0x5E4A00, 1, + 0x5F3494, GAME_10US_COMPACT, H_CALL, 0x5F32D0, 1, + 0x67DA6C, GAME_10US_COMPACT, H_CALL, 0x67D980, 1>; + using def_t = char(CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroups::AreInSameGroup) + static int address; + static int global_address; + static const int id = 0x5F7F40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5F7F40, 0, 0, 0, 0, 0>; + // total references count: 10us (27), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x46F84D, GAME_10US_COMPACT, H_CALL, 0x46F800, 1, + 0x4967AD, GAME_10US_COMPACT, H_CALL, 0x496760, 1, + 0x4AD492, GAME_10US_COMPACT, H_CALL, 0x4AD430, 1, + 0x4AD50B, GAME_10US_COMPACT, H_CALL, 0x4AD430, 2, + 0x4AFA72, GAME_10US_COMPACT, H_CALL, 0x4AFA30, 1, + 0x4B2CFA, GAME_10US_COMPACT, H_CALL, 0x4B2CD0, 1, + 0x4B385D, GAME_10US_COMPACT, H_CALL, 0x4B35A0, 1, + 0x4B4F63, GAME_10US_COMPACT, H_CALL, 0x4B4EE0, 1, + 0x609E4E, GAME_10US_COMPACT, H_CALL, 0x609DE0, 1, + 0x60B983, GAME_10US_COMPACT, H_CALL, 0x60B650, 1, + 0x60E0B2, GAME_10US_COMPACT, H_CALL, 0x60DC50, 1, + 0x60E6B9, GAME_10US_COMPACT, H_CALL, 0x60E530, 1, + 0x60E98D, GAME_10US_COMPACT, H_CALL, 0x60E530, 2, + 0x62251C, GAME_10US_COMPACT, H_CALL, 0x622450, 1, + 0x629684, GAME_10US_COMPACT, H_CALL, 0x629630, 1, + 0x63EEAF, GAME_10US_COMPACT, H_CALL, 0x63E990, 1, + 0x63FC41, GAME_10US_COMPACT, H_CALL, 0x63F970, 1, + 0x640176, GAME_10US_COMPACT, H_CALL, 0x63F970, 2, + 0x64023D, GAME_10US_COMPACT, H_CALL, 0x63F970, 3, + 0x651194, GAME_10US_COMPACT, H_CALL, 0x6510D0, 1, + 0x652CF0, GAME_10US_COMPACT, H_CALL, 0x6528F0, 1, + 0x652D91, GAME_10US_COMPACT, H_CALL, 0x6528F0, 2, + 0x6657AD, GAME_10US_COMPACT, H_CALL, 0x665760, 1, + 0x6720F9, GAME_10US_COMPACT, H_CALL, 0x672080, 1, + 0x67358D, GAME_10US_COMPACT, H_CALL, 0x673540, 1, + 0x686B6C, GAME_10US_COMPACT, H_CALL, 0x6859A0, 1, + 0x73B835, GAME_10US_COMPACT, H_CALL, 0x73B550, 1>; + using def_t = bool(CPed *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedGroups::AddGroup) + static int address; + static int global_address; + static const int id = 0x5FB800; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB800, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x492279, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x5FC9CB, GAME_10US_COMPACT, H_CALL, 0x5FC9B0, 1, + 0x5FCEAF, GAME_10US_COMPACT, H_CALL, 0x5FCE80, 1, + 0x5FD35F, GAME_10US_COMPACT, H_CALL, 0x5FD330, 1, + 0x60D659, GAME_10US_COMPACT, H_CALL, 0x60D5B0, 1>; + using def_t = signed int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CPedGroups::RemoveGroup) + static int address; + static int global_address; + static const int id = 0x5FB870; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB870, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x468BDE, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x492754, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x609462, GAME_10US_COMPACT, H_CALL, 0x6093B0, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroups::RemoveAllFollowersFromGroup) + static int address; + static int global_address; + static const int id = 0x5FB8A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB8A0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x492744, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedGroups::Init) + static int address; + static int global_address; + static const int id = 0x5FB8C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB8C0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x469371, GAME_10US_COMPACT, H_CALL, 0x468D50, 1, + 0x5BA3C0, GAME_10US_COMPACT, H_CALL, 0x5BA1A0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CPedGroups::CleanUpForShutDown) + static int address; + static int global_address; + static const int id = 0x5FB930; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FB930, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53CA48, GAME_10US_COMPACT, H_CALL, 0x53C900, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CPedGroups::Process) + static int address; + static int global_address; + static const int id = 0x5FC800; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5FC800, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x568AA1, GAME_10US_COMPACT, H_CALL, 0x5684A0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedList.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedList.h new file mode 100644 index 00000000..0f6d9002 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedList.h @@ -0,0 +1,147 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CPedList::Empty) + static int address; + static int global_address; + static const int id = 0x699DB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x699DB0, 0, 0, 0, 0, 0>; + // total references count: 10us (5), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5F68A3, GAME_10US_COMPACT, H_CALL, 0x5F68A0, 1, + 0x5FAB8E, GAME_10US_COMPACT, H_CALL, 0x5FAB60, 1, + 0x69BCCC, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 1, + 0x69BCD8, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 2, + 0x69C4F5, GAME_10US_COMPACT, H_CALL, 0x69C4D0, 1>; + using def_t = void(CPedList *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedList::BuildListFromGroup_NoLeader) + static int address; + static int global_address; + static const int id = 0x699DD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x699DD0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69BCFD, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 1, + 0x69C52C, GAME_10US_COMPACT, H_CALL, 0x69C4D0, 1>; + using def_t = void(CPedList *, CPedGroupMembership *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedList::FillUpHoles) + static int address; + static int global_address; + static const int id = 0x699E20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x699E20, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69A44A, GAME_10US_COMPACT, H_JUMP, 0x69A420, 1, + 0x69A4A8, GAME_10US_COMPACT, H_CALL, 0x69A450, 1, + 0x69A520, GAME_10US_COMPACT, H_CALL, 0x69A4C0, 1>; + using def_t = void(CPedList *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedList::BuildListFromGroup_NotInCar_NoLeader) + static int address; + static int global_address; + static const int id = 0x69A340; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x69A340, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FAB98, GAME_10US_COMPACT, H_CALL, 0x5FAB60, 1>; + using def_t = void(CPedList *, CPedGroupMembership *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedList::BuildListOfPedsOfPedType) + static int address; + static int global_address; + static const int id = 0x69A3B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x69A3B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69C575, GAME_10US_COMPACT, H_CALL, 0x69C4D0, 1>; + using def_t = void(CPedList *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedList::RemovePedsThatDontListenToPlayer) + static int address; + static int global_address; + static const int id = 0x69A420; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x69A420, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69BD2C, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 1, + 0x69C55A, GAME_10US_COMPACT, H_CALL, 0x69C4D0, 1>; + using def_t = void(CPedList *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedList::RemovePedsAttackingPedType) + static int address; + static int global_address; + static const int id = 0x69A450; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x69A450, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69C567, GAME_10US_COMPACT, H_CALL, 0x69C4D0, 1>; + using def_t = void(CPedList *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CPedList::ExtractPedsWithGuns) + static int address; + static int global_address; + static const int id = 0x69A4C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x69A4C0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x69BD74, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 1>; + using def_t = void(CPedList *, CPedList *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedPlacement.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedPlacement.h new file mode 100644 index 00000000..5d5dbc05 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedPlacement.h @@ -0,0 +1,100 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CPedPlacement::IsPositionClearForPed) + static int address; + static int global_address; + static const int id = 0x616860; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x616860, 0, 0, 0, 0, 0>; + // total references count: 10us (13), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5FCA6F, GAME_10US_COMPACT, H_CALL, 0x5FC9B0, 1, + 0x5FCF5C, GAME_10US_COMPACT, H_CALL, 0x5FCE80, 1, + 0x5FD0D4, GAME_10US_COMPACT, H_CALL, 0x5FCE80, 2, + 0x5FD40D, GAME_10US_COMPACT, H_CALL, 0x5FD330, 1, + 0x5FD587, GAME_10US_COMPACT, H_CALL, 0x5FD330, 2, + 0x612EBD, GAME_10US_COMPACT, H_CALL, 0x612CD0, 1, + 0x613E36, GAME_10US_COMPACT, H_CALL, 0x613D60, 1, + 0x6141AD, GAME_10US_COMPACT, H_CALL, 0x613D60, 2, + 0x614C8F, GAME_10US_COMPACT, H_CALL, 0x614720, 1, + 0x615018, GAME_10US_COMPACT, H_CALL, 0x614720, 2, + 0x6151FA, GAME_10US_COMPACT, H_CALL, 0x614720, 3, + 0x6154AF, GAME_10US_COMPACT, H_CALL, 0x614720, 4, + 0x64D0A3, GAME_10US_COMPACT, H_CALL, 0x64CF40, 1>; + using def_t = bool(CVector const *, float, int, CEntity **, unsigned char, unsigned char, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5,6>; +META_END + +META_BEGIN_OVERLOADED(CPedPlacement::IsPositionClearOfCars, CVehicle *(*)(CVector const *)) + static int address; + static int global_address; + static const int id = 0x6168E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6168E0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = CVehicle *(CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CPedPlacement::FindZCoorForPed) + static int address; + static int global_address; + static const int id = 0x616920; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x616920, 0, 0, 0, 0, 0>; + // total references count: 10us (15), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4615A0, GAME_10US_COMPACT, H_CALL, 0x461170, 1, + 0x46FA35, GAME_10US_COMPACT, H_CALL, 0x46F800, 1, + 0x496995, GAME_10US_COMPACT, H_CALL, 0x496760, 1, + 0x5E12F5, GAME_10US_COMPACT, H_CALL, 0x5E0820, 1, + 0x5E143A, GAME_10US_COMPACT, H_CALL, 0x5E13C0, 1, + 0x5EA515, GAME_10US_COMPACT, H_CALL, 0x5EA390, 1, + 0x6475ED, GAME_10US_COMPACT, H_CALL, 0x647590, 1, + 0x64B0B3, GAME_10US_COMPACT, H_CALL, 0x64B080, 1, + 0x64C482, GAME_10US_COMPACT, H_CALL, 0x64C220, 1, + 0x6519DE, GAME_10US_COMPACT, H_CALL, 0x6513A0, 1, + 0x65A540, GAME_10US_COMPACT, H_CALL, 0x65A460, 1, + 0x665982, GAME_10US_COMPACT, H_CALL, 0x665760, 1, + 0x66DD2C, GAME_10US_COMPACT, H_CALL, 0x66DCE0, 1, + 0x670463, GAME_10US_COMPACT, H_CALL, 0x670420, 1, + 0x673762, GAME_10US_COMPACT, H_CALL, 0x673540, 1>; + using def_t = bool(CVector *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CPedPlacement::IsPositionClearOfCars, CVehicle *(*)(CPed const *)) + static int address; + static int global_address; + static const int id = 0x616A40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x616A40, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x67C796, GAME_10US_COMPACT, H_CALL, 0x67C770, 1>; + using def_t = CVehicle *(CPed const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedTaskPair.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedTaskPair.h new file mode 100644 index 00000000..ffb57df5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPedTaskPair.h @@ -0,0 +1,30 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CPedTaskPair::Flush) + static int address; + static int global_address; + static const int id = 0x5E95B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5E95B0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5F7366, GAME_10US_COMPACT, H_CALL, 0x5F7350, 1, + 0x5F736D, GAME_10US_COMPACT, H_CALL, 0x5F7350, 2, + 0x5F7378, GAME_10US_COMPACT, H_CALL, 0x5F7350, 3, + 0x5F7383, GAME_10US_COMPACT, H_CALL, 0x5F7350, 4>; + using def_t = void(CPedTaskPair *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPointList.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPointList.h new file mode 100644 index 00000000..fdbde989 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CPointList.h @@ -0,0 +1,29 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CPointList::Empty) + static int address; + static int global_address; + static const int id = 0x699F00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x699F00, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x6986E3, GAME_10US_COMPACT, H_CALL, 0x6986E0, 1, + 0x6995E3, GAME_10US_COMPACT, H_CALL, 0x699570, 1, + 0x69BCE4, GAME_10US_COMPACT, H_CALL, 0x69BCA0, 1>; + using def_t = void(CPointList *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CRoadBlocks.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CRoadBlocks.h new file mode 100644 index 00000000..a8f91977 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CRoadBlocks.h @@ -0,0 +1,87 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + META_BEGIN(CRoadBlocks::ClearScriptRoadBlocks) + static int address; + static int global_address; + static const int id = 0x460EC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x460EC0, 0x460F40, 0, 0, 0, 0>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; + META_END + + META_BEGIN(CRoadBlocks::RegisterScriptRoadBlock) + static int address; + static int global_address; + static const int id = 0x460DF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x460DF0, 0x45ADCF, 0, 0, 0, 0>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; + META_END + + META_BEGIN(CRoadBlocks::Init) + static int address; + static int global_address; + static const int id = 0x461100; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x461100, 0, 0, 0, 0, 0>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; + META_END + + META_BEGIN(CRoadBlocks::GenerateRoadBlockCopsForCar) + static int address; + static int global_address; + static const int id = 0x461170; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x461170, 0x4611F0, 0, 0, 0, 0>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; + META_END + + META_BEGIN(CRoadBlocks::CreateRoadBlockBetween2Points) + static int address; + static int global_address; + static const int id = 0x4619C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4619C0, 0x461A40, 0, 0, 0, 0>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; + META_END + + META_BEGIN(CRoadBlocks::GenerateRoadBlocks) + static int address; + static int global_address; + static const int id = 0x4629E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4629E0, 0x462A60, 0, 0, 0, 0>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; + META_END +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CRunningScript.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CRunningScript.h new file mode 100644 index 00000000..3fee891b --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CRunningScript.h @@ -0,0 +1,3286 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CRunningScript::GetPointerToLocalVariable) + static int address; + static int global_address; + static const int id = 0x463CA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463CA0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x463DD7, GAME_10US_COMPACT, H_CALL, 0x463D50, 1, + 0x464011, GAME_10US_COMPACT, H_CALL, 0x463D50, 2, + 0x4642B9, GAME_10US_COMPACT, H_CALL, 0x464250, 1>; + using def_t = void *(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::GetPointerToLocalArrayElement) + static int address; + static int global_address; + static const int id = 0x463CC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463CC0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x463E96, GAME_10US_COMPACT, H_CALL, 0x463D50, 1, + 0x463EB6, GAME_10US_COMPACT, H_CALL, 0x463D50, 2, + 0x46433E, GAME_10US_COMPACT, H_CALL, 0x464250, 1, + 0x46489B, GAME_10US_COMPACT, H_CALL, 0x464790, 1>; + using def_t = void *(CRunningScript *, int, unsigned short, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CRunningScript::ReadArrayInformation) + static int address; + static int global_address; + static const int id = 0x463CF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463CF0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x463DED, GAME_10US_COMPACT, H_CALL, 0x463D50, 1, + 0x463E7D, GAME_10US_COMPACT, H_CALL, 0x463D50, 2, + 0x464302, GAME_10US_COMPACT, H_CALL, 0x464250, 1, + 0x46432C, GAME_10US_COMPACT, H_CALL, 0x464250, 2, + 0x464814, GAME_10US_COMPACT, H_CALL, 0x464790, 1, + 0x464877, GAME_10US_COMPACT, H_CALL, 0x464790, 2>; + using def_t = void(CRunningScript *, int, unsigned short *, int *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CRunningScript::ReadTextLabelFromScript) + static int address; + static int global_address; + static const int id = 0x463D50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463D50, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468084, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1, + 0x4680D8, GAME_10US_COMPACT, H_CALL, 0x466DE0, 2, + 0x468164, GAME_10US_COMPACT, H_CALL, 0x466DE0, 3, + 0x46AFF5, GAME_10US_COMPACT, H_CALL, 0x46AF50, 1, + 0x46B003, GAME_10US_COMPACT, H_CALL, 0x46AF50, 2, + 0x46B4C7, GAME_10US_COMPACT, H_CALL, 0x46B460, 1, + 0x46B520, GAME_10US_COMPACT, H_CALL, 0x46B460, 2, + 0x46B6DD, GAME_10US_COMPACT, H_CALL, 0x46B460, 3, + 0x46B705, GAME_10US_COMPACT, H_CALL, 0x46B460, 4, + 0x46B72D, GAME_10US_COMPACT, H_CALL, 0x46B460, 5, + 0x46D6C0, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x46E96D, GAME_10US_COMPACT, H_CALL, 0x46D050, 2, + 0x46E97B, GAME_10US_COMPACT, H_CALL, 0x46D050, 3, + 0x46EA25, GAME_10US_COMPACT, H_CALL, 0x46D050, 4, + 0x46EA33, GAME_10US_COMPACT, H_CALL, 0x46D050, 5, + 0x46EB40, GAME_10US_COMPACT, H_CALL, 0x46D050, 6, + 0x46EB62, GAME_10US_COMPACT, H_CALL, 0x46D050, 7, + 0x46ECAB, GAME_10US_COMPACT, H_CALL, 0x46D050, 8, + 0x46ED0E, GAME_10US_COMPACT, H_CALL, 0x46D050, 9, + 0x46ED58, GAME_10US_COMPACT, H_CALL, 0x46D050, 10, + 0x47018E, GAME_10US_COMPACT, H_CALL, 0x470150, 1, + 0x47019C, GAME_10US_COMPACT, H_CALL, 0x470150, 2, + 0x470B55, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x470BB9, GAME_10US_COMPACT, H_CALL, 0x470A90, 2, + 0x470C35, GAME_10US_COMPACT, H_CALL, 0x470A90, 3, + 0x470CAA, GAME_10US_COMPACT, H_CALL, 0x470A90, 4, + 0x4718B5, GAME_10US_COMPACT, H_CALL, 0x470A90, 5, + 0x471A97, GAME_10US_COMPACT, H_CALL, 0x470A90, 6, + 0x471AA8, GAME_10US_COMPACT, H_CALL, 0x470A90, 7, + 0x471CC0, GAME_10US_COMPACT, H_CALL, 0x470A90, 8, + 0x47239C, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x4730B1, GAME_10US_COMPACT, H_CALL, 0x472310, 2, + 0x473106, GAME_10US_COMPACT, H_CALL, 0x472310, 3, + 0x473410, GAME_10US_COMPACT, H_CALL, 0x472310, 4, + 0x473421, GAME_10US_COMPACT, H_CALL, 0x472310, 5, + 0x47366D, GAME_10US_COMPACT, H_CALL, 0x472310, 6, + 0x4741C6, GAME_10US_COMPACT, H_CALL, 0x472310, 7, + 0x4741D7, GAME_10US_COMPACT, H_CALL, 0x472310, 8, + 0x474C56, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x475216, GAME_10US_COMPACT, H_CALL, 0x474900, 2, + 0x475509, GAME_10US_COMPACT, H_CALL, 0x474900, 3, + 0x4756DB, GAME_10US_COMPACT, H_CALL, 0x474900, 4, + 0x47571B, GAME_10US_COMPACT, H_CALL, 0x474900, 5, + 0x47578C, GAME_10US_COMPACT, H_CALL, 0x474900, 6, + 0x475C0B, GAME_10US_COMPACT, H_CALL, 0x474900, 7, + 0x475E08, GAME_10US_COMPACT, H_CALL, 0x474900, 8, + 0x475E82, GAME_10US_COMPACT, H_CALL, 0x474900, 9, + 0x475E93, GAME_10US_COMPACT, H_CALL, 0x474900, 10, + 0x4760C6, GAME_10US_COMPACT, H_CALL, 0x474900, 11, + 0x47661B, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1, + 0x476819, GAME_10US_COMPACT, H_CALL, 0x4762D0, 2, + 0x47692B, GAME_10US_COMPACT, H_CALL, 0x4762D0, 3, + 0x477050, GAME_10US_COMPACT, H_CALL, 0x4762D0, 4, + 0x477242, GAME_10US_COMPACT, H_CALL, 0x4762D0, 5, + 0x4780DA, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x478D70, GAME_10US_COMPACT, H_CALL, 0x478000, 2, + 0x4791A7, GAME_10US_COMPACT, H_CALL, 0x478000, 3, + 0x4791B5, GAME_10US_COMPACT, H_CALL, 0x478000, 4, + 0x4791C3, GAME_10US_COMPACT, H_CALL, 0x478000, 5, + 0x4792BB, GAME_10US_COMPACT, H_CALL, 0x478000, 6, + 0x4792EE, GAME_10US_COMPACT, H_CALL, 0x478000, 7, + 0x479616, GAME_10US_COMPACT, H_CALL, 0x478000, 8, + 0x479E7E, GAME_10US_COMPACT, H_CALL, 0x479DA0, 1, + 0x47A26A, GAME_10US_COMPACT, H_CALL, 0x479DA0, 2, + 0x47AF87, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x47B54C, GAME_10US_COMPACT, H_CALL, 0x47A760, 2, + 0x47B6F4, GAME_10US_COMPACT, H_CALL, 0x47A760, 3, + 0x47BA77, GAME_10US_COMPACT, H_CALL, 0x47A760, 4, + 0x47BA85, GAME_10US_COMPACT, H_CALL, 0x47A760, 5, + 0x47BA93, GAME_10US_COMPACT, H_CALL, 0x47A760, 6, + 0x47BAE2, GAME_10US_COMPACT, H_CALL, 0x47A760, 7, + 0x47C335, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x47DA14, GAME_10US_COMPACT, H_CALL, 0x47D210, 1, + 0x47DA7A, GAME_10US_COMPACT, H_CALL, 0x47D210, 2, + 0x47DAF5, GAME_10US_COMPACT, H_CALL, 0x47D210, 3, + 0x47E26C, GAME_10US_COMPACT, H_CALL, 0x47E090, 1, + 0x47E743, GAME_10US_COMPACT, H_CALL, 0x47E090, 2, + 0x47E798, GAME_10US_COMPACT, H_CALL, 0x47E090, 3, + 0x47EDC8, GAME_10US_COMPACT, H_CALL, 0x47E090, 4, + 0x47EF27, GAME_10US_COMPACT, H_CALL, 0x47E090, 5, + 0x47F4BF, GAME_10US_COMPACT, H_CALL, 0x47F370, 1, + 0x47F97F, GAME_10US_COMPACT, H_CALL, 0x47F370, 2, + 0x4802D0, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1, + 0x480707, GAME_10US_COMPACT, H_CALL, 0x47FA30, 2, + 0x480A63, GAME_10US_COMPACT, H_CALL, 0x47FA30, 3, + 0x480AB7, GAME_10US_COMPACT, H_CALL, 0x47FA30, 4, + 0x480B2F, GAME_10US_COMPACT, H_CALL, 0x47FA30, 5, + 0x480B91, GAME_10US_COMPACT, H_CALL, 0x47FA30, 6, + 0x480BF8, GAME_10US_COMPACT, H_CALL, 0x47FA30, 7, + 0x480C79, GAME_10US_COMPACT, H_CALL, 0x47FA30, 8, + 0x480D81, GAME_10US_COMPACT, H_CALL, 0x47FA30, 9, + 0x481A1D, GAME_10US_COMPACT, H_CALL, 0x481300, 1, + 0x482E29, GAME_10US_COMPACT, H_CALL, 0x481300, 2, + 0x482E6C, GAME_10US_COMPACT, H_CALL, 0x481300, 3, + 0x4832C7, GAME_10US_COMPACT, H_CALL, 0x481300, 4, + 0x483C1A, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1, + 0x483C39, GAME_10US_COMPACT, H_CALL, 0x483BD0, 2, + 0x48408A, GAME_10US_COMPACT, H_CALL, 0x483BD0, 3, + 0x4840FB, GAME_10US_COMPACT, H_CALL, 0x483BD0, 4, + 0x484273, GAME_10US_COMPACT, H_CALL, 0x483BD0, 5, + 0x4846AD, GAME_10US_COMPACT, H_CALL, 0x483BD0, 6, + 0x4847B6, GAME_10US_COMPACT, H_CALL, 0x483BD0, 7, + 0x4847ED, GAME_10US_COMPACT, H_CALL, 0x483BD0, 8, + 0x484C7F, GAME_10US_COMPACT, H_CALL, 0x483BD0, 9, + 0x484CCE, GAME_10US_COMPACT, H_CALL, 0x483BD0, 10, + 0x485388, GAME_10US_COMPACT, H_CALL, 0x483BD0, 11, + 0x4853B5, GAME_10US_COMPACT, H_CALL, 0x483BD0, 12, + 0x485601, GAME_10US_COMPACT, H_CALL, 0x483BD0, 13, + 0x48A50C, GAME_10US_COMPACT, H_CALL, 0x48A320, 1, + 0x48A5C7, GAME_10US_COMPACT, H_CALL, 0x48A320, 2, + 0x48A672, GAME_10US_COMPACT, H_CALL, 0x48A320, 3, + 0x48C35A, GAME_10US_COMPACT, H_CALL, 0x48B590, 1, + 0x48C39A, GAME_10US_COMPACT, H_CALL, 0x48B590, 2, + 0x48C3DE, GAME_10US_COMPACT, H_CALL, 0x48B590, 3, + 0x48C54A, GAME_10US_COMPACT, H_CALL, 0x48B590, 4, + 0x48C804, GAME_10US_COMPACT, H_CALL, 0x48B590, 5, + 0x48CB76, GAME_10US_COMPACT, H_CALL, 0x48B590, 6, + 0x48CBEB, GAME_10US_COMPACT, H_CALL, 0x48B590, 7, + 0x48CE4C, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 1, + 0x48CF2F, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 2, + 0x48D590, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 3, + 0x48EB69, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 1, + 0x48F796, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 2, + 0x48F7CC, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 3, + 0x48F806, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 4, + 0x4916F0, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x49174C, GAME_10US_COMPACT, H_CALL, 0x490DB0, 2, + 0x4917BA, GAME_10US_COMPACT, H_CALL, 0x490DB0, 3, + 0x491828, GAME_10US_COMPACT, H_CALL, 0x490DB0, 4, + 0x491A13, GAME_10US_COMPACT, H_CALL, 0x490DB0, 5, + 0x494231, GAME_10US_COMPACT, H_CALL, 0x493FE0, 1, + 0x4947D9, GAME_10US_COMPACT, H_CALL, 0x493FE0, 2, + 0x4947F5, GAME_10US_COMPACT, H_CALL, 0x493FE0, 3, + 0x494811, GAME_10US_COMPACT, H_CALL, 0x493FE0, 4, + 0x494826, GAME_10US_COMPACT, H_CALL, 0x493FE0, 5, + 0x494A02, GAME_10US_COMPACT, H_CALL, 0x493FE0, 6, + 0x494A77, GAME_10US_COMPACT, H_CALL, 0x493FE0, 7, + 0x494B79, GAME_10US_COMPACT, H_CALL, 0x493FE0, 8, + 0x494BB5, GAME_10US_COMPACT, H_CALL, 0x493FE0, 9, + 0x494BF5, GAME_10US_COMPACT, H_CALL, 0x493FE0, 10, + 0x494CC1, GAME_10US_COMPACT, H_CALL, 0x493FE0, 11, + 0x494EB6, GAME_10US_COMPACT, H_CALL, 0x493FE0, 12, + 0x497DFF, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x497E35, GAME_10US_COMPACT, H_CALL, 0x496E00, 2>; + using def_t = void(CRunningScript *, char *, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CRunningScript::CollectParameters) + static int address; + static int global_address; + static const int id = 0x464080; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464080, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x465E94, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x465EC5, GAME_10US_COMPACT, H_CALL, 0x465E60, 2, + 0x465EEF, GAME_10US_COMPACT, H_CALL, 0x465E60, 3, + 0x465F35, GAME_10US_COMPACT, H_CALL, 0x465E60, 4, + 0x465F65, GAME_10US_COMPACT, H_CALL, 0x465E60, 5, + 0x465F96, GAME_10US_COMPACT, H_CALL, 0x465E60, 6, + 0x465FCE, GAME_10US_COMPACT, H_CALL, 0x465E60, 7, + 0x465FF1, GAME_10US_COMPACT, H_CALL, 0x465E60, 8, + 0x466024, GAME_10US_COMPACT, H_CALL, 0x465E60, 9, + 0x46604B, GAME_10US_COMPACT, H_CALL, 0x465E60, 10, + 0x46607B, GAME_10US_COMPACT, H_CALL, 0x465E60, 11, + 0x46609C, GAME_10US_COMPACT, H_CALL, 0x465E60, 12, + 0x4660BF, GAME_10US_COMPACT, H_CALL, 0x465E60, 13, + 0x4660E0, GAME_10US_COMPACT, H_CALL, 0x465E60, 14, + 0x466118, GAME_10US_COMPACT, H_CALL, 0x465E60, 15, + 0x46613A, GAME_10US_COMPACT, H_CALL, 0x465E60, 16, + 0x46615B, GAME_10US_COMPACT, H_CALL, 0x465E60, 17, + 0x46617D, GAME_10US_COMPACT, H_CALL, 0x465E60, 18, + 0x46619E, GAME_10US_COMPACT, H_CALL, 0x465E60, 19, + 0x4661C0, GAME_10US_COMPACT, H_CALL, 0x465E60, 20, + 0x4661E1, GAME_10US_COMPACT, H_CALL, 0x465E60, 21, + 0x46621F, GAME_10US_COMPACT, H_CALL, 0x465E60, 22, + 0x466252, GAME_10US_COMPACT, H_CALL, 0x465E60, 23, + 0x46628C, GAME_10US_COMPACT, H_CALL, 0x465E60, 24, + 0x466329, GAME_10US_COMPACT, H_CALL, 0x465E60, 25, + 0x466361, GAME_10US_COMPACT, H_CALL, 0x465E60, 26, + 0x466391, GAME_10US_COMPACT, H_CALL, 0x465E60, 27, + 0x4663B3, GAME_10US_COMPACT, H_CALL, 0x465E60, 28, + 0x466451, GAME_10US_COMPACT, H_CALL, 0x465E60, 29, + 0x466476, GAME_10US_COMPACT, H_CALL, 0x465E60, 30, + 0x466491, GAME_10US_COMPACT, H_CALL, 0x465E60, 31, + 0x4664B3, GAME_10US_COMPACT, H_CALL, 0x465E60, 32, + 0x466520, GAME_10US_COMPACT, H_CALL, 0x465E60, 33, + 0x466546, GAME_10US_COMPACT, H_CALL, 0x465E60, 34, + 0x466561, GAME_10US_COMPACT, H_CALL, 0x465E60, 35, + 0x466579, GAME_10US_COMPACT, H_CALL, 0x465E60, 36, + 0x466642, GAME_10US_COMPACT, H_CALL, 0x465E60, 37, + 0x466667, GAME_10US_COMPACT, H_CALL, 0x465E60, 38, + 0x4666DE, GAME_10US_COMPACT, H_CALL, 0x465E60, 39, + 0x4666FC, GAME_10US_COMPACT, H_CALL, 0x465E60, 40, + 0x4667A7, GAME_10US_COMPACT, H_CALL, 0x465E60, 41, + 0x466822, GAME_10US_COMPACT, H_CALL, 0x465E60, 42, + 0x466864, GAME_10US_COMPACT, H_CALL, 0x465E60, 43, + 0x4668C2, GAME_10US_COMPACT, H_CALL, 0x465E60, 44, + 0x4668E2, GAME_10US_COMPACT, H_CALL, 0x465E60, 45, + 0x467168, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1, + 0x4671F2, GAME_10US_COMPACT, H_CALL, 0x466DE0, 2, + 0x467553, GAME_10US_COMPACT, H_CALL, 0x466DE0, 3, + 0x46778D, GAME_10US_COMPACT, H_CALL, 0x466DE0, 4, + 0x4677E6, GAME_10US_COMPACT, H_CALL, 0x466DE0, 5, + 0x467879, GAME_10US_COMPACT, H_CALL, 0x466DE0, 6, + 0x4678C9, GAME_10US_COMPACT, H_CALL, 0x466DE0, 7, + 0x4679AA, GAME_10US_COMPACT, H_CALL, 0x466DE0, 8, + 0x467AB7, GAME_10US_COMPACT, H_CALL, 0x466DE0, 9, + 0x467B1E, GAME_10US_COMPACT, H_CALL, 0x466DE0, 10, + 0x467B87, GAME_10US_COMPACT, H_CALL, 0x466DE0, 11, + 0x467C87, GAME_10US_COMPACT, H_CALL, 0x466DE0, 12, + 0x467D03, GAME_10US_COMPACT, H_CALL, 0x466DE0, 13, + 0x467D4C, GAME_10US_COMPACT, H_CALL, 0x466DE0, 14, + 0x467DB9, GAME_10US_COMPACT, H_CALL, 0x466DE0, 15, + 0x467E09, GAME_10US_COMPACT, H_CALL, 0x466DE0, 16, + 0x467E89, GAME_10US_COMPACT, H_CALL, 0x466DE0, 17, + 0x467EC5, GAME_10US_COMPACT, H_CALL, 0x466DE0, 18, + 0x467F1F, GAME_10US_COMPACT, H_CALL, 0x466DE0, 19, + 0x467FC1, GAME_10US_COMPACT, H_CALL, 0x466DE0, 20, + 0x46809E, GAME_10US_COMPACT, H_CALL, 0x466DE0, 21, + 0x4680F2, GAME_10US_COMPACT, H_CALL, 0x466DE0, 22, + 0x46817E, GAME_10US_COMPACT, H_CALL, 0x466DE0, 23, + 0x46823C, GAME_10US_COMPACT, H_CALL, 0x466DE0, 24, + 0x468276, GAME_10US_COMPACT, H_CALL, 0x466DE0, 25, + 0x4682BB, GAME_10US_COMPACT, H_CALL, 0x466DE0, 26, + 0x4693D3, GAME_10US_COMPACT, H_CALL, 0x469390, 1, + 0x46943E, GAME_10US_COMPACT, H_CALL, 0x469390, 2, + 0x469481, GAME_10US_COMPACT, H_CALL, 0x469390, 3, + 0x4695AD, GAME_10US_COMPACT, H_CALL, 0x469390, 4, + 0x469612, GAME_10US_COMPACT, H_CALL, 0x469390, 5, + 0x46966B, GAME_10US_COMPACT, H_CALL, 0x469390, 6, + 0x4696BC, GAME_10US_COMPACT, H_CALL, 0x469390, 7, + 0x469719, GAME_10US_COMPACT, H_CALL, 0x469390, 8, + 0x469773, GAME_10US_COMPACT, H_CALL, 0x469390, 9, + 0x4698C6, GAME_10US_COMPACT, H_CALL, 0x469390, 10, + 0x469926, GAME_10US_COMPACT, H_CALL, 0x469390, 11, + 0x469952, GAME_10US_COMPACT, H_CALL, 0x469390, 12, + 0x46998E, GAME_10US_COMPACT, H_CALL, 0x469390, 13, + 0x4699BF, GAME_10US_COMPACT, H_CALL, 0x469390, 14, + 0x4699EC, GAME_10US_COMPACT, H_CALL, 0x469390, 15, + 0x469A19, GAME_10US_COMPACT, H_CALL, 0x469390, 16, + 0x469A56, GAME_10US_COMPACT, H_CALL, 0x469390, 17, + 0x469A7F, GAME_10US_COMPACT, H_CALL, 0x469390, 18, + 0x469AAC, GAME_10US_COMPACT, H_CALL, 0x469390, 19, + 0x469AE2, GAME_10US_COMPACT, H_CALL, 0x469390, 20, + 0x469B17, GAME_10US_COMPACT, H_CALL, 0x469390, 21, + 0x469B71, GAME_10US_COMPACT, H_CALL, 0x469390, 22, + 0x469BD5, GAME_10US_COMPACT, H_CALL, 0x469390, 23, + 0x469C3E, GAME_10US_COMPACT, H_CALL, 0x469390, 24, + 0x46AF70, GAME_10US_COMPACT, H_CALL, 0x46AF50, 1, + 0x46B038, GAME_10US_COMPACT, H_CALL, 0x46AF50, 2, + 0x46B4D0, GAME_10US_COMPACT, H_CALL, 0x46B460, 1, + 0x46B529, GAME_10US_COMPACT, H_CALL, 0x46B460, 2, + 0x46B59B, GAME_10US_COMPACT, H_CALL, 0x46B460, 3, + 0x46B5EC, GAME_10US_COMPACT, H_CALL, 0x46B460, 4, + 0x46B634, GAME_10US_COMPACT, H_CALL, 0x46B460, 5, + 0x46B750, GAME_10US_COMPACT, H_CALL, 0x46B460, 6, + 0x46B795, GAME_10US_COMPACT, H_CALL, 0x46B460, 7, + 0x46B7DB, GAME_10US_COMPACT, H_CALL, 0x46B460, 8, + 0x46B810, GAME_10US_COMPACT, H_CALL, 0x46B460, 9, + 0x46B8AA, GAME_10US_COMPACT, H_CALL, 0x46B460, 10, + 0x46B964, GAME_10US_COMPACT, H_CALL, 0x46B460, 11, + 0x46B996, GAME_10US_COMPACT, H_CALL, 0x46B460, 12, + 0x46B9C9, GAME_10US_COMPACT, H_CALL, 0x46B460, 13, + 0x46B9FC, GAME_10US_COMPACT, H_CALL, 0x46B460, 14, + 0x46BA37, GAME_10US_COMPACT, H_CALL, 0x46B460, 15, + 0x46BB14, GAME_10US_COMPACT, H_CALL, 0x46B460, 16, + 0x46BB43, GAME_10US_COMPACT, H_CALL, 0x46B460, 17, + 0x46BB6C, GAME_10US_COMPACT, H_CALL, 0x46B460, 18, + 0x46BBD7, GAME_10US_COMPACT, H_CALL, 0x46B460, 19, + 0x46BC34, GAME_10US_COMPACT, H_CALL, 0x46B460, 20, + 0x46BC69, GAME_10US_COMPACT, H_CALL, 0x46B460, 21, + 0x46BCCA, GAME_10US_COMPACT, H_CALL, 0x46B460, 22, + 0x46BCEA, GAME_10US_COMPACT, H_CALL, 0x46B460, 23, + 0x46BD31, GAME_10US_COMPACT, H_CALL, 0x46B460, 24, + 0x46BD69, GAME_10US_COMPACT, H_CALL, 0x46B460, 25, + 0x46BD98, GAME_10US_COMPACT, H_CALL, 0x46B460, 26, + 0x46BE34, GAME_10US_COMPACT, H_CALL, 0x46B460, 27, + 0x46BEA4, GAME_10US_COMPACT, H_CALL, 0x46B460, 28, + 0x46BF3D, GAME_10US_COMPACT, H_CALL, 0x46B460, 29, + 0x46BF57, GAME_10US_COMPACT, H_CALL, 0x46B460, 30, + 0x46BFDC, GAME_10US_COMPACT, H_CALL, 0x46B460, 31, + 0x46C053, GAME_10US_COMPACT, H_CALL, 0x46B460, 32, + 0x46C0B3, GAME_10US_COMPACT, H_CALL, 0x46B460, 33, + 0x46C14D, GAME_10US_COMPACT, H_CALL, 0x46B460, 34, + 0x46C1AB, GAME_10US_COMPACT, H_CALL, 0x46B460, 35, + 0x46C1CB, GAME_10US_COMPACT, H_CALL, 0x46B460, 36, + 0x46C232, GAME_10US_COMPACT, H_CALL, 0x46B460, 37, + 0x46C2B3, GAME_10US_COMPACT, H_CALL, 0x46B460, 38, + 0x46C338, GAME_10US_COMPACT, H_CALL, 0x46B460, 39, + 0x46C3A6, GAME_10US_COMPACT, H_CALL, 0x46B460, 40, + 0x46C4BB, GAME_10US_COMPACT, H_CALL, 0x46B460, 41, + 0x46C507, GAME_10US_COMPACT, H_CALL, 0x46B460, 42, + 0x46C556, GAME_10US_COMPACT, H_CALL, 0x46B460, 43, + 0x46C584, GAME_10US_COMPACT, H_CALL, 0x46B460, 44, + 0x46C619, GAME_10US_COMPACT, H_CALL, 0x46B460, 45, + 0x46C64B, GAME_10US_COMPACT, H_CALL, 0x46B460, 46, + 0x46C67E, GAME_10US_COMPACT, H_CALL, 0x46B460, 47, + 0x46C6A5, GAME_10US_COMPACT, H_CALL, 0x46B460, 48, + 0x46C6C4, GAME_10US_COMPACT, H_CALL, 0x46B460, 49, + 0x46C6E8, GAME_10US_COMPACT, H_CALL, 0x46B460, 50, + 0x46C74B, GAME_10US_COMPACT, H_CALL, 0x46B460, 51, + 0x46C7FB, GAME_10US_COMPACT, H_CALL, 0x46B460, 52, + 0x46C85E, GAME_10US_COMPACT, H_CALL, 0x46B460, 53, + 0x46C92C, GAME_10US_COMPACT, H_CALL, 0x46B460, 54, + 0x46C98C, GAME_10US_COMPACT, H_CALL, 0x46B460, 55, + 0x46C9F6, GAME_10US_COMPACT, H_CALL, 0x46B460, 56, + 0x46CA40, GAME_10US_COMPACT, H_CALL, 0x46B460, 57, + 0x46CA8C, GAME_10US_COMPACT, H_CALL, 0x46B460, 58, + 0x46D092, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x46D0D7, GAME_10US_COMPACT, H_CALL, 0x46D050, 2, + 0x46D179, GAME_10US_COMPACT, H_CALL, 0x46D050, 3, + 0x46D1DF, GAME_10US_COMPACT, H_CALL, 0x46D050, 4, + 0x46D21E, GAME_10US_COMPACT, H_CALL, 0x46D050, 5, + 0x46D24F, GAME_10US_COMPACT, H_CALL, 0x46D050, 6, + 0x46D294, GAME_10US_COMPACT, H_CALL, 0x46D050, 7, + 0x46D308, GAME_10US_COMPACT, H_CALL, 0x46D050, 8, + 0x46D3AB, GAME_10US_COMPACT, H_CALL, 0x46D050, 9, + 0x46D4FE, GAME_10US_COMPACT, H_CALL, 0x46D050, 10, + 0x46D549, GAME_10US_COMPACT, H_CALL, 0x46D050, 11, + 0x46D573, GAME_10US_COMPACT, H_CALL, 0x46D050, 12, + 0x46D662, GAME_10US_COMPACT, H_CALL, 0x46D050, 13, + 0x46D69E, GAME_10US_COMPACT, H_CALL, 0x46D050, 14, + 0x46D6F8, GAME_10US_COMPACT, H_CALL, 0x46D050, 15, + 0x46D722, GAME_10US_COMPACT, H_CALL, 0x46D050, 16, + 0x46D758, GAME_10US_COMPACT, H_CALL, 0x46D050, 17, + 0x46D8AB, GAME_10US_COMPACT, H_CALL, 0x46D050, 18, + 0x46D8F7, GAME_10US_COMPACT, H_CALL, 0x46D050, 19, + 0x46D998, GAME_10US_COMPACT, H_CALL, 0x46D050, 20, + 0x46DA39, GAME_10US_COMPACT, H_CALL, 0x46D050, 21, + 0x46DAEC, GAME_10US_COMPACT, H_CALL, 0x46D050, 22, + 0x46DB61, GAME_10US_COMPACT, H_CALL, 0x46D050, 23, + 0x46DBED, GAME_10US_COMPACT, H_CALL, 0x46D050, 24, + 0x46DC30, GAME_10US_COMPACT, H_CALL, 0x46D050, 25, + 0x46DCB1, GAME_10US_COMPACT, H_CALL, 0x46D050, 26, + 0x46DCF4, GAME_10US_COMPACT, H_CALL, 0x46D050, 27, + 0x46DD7A, GAME_10US_COMPACT, H_CALL, 0x46D050, 28, + 0x46DD99, GAME_10US_COMPACT, H_CALL, 0x46D050, 29, + 0x46DDCE, GAME_10US_COMPACT, H_CALL, 0x46D050, 30, + 0x46DE12, GAME_10US_COMPACT, H_CALL, 0x46D050, 31, + 0x46DE42, GAME_10US_COMPACT, H_CALL, 0x46D050, 32, + 0x46DF7E, GAME_10US_COMPACT, H_CALL, 0x46D050, 33, + 0x46DFC9, GAME_10US_COMPACT, H_CALL, 0x46D050, 34, + 0x46E00D, GAME_10US_COMPACT, H_CALL, 0x46D050, 35, + 0x46E176, GAME_10US_COMPACT, H_CALL, 0x46D050, 36, + 0x46E34C, GAME_10US_COMPACT, H_CALL, 0x46D050, 37, + 0x46E37E, GAME_10US_COMPACT, H_CALL, 0x46D050, 38, + 0x46E3AC, GAME_10US_COMPACT, H_CALL, 0x46D050, 39, + 0x46E415, GAME_10US_COMPACT, H_CALL, 0x46D050, 40, + 0x46E454, GAME_10US_COMPACT, H_CALL, 0x46D050, 41, + 0x46E486, GAME_10US_COMPACT, H_CALL, 0x46D050, 42, + 0x46E4B8, GAME_10US_COMPACT, H_CALL, 0x46D050, 43, + 0x46E4CF, GAME_10US_COMPACT, H_CALL, 0x46D050, 44, + 0x46E562, GAME_10US_COMPACT, H_CALL, 0x46D050, 45, + 0x46E679, GAME_10US_COMPACT, H_CALL, 0x46D050, 46, + 0x46E703, GAME_10US_COMPACT, H_CALL, 0x46D050, 47, + 0x46E780, GAME_10US_COMPACT, H_CALL, 0x46D050, 48, + 0x46E7C0, GAME_10US_COMPACT, H_CALL, 0x46D050, 49, + 0x46E806, GAME_10US_COMPACT, H_CALL, 0x46D050, 50, + 0x46E84E, GAME_10US_COMPACT, H_CALL, 0x46D050, 51, + 0x46E91E, GAME_10US_COMPACT, H_CALL, 0x46D050, 52, + 0x46E93F, GAME_10US_COMPACT, H_CALL, 0x46D050, 53, + 0x46EA00, GAME_10US_COMPACT, H_CALL, 0x46D050, 54, + 0x46EA3C, GAME_10US_COMPACT, H_CALL, 0x46D050, 55, + 0x46EAEB, GAME_10US_COMPACT, H_CALL, 0x46D050, 56, + 0x46EB07, GAME_10US_COMPACT, H_CALL, 0x46D050, 57, + 0x46EB9B, GAME_10US_COMPACT, H_CALL, 0x46D050, 58, + 0x46EBB3, GAME_10US_COMPACT, H_CALL, 0x46D050, 59, + 0x46EBDF, GAME_10US_COMPACT, H_CALL, 0x46D050, 60, + 0x46EC47, GAME_10US_COMPACT, H_CALL, 0x46D050, 61, + 0x46ECB4, GAME_10US_COMPACT, H_CALL, 0x46D050, 62, + 0x46ED17, GAME_10US_COMPACT, H_CALL, 0x46D050, 63, + 0x470177, GAME_10US_COMPACT, H_CALL, 0x470150, 1, + 0x4701C7, GAME_10US_COMPACT, H_CALL, 0x470150, 2, + 0x4701F0, GAME_10US_COMPACT, H_CALL, 0x470150, 3, + 0x470AD2, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x470B30, GAME_10US_COMPACT, H_CALL, 0x470A90, 2, + 0x470B74, GAME_10US_COMPACT, H_CALL, 0x470A90, 3, + 0x470B95, GAME_10US_COMPACT, H_CALL, 0x470A90, 4, + 0x470C10, GAME_10US_COMPACT, H_CALL, 0x470A90, 5, + 0x470C85, GAME_10US_COMPACT, H_CALL, 0x470A90, 6, + 0x470CC9, GAME_10US_COMPACT, H_CALL, 0x470A90, 7, + 0x470CF8, GAME_10US_COMPACT, H_CALL, 0x470A90, 8, + 0x470D53, GAME_10US_COMPACT, H_CALL, 0x470A90, 9, + 0x470DAE, GAME_10US_COMPACT, H_CALL, 0x470A90, 10, + 0x470E19, GAME_10US_COMPACT, H_CALL, 0x470A90, 11, + 0x470E5F, GAME_10US_COMPACT, H_CALL, 0x470A90, 12, + 0x470E8A, GAME_10US_COMPACT, H_CALL, 0x470A90, 13, + 0x470EB8, GAME_10US_COMPACT, H_CALL, 0x470A90, 14, + 0x470EDD, GAME_10US_COMPACT, H_CALL, 0x470A90, 15, + 0x470F7B, GAME_10US_COMPACT, H_CALL, 0x470A90, 16, + 0x470FAE, GAME_10US_COMPACT, H_CALL, 0x470A90, 17, + 0x470FF9, GAME_10US_COMPACT, H_CALL, 0x470A90, 18, + 0x471060, GAME_10US_COMPACT, H_CALL, 0x470A90, 19, + 0x471165, GAME_10US_COMPACT, H_CALL, 0x470A90, 20, + 0x4711AF, GAME_10US_COMPACT, H_CALL, 0x470A90, 21, + 0x4711DD, GAME_10US_COMPACT, H_CALL, 0x470A90, 22, + 0x47125E, GAME_10US_COMPACT, H_CALL, 0x470A90, 23, + 0x4712AF, GAME_10US_COMPACT, H_CALL, 0x470A90, 24, + 0x4712E3, GAME_10US_COMPACT, H_CALL, 0x470A90, 25, + 0x47134F, GAME_10US_COMPACT, H_CALL, 0x470A90, 26, + 0x4713B9, GAME_10US_COMPACT, H_CALL, 0x470A90, 27, + 0x471474, GAME_10US_COMPACT, H_CALL, 0x470A90, 28, + 0x4714A9, GAME_10US_COMPACT, H_CALL, 0x470A90, 29, + 0x471508, GAME_10US_COMPACT, H_CALL, 0x470A90, 30, + 0x471532, GAME_10US_COMPACT, H_CALL, 0x470A90, 31, + 0x4715BC, GAME_10US_COMPACT, H_CALL, 0x470A90, 32, + 0x47173E, GAME_10US_COMPACT, H_CALL, 0x470A90, 33, + 0x471778, GAME_10US_COMPACT, H_CALL, 0x470A90, 34, + 0x4717D0, GAME_10US_COMPACT, H_CALL, 0x470A90, 35, + 0x47188E, GAME_10US_COMPACT, H_CALL, 0x470A90, 36, + 0x4718BE, GAME_10US_COMPACT, H_CALL, 0x470A90, 37, + 0x47191A, GAME_10US_COMPACT, H_CALL, 0x470A90, 38, + 0x471962, GAME_10US_COMPACT, H_CALL, 0x470A90, 39, + 0x471A04, GAME_10US_COMPACT, H_CALL, 0x470A90, 40, + 0x471A31, GAME_10US_COMPACT, H_CALL, 0x470A90, 41, + 0x471A74, GAME_10US_COMPACT, H_CALL, 0x470A90, 42, + 0x471AB1, GAME_10US_COMPACT, H_CALL, 0x470A90, 43, + 0x471B02, GAME_10US_COMPACT, H_CALL, 0x470A90, 44, + 0x471B53, GAME_10US_COMPACT, H_CALL, 0x470A90, 45, + 0x471BA4, GAME_10US_COMPACT, H_CALL, 0x470A90, 46, + 0x471BF5, GAME_10US_COMPACT, H_CALL, 0x470A90, 47, + 0x471C40, GAME_10US_COMPACT, H_CALL, 0x470A90, 48, + 0x471C93, GAME_10US_COMPACT, H_CALL, 0x470A90, 49, + 0x471CED, GAME_10US_COMPACT, H_CALL, 0x470A90, 50, + 0x471D2F, GAME_10US_COMPACT, H_CALL, 0x470A90, 51, + 0x471D7E, GAME_10US_COMPACT, H_CALL, 0x470A90, 52, + 0x471E1F, GAME_10US_COMPACT, H_CALL, 0x470A90, 53, + 0x471EA9, GAME_10US_COMPACT, H_CALL, 0x470A90, 54, + 0x471EEC, GAME_10US_COMPACT, H_CALL, 0x470A90, 55, + 0x47209B, GAME_10US_COMPACT, H_CALL, 0x470A90, 56, + 0x4720BF, GAME_10US_COMPACT, H_CALL, 0x470A90, 57, + 0x472104, GAME_10US_COMPACT, H_CALL, 0x470A90, 58, + 0x47236E, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x4723CA, GAME_10US_COMPACT, H_CALL, 0x472310, 2, + 0x47257A, GAME_10US_COMPACT, H_CALL, 0x472310, 3, + 0x47267B, GAME_10US_COMPACT, H_CALL, 0x472310, 4, + 0x47275D, GAME_10US_COMPACT, H_CALL, 0x472310, 5, + 0x47278A, GAME_10US_COMPACT, H_CALL, 0x472310, 6, + 0x4727B8, GAME_10US_COMPACT, H_CALL, 0x472310, 7, + 0x472849, GAME_10US_COMPACT, H_CALL, 0x472310, 8, + 0x472870, GAME_10US_COMPACT, H_CALL, 0x472310, 9, + 0x472936, GAME_10US_COMPACT, H_CALL, 0x472310, 10, + 0x4729A8, GAME_10US_COMPACT, H_CALL, 0x472310, 11, + 0x472A36, GAME_10US_COMPACT, H_CALL, 0x472310, 12, + 0x472AC3, GAME_10US_COMPACT, H_CALL, 0x472310, 13, + 0x472B8C, GAME_10US_COMPACT, H_CALL, 0x472310, 14, + 0x472BD4, GAME_10US_COMPACT, H_CALL, 0x472310, 15, + 0x472C1F, GAME_10US_COMPACT, H_CALL, 0x472310, 16, + 0x472C67, GAME_10US_COMPACT, H_CALL, 0x472310, 17, + 0x472D97, GAME_10US_COMPACT, H_CALL, 0x472310, 18, + 0x472DF6, GAME_10US_COMPACT, H_CALL, 0x472310, 19, + 0x472E4E, GAME_10US_COMPACT, H_CALL, 0x472310, 20, + 0x472EC0, GAME_10US_COMPACT, H_CALL, 0x472310, 21, + 0x472F5B, GAME_10US_COMPACT, H_CALL, 0x472310, 22, + 0x472FD8, GAME_10US_COMPACT, H_CALL, 0x472310, 23, + 0x473041, GAME_10US_COMPACT, H_CALL, 0x472310, 24, + 0x4730BA, GAME_10US_COMPACT, H_CALL, 0x472310, 25, + 0x4730F8, GAME_10US_COMPACT, H_CALL, 0x472310, 26, + 0x473140, GAME_10US_COMPACT, H_CALL, 0x472310, 27, + 0x4731D2, GAME_10US_COMPACT, H_CALL, 0x472310, 28, + 0x473211, GAME_10US_COMPACT, H_CALL, 0x472310, 29, + 0x4732B5, GAME_10US_COMPACT, H_CALL, 0x472310, 30, + 0x473354, GAME_10US_COMPACT, H_CALL, 0x472310, 31, + 0x4733AA, GAME_10US_COMPACT, H_CALL, 0x472310, 32, + 0x47342A, GAME_10US_COMPACT, H_CALL, 0x472310, 33, + 0x473601, GAME_10US_COMPACT, H_CALL, 0x472310, 34, + 0x47361B, GAME_10US_COMPACT, H_CALL, 0x472310, 35, + 0x47367D, GAME_10US_COMPACT, H_CALL, 0x472310, 36, + 0x4736AA, GAME_10US_COMPACT, H_CALL, 0x472310, 37, + 0x47379F, GAME_10US_COMPACT, H_CALL, 0x472310, 38, + 0x473844, GAME_10US_COMPACT, H_CALL, 0x472310, 39, + 0x473A05, GAME_10US_COMPACT, H_CALL, 0x472310, 40, + 0x473BF9, GAME_10US_COMPACT, H_CALL, 0x472310, 41, + 0x473C3C, GAME_10US_COMPACT, H_CALL, 0x472310, 42, + 0x473CB7, GAME_10US_COMPACT, H_CALL, 0x472310, 43, + 0x473D3C, GAME_10US_COMPACT, H_CALL, 0x472310, 44, + 0x473DA7, GAME_10US_COMPACT, H_CALL, 0x472310, 45, + 0x473DD5, GAME_10US_COMPACT, H_CALL, 0x472310, 46, + 0x473E55, GAME_10US_COMPACT, H_CALL, 0x472310, 47, + 0x473EAC, GAME_10US_COMPACT, H_CALL, 0x472310, 48, + 0x473EE5, GAME_10US_COMPACT, H_CALL, 0x472310, 49, + 0x473F1D, GAME_10US_COMPACT, H_CALL, 0x472310, 50, + 0x473F56, GAME_10US_COMPACT, H_CALL, 0x472310, 51, + 0x473F8E, GAME_10US_COMPACT, H_CALL, 0x472310, 52, + 0x4740E0, GAME_10US_COMPACT, H_CALL, 0x472310, 53, + 0x47412C, GAME_10US_COMPACT, H_CALL, 0x472310, 54, + 0x47414C, GAME_10US_COMPACT, H_CALL, 0x472310, 55, + 0x474193, GAME_10US_COMPACT, H_CALL, 0x472310, 56, + 0x4741AF, GAME_10US_COMPACT, H_CALL, 0x472310, 57, + 0x4741E0, GAME_10US_COMPACT, H_CALL, 0x472310, 58, + 0x474265, GAME_10US_COMPACT, H_CALL, 0x472310, 59, + 0x4742B0, GAME_10US_COMPACT, H_CALL, 0x472310, 60, + 0x474326, GAME_10US_COMPACT, H_CALL, 0x472310, 61, + 0x474942, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x474983, GAME_10US_COMPACT, H_CALL, 0x474900, 2, + 0x4749BF, GAME_10US_COMPACT, H_CALL, 0x474900, 3, + 0x474A08, GAME_10US_COMPACT, H_CALL, 0x474900, 4, + 0x474BD8, GAME_10US_COMPACT, H_CALL, 0x474900, 5, + 0x474C0E, GAME_10US_COMPACT, H_CALL, 0x474900, 6, + 0x474E47, GAME_10US_COMPACT, H_CALL, 0x474900, 7, + 0x474E8C, GAME_10US_COMPACT, H_CALL, 0x474900, 8, + 0x474EAC, GAME_10US_COMPACT, H_CALL, 0x474900, 9, + 0x474EDB, GAME_10US_COMPACT, H_CALL, 0x474900, 10, + 0x474F26, GAME_10US_COMPACT, H_CALL, 0x474900, 11, + 0x474F90, GAME_10US_COMPACT, H_CALL, 0x474900, 12, + 0x474FDD, GAME_10US_COMPACT, H_CALL, 0x474900, 13, + 0x475011, GAME_10US_COMPACT, H_CALL, 0x474900, 14, + 0x47504D, GAME_10US_COMPACT, H_CALL, 0x474900, 15, + 0x475089, GAME_10US_COMPACT, H_CALL, 0x474900, 16, + 0x4750A9, GAME_10US_COMPACT, H_CALL, 0x474900, 17, + 0x475174, GAME_10US_COMPACT, H_CALL, 0x474900, 18, + 0x4751A9, GAME_10US_COMPACT, H_CALL, 0x474900, 19, + 0x4751DD, GAME_10US_COMPACT, H_CALL, 0x474900, 20, + 0x475248, GAME_10US_COMPACT, H_CALL, 0x474900, 21, + 0x475283, GAME_10US_COMPACT, H_CALL, 0x474900, 22, + 0x4752B1, GAME_10US_COMPACT, H_CALL, 0x474900, 23, + 0x4752DB, GAME_10US_COMPACT, H_CALL, 0x474900, 24, + 0x47530B, GAME_10US_COMPACT, H_CALL, 0x474900, 25, + 0x475330, GAME_10US_COMPACT, H_CALL, 0x474900, 26, + 0x475373, GAME_10US_COMPACT, H_CALL, 0x474900, 27, + 0x4753B4, GAME_10US_COMPACT, H_CALL, 0x474900, 28, + 0x4753DA, GAME_10US_COMPACT, H_CALL, 0x474900, 29, + 0x475404, GAME_10US_COMPACT, H_CALL, 0x474900, 30, + 0x4754BC, GAME_10US_COMPACT, H_CALL, 0x474900, 31, + 0x475541, GAME_10US_COMPACT, H_CALL, 0x474900, 32, + 0x4755D4, GAME_10US_COMPACT, H_CALL, 0x474900, 33, + 0x475606, GAME_10US_COMPACT, H_CALL, 0x474900, 34, + 0x475636, GAME_10US_COMPACT, H_CALL, 0x474900, 35, + 0x475665, GAME_10US_COMPACT, H_CALL, 0x474900, 36, + 0x475697, GAME_10US_COMPACT, H_CALL, 0x474900, 37, + 0x4756B8, GAME_10US_COMPACT, H_CALL, 0x474900, 38, + 0x47583C, GAME_10US_COMPACT, H_CALL, 0x474900, 39, + 0x475895, GAME_10US_COMPACT, H_CALL, 0x474900, 40, + 0x4758B5, GAME_10US_COMPACT, H_CALL, 0x474900, 41, + 0x4758D4, GAME_10US_COMPACT, H_CALL, 0x474900, 42, + 0x47592A, GAME_10US_COMPACT, H_CALL, 0x474900, 43, + 0x4759CF, GAME_10US_COMPACT, H_CALL, 0x474900, 44, + 0x475B9A, GAME_10US_COMPACT, H_CALL, 0x474900, 45, + 0x475BD8, GAME_10US_COMPACT, H_CALL, 0x474900, 46, + 0x475BF7, GAME_10US_COMPACT, H_CALL, 0x474900, 47, + 0x475C44, GAME_10US_COMPACT, H_CALL, 0x474900, 48, + 0x475C95, GAME_10US_COMPACT, H_CALL, 0x474900, 49, + 0x475CB4, GAME_10US_COMPACT, H_CALL, 0x474900, 50, + 0x475D77, GAME_10US_COMPACT, H_CALL, 0x474900, 51, + 0x475DB5, GAME_10US_COMPACT, H_CALL, 0x474900, 52, + 0x475DE8, GAME_10US_COMPACT, H_CALL, 0x474900, 53, + 0x475E32, GAME_10US_COMPACT, H_CALL, 0x474900, 54, + 0x475E4A, GAME_10US_COMPACT, H_CALL, 0x474900, 55, + 0x475EBB, GAME_10US_COMPACT, H_CALL, 0x474900, 56, + 0x475F0E, GAME_10US_COMPACT, H_CALL, 0x474900, 57, + 0x475F59, GAME_10US_COMPACT, H_CALL, 0x474900, 58, + 0x475FA4, GAME_10US_COMPACT, H_CALL, 0x474900, 59, + 0x476043, GAME_10US_COMPACT, H_CALL, 0x474900, 60, + 0x476092, GAME_10US_COMPACT, H_CALL, 0x474900, 61, + 0x476100, GAME_10US_COMPACT, H_CALL, 0x474900, 62, + 0x4762FC, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1, + 0x47634A, GAME_10US_COMPACT, H_CALL, 0x4762D0, 2, + 0x4763BF, GAME_10US_COMPACT, H_CALL, 0x4762D0, 3, + 0x4763F6, GAME_10US_COMPACT, H_CALL, 0x4762D0, 4, + 0x476450, GAME_10US_COMPACT, H_CALL, 0x4762D0, 5, + 0x4764B3, GAME_10US_COMPACT, H_CALL, 0x4762D0, 6, + 0x476533, GAME_10US_COMPACT, H_CALL, 0x4762D0, 7, + 0x476567, GAME_10US_COMPACT, H_CALL, 0x4762D0, 8, + 0x4765A4, GAME_10US_COMPACT, H_CALL, 0x4762D0, 9, + 0x4765D9, GAME_10US_COMPACT, H_CALL, 0x4762D0, 10, + 0x47665D, GAME_10US_COMPACT, H_CALL, 0x4762D0, 11, + 0x47668E, GAME_10US_COMPACT, H_CALL, 0x4762D0, 12, + 0x4766C9, GAME_10US_COMPACT, H_CALL, 0x4762D0, 13, + 0x476705, GAME_10US_COMPACT, H_CALL, 0x4762D0, 14, + 0x476746, GAME_10US_COMPACT, H_CALL, 0x4762D0, 15, + 0x47678C, GAME_10US_COMPACT, H_CALL, 0x4762D0, 16, + 0x4767B6, GAME_10US_COMPACT, H_CALL, 0x4762D0, 17, + 0x476822, GAME_10US_COMPACT, H_CALL, 0x4762D0, 18, + 0x476852, GAME_10US_COMPACT, H_CALL, 0x4762D0, 19, + 0x47688E, GAME_10US_COMPACT, H_CALL, 0x4762D0, 20, + 0x4768F0, GAME_10US_COMPACT, H_CALL, 0x4762D0, 21, + 0x4769F7, GAME_10US_COMPACT, H_CALL, 0x4762D0, 22, + 0x476ACF, GAME_10US_COMPACT, H_CALL, 0x4762D0, 23, + 0x476BA5, GAME_10US_COMPACT, H_CALL, 0x4762D0, 24, + 0x476BE2, GAME_10US_COMPACT, H_CALL, 0x4762D0, 25, + 0x476C5C, GAME_10US_COMPACT, H_CALL, 0x4762D0, 26, + 0x476C9F, GAME_10US_COMPACT, H_CALL, 0x4762D0, 27, + 0x476CCA, GAME_10US_COMPACT, H_CALL, 0x4762D0, 28, + 0x476D14, GAME_10US_COMPACT, H_CALL, 0x4762D0, 29, + 0x476D43, GAME_10US_COMPACT, H_CALL, 0x4762D0, 30, + 0x476D9D, GAME_10US_COMPACT, H_CALL, 0x4762D0, 31, + 0x476E0D, GAME_10US_COMPACT, H_CALL, 0x4762D0, 32, + 0x476E72, GAME_10US_COMPACT, H_CALL, 0x4762D0, 33, + 0x476EED, GAME_10US_COMPACT, H_CALL, 0x4762D0, 34, + 0x476F14, GAME_10US_COMPACT, H_CALL, 0x4762D0, 35, + 0x476F3B, GAME_10US_COMPACT, H_CALL, 0x4762D0, 36, + 0x476FA1, GAME_10US_COMPACT, H_CALL, 0x4762D0, 37, + 0x47701B, GAME_10US_COMPACT, H_CALL, 0x4762D0, 38, + 0x477083, GAME_10US_COMPACT, H_CALL, 0x4762D0, 39, + 0x477179, GAME_10US_COMPACT, H_CALL, 0x4762D0, 40, + 0x47724B, GAME_10US_COMPACT, H_CALL, 0x4762D0, 41, + 0x4772A1, GAME_10US_COMPACT, H_CALL, 0x4762D0, 42, + 0x4772E9, GAME_10US_COMPACT, H_CALL, 0x4762D0, 43, + 0x477310, GAME_10US_COMPACT, H_CALL, 0x4762D0, 44, + 0x477327, GAME_10US_COMPACT, H_CALL, 0x4762D0, 45, + 0x477376, GAME_10US_COMPACT, H_CALL, 0x4762D0, 46, + 0x4773CF, GAME_10US_COMPACT, H_CALL, 0x4762D0, 47, + 0x4773FC, GAME_10US_COMPACT, H_CALL, 0x4762D0, 48, + 0x47742F, GAME_10US_COMPACT, H_CALL, 0x4762D0, 49, + 0x477450, GAME_10US_COMPACT, H_CALL, 0x4762D0, 50, + 0x47749E, GAME_10US_COMPACT, H_CALL, 0x4762D0, 51, + 0x4774DE, GAME_10US_COMPACT, H_CALL, 0x4762D0, 52, + 0x477549, GAME_10US_COMPACT, H_CALL, 0x4762D0, 53, + 0x477588, GAME_10US_COMPACT, H_CALL, 0x4762D0, 54, + 0x4775B7, GAME_10US_COMPACT, H_CALL, 0x4762D0, 55, + 0x477610, GAME_10US_COMPACT, H_CALL, 0x4762D0, 56, + 0x4776C7, GAME_10US_COMPACT, H_CALL, 0x4762D0, 57, + 0x477707, GAME_10US_COMPACT, H_CALL, 0x4762D0, 58, + 0x477741, GAME_10US_COMPACT, H_CALL, 0x4762D0, 59, + 0x477770, GAME_10US_COMPACT, H_CALL, 0x4762D0, 60, + 0x4777EA, GAME_10US_COMPACT, H_CALL, 0x4762D0, 61, + 0x477863, GAME_10US_COMPACT, H_CALL, 0x4762D0, 62, + 0x4778AE, GAME_10US_COMPACT, H_CALL, 0x4762D0, 63, + 0x4779AB, GAME_10US_COMPACT, H_CALL, 0x4762D0, 64, + 0x4779F0, GAME_10US_COMPACT, H_CALL, 0x4762D0, 65, + 0x477AAA, GAME_10US_COMPACT, H_CALL, 0x4762D0, 66, + 0x477AE9, GAME_10US_COMPACT, H_CALL, 0x4762D0, 67, + 0x477B90, GAME_10US_COMPACT, H_CALL, 0x4762D0, 68, + 0x478042, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x47808D, GAME_10US_COMPACT, H_CALL, 0x478000, 2, + 0x478111, GAME_10US_COMPACT, H_CALL, 0x478000, 3, + 0x4781A3, GAME_10US_COMPACT, H_CALL, 0x478000, 4, + 0x4781E5, GAME_10US_COMPACT, H_CALL, 0x478000, 5, + 0x478225, GAME_10US_COMPACT, H_CALL, 0x478000, 6, + 0x47826A, GAME_10US_COMPACT, H_CALL, 0x478000, 7, + 0x4782A3, GAME_10US_COMPACT, H_CALL, 0x478000, 8, + 0x4782DD, GAME_10US_COMPACT, H_CALL, 0x478000, 9, + 0x478319, GAME_10US_COMPACT, H_CALL, 0x478000, 10, + 0x4784EA, GAME_10US_COMPACT, H_CALL, 0x478000, 11, + 0x478538, GAME_10US_COMPACT, H_CALL, 0x478000, 12, + 0x47859D, GAME_10US_COMPACT, H_CALL, 0x478000, 13, + 0x4785CA, GAME_10US_COMPACT, H_CALL, 0x478000, 14, + 0x478615, GAME_10US_COMPACT, H_CALL, 0x478000, 15, + 0x478673, GAME_10US_COMPACT, H_CALL, 0x478000, 16, + 0x4786DA, GAME_10US_COMPACT, H_CALL, 0x478000, 17, + 0x478762, GAME_10US_COMPACT, H_CALL, 0x478000, 18, + 0x478809, GAME_10US_COMPACT, H_CALL, 0x478000, 19, + 0x47884F, GAME_10US_COMPACT, H_CALL, 0x478000, 20, + 0x478885, GAME_10US_COMPACT, H_CALL, 0x478000, 21, + 0x4788BC, GAME_10US_COMPACT, H_CALL, 0x478000, 22, + 0x4788FF, GAME_10US_COMPACT, H_CALL, 0x478000, 23, + 0x478956, GAME_10US_COMPACT, H_CALL, 0x478000, 24, + 0x47898C, GAME_10US_COMPACT, H_CALL, 0x478000, 25, + 0x4789C3, GAME_10US_COMPACT, H_CALL, 0x478000, 26, + 0x4789E2, GAME_10US_COMPACT, H_CALL, 0x478000, 27, + 0x478A17, GAME_10US_COMPACT, H_CALL, 0x478000, 28, + 0x478BCC, GAME_10US_COMPACT, H_CALL, 0x478000, 29, + 0x478C20, GAME_10US_COMPACT, H_CALL, 0x478000, 30, + 0x478C57, GAME_10US_COMPACT, H_CALL, 0x478000, 31, + 0x478C73, GAME_10US_COMPACT, H_CALL, 0x478000, 32, + 0x478D33, GAME_10US_COMPACT, H_CALL, 0x478000, 33, + 0x478D79, GAME_10US_COMPACT, H_CALL, 0x478000, 34, + 0x478DA9, GAME_10US_COMPACT, H_CALL, 0x478000, 35, + 0x478DCB, GAME_10US_COMPACT, H_CALL, 0x478000, 36, + 0x478E17, GAME_10US_COMPACT, H_CALL, 0x478000, 37, + 0x478E56, GAME_10US_COMPACT, H_CALL, 0x478000, 38, + 0x478EA8, GAME_10US_COMPACT, H_CALL, 0x478000, 39, + 0x478ECF, GAME_10US_COMPACT, H_CALL, 0x478000, 40, + 0x478EF6, GAME_10US_COMPACT, H_CALL, 0x478000, 41, + 0x478F47, GAME_10US_COMPACT, H_CALL, 0x478000, 42, + 0x478F72, GAME_10US_COMPACT, H_CALL, 0x478000, 43, + 0x478FB6, GAME_10US_COMPACT, H_CALL, 0x478000, 44, + 0x478FD6, GAME_10US_COMPACT, H_CALL, 0x478000, 45, + 0x47906F, GAME_10US_COMPACT, H_CALL, 0x478000, 46, + 0x47910B, GAME_10US_COMPACT, H_CALL, 0x478000, 47, + 0x479180, GAME_10US_COMPACT, H_CALL, 0x478000, 48, + 0x4791CC, GAME_10US_COMPACT, H_CALL, 0x478000, 49, + 0x479207, GAME_10US_COMPACT, H_CALL, 0x478000, 50, + 0x479226, GAME_10US_COMPACT, H_CALL, 0x478000, 51, + 0x479271, GAME_10US_COMPACT, H_CALL, 0x478000, 52, + 0x4792F7, GAME_10US_COMPACT, H_CALL, 0x478000, 53, + 0x479323, GAME_10US_COMPACT, H_CALL, 0x478000, 54, + 0x479371, GAME_10US_COMPACT, H_CALL, 0x478000, 55, + 0x479391, GAME_10US_COMPACT, H_CALL, 0x478000, 56, + 0x4793B4, GAME_10US_COMPACT, H_CALL, 0x478000, 57, + 0x479405, GAME_10US_COMPACT, H_CALL, 0x478000, 58, + 0x47945F, GAME_10US_COMPACT, H_CALL, 0x478000, 59, + 0x4794A3, GAME_10US_COMPACT, H_CALL, 0x478000, 60, + 0x479504, GAME_10US_COMPACT, H_CALL, 0x478000, 61, + 0x47953A, GAME_10US_COMPACT, H_CALL, 0x478000, 62, + 0x479590, GAME_10US_COMPACT, H_CALL, 0x478000, 63, + 0x4795CB, GAME_10US_COMPACT, H_CALL, 0x478000, 64, + 0x47961F, GAME_10US_COMPACT, H_CALL, 0x478000, 65, + 0x479673, GAME_10US_COMPACT, H_CALL, 0x478000, 66, + 0x4796F0, GAME_10US_COMPACT, H_CALL, 0x478000, 67, + 0x479710, GAME_10US_COMPACT, H_CALL, 0x478000, 68, + 0x47972F, GAME_10US_COMPACT, H_CALL, 0x478000, 69, + 0x479778, GAME_10US_COMPACT, H_CALL, 0x478000, 70, + 0x4797BA, GAME_10US_COMPACT, H_CALL, 0x478000, 71, + 0x47981B, GAME_10US_COMPACT, H_CALL, 0x478000, 72, + 0x479835, GAME_10US_COMPACT, H_CALL, 0x478000, 73, + 0x479935, GAME_10US_COMPACT, H_CALL, 0x478000, 74, + 0x47995B, GAME_10US_COMPACT, H_CALL, 0x478000, 75, + 0x479DDE, GAME_10US_COMPACT, H_CALL, 0x479DA0, 1, + 0x479E38, GAME_10US_COMPACT, H_CALL, 0x479DA0, 2, + 0x479F0B, GAME_10US_COMPACT, H_CALL, 0x479DA0, 3, + 0x479F25, GAME_10US_COMPACT, H_CALL, 0x479DA0, 4, + 0x479F41, GAME_10US_COMPACT, H_CALL, 0x479DA0, 5, + 0x47A001, GAME_10US_COMPACT, H_CALL, 0x479DA0, 6, + 0x47A024, GAME_10US_COMPACT, H_CALL, 0x479DA0, 7, + 0x47A05B, GAME_10US_COMPACT, H_CALL, 0x479DA0, 8, + 0x47A08D, GAME_10US_COMPACT, H_CALL, 0x479DA0, 9, + 0x47A0D8, GAME_10US_COMPACT, H_CALL, 0x479DA0, 10, + 0x47A12D, GAME_10US_COMPACT, H_CALL, 0x479DA0, 11, + 0x47A1B5, GAME_10US_COMPACT, H_CALL, 0x479DA0, 12, + 0x47A1EB, GAME_10US_COMPACT, H_CALL, 0x479DA0, 13, + 0x47A23F, GAME_10US_COMPACT, H_CALL, 0x479DA0, 14, + 0x47A273, GAME_10US_COMPACT, H_CALL, 0x479DA0, 15, + 0x47A2A0, GAME_10US_COMPACT, H_CALL, 0x479DA0, 16, + 0x47A2D1, GAME_10US_COMPACT, H_CALL, 0x479DA0, 17, + 0x47A49C, GAME_10US_COMPACT, H_CALL, 0x479DA0, 18, + 0x47A4BC, GAME_10US_COMPACT, H_CALL, 0x479DA0, 19, + 0x47A512, GAME_10US_COMPACT, H_CALL, 0x479DA0, 20, + 0x47A53D, GAME_10US_COMPACT, H_CALL, 0x479DA0, 21, + 0x47A55C, GAME_10US_COMPACT, H_CALL, 0x479DA0, 22, + 0x47A5A4, GAME_10US_COMPACT, H_CALL, 0x479DA0, 23, + 0x47A5F9, GAME_10US_COMPACT, H_CALL, 0x479DA0, 24, + 0x47A7A6, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x47A7E5, GAME_10US_COMPACT, H_CALL, 0x47A760, 2, + 0x47A824, GAME_10US_COMPACT, H_CALL, 0x47A760, 3, + 0x47A884, GAME_10US_COMPACT, H_CALL, 0x47A760, 4, + 0x47A925, GAME_10US_COMPACT, H_CALL, 0x47A760, 5, + 0x47A9BA, GAME_10US_COMPACT, H_CALL, 0x47A760, 6, + 0x47AA05, GAME_10US_COMPACT, H_CALL, 0x47A760, 7, + 0x47AA4D, GAME_10US_COMPACT, H_CALL, 0x47A760, 8, + 0x47AA91, GAME_10US_COMPACT, H_CALL, 0x47A760, 9, + 0x47AAEF, GAME_10US_COMPACT, H_CALL, 0x47A760, 10, + 0x47AB24, GAME_10US_COMPACT, H_CALL, 0x47A760, 11, + 0x47AB5B, GAME_10US_COMPACT, H_CALL, 0x47A760, 12, + 0x47ABC0, GAME_10US_COMPACT, H_CALL, 0x47A760, 13, + 0x47AC0A, GAME_10US_COMPACT, H_CALL, 0x47A760, 14, + 0x47AC42, GAME_10US_COMPACT, H_CALL, 0x47A760, 15, + 0x47AC69, GAME_10US_COMPACT, H_CALL, 0x47A760, 16, + 0x47AD14, GAME_10US_COMPACT, H_CALL, 0x47A760, 17, + 0x47AD5E, GAME_10US_COMPACT, H_CALL, 0x47A760, 18, + 0x47ADBD, GAME_10US_COMPACT, H_CALL, 0x47A760, 19, + 0x47AE30, GAME_10US_COMPACT, H_CALL, 0x47A760, 20, + 0x47AE99, GAME_10US_COMPACT, H_CALL, 0x47A760, 21, + 0x47AED3, GAME_10US_COMPACT, H_CALL, 0x47A760, 22, + 0x47AFD6, GAME_10US_COMPACT, H_CALL, 0x47A760, 23, + 0x47B010, GAME_10US_COMPACT, H_CALL, 0x47A760, 24, + 0x47B02F, GAME_10US_COMPACT, H_CALL, 0x47A760, 25, + 0x47B0EB, GAME_10US_COMPACT, H_CALL, 0x47A760, 26, + 0x47B10D, GAME_10US_COMPACT, H_CALL, 0x47A760, 27, + 0x47B149, GAME_10US_COMPACT, H_CALL, 0x47A760, 28, + 0x47B17D, GAME_10US_COMPACT, H_CALL, 0x47A760, 29, + 0x47B1A8, GAME_10US_COMPACT, H_CALL, 0x47A760, 30, + 0x47B254, GAME_10US_COMPACT, H_CALL, 0x47A760, 31, + 0x47B273, GAME_10US_COMPACT, H_CALL, 0x47A760, 32, + 0x47B2C0, GAME_10US_COMPACT, H_CALL, 0x47A760, 33, + 0x47B2DC, GAME_10US_COMPACT, H_CALL, 0x47A760, 34, + 0x47B347, GAME_10US_COMPACT, H_CALL, 0x47A760, 35, + 0x47B37E, GAME_10US_COMPACT, H_CALL, 0x47A760, 36, + 0x47B3BF, GAME_10US_COMPACT, H_CALL, 0x47A760, 37, + 0x47B40A, GAME_10US_COMPACT, H_CALL, 0x47A760, 38, + 0x47B433, GAME_10US_COMPACT, H_CALL, 0x47A760, 39, + 0x47B47D, GAME_10US_COMPACT, H_CALL, 0x47A760, 40, + 0x47B50D, GAME_10US_COMPACT, H_CALL, 0x47A760, 41, + 0x47B58B, GAME_10US_COMPACT, H_CALL, 0x47A760, 42, + 0x47B5CF, GAME_10US_COMPACT, H_CALL, 0x47A760, 43, + 0x47B61D, GAME_10US_COMPACT, H_CALL, 0x47A760, 44, + 0x47B63E, GAME_10US_COMPACT, H_CALL, 0x47A760, 45, + 0x47B69C, GAME_10US_COMPACT, H_CALL, 0x47A760, 46, + 0x47B6C4, GAME_10US_COMPACT, H_CALL, 0x47A760, 47, + 0x47B70E, GAME_10US_COMPACT, H_CALL, 0x47A760, 48, + 0x47B760, GAME_10US_COMPACT, H_CALL, 0x47A760, 49, + 0x47B7A6, GAME_10US_COMPACT, H_CALL, 0x47A760, 50, + 0x47B7E8, GAME_10US_COMPACT, H_CALL, 0x47A760, 51, + 0x47B850, GAME_10US_COMPACT, H_CALL, 0x47A760, 52, + 0x47B892, GAME_10US_COMPACT, H_CALL, 0x47A760, 53, + 0x47B8D2, GAME_10US_COMPACT, H_CALL, 0x47A760, 54, + 0x47B8FE, GAME_10US_COMPACT, H_CALL, 0x47A760, 55, + 0x47B937, GAME_10US_COMPACT, H_CALL, 0x47A760, 56, + 0x47B987, GAME_10US_COMPACT, H_CALL, 0x47A760, 57, + 0x47B9B3, GAME_10US_COMPACT, H_CALL, 0x47A760, 58, + 0x47B9FF, GAME_10US_COMPACT, H_CALL, 0x47A760, 59, + 0x47BA36, GAME_10US_COMPACT, H_CALL, 0x47A760, 60, + 0x47BA9C, GAME_10US_COMPACT, H_CALL, 0x47A760, 61, + 0x47BB1B, GAME_10US_COMPACT, H_CALL, 0x47A760, 62, + 0x47BBBA, GAME_10US_COMPACT, H_CALL, 0x47A760, 63, + 0x47BBFB, GAME_10US_COMPACT, H_CALL, 0x47A760, 64, + 0x47BC6D, GAME_10US_COMPACT, H_CALL, 0x47A760, 65, + 0x47BC93, GAME_10US_COMPACT, H_CALL, 0x47A760, 66, + 0x47BCBB, GAME_10US_COMPACT, H_CALL, 0x47A760, 67, + 0x47BCEC, GAME_10US_COMPACT, H_CALL, 0x47A760, 68, + 0x47BD2B, GAME_10US_COMPACT, H_CALL, 0x47A760, 69, + 0x47BD86, GAME_10US_COMPACT, H_CALL, 0x47A760, 70, + 0x47BDB8, GAME_10US_COMPACT, H_CALL, 0x47A760, 71, + 0x47BDD6, GAME_10US_COMPACT, H_CALL, 0x47A760, 72, + 0x47BEEB, GAME_10US_COMPACT, H_CALL, 0x47A760, 73, + 0x47C12B, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x47C16D, GAME_10US_COMPACT, H_CALL, 0x47C100, 2, + 0x47C233, GAME_10US_COMPACT, H_CALL, 0x47C100, 3, + 0x47C291, GAME_10US_COMPACT, H_CALL, 0x47C100, 4, + 0x47C314, GAME_10US_COMPACT, H_CALL, 0x47C100, 5, + 0x47C3FD, GAME_10US_COMPACT, H_CALL, 0x47C100, 6, + 0x47C44A, GAME_10US_COMPACT, H_CALL, 0x47C100, 7, + 0x47C4DF, GAME_10US_COMPACT, H_CALL, 0x47C100, 8, + 0x47C51C, GAME_10US_COMPACT, H_CALL, 0x47C100, 9, + 0x47C53B, GAME_10US_COMPACT, H_CALL, 0x47C100, 10, + 0x47C59C, GAME_10US_COMPACT, H_CALL, 0x47C100, 11, + 0x47C614, GAME_10US_COMPACT, H_CALL, 0x47C100, 12, + 0x47C664, GAME_10US_COMPACT, H_CALL, 0x47C100, 13, + 0x47C686, GAME_10US_COMPACT, H_CALL, 0x47C100, 14, + 0x47C6AE, GAME_10US_COMPACT, H_CALL, 0x47C100, 15, + 0x47C768, GAME_10US_COMPACT, H_CALL, 0x47C100, 16, + 0x47C790, GAME_10US_COMPACT, H_CALL, 0x47C100, 17, + 0x47C7C7, GAME_10US_COMPACT, H_CALL, 0x47C100, 18, + 0x47C85E, GAME_10US_COMPACT, H_CALL, 0x47C100, 19, + 0x47C8E0, GAME_10US_COMPACT, H_CALL, 0x47C100, 20, + 0x47C962, GAME_10US_COMPACT, H_CALL, 0x47C100, 21, + 0x47C9E3, GAME_10US_COMPACT, H_CALL, 0x47C100, 22, + 0x47CAAD, GAME_10US_COMPACT, H_CALL, 0x47C100, 23, + 0x47CB48, GAME_10US_COMPACT, H_CALL, 0x47C100, 24, + 0x47CBE5, GAME_10US_COMPACT, H_CALL, 0x47C100, 25, + 0x47CC68, GAME_10US_COMPACT, H_CALL, 0x47C100, 26, + 0x47CCD2, GAME_10US_COMPACT, H_CALL, 0x47C100, 27, + 0x47CCF2, GAME_10US_COMPACT, H_CALL, 0x47C100, 28, + 0x47CD75, GAME_10US_COMPACT, H_CALL, 0x47C100, 29, + 0x47CDCB, GAME_10US_COMPACT, H_CALL, 0x47C100, 30, + 0x47CE27, GAME_10US_COMPACT, H_CALL, 0x47C100, 31, + 0x47CE75, GAME_10US_COMPACT, H_CALL, 0x47C100, 32, + 0x47CEC3, GAME_10US_COMPACT, H_CALL, 0x47C100, 33, + 0x47CF01, GAME_10US_COMPACT, H_CALL, 0x47C100, 34, + 0x47CF29, GAME_10US_COMPACT, H_CALL, 0x47C100, 35, + 0x47CF52, GAME_10US_COMPACT, H_CALL, 0x47C100, 36, + 0x47D00F, GAME_10US_COMPACT, H_CALL, 0x47C100, 37, + 0x47D038, GAME_10US_COMPACT, H_CALL, 0x47C100, 38, + 0x47D081, GAME_10US_COMPACT, H_CALL, 0x47C100, 39, + 0x47D09D, GAME_10US_COMPACT, H_CALL, 0x47C100, 40, + 0x47D0B0, GAME_10US_COMPACT, H_CALL, 0x47C100, 41, + 0x47D252, GAME_10US_COMPACT, H_CALL, 0x47D210, 1, + 0x47D282, GAME_10US_COMPACT, H_CALL, 0x47D210, 2, + 0x47D30B, GAME_10US_COMPACT, H_CALL, 0x47D210, 3, + 0x47D3CC, GAME_10US_COMPACT, H_CALL, 0x47D210, 4, + 0x47D42F, GAME_10US_COMPACT, H_CALL, 0x47D210, 5, + 0x47D460, GAME_10US_COMPACT, H_CALL, 0x47D210, 6, + 0x47D4AC, GAME_10US_COMPACT, H_CALL, 0x47D210, 7, + 0x47D56B, GAME_10US_COMPACT, H_CALL, 0x47D210, 8, + 0x47D5CD, GAME_10US_COMPACT, H_CALL, 0x47D210, 9, + 0x47D6AC, GAME_10US_COMPACT, H_CALL, 0x47D210, 10, + 0x47D6D1, GAME_10US_COMPACT, H_CALL, 0x47D210, 11, + 0x47D725, GAME_10US_COMPACT, H_CALL, 0x47D210, 12, + 0x47D75E, GAME_10US_COMPACT, H_CALL, 0x47D210, 13, + 0x47D78F, GAME_10US_COMPACT, H_CALL, 0x47D210, 14, + 0x47D7E5, GAME_10US_COMPACT, H_CALL, 0x47D210, 15, + 0x47D817, GAME_10US_COMPACT, H_CALL, 0x47D210, 16, + 0x47D849, GAME_10US_COMPACT, H_CALL, 0x47D210, 17, + 0x47DA2E, GAME_10US_COMPACT, H_CALL, 0x47D210, 18, + 0x47DA94, GAME_10US_COMPACT, H_CALL, 0x47D210, 19, + 0x47DB0F, GAME_10US_COMPACT, H_CALL, 0x47D210, 20, + 0x47DB6B, GAME_10US_COMPACT, H_CALL, 0x47D210, 21, + 0x47DC4F, GAME_10US_COMPACT, H_CALL, 0x47D210, 22, + 0x47DD33, GAME_10US_COMPACT, H_CALL, 0x47D210, 23, + 0x47DD79, GAME_10US_COMPACT, H_CALL, 0x47D210, 24, + 0x47DDBF, GAME_10US_COMPACT, H_CALL, 0x47D210, 25, + 0x47DDEA, GAME_10US_COMPACT, H_CALL, 0x47D210, 26, + 0x47DE9E, GAME_10US_COMPACT, H_CALL, 0x47D210, 27, + 0x47DECC, GAME_10US_COMPACT, H_CALL, 0x47D210, 28, + 0x47E0D5, GAME_10US_COMPACT, H_CALL, 0x47E090, 1, + 0x47E154, GAME_10US_COMPACT, H_CALL, 0x47E090, 2, + 0x47E1BA, GAME_10US_COMPACT, H_CALL, 0x47E090, 3, + 0x47E2A0, GAME_10US_COMPACT, H_CALL, 0x47E090, 4, + 0x47E335, GAME_10US_COMPACT, H_CALL, 0x47E090, 5, + 0x47E389, GAME_10US_COMPACT, H_CALL, 0x47E090, 6, + 0x47E3CC, GAME_10US_COMPACT, H_CALL, 0x47E090, 7, + 0x47E40E, GAME_10US_COMPACT, H_CALL, 0x47E090, 8, + 0x47E453, GAME_10US_COMPACT, H_CALL, 0x47E090, 9, + 0x47E491, GAME_10US_COMPACT, H_CALL, 0x47E090, 10, + 0x47E504, GAME_10US_COMPACT, H_CALL, 0x47E090, 11, + 0x47E57E, GAME_10US_COMPACT, H_CALL, 0x47E090, 12, + 0x47E666, GAME_10US_COMPACT, H_CALL, 0x47E090, 13, + 0x47E6AF, GAME_10US_COMPACT, H_CALL, 0x47E090, 14, + 0x47E6DD, GAME_10US_COMPACT, H_CALL, 0x47E090, 15, + 0x47E75D, GAME_10US_COMPACT, H_CALL, 0x47E090, 16, + 0x47E7B0, GAME_10US_COMPACT, H_CALL, 0x47E090, 17, + 0x47E818, GAME_10US_COMPACT, H_CALL, 0x47E090, 18, + 0x47E881, GAME_10US_COMPACT, H_CALL, 0x47E090, 19, + 0x47E9E4, GAME_10US_COMPACT, H_CALL, 0x47E090, 20, + 0x47EA2F, GAME_10US_COMPACT, H_CALL, 0x47E090, 21, + 0x47EA78, GAME_10US_COMPACT, H_CALL, 0x47E090, 22, + 0x47EA9B, GAME_10US_COMPACT, H_CALL, 0x47E090, 23, + 0x47EAE4, GAME_10US_COMPACT, H_CALL, 0x47E090, 24, + 0x47EBD5, GAME_10US_COMPACT, H_CALL, 0x47E090, 25, + 0x47ECC6, GAME_10US_COMPACT, H_CALL, 0x47E090, 26, + 0x47ECE5, GAME_10US_COMPACT, H_CALL, 0x47E090, 27, + 0x47ED04, GAME_10US_COMPACT, H_CALL, 0x47E090, 28, + 0x47ED48, GAME_10US_COMPACT, H_CALL, 0x47E090, 29, + 0x47EDAD, GAME_10US_COMPACT, H_CALL, 0x47E090, 30, + 0x47EE31, GAME_10US_COMPACT, H_CALL, 0x47E090, 31, + 0x47EE87, GAME_10US_COMPACT, H_CALL, 0x47E090, 32, + 0x47EEBC, GAME_10US_COMPACT, H_CALL, 0x47E090, 33, + 0x47EF05, GAME_10US_COMPACT, H_CALL, 0x47E090, 34, + 0x47EF94, GAME_10US_COMPACT, H_CALL, 0x47E090, 35, + 0x47EFE2, GAME_10US_COMPACT, H_CALL, 0x47E090, 36, + 0x47F042, GAME_10US_COMPACT, H_CALL, 0x47E090, 37, + 0x47F092, GAME_10US_COMPACT, H_CALL, 0x47E090, 38, + 0x47F1E6, GAME_10US_COMPACT, H_CALL, 0x47E090, 39, + 0x47F3BC, GAME_10US_COMPACT, H_CALL, 0x47F370, 1, + 0x47F411, GAME_10US_COMPACT, H_CALL, 0x47F370, 2, + 0x47F45B, GAME_10US_COMPACT, H_CALL, 0x47F370, 3, + 0x47F47E, GAME_10US_COMPACT, H_CALL, 0x47F370, 4, + 0x47F4F5, GAME_10US_COMPACT, H_CALL, 0x47F370, 5, + 0x47F63E, GAME_10US_COMPACT, H_CALL, 0x47F370, 6, + 0x47F688, GAME_10US_COMPACT, H_CALL, 0x47F370, 7, + 0x47F6C1, GAME_10US_COMPACT, H_CALL, 0x47F370, 8, + 0x47F761, GAME_10US_COMPACT, H_CALL, 0x47F370, 9, + 0x47F825, GAME_10US_COMPACT, H_CALL, 0x47F370, 10, + 0x47F862, GAME_10US_COMPACT, H_CALL, 0x47F370, 11, + 0x47F893, GAME_10US_COMPACT, H_CALL, 0x47F370, 12, + 0x47F90C, GAME_10US_COMPACT, H_CALL, 0x47F370, 13, + 0x47FA6B, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1, + 0x47FAEA, GAME_10US_COMPACT, H_CALL, 0x47FA30, 2, + 0x47FBE2, GAME_10US_COMPACT, H_CALL, 0x47FA30, 3, + 0x47FCAB, GAME_10US_COMPACT, H_CALL, 0x47FA30, 4, + 0x47FDA5, GAME_10US_COMPACT, H_CALL, 0x47FA30, 5, + 0x47FDE1, GAME_10US_COMPACT, H_CALL, 0x47FA30, 6, + 0x47FE38, GAME_10US_COMPACT, H_CALL, 0x47FA30, 7, + 0x47FE90, GAME_10US_COMPACT, H_CALL, 0x47FA30, 8, + 0x47FEF0, GAME_10US_COMPACT, H_CALL, 0x47FA30, 9, + 0x47FF87, GAME_10US_COMPACT, H_CALL, 0x47FA30, 10, + 0x47FFC7, GAME_10US_COMPACT, H_CALL, 0x47FA30, 11, + 0x48000C, GAME_10US_COMPACT, H_CALL, 0x47FA30, 12, + 0x4800E9, GAME_10US_COMPACT, H_CALL, 0x47FA30, 13, + 0x48014C, GAME_10US_COMPACT, H_CALL, 0x47FA30, 14, + 0x480221, GAME_10US_COMPACT, H_CALL, 0x47FA30, 15, + 0x48028C, GAME_10US_COMPACT, H_CALL, 0x47FA30, 16, + 0x4802F5, GAME_10US_COMPACT, H_CALL, 0x47FA30, 17, + 0x480525, GAME_10US_COMPACT, H_CALL, 0x47FA30, 18, + 0x48056E, GAME_10US_COMPACT, H_CALL, 0x47FA30, 19, + 0x480681, GAME_10US_COMPACT, H_CALL, 0x47FA30, 20, + 0x4806B7, GAME_10US_COMPACT, H_CALL, 0x47FA30, 21, + 0x4807BB, GAME_10US_COMPACT, H_CALL, 0x47FA30, 22, + 0x4807D3, GAME_10US_COMPACT, H_CALL, 0x47FA30, 23, + 0x480803, GAME_10US_COMPACT, H_CALL, 0x47FA30, 24, + 0x480917, GAME_10US_COMPACT, H_CALL, 0x47FA30, 25, + 0x48094C, GAME_10US_COMPACT, H_CALL, 0x47FA30, 26, + 0x480981, GAME_10US_COMPACT, H_CALL, 0x47FA30, 27, + 0x4809B6, GAME_10US_COMPACT, H_CALL, 0x47FA30, 28, + 0x480A08, GAME_10US_COMPACT, H_CALL, 0x47FA30, 29, + 0x480A7E, GAME_10US_COMPACT, H_CALL, 0x47FA30, 30, + 0x480AD1, GAME_10US_COMPACT, H_CALL, 0x47FA30, 31, + 0x480B49, GAME_10US_COMPACT, H_CALL, 0x47FA30, 32, + 0x480BAB, GAME_10US_COMPACT, H_CALL, 0x47FA30, 33, + 0x480C12, GAME_10US_COMPACT, H_CALL, 0x47FA30, 34, + 0x480C93, GAME_10US_COMPACT, H_CALL, 0x47FA30, 35, + 0x480D00, GAME_10US_COMPACT, H_CALL, 0x47FA30, 36, + 0x480D2C, GAME_10US_COMPACT, H_CALL, 0x47FA30, 37, + 0x480E18, GAME_10US_COMPACT, H_CALL, 0x47FA30, 38, + 0x480E8E, GAME_10US_COMPACT, H_CALL, 0x47FA30, 39, + 0x48135F, GAME_10US_COMPACT, H_CALL, 0x481300, 1, + 0x481439, GAME_10US_COMPACT, H_CALL, 0x481300, 2, + 0x48147D, GAME_10US_COMPACT, H_CALL, 0x481300, 3, + 0x4814E8, GAME_10US_COMPACT, H_CALL, 0x481300, 4, + 0x48150E, GAME_10US_COMPACT, H_CALL, 0x481300, 5, + 0x48161D, GAME_10US_COMPACT, H_CALL, 0x481300, 6, + 0x48167C, GAME_10US_COMPACT, H_CALL, 0x481300, 7, + 0x481763, GAME_10US_COMPACT, H_CALL, 0x481300, 8, + 0x481792, GAME_10US_COMPACT, H_CALL, 0x481300, 9, + 0x4817C1, GAME_10US_COMPACT, H_CALL, 0x481300, 10, + 0x48180C, GAME_10US_COMPACT, H_CALL, 0x481300, 11, + 0x481828, GAME_10US_COMPACT, H_CALL, 0x481300, 12, + 0x481884, GAME_10US_COMPACT, H_CALL, 0x481300, 13, + 0x4818BF, GAME_10US_COMPACT, H_CALL, 0x481300, 14, + 0x481A0C, GAME_10US_COMPACT, H_CALL, 0x481300, 15, + 0x481AB2, GAME_10US_COMPACT, H_CALL, 0x481300, 16, + 0x481AE2, GAME_10US_COMPACT, H_CALL, 0x481300, 17, + 0x481B4B, GAME_10US_COMPACT, H_CALL, 0x481300, 18, + 0x481B88, GAME_10US_COMPACT, H_CALL, 0x481300, 19, + 0x481BC5, GAME_10US_COMPACT, H_CALL, 0x481300, 20, + 0x481BE9, GAME_10US_COMPACT, H_CALL, 0x481300, 21, + 0x481C0C, GAME_10US_COMPACT, H_CALL, 0x481300, 22, + 0x481C49, GAME_10US_COMPACT, H_CALL, 0x481300, 23, + 0x481C86, GAME_10US_COMPACT, H_CALL, 0x481300, 24, + 0x481CA9, GAME_10US_COMPACT, H_CALL, 0x481300, 25, + 0x48233D, GAME_10US_COMPACT, H_CALL, 0x481300, 26, + 0x482A9A, GAME_10US_COMPACT, H_CALL, 0x481300, 27, + 0x482B51, GAME_10US_COMPACT, H_CALL, 0x481300, 28, + 0x482B8D, GAME_10US_COMPACT, H_CALL, 0x481300, 29, + 0x482C6B, GAME_10US_COMPACT, H_CALL, 0x481300, 30, + 0x482CDF, GAME_10US_COMPACT, H_CALL, 0x481300, 31, + 0x482D56, GAME_10US_COMPACT, H_CALL, 0x481300, 32, + 0x482EA7, GAME_10US_COMPACT, H_CALL, 0x481300, 33, + 0x482F88, GAME_10US_COMPACT, H_CALL, 0x481300, 34, + 0x4831A6, GAME_10US_COMPACT, H_CALL, 0x481300, 35, + 0x4831FC, GAME_10US_COMPACT, H_CALL, 0x481300, 36, + 0x48323D, GAME_10US_COMPACT, H_CALL, 0x481300, 37, + 0x4832E4, GAME_10US_COMPACT, H_CALL, 0x481300, 38, + 0x48332E, GAME_10US_COMPACT, H_CALL, 0x481300, 39, + 0x48352F, GAME_10US_COMPACT, H_CALL, 0x481300, 40, + 0x483584, GAME_10US_COMPACT, H_CALL, 0x481300, 41, + 0x483C53, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1, + 0x483C90, GAME_10US_COMPACT, H_CALL, 0x483BD0, 2, + 0x483DFA, GAME_10US_COMPACT, H_CALL, 0x483BD0, 3, + 0x483E84, GAME_10US_COMPACT, H_CALL, 0x483BD0, 4, + 0x483F93, GAME_10US_COMPACT, H_CALL, 0x483BD0, 5, + 0x484079, GAME_10US_COMPACT, H_CALL, 0x483BD0, 6, + 0x4841E7, GAME_10US_COMPACT, H_CALL, 0x483BD0, 7, + 0x48424E, GAME_10US_COMPACT, H_CALL, 0x483BD0, 8, + 0x484292, GAME_10US_COMPACT, H_CALL, 0x483BD0, 9, + 0x4842B3, GAME_10US_COMPACT, H_CALL, 0x483BD0, 10, + 0x4842F0, GAME_10US_COMPACT, H_CALL, 0x483BD0, 11, + 0x484374, GAME_10US_COMPACT, H_CALL, 0x483BD0, 12, + 0x484393, GAME_10US_COMPACT, H_CALL, 0x483BD0, 13, + 0x4843DE, GAME_10US_COMPACT, H_CALL, 0x483BD0, 14, + 0x48446C, GAME_10US_COMPACT, H_CALL, 0x483BD0, 15, + 0x4844BC, GAME_10US_COMPACT, H_CALL, 0x483BD0, 16, + 0x484566, GAME_10US_COMPACT, H_CALL, 0x483BD0, 17, + 0x48460B, GAME_10US_COMPACT, H_CALL, 0x483BD0, 18, + 0x48465F, GAME_10US_COMPACT, H_CALL, 0x483BD0, 19, + 0x4846F3, GAME_10US_COMPACT, H_CALL, 0x483BD0, 20, + 0x484703, GAME_10US_COMPACT, H_CALL, 0x483BD0, 21, + 0x484713, GAME_10US_COMPACT, H_CALL, 0x483BD0, 22, + 0x48475E, GAME_10US_COMPACT, H_CALL, 0x483BD0, 23, + 0x484792, GAME_10US_COMPACT, H_CALL, 0x483BD0, 24, + 0x48481F, GAME_10US_COMPACT, H_CALL, 0x483BD0, 25, + 0x4849D0, GAME_10US_COMPACT, H_CALL, 0x483BD0, 26, + 0x4849EF, GAME_10US_COMPACT, H_CALL, 0x483BD0, 27, + 0x484AB8, GAME_10US_COMPACT, H_CALL, 0x483BD0, 28, + 0x484B7B, GAME_10US_COMPACT, H_CALL, 0x483BD0, 29, + 0x484B99, GAME_10US_COMPACT, H_CALL, 0x483BD0, 30, + 0x484C0A, GAME_10US_COMPACT, H_CALL, 0x483BD0, 31, + 0x484C64, GAME_10US_COMPACT, H_CALL, 0x483BD0, 32, + 0x484CC0, GAME_10US_COMPACT, H_CALL, 0x483BD0, 33, + 0x484D0C, GAME_10US_COMPACT, H_CALL, 0x483BD0, 34, + 0x485007, GAME_10US_COMPACT, H_CALL, 0x483BD0, 35, + 0x48503B, GAME_10US_COMPACT, H_CALL, 0x483BD0, 36, + 0x485067, GAME_10US_COMPACT, H_CALL, 0x483BD0, 37, + 0x4850A3, GAME_10US_COMPACT, H_CALL, 0x483BD0, 38, + 0x48510B, GAME_10US_COMPACT, H_CALL, 0x483BD0, 39, + 0x485143, GAME_10US_COMPACT, H_CALL, 0x483BD0, 40, + 0x485164, GAME_10US_COMPACT, H_CALL, 0x483BD0, 41, + 0x48519F, GAME_10US_COMPACT, H_CALL, 0x483BD0, 42, + 0x4851CB, GAME_10US_COMPACT, H_CALL, 0x483BD0, 43, + 0x485207, GAME_10US_COMPACT, H_CALL, 0x483BD0, 44, + 0x48522C, GAME_10US_COMPACT, H_CALL, 0x483BD0, 45, + 0x485265, GAME_10US_COMPACT, H_CALL, 0x483BD0, 46, + 0x4853DD, GAME_10US_COMPACT, H_CALL, 0x483BD0, 47, + 0x4854BD, GAME_10US_COMPACT, H_CALL, 0x483BD0, 48, + 0x48551A, GAME_10US_COMPACT, H_CALL, 0x483BD0, 49, + 0x485536, GAME_10US_COMPACT, H_CALL, 0x483BD0, 50, + 0x485578, GAME_10US_COMPACT, H_CALL, 0x483BD0, 51, + 0x4855BA, GAME_10US_COMPACT, H_CALL, 0x483BD0, 52, + 0x485682, GAME_10US_COMPACT, H_CALL, 0x483BD0, 53, + 0x486DB1, GAME_10US_COMPACT, H_CALL, 0x486D80, 1, + 0x48711C, GAME_10US_COMPACT, H_CALL, 0x4870F0, 1, + 0x48744C, GAME_10US_COMPACT, H_CALL, 0x487420, 1, + 0x48774C, GAME_10US_COMPACT, H_CALL, 0x487720, 1, + 0x487A50, GAME_10US_COMPACT, H_CALL, 0x487A20, 1, + 0x487D29, GAME_10US_COMPACT, H_CALL, 0x487D10, 1, + 0x487F94, GAME_10US_COMPACT, H_CALL, 0x487F60, 1, + 0x48840F, GAME_10US_COMPACT, H_CALL, 0x4883F0, 1, + 0x488447, GAME_10US_COMPACT, H_CALL, 0x4883F0, 2, + 0x4887A2, GAME_10US_COMPACT, H_CALL, 0x488780, 1, + 0x488B80, GAME_10US_COMPACT, H_CALL, 0x488B50, 1, + 0x488EE7, GAME_10US_COMPACT, H_CALL, 0x488EC0, 1, + 0x48916C, GAME_10US_COMPACT, H_CALL, 0x489150, 1, + 0x4891A1, GAME_10US_COMPACT, H_CALL, 0x489150, 2, + 0x48954E, GAME_10US_COMPACT, H_CALL, 0x489500, 1, + 0x489599, GAME_10US_COMPACT, H_CALL, 0x489500, 2, + 0x4895D9, GAME_10US_COMPACT, H_CALL, 0x489500, 3, + 0x48961F, GAME_10US_COMPACT, H_CALL, 0x489500, 4, + 0x489642, GAME_10US_COMPACT, H_CALL, 0x489500, 5, + 0x48968B, GAME_10US_COMPACT, H_CALL, 0x489500, 6, + 0x4896EC, GAME_10US_COMPACT, H_CALL, 0x489500, 7, + 0x489735, GAME_10US_COMPACT, H_CALL, 0x489500, 8, + 0x489761, GAME_10US_COMPACT, H_CALL, 0x489500, 9, + 0x4897A3, GAME_10US_COMPACT, H_CALL, 0x489500, 10, + 0x489835, GAME_10US_COMPACT, H_CALL, 0x489500, 11, + 0x4898CF, GAME_10US_COMPACT, H_CALL, 0x489500, 12, + 0x4898F4, GAME_10US_COMPACT, H_CALL, 0x489500, 13, + 0x489929, GAME_10US_COMPACT, H_CALL, 0x489500, 14, + 0x489AB2, GAME_10US_COMPACT, H_CALL, 0x489500, 15, + 0x489AFA, GAME_10US_COMPACT, H_CALL, 0x489500, 16, + 0x489B57, GAME_10US_COMPACT, H_CALL, 0x489500, 17, + 0x489B78, GAME_10US_COMPACT, H_CALL, 0x489500, 18, + 0x489BB2, GAME_10US_COMPACT, H_CALL, 0x489500, 19, + 0x489C22, GAME_10US_COMPACT, H_CALL, 0x489500, 20, + 0x489C4C, GAME_10US_COMPACT, H_CALL, 0x489500, 21, + 0x489C96, GAME_10US_COMPACT, H_CALL, 0x489500, 22, + 0x489D5F, GAME_10US_COMPACT, H_CALL, 0x489500, 23, + 0x489D8A, GAME_10US_COMPACT, H_CALL, 0x489500, 24, + 0x489DB8, GAME_10US_COMPACT, H_CALL, 0x489500, 25, + 0x489DDE, GAME_10US_COMPACT, H_CALL, 0x489500, 26, + 0x489E77, GAME_10US_COMPACT, H_CALL, 0x489500, 27, + 0x489EC0, GAME_10US_COMPACT, H_CALL, 0x489500, 28, + 0x489F09, GAME_10US_COMPACT, H_CALL, 0x489500, 29, + 0x489F98, GAME_10US_COMPACT, H_CALL, 0x489500, 30, + 0x489FBB, GAME_10US_COMPACT, H_CALL, 0x489500, 31, + 0x48A027, GAME_10US_COMPACT, H_CALL, 0x489500, 32, + 0x48A078, GAME_10US_COMPACT, H_CALL, 0x489500, 33, + 0x48A10A, GAME_10US_COMPACT, H_CALL, 0x489500, 34, + 0x48A17C, GAME_10US_COMPACT, H_CALL, 0x489500, 35, + 0x48A354, GAME_10US_COMPACT, H_CALL, 0x48A320, 1, + 0x48A410, GAME_10US_COMPACT, H_CALL, 0x48A320, 2, + 0x48A4AD, GAME_10US_COMPACT, H_CALL, 0x48A320, 3, + 0x48A5B9, GAME_10US_COMPACT, H_CALL, 0x48A320, 4, + 0x48A601, GAME_10US_COMPACT, H_CALL, 0x48A320, 5, + 0x48A664, GAME_10US_COMPACT, H_CALL, 0x48A320, 6, + 0x48A6AC, GAME_10US_COMPACT, H_CALL, 0x48A320, 7, + 0x48A727, GAME_10US_COMPACT, H_CALL, 0x48A320, 8, + 0x48A7B8, GAME_10US_COMPACT, H_CALL, 0x48A320, 9, + 0x48A865, GAME_10US_COMPACT, H_CALL, 0x48A320, 10, + 0x48A8AC, GAME_10US_COMPACT, H_CALL, 0x48A320, 11, + 0x48A906, GAME_10US_COMPACT, H_CALL, 0x48A320, 12, + 0x48A93F, GAME_10US_COMPACT, H_CALL, 0x48A320, 13, + 0x48A978, GAME_10US_COMPACT, H_CALL, 0x48A320, 14, + 0x48A9E7, GAME_10US_COMPACT, H_CALL, 0x48A320, 15, + 0x48AA4C, GAME_10US_COMPACT, H_CALL, 0x48A320, 16, + 0x48AAD3, GAME_10US_COMPACT, H_CALL, 0x48A320, 17, + 0x48AB34, GAME_10US_COMPACT, H_CALL, 0x48A320, 18, + 0x48AB7D, GAME_10US_COMPACT, H_CALL, 0x48A320, 19, + 0x48ABDE, GAME_10US_COMPACT, H_CALL, 0x48A320, 20, + 0x48AC42, GAME_10US_COMPACT, H_CALL, 0x48A320, 21, + 0x48AC97, GAME_10US_COMPACT, H_CALL, 0x48A320, 22, + 0x48ACD1, GAME_10US_COMPACT, H_CALL, 0x48A320, 23, + 0x48AD34, GAME_10US_COMPACT, H_CALL, 0x48A320, 24, + 0x48AD5C, GAME_10US_COMPACT, H_CALL, 0x48A320, 25, + 0x48AD93, GAME_10US_COMPACT, H_CALL, 0x48A320, 26, + 0x48AE6D, GAME_10US_COMPACT, H_CALL, 0x48A320, 27, + 0x48AE9E, GAME_10US_COMPACT, H_CALL, 0x48A320, 28, + 0x48AEE0, GAME_10US_COMPACT, H_CALL, 0x48A320, 29, + 0x48AF37, GAME_10US_COMPACT, H_CALL, 0x48A320, 30, + 0x48AFBF, GAME_10US_COMPACT, H_CALL, 0x48A320, 31, + 0x48B074, GAME_10US_COMPACT, H_CALL, 0x48A320, 32, + 0x48B0EB, GAME_10US_COMPACT, H_CALL, 0x48A320, 33, + 0x48B10F, GAME_10US_COMPACT, H_CALL, 0x48A320, 34, + 0x48B13C, GAME_10US_COMPACT, H_CALL, 0x48A320, 35, + 0x48B1A1, GAME_10US_COMPACT, H_CALL, 0x48A320, 36, + 0x48B26C, GAME_10US_COMPACT, H_CALL, 0x48A320, 37, + 0x48B2B4, GAME_10US_COMPACT, H_CALL, 0x48A320, 38, + 0x48B30E, GAME_10US_COMPACT, H_CALL, 0x48A320, 39, + 0x48B369, GAME_10US_COMPACT, H_CALL, 0x48A320, 40, + 0x48B3C0, GAME_10US_COMPACT, H_CALL, 0x48A320, 41, + 0x48B3EA, GAME_10US_COMPACT, H_CALL, 0x48A320, 42, + 0x48B5F3, GAME_10US_COMPACT, H_CALL, 0x48B590, 1, + 0x48B623, GAME_10US_COMPACT, H_CALL, 0x48B590, 2, + 0x48B648, GAME_10US_COMPACT, H_CALL, 0x48B590, 3, + 0x48B676, GAME_10US_COMPACT, H_CALL, 0x48B590, 4, + 0x48B6AF, GAME_10US_COMPACT, H_CALL, 0x48B590, 5, + 0x48B6DF, GAME_10US_COMPACT, H_CALL, 0x48B590, 6, + 0x48B702, GAME_10US_COMPACT, H_CALL, 0x48B590, 7, + 0x48B730, GAME_10US_COMPACT, H_CALL, 0x48B590, 8, + 0x48B75E, GAME_10US_COMPACT, H_CALL, 0x48B590, 9, + 0x48B7B9, GAME_10US_COMPACT, H_CALL, 0x48B590, 10, + 0x48B904, GAME_10US_COMPACT, H_CALL, 0x48B590, 11, + 0x48B991, GAME_10US_COMPACT, H_CALL, 0x48B590, 12, + 0x48B9B4, GAME_10US_COMPACT, H_CALL, 0x48B590, 13, + 0x48B9FF, GAME_10US_COMPACT, H_CALL, 0x48B590, 14, + 0x48BA9B, GAME_10US_COMPACT, H_CALL, 0x48B590, 15, + 0x48BB54, GAME_10US_COMPACT, H_CALL, 0x48B590, 16, + 0x48BBAA, GAME_10US_COMPACT, H_CALL, 0x48B590, 17, + 0x48BC0E, GAME_10US_COMPACT, H_CALL, 0x48B590, 18, + 0x48BCCA, GAME_10US_COMPACT, H_CALL, 0x48B590, 19, + 0x48BD7F, GAME_10US_COMPACT, H_CALL, 0x48B590, 20, + 0x48BDA7, GAME_10US_COMPACT, H_CALL, 0x48B590, 21, + 0x48BDF1, GAME_10US_COMPACT, H_CALL, 0x48B590, 22, + 0x48BEF6, GAME_10US_COMPACT, H_CALL, 0x48B590, 23, + 0x48BFC7, GAME_10US_COMPACT, H_CALL, 0x48B590, 24, + 0x48BFE7, GAME_10US_COMPACT, H_CALL, 0x48B590, 25, + 0x48C02F, GAME_10US_COMPACT, H_CALL, 0x48B590, 26, + 0x48C07F, GAME_10US_COMPACT, H_CALL, 0x48B590, 27, + 0x48C0C7, GAME_10US_COMPACT, H_CALL, 0x48B590, 28, + 0x48C12E, GAME_10US_COMPACT, H_CALL, 0x48B590, 29, + 0x48C169, GAME_10US_COMPACT, H_CALL, 0x48B590, 30, + 0x48C1B4, GAME_10US_COMPACT, H_CALL, 0x48B590, 31, + 0x48C1E1, GAME_10US_COMPACT, H_CALL, 0x48B590, 32, + 0x48C20A, GAME_10US_COMPACT, H_CALL, 0x48B590, 33, + 0x48C21A, GAME_10US_COMPACT, H_CALL, 0x48B590, 34, + 0x48C248, GAME_10US_COMPACT, H_CALL, 0x48B590, 35, + 0x48C2A2, GAME_10US_COMPACT, H_CALL, 0x48B590, 36, + 0x48C2FC, GAME_10US_COMPACT, H_CALL, 0x48B590, 37, + 0x48C41C, GAME_10US_COMPACT, H_CALL, 0x48B590, 38, + 0x48C460, GAME_10US_COMPACT, H_CALL, 0x48B590, 39, + 0x48C4A1, GAME_10US_COMPACT, H_CALL, 0x48B590, 40, + 0x48C53C, GAME_10US_COMPACT, H_CALL, 0x48B590, 41, + 0x48C58D, GAME_10US_COMPACT, H_CALL, 0x48B590, 42, + 0x48C65E, GAME_10US_COMPACT, H_CALL, 0x48B590, 43, + 0x48C6A1, GAME_10US_COMPACT, H_CALL, 0x48B590, 44, + 0x48C6D5, GAME_10US_COMPACT, H_CALL, 0x48B590, 45, + 0x48C76C, GAME_10US_COMPACT, H_CALL, 0x48B590, 46, + 0x48C7DB, GAME_10US_COMPACT, H_CALL, 0x48B590, 47, + 0x48C836, GAME_10US_COMPACT, H_CALL, 0x48B590, 48, + 0x48C867, GAME_10US_COMPACT, H_CALL, 0x48B590, 49, + 0x48C9F8, GAME_10US_COMPACT, H_CALL, 0x48B590, 50, + 0x48CA20, GAME_10US_COMPACT, H_CALL, 0x48B590, 51, + 0x48CA48, GAME_10US_COMPACT, H_CALL, 0x48B590, 52, + 0x48CA8D, GAME_10US_COMPACT, H_CALL, 0x48B590, 53, + 0x48CB1A, GAME_10US_COMPACT, H_CALL, 0x48B590, 54, + 0x48CC05, GAME_10US_COMPACT, H_CALL, 0x48B590, 55, + 0x48CDFD, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 1, + 0x48CEDF, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 2, + 0x48CFA9, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 3, + 0x48D01B, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 4, + 0x48D093, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 5, + 0x48D0D6, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 6, + 0x48D15F, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 7, + 0x48D1E3, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 8, + 0x48D23D, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 9, + 0x48D27C, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 10, + 0x48D35A, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 11, + 0x48D3AE, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 12, + 0x48D4D2, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 13, + 0x48D531, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 14, + 0x48D5B4, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 15, + 0x48D5EC, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 16, + 0x48D625, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 17, + 0x48D677, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 18, + 0x48D6AB, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 19, + 0x48D6E1, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 20, + 0x48D72D, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 21, + 0x48D779, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 22, + 0x48D824, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 23, + 0x48D866, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 24, + 0x48D907, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 25, + 0x48D94E, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 26, + 0x48D9B6, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 27, + 0x48D9E6, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 28, + 0x48DA4E, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 29, + 0x48DAB9, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 30, + 0x48DAFD, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 31, + 0x48DB41, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 32, + 0x48DC08, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 33, + 0x48DC43, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 34, + 0x48DCBB, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 35, + 0x48EAE2, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 1, + 0x48EB01, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 2, + 0x48EB21, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 3, + 0x48EB46, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 4, + 0x48EBF8, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 5, + 0x48EC8E, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 6, + 0x48ECAE, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 7, + 0x48EDBF, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 8, + 0x48EE3D, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 9, + 0x48EE56, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 10, + 0x48EE9D, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 11, + 0x48EEDD, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 12, + 0x48F000, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 13, + 0x48F081, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 14, + 0x48F182, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 15, + 0x48F264, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 16, + 0x48F2A6, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 17, + 0x48F33D, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 18, + 0x48F465, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 19, + 0x48F4ED, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 20, + 0x48F743, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 21, + 0x48F834, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 22, + 0x48FB12, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 23, + 0x48FB86, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 24, + 0x48FCA1, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 25, + 0x48FCEB, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 26, + 0x48FD4E, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 27, + 0x48FD91, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 28, + 0x48FE13, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 29, + 0x48FF1D, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 30, + 0x49000A, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 31, + 0x4900B6, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 32, + 0x490147, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 33, + 0x490183, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 34, + 0x4901DC, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 35, + 0x49029F, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 36, + 0x4902DB, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 37, + 0x490317, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 38, + 0x490370, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 39, + 0x49046F, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 40, + 0x490558, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 41, + 0x4905B0, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 42, + 0x49064D, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 43, + 0x490766, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 44, + 0x4907D2, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 45, + 0x49090F, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 46, + 0x490996, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 47, + 0x4909D8, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 48, + 0x490A59, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 49, + 0x490AEA, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 50, + 0x490B82, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 51, + 0x490DF2, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x490E67, GAME_10US_COMPACT, H_CALL, 0x490DB0, 2, + 0x490EFB, GAME_10US_COMPACT, H_CALL, 0x490DB0, 3, + 0x490F4A, GAME_10US_COMPACT, H_CALL, 0x490DB0, 4, + 0x490FA4, GAME_10US_COMPACT, H_CALL, 0x490DB0, 5, + 0x490FB4, GAME_10US_COMPACT, H_CALL, 0x490DB0, 6, + 0x490FEA, GAME_10US_COMPACT, H_CALL, 0x490DB0, 7, + 0x49101C, GAME_10US_COMPACT, H_CALL, 0x490DB0, 8, + 0x491047, GAME_10US_COMPACT, H_CALL, 0x490DB0, 9, + 0x491072, GAME_10US_COMPACT, H_CALL, 0x490DB0, 10, + 0x4910D2, GAME_10US_COMPACT, H_CALL, 0x490DB0, 11, + 0x491132, GAME_10US_COMPACT, H_CALL, 0x490DB0, 12, + 0x491193, GAME_10US_COMPACT, H_CALL, 0x490DB0, 13, + 0x4911F3, GAME_10US_COMPACT, H_CALL, 0x490DB0, 14, + 0x49129C, GAME_10US_COMPACT, H_CALL, 0x490DB0, 15, + 0x4912F8, GAME_10US_COMPACT, H_CALL, 0x490DB0, 16, + 0x491380, GAME_10US_COMPACT, H_CALL, 0x490DB0, 17, + 0x491408, GAME_10US_COMPACT, H_CALL, 0x490DB0, 18, + 0x4914A9, GAME_10US_COMPACT, H_CALL, 0x490DB0, 19, + 0x491531, GAME_10US_COMPACT, H_CALL, 0x490DB0, 20, + 0x491579, GAME_10US_COMPACT, H_CALL, 0x490DB0, 21, + 0x4915F9, GAME_10US_COMPACT, H_CALL, 0x490DB0, 22, + 0x49162E, GAME_10US_COMPACT, H_CALL, 0x490DB0, 23, + 0x4916CE, GAME_10US_COMPACT, H_CALL, 0x490DB0, 24, + 0x49172B, GAME_10US_COMPACT, H_CALL, 0x490DB0, 25, + 0x491768, GAME_10US_COMPACT, H_CALL, 0x490DB0, 26, + 0x491798, GAME_10US_COMPACT, H_CALL, 0x490DB0, 27, + 0x491806, GAME_10US_COMPACT, H_CALL, 0x490DB0, 28, + 0x491844, GAME_10US_COMPACT, H_CALL, 0x490DB0, 29, + 0x49190C, GAME_10US_COMPACT, H_CALL, 0x490DB0, 30, + 0x49194F, GAME_10US_COMPACT, H_CALL, 0x490DB0, 31, + 0x4919B0, GAME_10US_COMPACT, H_CALL, 0x490DB0, 32, + 0x4919F1, GAME_10US_COMPACT, H_CALL, 0x490DB0, 33, + 0x491A4E, GAME_10US_COMPACT, H_CALL, 0x490DB0, 34, + 0x491AC0, GAME_10US_COMPACT, H_CALL, 0x490DB0, 35, + 0x491C37, GAME_10US_COMPACT, H_CALL, 0x490DB0, 36, + 0x491C83, GAME_10US_COMPACT, H_CALL, 0x490DB0, 37, + 0x492003, GAME_10US_COMPACT, H_CALL, 0x490DB0, 38, + 0x49205C, GAME_10US_COMPACT, H_CALL, 0x490DB0, 39, + 0x4920A1, GAME_10US_COMPACT, H_CALL, 0x490DB0, 40, + 0x4920C4, GAME_10US_COMPACT, H_CALL, 0x490DB0, 41, + 0x492109, GAME_10US_COMPACT, H_CALL, 0x490DB0, 42, + 0x492146, GAME_10US_COMPACT, H_CALL, 0x490DB0, 43, + 0x49216C, GAME_10US_COMPACT, H_CALL, 0x490DB0, 44, + 0x49218C, GAME_10US_COMPACT, H_CALL, 0x490DB0, 45, + 0x4921D1, GAME_10US_COMPACT, H_CALL, 0x490DB0, 46, + 0x49220E, GAME_10US_COMPACT, H_CALL, 0x490DB0, 47, + 0x49225C, GAME_10US_COMPACT, H_CALL, 0x490DB0, 48, + 0x4922DC, GAME_10US_COMPACT, H_CALL, 0x490DB0, 49, + 0x4923BE, GAME_10US_COMPACT, H_CALL, 0x490DB0, 50, + 0x4926ED, GAME_10US_COMPACT, H_CALL, 0x490DB0, 51, + 0x49277E, GAME_10US_COMPACT, H_CALL, 0x490DB0, 52, + 0x4927D7, GAME_10US_COMPACT, H_CALL, 0x490DB0, 53, + 0x492841, GAME_10US_COMPACT, H_CALL, 0x490DB0, 54, + 0x4928A1, GAME_10US_COMPACT, H_CALL, 0x490DB0, 55, + 0x4928B1, GAME_10US_COMPACT, H_CALL, 0x490DB0, 56, + 0x492979, GAME_10US_COMPACT, H_CALL, 0x490DB0, 57, + 0x492A3A, GAME_10US_COMPACT, H_CALL, 0x490DB0, 58, + 0x494022, GAME_10US_COMPACT, H_CALL, 0x493FE0, 1, + 0x4940B1, GAME_10US_COMPACT, H_CALL, 0x493FE0, 2, + 0x4940F7, GAME_10US_COMPACT, H_CALL, 0x493FE0, 3, + 0x49415F, GAME_10US_COMPACT, H_CALL, 0x493FE0, 4, + 0x4941F9, GAME_10US_COMPACT, H_CALL, 0x493FE0, 5, + 0x49423A, GAME_10US_COMPACT, H_CALL, 0x493FE0, 6, + 0x494327, GAME_10US_COMPACT, H_CALL, 0x493FE0, 7, + 0x494365, GAME_10US_COMPACT, H_CALL, 0x493FE0, 8, + 0x4943A3, GAME_10US_COMPACT, H_CALL, 0x493FE0, 9, + 0x494406, GAME_10US_COMPACT, H_CALL, 0x493FE0, 10, + 0x494440, GAME_10US_COMPACT, H_CALL, 0x493FE0, 11, + 0x494474, GAME_10US_COMPACT, H_CALL, 0x493FE0, 12, + 0x4944A5, GAME_10US_COMPACT, H_CALL, 0x493FE0, 13, + 0x4944ED, GAME_10US_COMPACT, H_CALL, 0x493FE0, 14, + 0x4945D9, GAME_10US_COMPACT, H_CALL, 0x493FE0, 15, + 0x49467F, GAME_10US_COMPACT, H_CALL, 0x493FE0, 16, + 0x4946E8, GAME_10US_COMPACT, H_CALL, 0x493FE0, 17, + 0x49476B, GAME_10US_COMPACT, H_CALL, 0x493FE0, 18, + 0x49482F, GAME_10US_COMPACT, H_CALL, 0x493FE0, 19, + 0x494848, GAME_10US_COMPACT, H_CALL, 0x493FE0, 20, + 0x49486C, GAME_10US_COMPACT, H_CALL, 0x493FE0, 21, + 0x4948F3, GAME_10US_COMPACT, H_CALL, 0x493FE0, 22, + 0x494A0B, GAME_10US_COMPACT, H_CALL, 0x493FE0, 23, + 0x494A80, GAME_10US_COMPACT, H_CALL, 0x493FE0, 24, + 0x494B82, GAME_10US_COMPACT, H_CALL, 0x493FE0, 25, + 0x494BBE, GAME_10US_COMPACT, H_CALL, 0x493FE0, 26, + 0x494BFE, GAME_10US_COMPACT, H_CALL, 0x493FE0, 27, + 0x494CCA, GAME_10US_COMPACT, H_CALL, 0x493FE0, 28, + 0x494DCA, GAME_10US_COMPACT, H_CALL, 0x493FE0, 29, + 0x494E38, GAME_10US_COMPACT, H_CALL, 0x493FE0, 30, + 0x494EA8, GAME_10US_COMPACT, H_CALL, 0x493FE0, 31, + 0x494F21, GAME_10US_COMPACT, H_CALL, 0x493FE0, 32, + 0x494F89, GAME_10US_COMPACT, H_CALL, 0x493FE0, 33, + 0x49506A, GAME_10US_COMPACT, H_CALL, 0x493FE0, 34, + 0x495108, GAME_10US_COMPACT, H_CALL, 0x493FE0, 35, + 0x49518B, GAME_10US_COMPACT, H_CALL, 0x493FE0, 36, + 0x495210, GAME_10US_COMPACT, H_CALL, 0x493FE0, 37, + 0x4952AD, GAME_10US_COMPACT, H_CALL, 0x493FE0, 38, + 0x49531F, GAME_10US_COMPACT, H_CALL, 0x493FE0, 39, + 0x4953A1, GAME_10US_COMPACT, H_CALL, 0x493FE0, 40, + 0x4953E1, GAME_10US_COMPACT, H_CALL, 0x493FE0, 41, + 0x495429, GAME_10US_COMPACT, H_CALL, 0x493FE0, 42, + 0x4954E6, GAME_10US_COMPACT, H_CALL, 0x493FE0, 43, + 0x49557F, GAME_10US_COMPACT, H_CALL, 0x493FE0, 44, + 0x49565B, GAME_10US_COMPACT, H_CALL, 0x493FE0, 45, + 0x4956D7, GAME_10US_COMPACT, H_CALL, 0x493FE0, 46, + 0x49571D, GAME_10US_COMPACT, H_CALL, 0x493FE0, 47, + 0x495763, GAME_10US_COMPACT, H_CALL, 0x493FE0, 48, + 0x495793, GAME_10US_COMPACT, H_CALL, 0x493FE0, 49, + 0x495886, GAME_10US_COMPACT, H_CALL, 0x493FE0, 50, + 0x4958D6, GAME_10US_COMPACT, H_CALL, 0x493FE0, 51, + 0x495912, GAME_10US_COMPACT, H_CALL, 0x493FE0, 52, + 0x495A55, GAME_10US_COMPACT, H_CALL, 0x493FE0, 53, + 0x495AF8, GAME_10US_COMPACT, H_CALL, 0x493FE0, 54, + 0x495B48, GAME_10US_COMPACT, H_CALL, 0x493FE0, 55, + 0x495B84, GAME_10US_COMPACT, H_CALL, 0x493FE0, 56, + 0x495BB3, GAME_10US_COMPACT, H_CALL, 0x493FE0, 57, + 0x495C6E, GAME_10US_COMPACT, H_CALL, 0x493FE0, 58, + 0x495D2B, GAME_10US_COMPACT, H_CALL, 0x493FE0, 59, + 0x495DB1, GAME_10US_COMPACT, H_CALL, 0x493FE0, 60, + 0x496E65, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x496EBF, GAME_10US_COMPACT, H_CALL, 0x496E00, 2, + 0x496F63, GAME_10US_COMPACT, H_CALL, 0x496E00, 3, + 0x497081, GAME_10US_COMPACT, H_CALL, 0x496E00, 4, + 0x4971BC, GAME_10US_COMPACT, H_CALL, 0x496E00, 5, + 0x4971D5, GAME_10US_COMPACT, H_CALL, 0x496E00, 6, + 0x49722C, GAME_10US_COMPACT, H_CALL, 0x496E00, 7, + 0x497285, GAME_10US_COMPACT, H_CALL, 0x496E00, 8, + 0x4972E6, GAME_10US_COMPACT, H_CALL, 0x496E00, 9, + 0x49736E, GAME_10US_COMPACT, H_CALL, 0x496E00, 10, + 0x4973BD, GAME_10US_COMPACT, H_CALL, 0x496E00, 11, + 0x497448, GAME_10US_COMPACT, H_CALL, 0x496E00, 12, + 0x497509, GAME_10US_COMPACT, H_CALL, 0x496E00, 13, + 0x497561, GAME_10US_COMPACT, H_CALL, 0x496E00, 14, + 0x49759C, GAME_10US_COMPACT, H_CALL, 0x496E00, 15, + 0x4975E9, GAME_10US_COMPACT, H_CALL, 0x496E00, 16, + 0x497622, GAME_10US_COMPACT, H_CALL, 0x496E00, 17, + 0x49765A, GAME_10US_COMPACT, H_CALL, 0x496E00, 18, + 0x4976CC, GAME_10US_COMPACT, H_CALL, 0x496E00, 19, + 0x497773, GAME_10US_COMPACT, H_CALL, 0x496E00, 20, + 0x4977E7, GAME_10US_COMPACT, H_CALL, 0x496E00, 21, + 0x497856, GAME_10US_COMPACT, H_CALL, 0x496E00, 22, + 0x49790C, GAME_10US_COMPACT, H_CALL, 0x496E00, 23, + 0x497944, GAME_10US_COMPACT, H_CALL, 0x496E00, 24, + 0x49797C, GAME_10US_COMPACT, H_CALL, 0x496E00, 25, + 0x4979B8, GAME_10US_COMPACT, H_CALL, 0x496E00, 26, + 0x497A69, GAME_10US_COMPACT, H_CALL, 0x496E00, 27, + 0x497B79, GAME_10US_COMPACT, H_CALL, 0x496E00, 28, + 0x497BCB, GAME_10US_COMPACT, H_CALL, 0x496E00, 29, + 0x497C2A, GAME_10US_COMPACT, H_CALL, 0x496E00, 30, + 0x497C54, GAME_10US_COMPACT, H_CALL, 0x496E00, 31, + 0x497CDF, GAME_10US_COMPACT, H_CALL, 0x496E00, 32, + 0x497CFF, GAME_10US_COMPACT, H_CALL, 0x496E00, 33, + 0x497D58, GAME_10US_COMPACT, H_CALL, 0x496E00, 34, + 0x497DBC, GAME_10US_COMPACT, H_CALL, 0x496E00, 35, + 0x497DCC, GAME_10US_COMPACT, H_CALL, 0x496E00, 36, + 0x497E58, GAME_10US_COMPACT, H_CALL, 0x496E00, 37, + 0x497EFD, GAME_10US_COMPACT, H_CALL, 0x496E00, 38, + 0x497F55, GAME_10US_COMPACT, H_CALL, 0x496E00, 39, + 0x497F89, GAME_10US_COMPACT, H_CALL, 0x496E00, 40, + 0x498029, GAME_10US_COMPACT, H_CALL, 0x496E00, 41, + 0x49805E, GAME_10US_COMPACT, H_CALL, 0x496E00, 42, + 0x498094, GAME_10US_COMPACT, H_CALL, 0x496E00, 43, + 0x4980CD, GAME_10US_COMPACT, H_CALL, 0x496E00, 44, + 0x4980EB, GAME_10US_COMPACT, H_CALL, 0x496E00, 45, + 0x498105, GAME_10US_COMPACT, H_CALL, 0x496E00, 46, + 0x4981C2, GAME_10US_COMPACT, H_CALL, 0x496E00, 47, + 0x49825D, GAME_10US_COMPACT, H_CALL, 0x496E00, 48, + 0x4982F3, GAME_10US_COMPACT, H_CALL, 0x496E00, 49, + 0x498344, GAME_10US_COMPACT, H_CALL, 0x496E00, 50, + 0x49838C, GAME_10US_COMPACT, H_CALL, 0x496E00, 51, + 0x4985AA, GAME_10US_COMPACT, H_CALL, 0x496E00, 52, + 0x4985E8, GAME_10US_COMPACT, H_CALL, 0x496E00, 53, + 0x498628, GAME_10US_COMPACT, H_CALL, 0x496E00, 54, + 0x498658, GAME_10US_COMPACT, H_CALL, 0x496E00, 55, + 0x498691, GAME_10US_COMPACT, H_CALL, 0x496E00, 56, + 0x4986E0, GAME_10US_COMPACT, H_CALL, 0x496E00, 57, + 0x498710, GAME_10US_COMPACT, H_CALL, 0x496E00, 58, + 0x49873F, GAME_10US_COMPACT, H_CALL, 0x496E00, 59, + 0x49879A, GAME_10US_COMPACT, H_CALL, 0x496E00, 60, + 0x498805, GAME_10US_COMPACT, H_CALL, 0x496E00, 61, + 0x498841, GAME_10US_COMPACT, H_CALL, 0x496E00, 62, + 0x498872, GAME_10US_COMPACT, H_CALL, 0x496E00, 63, + 0x498891, GAME_10US_COMPACT, H_CALL, 0x496E00, 64, + 0x498904, GAME_10US_COMPACT, H_CALL, 0x496E00, 65, + 0x498A30, GAME_10US_COMPACT, H_CALL, 0x496E00, 66, + 0x498A4F, GAME_10US_COMPACT, H_CALL, 0x496E00, 67, + 0x498A8A, GAME_10US_COMPACT, H_CALL, 0x496E00, 68, + 0x498ABB, GAME_10US_COMPACT, H_CALL, 0x496E00, 69, + 0x498BE4, GAME_10US_COMPACT, H_CALL, 0x496E00, 70, + 0x498CA8, GAME_10US_COMPACT, H_CALL, 0x496E00, 71, + 0x498D7D, GAME_10US_COMPACT, H_CALL, 0x496E00, 72, + 0x498E7C, GAME_10US_COMPACT, H_CALL, 0x496E00, 73, + 0x498EAE, GAME_10US_COMPACT, H_CALL, 0x496E00, 74, + 0x498EDC, GAME_10US_COMPACT, H_CALL, 0x496E00, 75>; + using def_t = void(CRunningScript *, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::CollectNextParameterWithoutIncreasingPC) + static int address; + static int global_address; + static const int id = 0x464250; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464250, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x471D36, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x4729C9, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x472A57, GAME_10US_COMPACT, H_CALL, 0x472310, 2, + 0x478783, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x47C61B, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x47C6F1, GAME_10US_COMPACT, H_CALL, 0x47C100, 2, + 0x47CECA, GAME_10US_COMPACT, H_CALL, 0x47C100, 3, + 0x47CF08, GAME_10US_COMPACT, H_CALL, 0x47C100, 4, + 0x47CF30, GAME_10US_COMPACT, H_CALL, 0x47C100, 5, + 0x47CF97, GAME_10US_COMPACT, H_CALL, 0x47C100, 6, + 0x47E5E2, GAME_10US_COMPACT, H_CALL, 0x47E090, 1, + 0x47F703, GAME_10US_COMPACT, H_CALL, 0x47F370, 1, + 0x47F7A6, GAME_10US_COMPACT, H_CALL, 0x47F370, 2, + 0x4805B6, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1, + 0x4816DC, GAME_10US_COMPACT, H_CALL, 0x481300, 1, + 0x484B26, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1, + 0x4854D3, GAME_10US_COMPACT, H_CALL, 0x483BD0, 2, + 0x48B1E9, GAME_10US_COMPACT, H_CALL, 0x48A320, 1, + 0x48BC51, GAME_10US_COMPACT, H_CALL, 0x48B590, 1, + 0x48CE62, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 1, + 0x48CF45, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 2, + 0x48DB86, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 3, + 0x4914C7, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x491871, GAME_10US_COMPACT, H_CALL, 0x490DB0, 2, + 0x491AC7, GAME_10US_COMPACT, H_CALL, 0x490DB0, 3, + 0x492269, GAME_10US_COMPACT, H_CALL, 0x490DB0, 4, + 0x494241, GAME_10US_COMPACT, H_CALL, 0x493FE0, 1, + 0x494A12, GAME_10US_COMPACT, H_CALL, 0x493FE0, 2, + 0x494A87, GAME_10US_COMPACT, H_CALL, 0x493FE0, 3, + 0x494B89, GAME_10US_COMPACT, H_CALL, 0x493FE0, 4, + 0x494BC5, GAME_10US_COMPACT, H_CALL, 0x493FE0, 5, + 0x494C05, GAME_10US_COMPACT, H_CALL, 0x493FE0, 6, + 0x494CD1, GAME_10US_COMPACT, H_CALL, 0x493FE0, 7, + 0x497304, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x49744F, GAME_10US_COMPACT, H_CALL, 0x496E00, 2, + 0x4979BF, GAME_10US_COMPACT, H_CALL, 0x496E00, 3, + 0x497BE2, GAME_10US_COMPACT, H_CALL, 0x496E00, 4, + 0x497E5F, GAME_10US_COMPACT, H_CALL, 0x496E00, 5>; + using def_t = tScriptParam(CRunningScript *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CRunningScript::StoreParameters) + static int address; + static int global_address; + static const int id = 0x464370; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464370, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4669D1, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x46774E, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1, + 0x46785B, GAME_10US_COMPACT, H_CALL, 0x466DE0, 2, + 0x467D9B, GAME_10US_COMPACT, H_CALL, 0x466DE0, 3, + 0x46821E, GAME_10US_COMPACT, H_CALL, 0x466DE0, 4, + 0x46829D, GAME_10US_COMPACT, H_CALL, 0x466DE0, 5, + 0x46959D, GAME_10US_COMPACT, H_CALL, 0x469390, 1, + 0x469745, GAME_10US_COMPACT, H_CALL, 0x469390, 2, + 0x469895, GAME_10US_COMPACT, H_CALL, 0x469390, 3, + 0x4699AF, GAME_10US_COMPACT, H_CALL, 0x469390, 4, + 0x469D97, GAME_10US_COMPACT, H_CALL, 0x469390, 5, + 0x46B565, GAME_10US_COMPACT, H_CALL, 0x46B460, 1, + 0x46B880, GAME_10US_COMPACT, H_CALL, 0x46B460, 2, + 0x46B89A, GAME_10US_COMPACT, H_CALL, 0x46B460, 3, + 0x46B986, GAME_10US_COMPACT, H_CALL, 0x46B460, 4, + 0x46B9B9, GAME_10US_COMPACT, H_CALL, 0x46B460, 5, + 0x46B9EC, GAME_10US_COMPACT, H_CALL, 0x46B460, 6, + 0x46BB04, GAME_10US_COMPACT, H_CALL, 0x46B460, 7, + 0x46BBAD, GAME_10US_COMPACT, H_CALL, 0x46B460, 8, + 0x46BBC7, GAME_10US_COMPACT, H_CALL, 0x46B460, 9, + 0x46BC24, GAME_10US_COMPACT, H_CALL, 0x46B460, 10, + 0x46BD59, GAME_10US_COMPACT, H_CALL, 0x46B460, 11, + 0x46BE03, GAME_10US_COMPACT, H_CALL, 0x46B460, 12, + 0x46BE24, GAME_10US_COMPACT, H_CALL, 0x46B460, 13, + 0x46C043, GAME_10US_COMPACT, H_CALL, 0x46B460, 14, + 0x46C112, GAME_10US_COMPACT, H_CALL, 0x46B460, 15, + 0x46C13D, GAME_10US_COMPACT, H_CALL, 0x46B460, 16, + 0x46C216, GAME_10US_COMPACT, H_CALL, 0x46B460, 17, + 0x46C3F8, GAME_10US_COMPACT, H_CALL, 0x46B460, 18, + 0x46C45C, GAME_10US_COMPACT, H_CALL, 0x46B460, 19, + 0x46C486, GAME_10US_COMPACT, H_CALL, 0x46B460, 20, + 0x46C4AB, GAME_10US_COMPACT, H_CALL, 0x46B460, 21, + 0x46C73B, GAME_10US_COMPACT, H_CALL, 0x46B460, 22, + 0x46C84E, GAME_10US_COMPACT, H_CALL, 0x46B460, 23, + 0x46E166, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x46E33C, GAME_10US_COMPACT, H_CALL, 0x46D050, 2, + 0x46EB8B, GAME_10US_COMPACT, H_CALL, 0x46D050, 3, + 0x46EBCF, GAME_10US_COMPACT, H_CALL, 0x46D050, 4, + 0x46ED8D, GAME_10US_COMPACT, H_CALL, 0x46D050, 5, + 0x470B20, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x470C75, GAME_10US_COMPACT, H_CALL, 0x470A90, 2, + 0x470D9E, GAME_10US_COMPACT, H_CALL, 0x470A90, 3, + 0x470E4F, GAME_10US_COMPACT, H_CALL, 0x470A90, 4, + 0x470ECD, GAME_10US_COMPACT, H_CALL, 0x470A90, 5, + 0x47124E, GAME_10US_COMPACT, H_CALL, 0x470A90, 6, + 0x471714, GAME_10US_COMPACT, H_CALL, 0x470A90, 7, + 0x47172E, GAME_10US_COMPACT, H_CALL, 0x470A90, 8, + 0x471D6E, GAME_10US_COMPACT, H_CALL, 0x470A90, 9, + 0x471E00, GAME_10US_COMPACT, H_CALL, 0x470A90, 10, + 0x47235E, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x472998, GAME_10US_COMPACT, H_CALL, 0x472310, 2, + 0x472A05, GAME_10US_COMPACT, H_CALL, 0x472310, 3, + 0x472A93, GAME_10US_COMPACT, H_CALL, 0x472310, 4, + 0x472C57, GAME_10US_COMPACT, H_CALL, 0x472310, 5, + 0x472FAC, GAME_10US_COMPACT, H_CALL, 0x472310, 6, + 0x472FC8, GAME_10US_COMPACT, H_CALL, 0x472310, 7, + 0x473344, GAME_10US_COMPACT, H_CALL, 0x472310, 8, + 0x47378F, GAME_10US_COMPACT, H_CALL, 0x472310, 9, + 0x473825, GAME_10US_COMPACT, H_CALL, 0x472310, 10, + 0x473D97, GAME_10US_COMPACT, H_CALL, 0x472310, 11, + 0x474BC8, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x474BFE, GAME_10US_COMPACT, H_CALL, 0x474900, 2, + 0x4754AC, GAME_10US_COMPACT, H_CALL, 0x474900, 3, + 0x4754F4, GAME_10US_COMPACT, H_CALL, 0x474900, 4, + 0x4755C4, GAME_10US_COMPACT, H_CALL, 0x474900, 5, + 0x475626, GAME_10US_COMPACT, H_CALL, 0x474900, 6, + 0x475655, GAME_10US_COMPACT, H_CALL, 0x474900, 7, + 0x47598A, GAME_10US_COMPACT, H_CALL, 0x474900, 8, + 0x4759B0, GAME_10US_COMPACT, H_CALL, 0x474900, 9, + 0x475B8A, GAME_10US_COMPACT, H_CALL, 0x474900, 10, + 0x475DA5, GAME_10US_COMPACT, H_CALL, 0x474900, 11, + 0x476082, GAME_10US_COMPACT, H_CALL, 0x474900, 12, + 0x47649C, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1, + 0x47658D, GAME_10US_COMPACT, H_CALL, 0x4762D0, 2, + 0x4765FF, GAME_10US_COMPACT, H_CALL, 0x4762D0, 3, + 0x4769E0, GAME_10US_COMPACT, H_CALL, 0x4762D0, 4, + 0x476BCB, GAME_10US_COMPACT, H_CALL, 0x4762D0, 5, + 0x476E5B, GAME_10US_COMPACT, H_CALL, 0x4762D0, 6, + 0x476ED6, GAME_10US_COMPACT, H_CALL, 0x4762D0, 7, + 0x4776B0, GAME_10US_COMPACT, H_CALL, 0x4762D0, 8, + 0x477994, GAME_10US_COMPACT, H_CALL, 0x4762D0, 9, + 0x477BC6, GAME_10US_COMPACT, H_CALL, 0x4762D0, 10, + 0x477BE9, GAME_10US_COMPACT, H_CALL, 0x4762D0, 11, + 0x478193, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x478215, GAME_10US_COMPACT, H_CALL, 0x478000, 2, + 0x47835C, GAME_10US_COMPACT, H_CALL, 0x478000, 3, + 0x47838C, GAME_10US_COMPACT, H_CALL, 0x478000, 4, + 0x4783AA, GAME_10US_COMPACT, H_CALL, 0x478000, 5, + 0x4783DA, GAME_10US_COMPACT, H_CALL, 0x478000, 6, + 0x4783F8, GAME_10US_COMPACT, H_CALL, 0x478000, 7, + 0x478416, GAME_10US_COMPACT, H_CALL, 0x478000, 8, + 0x478434, GAME_10US_COMPACT, H_CALL, 0x478000, 9, + 0x478452, GAME_10US_COMPACT, H_CALL, 0x478000, 10, + 0x478470, GAME_10US_COMPACT, H_CALL, 0x478000, 11, + 0x47848E, GAME_10US_COMPACT, H_CALL, 0x478000, 12, + 0x4784AC, GAME_10US_COMPACT, H_CALL, 0x478000, 13, + 0x4784DA, GAME_10US_COMPACT, H_CALL, 0x478000, 14, + 0x4787F9, GAME_10US_COMPACT, H_CALL, 0x478000, 15, + 0x4788EF, GAME_10US_COMPACT, H_CALL, 0x478000, 16, + 0x478A07, GAME_10US_COMPACT, H_CALL, 0x478000, 17, + 0x478C10, GAME_10US_COMPACT, H_CALL, 0x478000, 18, + 0x478C47, GAME_10US_COMPACT, H_CALL, 0x478000, 19, + 0x478D5B, GAME_10US_COMPACT, H_CALL, 0x478000, 20, + 0x4792D9, GAME_10US_COMPACT, H_CALL, 0x478000, 21, + 0x4794D3, GAME_10US_COMPACT, H_CALL, 0x478000, 22, + 0x4794F4, GAME_10US_COMPACT, H_CALL, 0x478000, 23, + 0x47952A, GAME_10US_COMPACT, H_CALL, 0x478000, 24, + 0x479925, GAME_10US_COMPACT, H_CALL, 0x478000, 25, + 0x47A11D, GAME_10US_COMPACT, H_CALL, 0x479DA0, 1, + 0x47A1DB, GAME_10US_COMPACT, H_CALL, 0x479DA0, 2, + 0x47A502, GAME_10US_COMPACT, H_CALL, 0x479DA0, 3, + 0x47A640, GAME_10US_COMPACT, H_CALL, 0x479DA0, 4, + 0x47ABB0, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x47AEC3, GAME_10US_COMPACT, H_CALL, 0x47A760, 2, + 0x47AFC6, GAME_10US_COMPACT, H_CALL, 0x47A760, 3, + 0x47B16D, GAME_10US_COMPACT, H_CALL, 0x47A760, 4, + 0x47B4FD, GAME_10US_COMPACT, H_CALL, 0x47A760, 5, + 0x47B57B, GAME_10US_COMPACT, H_CALL, 0x47A760, 6, + 0x47B750, GAME_10US_COMPACT, H_CALL, 0x47A760, 7, + 0x47B96B, GAME_10US_COMPACT, H_CALL, 0x47A760, 8, + 0x47C220, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x47C651, GAME_10US_COMPACT, H_CALL, 0x47C100, 2, + 0x47C755, GAME_10US_COMPACT, H_CALL, 0x47C100, 3, + 0x47CB35, GAME_10US_COMPACT, H_CALL, 0x47C100, 4, + 0x47CC55, GAME_10US_COMPACT, H_CALL, 0x47C100, 5, + 0x47CFFC, GAME_10US_COMPACT, H_CALL, 0x47C100, 6, + 0x47D08A, GAME_10US_COMPACT, H_CALL, 0x47C100, 7, + 0x47D5AE, GAME_10US_COMPACT, H_CALL, 0x47D210, 1, + 0x47D9D4, GAME_10US_COMPACT, H_CALL, 0x47D210, 2, + 0x47DD5A, GAME_10US_COMPACT, H_CALL, 0x47D210, 3, + 0x47DDA0, GAME_10US_COMPACT, H_CALL, 0x47D210, 4, + 0x47E180, GAME_10US_COMPACT, H_CALL, 0x47E090, 1, + 0x47E316, GAME_10US_COMPACT, H_CALL, 0x47E090, 2, + 0x47E34C, GAME_10US_COMPACT, H_CALL, 0x47E090, 3, + 0x47E3AD, GAME_10US_COMPACT, H_CALL, 0x47E090, 4, + 0x47E3EF, GAME_10US_COMPACT, H_CALL, 0x47E090, 5, + 0x47E647, GAME_10US_COMPACT, H_CALL, 0x47E090, 6, + 0x47EA59, GAME_10US_COMPACT, H_CALL, 0x47E090, 7, + 0x47F3A7, GAME_10US_COMPACT, H_CALL, 0x47F370, 1, + 0x47F4A5, GAME_10US_COMPACT, H_CALL, 0x47F370, 2, + 0x47F608, GAME_10US_COMPACT, H_CALL, 0x47F370, 3, + 0x47F810, GAME_10US_COMPACT, H_CALL, 0x47F370, 4, + 0x47FBBE, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1, + 0x47FED8, GAME_10US_COMPACT, H_CALL, 0x47FA30, 2, + 0x47FF6F, GAME_10US_COMPACT, H_CALL, 0x47FA30, 3, + 0x48050D, GAME_10US_COMPACT, H_CALL, 0x47FA30, 4, + 0x480669, GAME_10US_COMPACT, H_CALL, 0x47FA30, 5, + 0x4806E7, GAME_10US_COMPACT, H_CALL, 0x47FA30, 6, + 0x48074D, GAME_10US_COMPACT, H_CALL, 0x47FA30, 7, + 0x480969, GAME_10US_COMPACT, H_CALL, 0x47FA30, 8, + 0x48099E, GAME_10US_COMPACT, H_CALL, 0x47FA30, 9, + 0x4809F0, GAME_10US_COMPACT, H_CALL, 0x47FA30, 10, + 0x480A43, GAME_10US_COMPACT, H_CALL, 0x47FA30, 11, + 0x4814DA, GAME_10US_COMPACT, H_CALL, 0x481300, 1, + 0x48160F, GAME_10US_COMPACT, H_CALL, 0x481300, 2, + 0x481755, GAME_10US_COMPACT, H_CALL, 0x481300, 3, + 0x483500, GAME_10US_COMPACT, H_CALL, 0x481300, 4, + 0x484B6B, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1, + 0x484C4B, GAME_10US_COMPACT, H_CALL, 0x483BD0, 2, + 0x485367, GAME_10US_COMPACT, H_CALL, 0x483BD0, 3, + 0x48550A, GAME_10US_COMPACT, H_CALL, 0x483BD0, 4, + 0x489677, GAME_10US_COMPACT, H_CALL, 0x489500, 1, + 0x489825, GAME_10US_COMPACT, H_CALL, 0x489500, 2, + 0x489B47, GAME_10US_COMPACT, H_CALL, 0x489500, 3, + 0x489C3C, GAME_10US_COMPACT, H_CALL, 0x489500, 4, + 0x489DA8, GAME_10US_COMPACT, H_CALL, 0x489500, 5, + 0x489EF9, GAME_10US_COMPACT, H_CALL, 0x489500, 6, + 0x489FDF, GAME_10US_COMPACT, H_CALL, 0x489500, 7, + 0x48A3F8, GAME_10US_COMPACT, H_CALL, 0x48A320, 1, + 0x48A7A0, GAME_10US_COMPACT, H_CALL, 0x48A320, 2, + 0x48A9AD, GAME_10US_COMPACT, H_CALL, 0x48A320, 3, + 0x48A9CF, GAME_10US_COMPACT, H_CALL, 0x48A320, 4, + 0x48AA34, GAME_10US_COMPACT, H_CALL, 0x48A320, 5, + 0x48AB05, GAME_10US_COMPACT, H_CALL, 0x48A320, 6, + 0x48AF1F, GAME_10US_COMPACT, H_CALL, 0x48A320, 7, + 0x48B189, GAME_10US_COMPACT, H_CALL, 0x48A320, 8, + 0x48B254, GAME_10US_COMPACT, H_CALL, 0x48A320, 9, + 0x48B7A9, GAME_10US_COMPACT, H_CALL, 0x48B590, 1, + 0x48B8E8, GAME_10US_COMPACT, H_CALL, 0x48B590, 2, + 0x48BB44, GAME_10US_COMPACT, H_CALL, 0x48B590, 3, + 0x48BCBA, GAME_10US_COMPACT, H_CALL, 0x48B590, 4, + 0x48C159, GAME_10US_COMPACT, H_CALL, 0x48B590, 5, + 0x48C736, GAME_10US_COMPACT, H_CALL, 0x48B590, 6, + 0x48C9C8, GAME_10US_COMPACT, H_CALL, 0x48B590, 7, + 0x48CB0A, GAME_10US_COMPACT, H_CALL, 0x48B590, 8, + 0x48CB61, GAME_10US_COMPACT, H_CALL, 0x48B590, 9, + 0x48CECA, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 1, + 0x48D7EE, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 2, + 0x48DBF3, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 3, + 0x48EDAF, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 1, + 0x48EFF0, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 2, + 0x48F04B, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 3, + 0x48F32D, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 4, + 0x48F773, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 5, + 0x48FAE0, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 6, + 0x4913E9, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x491500, GAME_10US_COMPACT, H_CALL, 0x490DB0, 2, + 0x4917F6, GAME_10US_COMPACT, H_CALL, 0x490DB0, 3, + 0x4918E2, GAME_10US_COMPACT, H_CALL, 0x490DB0, 4, + 0x4918FC, GAME_10US_COMPACT, H_CALL, 0x490DB0, 5, + 0x491C27, GAME_10US_COMPACT, H_CALL, 0x490DB0, 6, + 0x491FD9, GAME_10US_COMPACT, H_CALL, 0x490DB0, 7, + 0x491FF3, GAME_10US_COMPACT, H_CALL, 0x490DB0, 8, + 0x49224C, GAME_10US_COMPACT, H_CALL, 0x490DB0, 9, + 0x4922AF, GAME_10US_COMPACT, H_CALL, 0x490DB0, 10, + 0x49412E, GAME_10US_COMPACT, H_CALL, 0x493FE0, 1, + 0x49414F, GAME_10US_COMPACT, H_CALL, 0x493FE0, 2, + 0x4942FD, GAME_10US_COMPACT, H_CALL, 0x493FE0, 3, + 0x494317, GAME_10US_COMPACT, H_CALL, 0x493FE0, 4, + 0x494464, GAME_10US_COMPACT, H_CALL, 0x493FE0, 5, + 0x494495, GAME_10US_COMPACT, H_CALL, 0x493FE0, 6, + 0x494654, GAME_10US_COMPACT, H_CALL, 0x493FE0, 7, + 0x49466F, GAME_10US_COMPACT, H_CALL, 0x493FE0, 8, + 0x49475B, GAME_10US_COMPACT, H_CALL, 0x493FE0, 9, + 0x494A62, GAME_10US_COMPACT, H_CALL, 0x493FE0, 10, + 0x494DBA, GAME_10US_COMPACT, H_CALL, 0x493FE0, 11, + 0x495AE8, GAME_10US_COMPACT, H_CALL, 0x493FE0, 12, + 0x495DA4, GAME_10US_COMPACT, H_CALL, 0x493FE0, 13, + 0x495DD8, GAME_10US_COMPACT, H_CALL, 0x493FE0, 14, + 0x497275, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x49733D, GAME_10US_COMPACT, H_CALL, 0x496E00, 2, + 0x4974F9, GAME_10US_COMPACT, H_CALL, 0x496E00, 3, + 0x497934, GAME_10US_COMPACT, H_CALL, 0x496E00, 4, + 0x497C1A, GAME_10US_COMPACT, H_CALL, 0x496E00, 5, + 0x49837C, GAME_10US_COMPACT, H_CALL, 0x496E00, 6, + 0x4983EA, GAME_10US_COMPACT, H_CALL, 0x496E00, 7, + 0x498404, GAME_10US_COMPACT, H_CALL, 0x496E00, 8, + 0x49841E, GAME_10US_COMPACT, H_CALL, 0x496E00, 9, + 0x498438, GAME_10US_COMPACT, H_CALL, 0x496E00, 10, + 0x498452, GAME_10US_COMPACT, H_CALL, 0x496E00, 11, + 0x49846C, GAME_10US_COMPACT, H_CALL, 0x496E00, 12, + 0x498496, GAME_10US_COMPACT, H_CALL, 0x496E00, 13, + 0x4984B0, GAME_10US_COMPACT, H_CALL, 0x496E00, 14, + 0x4984CA, GAME_10US_COMPACT, H_CALL, 0x496E00, 15, + 0x4984E4, GAME_10US_COMPACT, H_CALL, 0x496E00, 16, + 0x4984FE, GAME_10US_COMPACT, H_CALL, 0x496E00, 17, + 0x498518, GAME_10US_COMPACT, H_CALL, 0x496E00, 18, + 0x498532, GAME_10US_COMPACT, H_CALL, 0x496E00, 19, + 0x49854C, GAME_10US_COMPACT, H_CALL, 0x496E00, 20, + 0x498566, GAME_10US_COMPACT, H_CALL, 0x496E00, 21, + 0x498580, GAME_10US_COMPACT, H_CALL, 0x496E00, 22, + 0x49859A, GAME_10US_COMPACT, H_CALL, 0x496E00, 23, + 0x4988F4, GAME_10US_COMPACT, H_CALL, 0x496E00, 24, + 0x498A14, GAME_10US_COMPACT, H_CALL, 0x496E00, 25, + 0x498C98, GAME_10US_COMPACT, H_CALL, 0x496E00, 26>; + using def_t = void(CRunningScript *, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ReadParametersForNewlyStartedScript) + static int address; + static int global_address; + static const int id = 0x464500; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464500, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x466846, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x476775, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1>; + using def_t = void(CRunningScript *, CRunningScript *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::GetIndexOfGlobalVariable) + static int address; + static int global_address; + static const int id = 0x464700; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464700, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x471760, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x472090, GAME_10US_COMPACT, H_CALL, 0x470A90, 2, + 0x47C286, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x47C2D4, GAME_10US_COMPACT, H_CALL, 0x47C100, 2, + 0x47C2F3, GAME_10US_COMPACT, H_CALL, 0x47C100, 3, + 0x484C59, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1, + 0x484CB5, GAME_10US_COMPACT, H_CALL, 0x483BD0, 2, + 0x48C531, GAME_10US_COMPACT, H_CALL, 0x48B590, 1, + 0x48EE92, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 1, + 0x4947CB, GAME_10US_COMPACT, H_CALL, 0x493FE0, 1, + 0x4947E7, GAME_10US_COMPACT, H_CALL, 0x493FE0, 2, + 0x494803, GAME_10US_COMPACT, H_CALL, 0x493FE0, 3>; + using def_t = short(CRunningScript *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CRunningScript::GetPointerToScriptVariable) + static int address; + static int global_address; + static const int id = 0x464790; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464790, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x465F2A, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x465F5A, GAME_10US_COMPACT, H_CALL, 0x465E60, 2, + 0x465F8B, GAME_10US_COMPACT, H_CALL, 0x465E60, 3, + 0x465FC3, GAME_10US_COMPACT, H_CALL, 0x465E60, 4, + 0x465FE6, GAME_10US_COMPACT, H_CALL, 0x465E60, 5, + 0x466019, GAME_10US_COMPACT, H_CALL, 0x465E60, 6, + 0x466040, GAME_10US_COMPACT, H_CALL, 0x465E60, 7, + 0x466070, GAME_10US_COMPACT, H_CALL, 0x465E60, 8, + 0x466091, GAME_10US_COMPACT, H_CALL, 0x465E60, 9, + 0x4660B4, GAME_10US_COMPACT, H_CALL, 0x465E60, 10, + 0x4660D5, GAME_10US_COMPACT, H_CALL, 0x465E60, 11, + 0x46610D, GAME_10US_COMPACT, H_CALL, 0x465E60, 12, + 0x46612F, GAME_10US_COMPACT, H_CALL, 0x465E60, 13, + 0x466150, GAME_10US_COMPACT, H_CALL, 0x465E60, 14, + 0x466172, GAME_10US_COMPACT, H_CALL, 0x465E60, 15, + 0x466193, GAME_10US_COMPACT, H_CALL, 0x465E60, 16, + 0x4661B5, GAME_10US_COMPACT, H_CALL, 0x465E60, 17, + 0x4661D6, GAME_10US_COMPACT, H_CALL, 0x465E60, 18, + 0x466214, GAME_10US_COMPACT, H_CALL, 0x465E60, 19, + 0x466259, GAME_10US_COMPACT, H_CALL, 0x465E60, 20, + 0x466293, GAME_10US_COMPACT, H_CALL, 0x465E60, 21, + 0x4662C6, GAME_10US_COMPACT, H_CALL, 0x465E60, 22, + 0x4662D1, GAME_10US_COMPACT, H_CALL, 0x465E60, 23, + 0x466300, GAME_10US_COMPACT, H_CALL, 0x465E60, 24, + 0x46630D, GAME_10US_COMPACT, H_CALL, 0x465E60, 25, + 0x46631E, GAME_10US_COMPACT, H_CALL, 0x465E60, 26, + 0x466356, GAME_10US_COMPACT, H_CALL, 0x465E60, 27, + 0x466398, GAME_10US_COMPACT, H_CALL, 0x465E60, 28, + 0x4663BA, GAME_10US_COMPACT, H_CALL, 0x465E60, 29, + 0x4663D0, GAME_10US_COMPACT, H_CALL, 0x465E60, 30, + 0x4663DB, GAME_10US_COMPACT, H_CALL, 0x465E60, 31, + 0x4663EA, GAME_10US_COMPACT, H_CALL, 0x465E60, 32, + 0x4663F5, GAME_10US_COMPACT, H_CALL, 0x465E60, 33, + 0x46640C, GAME_10US_COMPACT, H_CALL, 0x465E60, 34, + 0x466417, GAME_10US_COMPACT, H_CALL, 0x465E60, 35, + 0x466429, GAME_10US_COMPACT, H_CALL, 0x465E60, 36, + 0x466434, GAME_10US_COMPACT, H_CALL, 0x465E60, 37, + 0x466446, GAME_10US_COMPACT, H_CALL, 0x465E60, 38, + 0x46646B, GAME_10US_COMPACT, H_CALL, 0x465E60, 39, + 0x466498, GAME_10US_COMPACT, H_CALL, 0x465E60, 40, + 0x4664BA, GAME_10US_COMPACT, H_CALL, 0x465E60, 41, + 0x4664D9, GAME_10US_COMPACT, H_CALL, 0x465E60, 42, + 0x4664E6, GAME_10US_COMPACT, H_CALL, 0x465E60, 43, + 0x4664F3, GAME_10US_COMPACT, H_CALL, 0x465E60, 44, + 0x4664FE, GAME_10US_COMPACT, H_CALL, 0x465E60, 45, + 0x466515, GAME_10US_COMPACT, H_CALL, 0x465E60, 46, + 0x46653B, GAME_10US_COMPACT, H_CALL, 0x465E60, 47, + 0x466568, GAME_10US_COMPACT, H_CALL, 0x465E60, 48, + 0x466580, GAME_10US_COMPACT, H_CALL, 0x465E60, 49, + 0x46659B, GAME_10US_COMPACT, H_CALL, 0x465E60, 50, + 0x4665A6, GAME_10US_COMPACT, H_CALL, 0x465E60, 51, + 0x4665BD, GAME_10US_COMPACT, H_CALL, 0x465E60, 52, + 0x4665C8, GAME_10US_COMPACT, H_CALL, 0x465E60, 53, + 0x4665F3, GAME_10US_COMPACT, H_CALL, 0x465E60, 54, + 0x4665FE, GAME_10US_COMPACT, H_CALL, 0x465E60, 55, + 0x466615, GAME_10US_COMPACT, H_CALL, 0x465E60, 56, + 0x466620, GAME_10US_COMPACT, H_CALL, 0x465E60, 57, + 0x466637, GAME_10US_COMPACT, H_CALL, 0x465E60, 58, + 0x46665C, GAME_10US_COMPACT, H_CALL, 0x465E60, 59, + 0x466682, GAME_10US_COMPACT, H_CALL, 0x465E60, 60, + 0x46668F, GAME_10US_COMPACT, H_CALL, 0x465E60, 61, + 0x46669A, GAME_10US_COMPACT, H_CALL, 0x465E60, 62, + 0x4666B1, GAME_10US_COMPACT, H_CALL, 0x465E60, 63, + 0x4666BC, GAME_10US_COMPACT, H_CALL, 0x465E60, 64, + 0x4666D3, GAME_10US_COMPACT, H_CALL, 0x465E60, 65, + 0x4666F1, GAME_10US_COMPACT, H_CALL, 0x465E60, 66, + 0x46670F, GAME_10US_COMPACT, H_CALL, 0x465E60, 67, + 0x46671A, GAME_10US_COMPACT, H_CALL, 0x465E60, 68, + 0x466741, GAME_10US_COMPACT, H_CALL, 0x465E60, 69, + 0x46674C, GAME_10US_COMPACT, H_CALL, 0x465E60, 70, + 0x466774, GAME_10US_COMPACT, H_CALL, 0x465E60, 71, + 0x46677F, GAME_10US_COMPACT, H_CALL, 0x465E60, 72, + 0x466A33, GAME_10US_COMPACT, H_CALL, 0x465E60, 73, + 0x466A43, GAME_10US_COMPACT, H_CALL, 0x465E60, 74, + 0x466A4E, GAME_10US_COMPACT, H_CALL, 0x465E60, 75, + 0x466A72, GAME_10US_COMPACT, H_CALL, 0x465E60, 76, + 0x466A7D, GAME_10US_COMPACT, H_CALL, 0x465E60, 77, + 0x466A9F, GAME_10US_COMPACT, H_CALL, 0x465E60, 78, + 0x466AAA, GAME_10US_COMPACT, H_CALL, 0x465E60, 79, + 0x466ACE, GAME_10US_COMPACT, H_CALL, 0x465E60, 80, + 0x466AD9, GAME_10US_COMPACT, H_CALL, 0x465E60, 81, + 0x466AFB, GAME_10US_COMPACT, H_CALL, 0x465E60, 82, + 0x466B06, GAME_10US_COMPACT, H_CALL, 0x465E60, 83, + 0x466B2A, GAME_10US_COMPACT, H_CALL, 0x465E60, 84, + 0x466B35, GAME_10US_COMPACT, H_CALL, 0x465E60, 85, + 0x466B57, GAME_10US_COMPACT, H_CALL, 0x465E60, 86, + 0x466B62, GAME_10US_COMPACT, H_CALL, 0x465E60, 87, + 0x466B86, GAME_10US_COMPACT, H_CALL, 0x465E60, 88, + 0x466B91, GAME_10US_COMPACT, H_CALL, 0x465E60, 89, + 0x466BB3, GAME_10US_COMPACT, H_CALL, 0x465E60, 90, + 0x466BBE, GAME_10US_COMPACT, H_CALL, 0x465E60, 91, + 0x466BE2, GAME_10US_COMPACT, H_CALL, 0x465E60, 92, + 0x466BED, GAME_10US_COMPACT, H_CALL, 0x465E60, 93, + 0x466C0F, GAME_10US_COMPACT, H_CALL, 0x465E60, 94, + 0x466C1A, GAME_10US_COMPACT, H_CALL, 0x465E60, 95, + 0x466E17, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1, + 0x466E22, GAME_10US_COMPACT, H_CALL, 0x466DE0, 2, + 0x466E44, GAME_10US_COMPACT, H_CALL, 0x466DE0, 3, + 0x466E4F, GAME_10US_COMPACT, H_CALL, 0x466DE0, 4, + 0x466E73, GAME_10US_COMPACT, H_CALL, 0x466DE0, 5, + 0x466E7E, GAME_10US_COMPACT, H_CALL, 0x466DE0, 6, + 0x466EA0, GAME_10US_COMPACT, H_CALL, 0x466DE0, 7, + 0x466EAB, GAME_10US_COMPACT, H_CALL, 0x466DE0, 8, + 0x466ECF, GAME_10US_COMPACT, H_CALL, 0x466DE0, 9, + 0x466EDA, GAME_10US_COMPACT, H_CALL, 0x466DE0, 10, + 0x466EFF, GAME_10US_COMPACT, H_CALL, 0x466DE0, 11, + 0x466F0A, GAME_10US_COMPACT, H_CALL, 0x466DE0, 12, + 0x466F2E, GAME_10US_COMPACT, H_CALL, 0x466DE0, 13, + 0x466F39, GAME_10US_COMPACT, H_CALL, 0x466DE0, 14, + 0x466F5E, GAME_10US_COMPACT, H_CALL, 0x466DE0, 15, + 0x466F69, GAME_10US_COMPACT, H_CALL, 0x466DE0, 16, + 0x466F8D, GAME_10US_COMPACT, H_CALL, 0x466DE0, 17, + 0x466F98, GAME_10US_COMPACT, H_CALL, 0x466DE0, 18, + 0x466FBD, GAME_10US_COMPACT, H_CALL, 0x466DE0, 19, + 0x466FC8, GAME_10US_COMPACT, H_CALL, 0x466DE0, 20, + 0x466FEC, GAME_10US_COMPACT, H_CALL, 0x466DE0, 21, + 0x466FF7, GAME_10US_COMPACT, H_CALL, 0x466DE0, 22, + 0x46701C, GAME_10US_COMPACT, H_CALL, 0x466DE0, 23, + 0x467027, GAME_10US_COMPACT, H_CALL, 0x466DE0, 24, + 0x46704B, GAME_10US_COMPACT, H_CALL, 0x466DE0, 25, + 0x467056, GAME_10US_COMPACT, H_CALL, 0x466DE0, 26, + 0x46707D, GAME_10US_COMPACT, H_CALL, 0x466DE0, 27, + 0x467088, GAME_10US_COMPACT, H_CALL, 0x466DE0, 28, + 0x4670AC, GAME_10US_COMPACT, H_CALL, 0x466DE0, 29, + 0x4670B9, GAME_10US_COMPACT, H_CALL, 0x466DE0, 30, + 0x4670C4, GAME_10US_COMPACT, H_CALL, 0x466DE0, 31, + 0x4670E8, GAME_10US_COMPACT, H_CALL, 0x466DE0, 32, + 0x4670F8, GAME_10US_COMPACT, H_CALL, 0x466DE0, 33, + 0x467103, GAME_10US_COMPACT, H_CALL, 0x466DE0, 34, + 0x46712E, GAME_10US_COMPACT, H_CALL, 0x466DE0, 35, + 0x467139, GAME_10US_COMPACT, H_CALL, 0x466DE0, 36, + 0x46715D, GAME_10US_COMPACT, H_CALL, 0x466DE0, 37, + 0x46719A, GAME_10US_COMPACT, H_CALL, 0x466DE0, 38, + 0x4671AB, GAME_10US_COMPACT, H_CALL, 0x466DE0, 39, + 0x4671B6, GAME_10US_COMPACT, H_CALL, 0x466DE0, 40, + 0x4671C9, GAME_10US_COMPACT, H_CALL, 0x466DE0, 41, + 0x4671D4, GAME_10US_COMPACT, H_CALL, 0x466DE0, 42, + 0x4671E7, GAME_10US_COMPACT, H_CALL, 0x466DE0, 43, + 0x467212, GAME_10US_COMPACT, H_CALL, 0x466DE0, 44, + 0x467223, GAME_10US_COMPACT, H_CALL, 0x466DE0, 45, + 0x467230, GAME_10US_COMPACT, H_CALL, 0x466DE0, 46, + 0x46723B, GAME_10US_COMPACT, H_CALL, 0x466DE0, 47, + 0x467253, GAME_10US_COMPACT, H_CALL, 0x466DE0, 48, + 0x46725E, GAME_10US_COMPACT, H_CALL, 0x466DE0, 49, + 0x467280, GAME_10US_COMPACT, H_CALL, 0x466DE0, 50, + 0x46728B, GAME_10US_COMPACT, H_CALL, 0x466DE0, 51, + 0x4672AD, GAME_10US_COMPACT, H_CALL, 0x466DE0, 52, + 0x4672B8, GAME_10US_COMPACT, H_CALL, 0x466DE0, 53, + 0x4672C8, GAME_10US_COMPACT, H_CALL, 0x466DE0, 54, + 0x4672D3, GAME_10US_COMPACT, H_CALL, 0x466DE0, 55, + 0x4672F5, GAME_10US_COMPACT, H_CALL, 0x466DE0, 56, + 0x467300, GAME_10US_COMPACT, H_CALL, 0x466DE0, 57, + 0x467322, GAME_10US_COMPACT, H_CALL, 0x466DE0, 58, + 0x46732D, GAME_10US_COMPACT, H_CALL, 0x466DE0, 59, + 0x46733D, GAME_10US_COMPACT, H_CALL, 0x466DE0, 60, + 0x467348, GAME_10US_COMPACT, H_CALL, 0x466DE0, 61, + 0x46736A, GAME_10US_COMPACT, H_CALL, 0x466DE0, 62, + 0x467375, GAME_10US_COMPACT, H_CALL, 0x466DE0, 63, + 0x467397, GAME_10US_COMPACT, H_CALL, 0x466DE0, 64, + 0x4673A2, GAME_10US_COMPACT, H_CALL, 0x466DE0, 65, + 0x4673B7, GAME_10US_COMPACT, H_CALL, 0x466DE0, 66, + 0x4673C2, GAME_10US_COMPACT, H_CALL, 0x466DE0, 67, + 0x4673D2, GAME_10US_COMPACT, H_CALL, 0x466DE0, 68, + 0x4673DD, GAME_10US_COMPACT, H_CALL, 0x466DE0, 69, + 0x4673F2, GAME_10US_COMPACT, H_CALL, 0x466DE0, 70, + 0x4673FD, GAME_10US_COMPACT, H_CALL, 0x466DE0, 71, + 0x46740D, GAME_10US_COMPACT, H_CALL, 0x466DE0, 72, + 0x467418, GAME_10US_COMPACT, H_CALL, 0x466DE0, 73, + 0x46742D, GAME_10US_COMPACT, H_CALL, 0x466DE0, 74, + 0x467438, GAME_10US_COMPACT, H_CALL, 0x466DE0, 75, + 0x467448, GAME_10US_COMPACT, H_CALL, 0x466DE0, 76, + 0x467453, GAME_10US_COMPACT, H_CALL, 0x466DE0, 77, + 0x467468, GAME_10US_COMPACT, H_CALL, 0x466DE0, 78, + 0x467473, GAME_10US_COMPACT, H_CALL, 0x466DE0, 79, + 0x467483, GAME_10US_COMPACT, H_CALL, 0x466DE0, 80, + 0x4674AF, GAME_10US_COMPACT, H_CALL, 0x466DE0, 81, + 0x4674E8, GAME_10US_COMPACT, H_CALL, 0x466DE0, 82, + 0x46752C, GAME_10US_COMPACT, H_CALL, 0x466DE0, 83, + 0x46BC4D, GAME_10US_COMPACT, H_CALL, 0x46B460, 1, + 0x46C386, GAME_10US_COMPACT, H_CALL, 0x46B460, 2, + 0x470F20, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x470F3F, GAME_10US_COMPACT, H_CALL, 0x470A90, 2, + 0x472514, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x47251F, GAME_10US_COMPACT, H_CALL, 0x472310, 2, + 0x47253E, GAME_10US_COMPACT, H_CALL, 0x472310, 3, + 0x472549, GAME_10US_COMPACT, H_CALL, 0x472310, 4, + 0x475278, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x4752A6, GAME_10US_COMPACT, H_CALL, 0x474900, 2, + 0x4752D0, GAME_10US_COMPACT, H_CALL, 0x474900, 3, + 0x475300, GAME_10US_COMPACT, H_CALL, 0x474900, 4, + 0x475EF2, GAME_10US_COMPACT, H_CALL, 0x474900, 5, + 0x4760B3, GAME_10US_COMPACT, H_CALL, 0x474900, 6, + 0x4768D9, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1, + 0x4775D4, GAME_10US_COMPACT, H_CALL, 0x4762D0, 2, + 0x478C8D, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x478C98, GAME_10US_COMPACT, H_CALL, 0x478000, 2, + 0x478CE5, GAME_10US_COMPACT, H_CALL, 0x478000, 3, + 0x48B0E0, GAME_10US_COMPACT, H_CALL, 0x48A320, 1, + 0x48B104, GAME_10US_COMPACT, H_CALL, 0x48A320, 2, + 0x48B3B5, GAME_10US_COMPACT, H_CALL, 0x48A320, 3, + 0x48B3DF, GAME_10US_COMPACT, H_CALL, 0x48A320, 4, + 0x48B5E8, GAME_10US_COMPACT, H_CALL, 0x48B590, 1, + 0x48B618, GAME_10US_COMPACT, H_CALL, 0x48B590, 2, + 0x48B651, GAME_10US_COMPACT, H_CALL, 0x48B590, 3, + 0x48B67F, GAME_10US_COMPACT, H_CALL, 0x48B590, 4, + 0x48B6A4, GAME_10US_COMPACT, H_CALL, 0x48B590, 5, + 0x48B6D4, GAME_10US_COMPACT, H_CALL, 0x48B590, 6, + 0x48B70B, GAME_10US_COMPACT, H_CALL, 0x48B590, 7, + 0x48B739, GAME_10US_COMPACT, H_CALL, 0x48B590, 8, + 0x48F783, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 1, + 0x48F7B9, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 2, + 0x48F7F3, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 3, + 0x497DEC, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x497E22, GAME_10US_COMPACT, H_CALL, 0x496E00, 2>; + using def_t = tScriptParam *(CRunningScript *, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::Init) + static int address; + static int global_address; + static const int id = 0x4648E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4648E0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x464C4A, GAME_10US_COMPACT, H_CALL, 0x464C20, 1, + 0x464CE2, GAME_10US_COMPACT, H_CALL, 0x464C90, 1, + 0x468D82, GAME_10US_COMPACT, H_CALL, 0x468D50, 1>; + using def_t = void(CRunningScript *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CRunningScript::RemoveScriptFromList) + static int address; + static int global_address; + static const int id = 0x464BD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464BD0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4667F3, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x474D38, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x48A588, GAME_10US_COMPACT, H_CALL, 0x48A320, 1>; + using def_t = void(CRunningScript *, CRunningScript **); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::AddScriptToList) + static int address; + static int global_address; + static const int id = 0x464C00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464C00, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4667FF, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x474D44, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x48A594, GAME_10US_COMPACT, H_CALL, 0x48A320, 1>; + using def_t = void(CRunningScript *, CRunningScript **); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::IsPedDead) + static int address; + static int global_address; + static const int id = 0x464D70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464D70, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x469B34, GAME_10US_COMPACT, H_CALL, 0x469390, 1, + 0x46E1FF, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x474A9C, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x475A63, GAME_10US_COMPACT, H_CALL, 0x474900, 2, + 0x47A3C9, GAME_10US_COMPACT, H_CALL, 0x479DA0, 1, + 0x4803AE, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1>; + using def_t = bool(CRunningScript *, CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::UpdatePC) + static int address; + static int global_address; + static const int id = 0x464DA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464DA0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x465ED1, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x4667C1, GAME_10US_COMPACT, H_CALL, 0x465E60, 2, + 0x466880, GAME_10US_COMPACT, H_CALL, 0x465E60, 3, + 0x47183D, GAME_10US_COMPACT, H_CALL, 0x470A90, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::SetCharCoordinates) + static int address; + static int global_address; + static const int id = 0x464DC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464DC0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4678AB, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1, + 0x4753A4, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x4797AA, GAME_10US_COMPACT, H_CALL, 0x478000, 1>; + using def_t = void(CRunningScript *, CPed *, float, float, float, bool, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4,5,6>; +META_END + +META_BEGIN(CRunningScript::GetCorrectPedModelIndexForEmergencyServiceType) + static int address; + static int global_address; + static const int id = 0x464F50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464F50, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x467563, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1, + 0x469C64, GAME_10US_COMPACT, H_CALL, 0x469390, 1, + 0x47D86F, GAME_10US_COMPACT, H_CALL, 0x47D210, 1, + 0x491CB9, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1>; + using def_t = void(CRunningScript *, ePedType, int *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CRunningScript::ShutdownThisScript) + static int address; + static int global_address; + static const int id = 0x465AA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x465AA0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x466804, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x474D4B, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x48A59B, GAME_10US_COMPACT, H_CALL, 0x48A320, 1>; + using def_t = void(CRunningScript *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CRunningScript::GivePedScriptedTask) + static int address; + static int global_address; + static const int id = 0x465C20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x465C20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46B6C8, GAME_10US_COMPACT, H_CALL, 0x46B460, 1, + 0x46BCBA, GAME_10US_COMPACT, H_CALL, 0x46B460, 2, + 0x46BF2D, GAME_10US_COMPACT, H_CALL, 0x46B460, 3, + 0x46BFCC, GAME_10US_COMPACT, H_CALL, 0x46B460, 4, + 0x46C19B, GAME_10US_COMPACT, H_CALL, 0x46B460, 5, + 0x46C609, GAME_10US_COMPACT, H_CALL, 0x46B460, 6, + 0x46C9E6, GAME_10US_COMPACT, H_CALL, 0x46B460, 7, + 0x46CBC6, GAME_10US_COMPACT, H_CALL, 0x46B460, 8, + 0x46D4EE, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x46DA8E, GAME_10US_COMPACT, H_CALL, 0x46D050, 2, + 0x46DB51, GAME_10US_COMPACT, H_CALL, 0x46D050, 3, + 0x46DBDD, GAME_10US_COMPACT, H_CALL, 0x46D050, 4, + 0x46E6F3, GAME_10US_COMPACT, H_CALL, 0x46D050, 5, + 0x46E770, GAME_10US_COMPACT, H_CALL, 0x46D050, 6, + 0x46E90E, GAME_10US_COMPACT, H_CALL, 0x46D050, 7, + 0x46EC37, GAME_10US_COMPACT, H_CALL, 0x46D050, 8, + 0x470356, GAME_10US_COMPACT, H_CALL, 0x470150, 1, + 0x471050, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x47133F, GAME_10US_COMPACT, H_CALL, 0x470A90, 2, + 0x472926, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x472B7C, GAME_10US_COMPACT, H_CALL, 0x472310, 2, + 0x4735F1, GAME_10US_COMPACT, H_CALL, 0x472310, 3, + 0x473CA7, GAME_10US_COMPACT, H_CALL, 0x472310, 4, + 0x47404C, GAME_10US_COMPACT, H_CALL, 0x472310, 5, + 0x4740D0, GAME_10US_COMPACT, H_CALL, 0x472310, 6, + 0x474255, GAME_10US_COMPACT, H_CALL, 0x472310, 7, + 0x474E0E, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x479050, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x479FF1, GAME_10US_COMPACT, H_CALL, 0x479DA0, 1, + 0x47BC5D, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x48C345, GAME_10US_COMPACT, H_CALL, 0x48B590, 1, + 0x48FB58, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 1, + 0x48FB76, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 2, + 0x48FBE9, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 3, + 0x48FC31, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 4, + 0x48FC70, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 5, + 0x48FC91, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 6, + 0x48FD3E, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 7, + 0x48FDE5, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 8, + 0x48FE03, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 9, + 0x49045F, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 10, + 0x490756, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 11, + 0x4908FF, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 12, + 0x490975, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 13, + 0x490A49, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 14, + 0x490B72, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 15, + 0x490C06, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 16, + 0x490EEB, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x4927C7, GAME_10US_COMPACT, H_CALL, 0x490DB0, 2, + 0x492AA0, GAME_10US_COMPACT, H_CALL, 0x490DB0, 3, + 0x4948E3, GAME_10US_COMPACT, H_CALL, 0x493FE0, 1, + 0x4949D3, GAME_10US_COMPACT, H_CALL, 0x493FE0, 2, + 0x4949ED, GAME_10US_COMPACT, H_CALL, 0x493FE0, 3, + 0x494E28, GAME_10US_COMPACT, H_CALL, 0x493FE0, 4, + 0x494F79, GAME_10US_COMPACT, H_CALL, 0x493FE0, 5, + 0x49505A, GAME_10US_COMPACT, H_CALL, 0x493FE0, 6, + 0x49598A, GAME_10US_COMPACT, H_CALL, 0x493FE0, 7, + 0x495A20, GAME_10US_COMPACT, H_CALL, 0x493FE0, 8, + 0x496EAF, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x497071, GAME_10US_COMPACT, H_CALL, 0x496E00, 2, + 0x497438, GAME_10US_COMPACT, H_CALL, 0x496E00, 3, + 0x497763, GAME_10US_COMPACT, H_CALL, 0x496E00, 4, + 0x497CCF, GAME_10US_COMPACT, H_CALL, 0x496E00, 5, + 0x4981B2, GAME_10US_COMPACT, H_CALL, 0x496E00, 6, + 0x49824D, GAME_10US_COMPACT, H_CALL, 0x496E00, 7, + 0x4982E3, GAME_10US_COMPACT, H_CALL, 0x496E00, 8>; + using def_t = void(CRunningScript *, int, CTask *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands0To99) + static int address; + static int global_address; + static const int id = 0x465E60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x465E60, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x469EF5, GAME_10US_COMPACT, H_CALL, 0x469EB0, 1, + 0x469FF5, GAME_10US_COMPACT, H_CALL, 0x469F00, 1, + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands100To199) + static int address; + static int global_address; + static const int id = 0x466DE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x466DE0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands200To299) + static int address; + static int global_address; + static const int id = 0x469390; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x469390, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessOneCommand) + static int address; + static int global_address; + static const int id = 0x469EB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x469EB0, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CRunningScript *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CRunningScript::Process) + static int address; + static int global_address; + static const int id = 0x469F00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x469F00, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46A21B, GAME_10US_COMPACT, H_CALL, 0x46A000, 1>; + using def_t = void(CRunningScript *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CRunningScript::ScriptTaskPickUpObject) + static int address; + static int global_address; + static const int id = 0x46AF50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46AF50, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46D169, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x47905F, GAME_10US_COMPACT, H_CALL, 0x478000, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands1900To1999) + static int address; + static int global_address; + static const int id = 0x46B460; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46B460, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands1800To1899) + static int address; + static int global_address; + static const int id = 0x46D050; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46D050, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::PlayAnimScriptCommand) + static int address; + static int global_address; + static const int id = 0x470150; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470150, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x471E0F, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x473834, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x47BB0B, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x4913F8, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands2100To2199) + static int address; + static int global_address; + static const int id = 0x470A90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470A90, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands2000To2099) + static int address; + static int global_address; + static const int id = 0x472310; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x472310, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands2200To2299) + static int address; + static int global_address; + static const int id = 0x474900; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x474900, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands2300To2399) + static int address; + static int global_address; + static const int id = 0x4762D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4762D0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands2400To2499) + static int address; + static int global_address; + static const int id = 0x478000; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x478000, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands2600To2699) + static int address; + static int global_address; + static const int id = 0x479DA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x479DA0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands2500To2599) + static int address; + static int global_address; + static const int id = 0x47A760; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x47A760, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands300To399) + static int address; + static int global_address; + static const int id = 0x47C100; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x47C100, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands400To499) + static int address; + static int global_address; + static const int id = 0x47D210; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x47D210, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands500To599) + static int address; + static int global_address; + static const int id = 0x47E090; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x47E090, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands600To699) + static int address; + static int global_address; + static const int id = 0x47F370; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x47F370, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands700To799) + static int address; + static int global_address; + static const int id = 0x47FA30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x47FA30, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands800To899) + static int address; + static int global_address; + static const int id = 0x481300; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x481300, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands900To999) + static int address; + static int global_address; + static const int id = 0x483BD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x483BD0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::UpdateCompareFlag) + static int address; + static int global_address; + static const int id = 0x4859D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4859D0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4661F6, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x466234, GAME_10US_COMPACT, H_CALL, 0x465E60, 2, + 0x46626E, GAME_10US_COMPACT, H_CALL, 0x465E60, 3, + 0x4662A8, GAME_10US_COMPACT, H_CALL, 0x465E60, 4, + 0x4662E2, GAME_10US_COMPACT, H_CALL, 0x465E60, 5, + 0x467951, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1, + 0x467A4D, GAME_10US_COMPACT, H_CALL, 0x466DE0, 2, + 0x467F68, GAME_10US_COMPACT, H_CALL, 0x466DE0, 3, + 0x468019, GAME_10US_COMPACT, H_CALL, 0x466DE0, 4, + 0x468335, GAME_10US_COMPACT, H_CALL, 0x466DE0, 5, + 0x469602, GAME_10US_COMPACT, H_CALL, 0x469390, 1, + 0x46965B, GAME_10US_COMPACT, H_CALL, 0x469390, 2, + 0x4696AC, GAME_10US_COMPACT, H_CALL, 0x469390, 3, + 0x469709, GAME_10US_COMPACT, H_CALL, 0x469390, 4, + 0x46997E, GAME_10US_COMPACT, H_CALL, 0x469390, 5, + 0x469A46, GAME_10US_COMPACT, H_CALL, 0x469390, 6, + 0x469B07, GAME_10US_COMPACT, H_CALL, 0x469390, 7, + 0x469B49, GAME_10US_COMPACT, H_CALL, 0x469390, 8, + 0x469B61, GAME_10US_COMPACT, H_CALL, 0x469390, 9, + 0x469BAD, GAME_10US_COMPACT, H_CALL, 0x469390, 10, + 0x469BC5, GAME_10US_COMPACT, H_CALL, 0x469390, 11, + 0x469C16, GAME_10US_COMPACT, H_CALL, 0x469390, 12, + 0x469C2E, GAME_10US_COMPACT, H_CALL, 0x469390, 13, + 0x46B58B, GAME_10US_COMPACT, H_CALL, 0x46B460, 1, + 0x46C222, GAME_10US_COMPACT, H_CALL, 0x46B460, 2, + 0x46C2A3, GAME_10US_COMPACT, H_CALL, 0x46B460, 3, + 0x46D652, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x46D6E8, GAME_10US_COMPACT, H_CALL, 0x46D050, 2, + 0x46DE02, GAME_10US_COMPACT, H_CALL, 0x46D050, 3, + 0x46DF6E, GAME_10US_COMPACT, H_CALL, 0x46D050, 4, + 0x46E7F6, GAME_10US_COMPACT, H_CALL, 0x46D050, 5, + 0x46EAC3, GAME_10US_COMPACT, H_CALL, 0x46D050, 6, + 0x46EADB, GAME_10US_COMPACT, H_CALL, 0x46D050, 7, + 0x46EB2B, GAME_10US_COMPACT, H_CALL, 0x46D050, 8, + 0x470C00, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x470F67, GAME_10US_COMPACT, H_CALL, 0x470A90, 2, + 0x47214F, GAME_10US_COMPACT, H_CALL, 0x470A90, 3, + 0x47252E, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x47256A, GAME_10US_COMPACT, H_CALL, 0x472310, 2, + 0x472BC4, GAME_10US_COMPACT, H_CALL, 0x472310, 3, + 0x472D87, GAME_10US_COMPACT, H_CALL, 0x472310, 4, + 0x472DE6, GAME_10US_COMPACT, H_CALL, 0x472310, 5, + 0x473201, GAME_10US_COMPACT, H_CALL, 0x472310, 6, + 0x47331C, GAME_10US_COMPACT, H_CALL, 0x472310, 7, + 0x47339A, GAME_10US_COMPACT, H_CALL, 0x472310, 8, + 0x473ED5, GAME_10US_COMPACT, H_CALL, 0x472310, 9, + 0x473F0D, GAME_10US_COMPACT, H_CALL, 0x472310, 10, + 0x473F46, GAME_10US_COMPACT, H_CALL, 0x472310, 11, + 0x474319, GAME_10US_COMPACT, H_CALL, 0x472310, 12, + 0x474369, GAME_10US_COMPACT, H_CALL, 0x472310, 13, + 0x4749AF, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x474E1F, GAME_10US_COMPACT, H_CALL, 0x474900, 2, + 0x474E37, GAME_10US_COMPACT, H_CALL, 0x474900, 3, + 0x474FCD, GAME_10US_COMPACT, H_CALL, 0x474900, 4, + 0x475268, GAME_10US_COMPACT, H_CALL, 0x474900, 5, + 0x47546E, GAME_10US_COMPACT, H_CALL, 0x474900, 6, + 0x4760F3, GAME_10US_COMPACT, H_CALL, 0x474900, 7, + 0x476333, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1, + 0x4763A8, GAME_10US_COMPACT, H_CALL, 0x4762D0, 2, + 0x476F6A, GAME_10US_COMPACT, H_CALL, 0x4762D0, 3, + 0x476F8A, GAME_10US_COMPACT, H_CALL, 0x4762D0, 4, + 0x4773E5, GAME_10US_COMPACT, H_CALL, 0x4762D0, 5, + 0x4776F0, GAME_10US_COMPACT, H_CALL, 0x4762D0, 6, + 0x4779D9, GAME_10US_COMPACT, H_CALL, 0x4762D0, 7, + 0x477AD2, GAME_10US_COMPACT, H_CALL, 0x4762D0, 8, + 0x4781D5, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x4782CD, GAME_10US_COMPACT, H_CALL, 0x478000, 2, + 0x478528, GAME_10US_COMPACT, H_CALL, 0x478000, 3, + 0x478575, GAME_10US_COMPACT, H_CALL, 0x478000, 4, + 0x4785F9, GAME_10US_COMPACT, H_CALL, 0x478000, 5, + 0x478663, GAME_10US_COMPACT, H_CALL, 0x478000, 6, + 0x478752, GAME_10US_COMPACT, H_CALL, 0x478000, 7, + 0x47897C, GAME_10US_COMPACT, H_CALL, 0x478000, 8, + 0x478FA6, GAME_10US_COMPACT, H_CALL, 0x478000, 9, + 0x4793F5, GAME_10US_COMPACT, H_CALL, 0x478000, 10, + 0x479768, GAME_10US_COMPACT, H_CALL, 0x478000, 11, + 0x47980B, GAME_10US_COMPACT, H_CALL, 0x478000, 12, + 0x479AD3, GAME_10US_COMPACT, H_CALL, 0x478000, 13, + 0x479E69, GAME_10US_COMPACT, H_CALL, 0x479DA0, 1, + 0x479EE4, GAME_10US_COMPACT, H_CALL, 0x479DA0, 2, + 0x479EFB, GAME_10US_COMPACT, H_CALL, 0x479DA0, 3, + 0x47A0C8, GAME_10US_COMPACT, H_CALL, 0x479DA0, 4, + 0x47A1A5, GAME_10US_COMPACT, H_CALL, 0x479DA0, 5, + 0x47A22F, GAME_10US_COMPACT, H_CALL, 0x479DA0, 6, + 0x47A663, GAME_10US_COMPACT, H_CALL, 0x479DA0, 7, + 0x47A686, GAME_10US_COMPACT, H_CALL, 0x479DA0, 8, + 0x47A693, GAME_10US_COMPACT, H_CALL, 0x479DA0, 9, + 0x47A814, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x47A874, GAME_10US_COMPACT, H_CALL, 0x47A760, 2, + 0x47A9F5, GAME_10US_COMPACT, H_CALL, 0x47A760, 3, + 0x47AA3D, GAME_10US_COMPACT, H_CALL, 0x47A760, 4, + 0x47AADF, GAME_10US_COMPACT, H_CALL, 0x47A760, 5, + 0x47AB14, GAME_10US_COMPACT, H_CALL, 0x47A760, 6, + 0x47AD04, GAME_10US_COMPACT, H_CALL, 0x47A760, 7, + 0x47B000, GAME_10US_COMPACT, H_CALL, 0x47A760, 8, + 0x47B139, GAME_10US_COMPACT, H_CALL, 0x47A760, 9, + 0x47B2B0, GAME_10US_COMPACT, H_CALL, 0x47A760, 10, + 0x47B4E0, GAME_10US_COMPACT, H_CALL, 0x47A760, 11, + 0x47B537, GAME_10US_COMPACT, H_CALL, 0x47A760, 12, + 0x47B68C, GAME_10US_COMPACT, H_CALL, 0x47A760, 13, + 0x47B882, GAME_10US_COMPACT, H_CALL, 0x47A760, 14, + 0x47B8C2, GAME_10US_COMPACT, H_CALL, 0x47A760, 15, + 0x47B9EF, GAME_10US_COMPACT, H_CALL, 0x47A760, 16, + 0x47BBAA, GAME_10US_COMPACT, H_CALL, 0x47A760, 17, + 0x47C15A, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x47C3EA, GAME_10US_COMPACT, H_CALL, 0x47C100, 2, + 0x47C84B, GAME_10US_COMPACT, H_CALL, 0x47C100, 3, + 0x47CE62, GAME_10US_COMPACT, H_CALL, 0x47C100, 4, + 0x47CEB0, GAME_10US_COMPACT, H_CALL, 0x47C100, 5, + 0x47D0DB, GAME_10US_COMPACT, H_CALL, 0x47C100, 6, + 0x47D706, GAME_10US_COMPACT, H_CALL, 0x47D210, 1, + 0x47DF25, GAME_10US_COMPACT, H_CALL, 0x47D210, 2, + 0x47E135, GAME_10US_COMPACT, H_CALL, 0x47E090, 1, + 0x47E55F, GAME_10US_COMPACT, H_CALL, 0x47E090, 2, + 0x47E690, GAME_10US_COMPACT, H_CALL, 0x47E090, 3, + 0x47EE68, GAME_10US_COMPACT, H_CALL, 0x47E090, 4, + 0x47F023, GAME_10US_COMPACT, H_CALL, 0x47E090, 5, + 0x47F21A, GAME_10US_COMPACT, H_CALL, 0x47E090, 6, + 0x47F673, GAME_10US_COMPACT, H_CALL, 0x47F370, 1, + 0x47FAD2, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1, + 0x47FBCA, GAME_10US_COMPACT, H_CALL, 0x47FA30, 2, + 0x4801A3, GAME_10US_COMPACT, H_CALL, 0x47FA30, 3, + 0x480556, GAME_10US_COMPACT, H_CALL, 0x47FA30, 4, + 0x480776, GAME_10US_COMPACT, H_CALL, 0x47FA30, 5, + 0x4808D8, GAME_10US_COMPACT, H_CALL, 0x47FA30, 6, + 0x480E76, GAME_10US_COMPACT, H_CALL, 0x47FA30, 7, + 0x480EEC, GAME_10US_COMPACT, H_CALL, 0x47FA30, 8, + 0x4819FE, GAME_10US_COMPACT, H_CALL, 0x481300, 1, + 0x48232F, GAME_10US_COMPACT, H_CALL, 0x481300, 2, + 0x4823CE, GAME_10US_COMPACT, H_CALL, 0x481300, 3, + 0x482A8C, GAME_10US_COMPACT, H_CALL, 0x481300, 4, + 0x4831EE, GAME_10US_COMPACT, H_CALL, 0x481300, 5, + 0x48322F, GAME_10US_COMPACT, H_CALL, 0x481300, 6, + 0x483DCF, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1, + 0x484695, GAME_10US_COMPACT, H_CALL, 0x483BD0, 2, + 0x485093, GAME_10US_COMPACT, H_CALL, 0x483BD0, 3, + 0x48518F, GAME_10US_COMPACT, H_CALL, 0x483BD0, 4, + 0x4851F7, GAME_10US_COMPACT, H_CALL, 0x483BD0, 5, + 0x485255, GAME_10US_COMPACT, H_CALL, 0x483BD0, 6, + 0x485373, GAME_10US_COMPACT, H_CALL, 0x483BD0, 7, + 0x4854AD, GAME_10US_COMPACT, H_CALL, 0x483BD0, 8, + 0x486FC2, GAME_10US_COMPACT, H_CALL, 0x486D80, 1, + 0x487334, GAME_10US_COMPACT, H_CALL, 0x4870F0, 1, + 0x487642, GAME_10US_COMPACT, H_CALL, 0x487420, 1, + 0x487942, GAME_10US_COMPACT, H_CALL, 0x487720, 1, + 0x487C20, GAME_10US_COMPACT, H_CALL, 0x487A20, 1, + 0x487EA4, GAME_10US_COMPACT, H_CALL, 0x487D10, 1, + 0x488300, GAME_10US_COMPACT, H_CALL, 0x487F60, 1, + 0x4886DD, GAME_10US_COMPACT, H_CALL, 0x4883F0, 1, + 0x488AA2, GAME_10US_COMPACT, H_CALL, 0x488780, 1, + 0x488E1A, GAME_10US_COMPACT, H_CALL, 0x488B50, 1, + 0x4890BF, GAME_10US_COMPACT, H_CALL, 0x488EC0, 1, + 0x489326, GAME_10US_COMPACT, H_CALL, 0x489150, 1, + 0x4895C5, GAME_10US_COMPACT, H_CALL, 0x489500, 1, + 0x489C00, GAME_10US_COMPACT, H_CALL, 0x489500, 2, + 0x489C0E, GAME_10US_COMPACT, H_CALL, 0x489500, 3, + 0x489F88, GAME_10US_COMPACT, H_CALL, 0x489500, 4, + 0x48A017, GAME_10US_COMPACT, H_CALL, 0x489500, 5, + 0x48A0F6, GAME_10US_COMPACT, H_CALL, 0x489500, 6, + 0x48A16B, GAME_10US_COMPACT, H_CALL, 0x489500, 7, + 0x48A1DD, GAME_10US_COMPACT, H_CALL, 0x489500, 8, + 0x48A495, GAME_10US_COMPACT, H_CALL, 0x48A320, 1, + 0x48ABC6, GAME_10US_COMPACT, H_CALL, 0x48A320, 2, + 0x48AC7F, GAME_10US_COMPACT, H_CALL, 0x48A320, 3, + 0x48ACB9, GAME_10US_COMPACT, H_CALL, 0x48A320, 4, + 0x48AE55, GAME_10US_COMPACT, H_CALL, 0x48A320, 5, + 0x48AFA7, GAME_10US_COMPACT, H_CALL, 0x48A320, 6, + 0x48B124, GAME_10US_COMPACT, H_CALL, 0x48A320, 7, + 0x48B2F6, GAME_10US_COMPACT, H_CALL, 0x48A320, 8, + 0x48B351, GAME_10US_COMPACT, H_CALL, 0x48A320, 9, + 0x48B39D, GAME_10US_COMPACT, H_CALL, 0x48A320, 10, + 0x48B608, GAME_10US_COMPACT, H_CALL, 0x48B590, 1, + 0x48B638, GAME_10US_COMPACT, H_CALL, 0x48B590, 2, + 0x48B666, GAME_10US_COMPACT, H_CALL, 0x48B590, 3, + 0x48B694, GAME_10US_COMPACT, H_CALL, 0x48B590, 4, + 0x48B6C4, GAME_10US_COMPACT, H_CALL, 0x48B590, 5, + 0x48B6F2, GAME_10US_COMPACT, H_CALL, 0x48B590, 6, + 0x48B720, GAME_10US_COMPACT, H_CALL, 0x48B590, 7, + 0x48B74E, GAME_10US_COMPACT, H_CALL, 0x48B590, 8, + 0x48B8F4, GAME_10US_COMPACT, H_CALL, 0x48B590, 9, + 0x48BB9A, GAME_10US_COMPACT, H_CALL, 0x48B590, 10, + 0x48BBFE, GAME_10US_COMPACT, H_CALL, 0x48B590, 11, + 0x48C0FD, GAME_10US_COMPACT, H_CALL, 0x48B590, 12, + 0x48C2DD, GAME_10US_COMPACT, H_CALL, 0x48B590, 13, + 0x48C3C9, GAME_10US_COMPACT, H_CALL, 0x48B590, 14, + 0x48C450, GAME_10US_COMPACT, H_CALL, 0x48B590, 15, + 0x48C491, GAME_10US_COMPACT, H_CALL, 0x48B590, 16, + 0x48C826, GAME_10US_COMPACT, H_CALL, 0x48B590, 17, + 0x48D07E, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 1, + 0x48DAA4, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 2, + 0x48DAE8, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 3, + 0x48DB2C, GAME_10US_COMPACT, H_CALL, 0x48CDD0, 4, + 0x48EBE8, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 1, + 0x48EE46, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 2, + 0x48EE84, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 3, + 0x48F071, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 4, + 0x48F296, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 5, + 0x48F455, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 6, + 0x48FAC4, GAME_10US_COMPACT, H_CALL, 0x48EAA0, 7, + 0x4912E8, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x49171B, GAME_10US_COMPACT, H_CALL, 0x490DB0, 2, + 0x494079, GAME_10US_COMPACT, H_CALL, 0x493FE0, 1, + 0x4940A1, GAME_10US_COMPACT, H_CALL, 0x493FE0, 2, + 0x49570D, GAME_10US_COMPACT, H_CALL, 0x493FE0, 3, + 0x495753, GAME_10US_COMPACT, H_CALL, 0x493FE0, 4, + 0x4971C5, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x49758C, GAME_10US_COMPACT, H_CALL, 0x496E00, 2, + 0x497696, GAME_10US_COMPACT, H_CALL, 0x496E00, 3, + 0x4976BC, GAME_10US_COMPACT, H_CALL, 0x496E00, 4, + 0x4978FC, GAME_10US_COMPACT, H_CALL, 0x496E00, 5, + 0x4987F5, GAME_10US_COMPACT, H_CALL, 0x496E00, 6, + 0x498A20, GAME_10US_COMPACT, H_CALL, 0x496E00, 7, + 0x498A7A, GAME_10US_COMPACT, H_CALL, 0x496E00, 8, + 0x498BC3, GAME_10US_COMPACT, H_CALL, 0x496E00, 9>; + using def_t = void(CRunningScript *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::DoDeatharrestCheck) + static int address; + static int global_address; + static const int id = 0x485A50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x485A50, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x469F5B, GAME_10US_COMPACT, H_CALL, 0x469F00, 1>; + using def_t = void(CRunningScript *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CRunningScript::GetPadState) + static int address; + static int global_address; + static const int id = 0x485B10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x485B10, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4696D6, GAME_10US_COMPACT, H_CALL, 0x469390, 1, + 0x469733, GAME_10US_COMPACT, H_CALL, 0x469390, 2>; + using def_t = short(CRunningScript *, unsigned short, unsigned short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CRunningScript::LocateCharCommand) + static int address; + static int global_address; + static const int id = 0x486D80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x486D80, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x469754, GAME_10US_COMPACT, H_CALL, 0x469390, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::LocateCharCharCommand) + static int address; + static int global_address; + static const int id = 0x4870F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4870F0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x469763, GAME_10US_COMPACT, H_CALL, 0x469390, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::LocateCharCarCommand) + static int address; + static int global_address; + static const int id = 0x487420; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x487420, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47E36A, GAME_10US_COMPACT, H_CALL, 0x47E090, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::LocateCharObjectCommand) + static int address; + static int global_address; + static const int id = 0x487720; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x487720, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x48AB1C, GAME_10US_COMPACT, H_CALL, 0x48A320, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::LocateCarCommand) + static int address; + static int global_address; + static const int id = 0x487A20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x487A20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47D2EC, GAME_10US_COMPACT, H_CALL, 0x47D210, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::LocateObjectCommand) + static int address; + static int global_address; + static const int id = 0x487D10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x487D10, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x48C292, GAME_10US_COMPACT, H_CALL, 0x48B590, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::CharInAngledAreaCheckCommand) + static int address; + static int global_address; + static const int id = 0x487F60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x487F60, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x49128C, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ObjectInAngledAreaCheckCommand) + static int address; + static int global_address; + static const int id = 0x4883F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4883F0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4759BF, GAME_10US_COMPACT, H_CALL, 0x474900, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::FlameInAngledAreaCheckCommand) + static int address; + static int global_address; + static const int id = 0x488780; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x488780, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46DC20, GAME_10US_COMPACT, H_CALL, 0x46D050, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::CharInAreaCheckCommand) + static int address; + static int global_address; + static const int id = 0x488B50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x488B50, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47D2B0, GAME_10US_COMPACT, H_CALL, 0x47D210, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::CarInAreaCheckCommand) + static int address; + static int global_address; + static const int id = 0x488EC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x488EC0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47D2CE, GAME_10US_COMPACT, H_CALL, 0x47D210, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ObjectInAreaCheckCommand) + static int address; + static int global_address; + static const int id = 0x489150; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x489150, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x48C2EC, GAME_10US_COMPACT, H_CALL, 0x48B590, 1>; + using def_t = void(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ThisIsAValidRandomPed) + static int address; + static int global_address; + static const int id = 0x489490; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x489490, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46E22A, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x4803F6, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1>; + using def_t = bool(CRunningScript *, ePedType, bool, bool, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands1000To1099) + static int address; + static int global_address; + static const int id = 0x489500; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x489500, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands1100To1199) + static int address; + static int global_address; + static const int id = 0x48A320; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x48A320, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands1200To1299) + static int address; + static int global_address; + static const int id = 0x48B590; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x48B590, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands1300To1399) + static int address; + static int global_address; + static const int id = 0x48CDD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x48CDD0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands1400To1499) + static int address; + static int global_address; + static const int id = 0x48EAA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x48EAA0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands1500To1599) + static int address; + static int global_address; + static const int id = 0x490DB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x490DB0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands1600To1699) + static int address; + static int global_address; + static const int id = 0x493FE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x493FE0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CRunningScript::ProcessCommands1700To1799) + static int address; + static int global_address; + static const int id = 0x496E00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x496E00, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x8A6168, GAME_10US_COMPACT, H_CALLBACK, 0, 1>; + using def_t = char(CRunningScript *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CScriptResourceManager.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CScriptResourceManager.h new file mode 100644 index 00000000..e343bc31 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CScriptResourceManager.h @@ -0,0 +1,62 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CScriptResourceManager::AddToResourceManager) + static int address; + static int global_address; + static const int id = 0x4704B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4704B0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4787F0, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x47EE12, GAME_10US_COMPACT, H_CALL, 0x47E090, 1, + 0x47EFC3, GAME_10US_COMPACT, H_CALL, 0x47E090, 2, + 0x48C385, GAME_10US_COMPACT, H_CALL, 0x48B590, 1>; + using def_t = void(CScriptResourceManager *, int, unsigned int, CRunningScript *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CScriptResourceManager::RemoveFromResourceManager) + static int address; + static int global_address; + static const int id = 0x470510; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470510, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47F066, GAME_10US_COMPACT, H_CALL, 0x47E090, 1, + 0x47F42F, GAME_10US_COMPACT, H_CALL, 0x47F370, 1, + 0x48C3FB, GAME_10US_COMPACT, H_CALL, 0x48B590, 1, + 0x494795, GAME_10US_COMPACT, H_CALL, 0x493FE0, 1>; + using def_t = bool(CScriptResourceManager *, int, unsigned int, CRunningScript *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CScriptResourceManager::HasResourceBeenRequested) + static int address; + static int global_address; + static const int id = 0x470620; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470620, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5B00D1, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1>; + using def_t = bool(CScriptResourceManager *, int, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CScriptsForBrains.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CScriptsForBrains.h new file mode 100644 index 00000000..719efca1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CScriptsForBrains.h @@ -0,0 +1,251 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CScriptsForBrains::Init) + static int address; + static int global_address; + static const int id = 0x46A8C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46A8C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468DFE, GAME_10US_COMPACT, H_CALL, 0x468D50, 1, + 0x46B263, GAME_10US_COMPACT, H_CALL, 0x46B260, 1>; + using def_t = void(CScriptsForBrains *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CScriptsForBrains::SwitchAllObjectBrainsWithThisID) + static int address; + static int global_address; + static const int id = 0x46A900; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46A900, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47A5C2, GAME_10US_COMPACT, H_CALL, 0x479DA0, 1, + 0x47A5D8, GAME_10US_COMPACT, H_CALL, 0x479DA0, 2>; + using def_t = void(CScriptsForBrains *, signed char, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CScriptsForBrains::AddNewScriptBrain) + static int address; + static int global_address; + static const int id = 0x46A930; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46A930, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x476D86, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1, + 0x476DF6, GAME_10US_COMPACT, H_CALL, 0x4762D0, 2>; + using def_t = void(CScriptsForBrains *, short, short, unsigned short, signed char, signed char, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4,5,6>; +META_END + +META_BEGIN(CScriptsForBrains::AddNewStreamedScriptBrainForCodeUse) + static int address; + static int global_address; + static const int id = 0x46A9C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46A9C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x471CDD, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x4723BA, GAME_10US_COMPACT, H_CALL, 0x472310, 1>; + using def_t = void(CScriptsForBrains *, short, char *, signed char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CScriptsForBrains::GetIndexOfScriptBrainWithThisName) + static int address; + static int global_address; + static const int id = 0x46AA30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46AA30, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46AA8A, GAME_10US_COMPACT, H_CALL, 0x46AA80, 1, + 0x46AAEA, GAME_10US_COMPACT, H_CALL, 0x46AAE0, 1, + 0x46AB2A, GAME_10US_COMPACT, H_CALL, 0x46AB20, 1, + 0x46B3AB, GAME_10US_COMPACT, H_CALL, 0x46B390, 1, + 0x46CEDE, GAME_10US_COMPACT, H_CALL, 0x46CED0, 1>; + using def_t = signed short(CScriptsForBrains *, char const *, signed char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CScriptsForBrains::RequestAttractorScriptBrainWithThisName) + static int address; + static int global_address; + static const int id = 0x46AA80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46AA80, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x533801, GAME_10US_COMPACT, H_CALL, 0x533790, 1>; + using def_t = void(CScriptsForBrains *, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CScriptsForBrains::MarkAttractorScriptBrainWithThisNameAsNoLongerNeeded) + static int address; + static int global_address; + static const int id = 0x46AAE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46AAE0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x533C46, GAME_10US_COMPACT, H_CALL, 0x533BF0, 1>; + using def_t = void(CScriptsForBrains *, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CScriptsForBrains::HasAttractorScriptBrainWithThisNameLoaded) + static int address; + static int global_address; + static const int id = 0x46AB20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46AB20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x63876E, GAME_10US_COMPACT, H_CALL, 0x6385D0, 1>; + using def_t = bool(CScriptsForBrains *, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +CTOR_META_BEGIN(CScriptsForBrains) + static int address; + static int global_address; + static const int id = 0x46B260; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46B260, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x84A745, GAME_10US_COMPACT, H_JUMP, 0x84A740, 1>; + using def_t = void(CScriptsForBrains *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CScriptsForBrains::StartNewStreamedScriptBrain) + static int address; + static int global_address; + static const int id = 0x46B270; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46B270, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46B3BE, GAME_10US_COMPACT, H_CALL, 0x46B390, 1, + 0x46CE55, GAME_10US_COMPACT, H_CALL, 0x46CD80, 1, + 0x46CFCD, GAME_10US_COMPACT, H_CALL, 0x46CF00, 1>; + using def_t = void(CScriptsForBrains *, unsigned char, CEntity *, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CScriptsForBrains::StartAttractorScriptBrainWithThisName) + static int address; + static int global_address; + static const int id = 0x46B390; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46B390, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x6387B9, GAME_10US_COMPACT, H_CALL, 0x6385D0, 1>; + using def_t = void(CScriptsForBrains *, char const *, CEntity *, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CScriptsForBrains::IsObjectWithinBrainActivationRange) + static int address; + static int global_address; + static const int id = 0x46B3D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46B3D0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46D005, GAME_10US_COMPACT, H_CALL, 0x46CF00, 1, + 0x47873D, GAME_10US_COMPACT, H_CALL, 0x478000, 1>; + using def_t = bool(CScriptsForBrains *, CObject *, CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CScriptsForBrains::StartOrRequestNewStreamedScriptBrain) + static int address; + static int global_address; + static const int id = 0x46CD80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46CD80, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46CEF3, GAME_10US_COMPACT, H_CALL, 0x46CED0, 1, + 0x46D024, GAME_10US_COMPACT, H_CALL, 0x46CF00, 1, + 0x46FFCB, GAME_10US_COMPACT, H_CALL, 0x46FF20, 1>; + using def_t = void(CScriptsForBrains *, unsigned char, CEntity *, signed char, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CScriptsForBrains::StartOrRequestNewStreamedScriptBrainWithThisName) + static int address; + static int global_address; + static const int id = 0x46CED0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46CED0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x596793, GAME_10US_COMPACT, H_CALL, 0x5965E0, 1>; + using def_t = void(CScriptsForBrains *, char const *, CEntity *, signed char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CScriptsForBrains::CheckIfNewEntityNeedsScript) + static int address; + static int global_address; + static const int id = 0x46FF20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46FF20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x59EAF7, GAME_10US_COMPACT, H_CALL, 0x59EAC0, 1, + 0x61590C, GAME_10US_COMPACT, H_CALL, 0x614720, 1, + 0x6F3D76, GAME_10US_COMPACT, H_CALL, 0x6F34D0, 1>; + using def_t = void(CScriptsForBrains *, CEntity *, signed char, void *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CSpecialPlateHandler.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CSpecialPlateHandler.h new file mode 100644 index 00000000..fb549e08 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CSpecialPlateHandler.h @@ -0,0 +1,70 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CSpecialPlateHandler::Init) + static int address; + static int global_address; + static const int id = 0x6F2D10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F2D10, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CSpecialPlateHandler *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CSpecialPlateHandler::Find) + static int address; + static int global_address; + static const int id = 0x6F2D30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F2D30, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x6F3746, GAME_10US_COMPACT, H_CALL, 0x6F34D0, 1>; + using def_t = signed int(CSpecialPlateHandler *, int, char *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CSpecialPlateHandler::Add) + static int address; + static int global_address; + static const int id = 0x6F2D90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F2D90, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x479D7F, GAME_10US_COMPACT, H_CALL, 0x479D70, 1, + 0x47AFB7, GAME_10US_COMPACT, H_CALL, 0x47A760, 1>; + using def_t = void(CSpecialPlateHandler *, int, char *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CSpecialPlateHandler::Remove) + static int address; + static int global_address; + static const int id = 0x6F2DD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F2DD0, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CSpecialPlateHandler *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CStreamedScripts.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CStreamedScripts.h new file mode 100644 index 00000000..82836cd5 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CStreamedScripts.h @@ -0,0 +1,200 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CStreamedScripts::Initialise) + static int address; + static int global_address; + static const int id = 0x470660; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470660, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5B8E16, GAME_10US_COMPACT, H_CALL, 0x5B8AD0, 1>; + using def_t = void(CStreamedScripts *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreamedScripts::ReInitialise) + static int address; + static int global_address; + static const int id = 0x4706A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4706A0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x40E568, GAME_10US_COMPACT, H_CALL, 0x40E560, 1>; + using def_t = void(CStreamedScripts *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreamedScripts::RegisterScript) + static int address; + static int global_address; + static const int id = 0x4706C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4706C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5B6419, GAME_10US_COMPACT, H_CALL, 0x5B6170, 1>; + using def_t = int(CStreamedScripts *, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreamedScripts::FindStreamedScriptQuiet) + static int address; + static int global_address; + static const int id = 0x4706F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4706F0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x470740, GAME_10US_COMPACT, H_JUMP, 0x470740, 1>; + using def_t = signed int(CStreamedScripts *, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreamedScripts::FindStreamedScript) + static int address; + static int global_address; + static const int id = 0x470740; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470740, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = signed int(CStreamedScripts *, char const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreamedScripts::ReadStreamedScriptData) + static int address; + static int global_address; + static const int id = 0x470750; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470750, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468F97, GAME_10US_COMPACT, H_CALL, 0x468D50, 1>; + using def_t = void(CStreamedScripts *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreamedScripts::GetProperIndexFromIndexUsedByScript) + static int address; + static int global_address; + static const int id = 0x470810; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470810, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x471CA7, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x472382, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x475025, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x475061, GAME_10US_COMPACT, H_CALL, 0x474900, 2, + 0x4766A1, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1, + 0x4766DD, GAME_10US_COMPACT, H_CALL, 0x4762D0, 2, + 0x47675A, GAME_10US_COMPACT, H_CALL, 0x4762D0, 3, + 0x476D28, GAME_10US_COMPACT, H_CALL, 0x4762D0, 4, + 0x476D56, GAME_10US_COMPACT, H_CALL, 0x4762D0, 5, + 0x476DB0, GAME_10US_COMPACT, H_CALL, 0x4762D0, 6>; + using def_t = signed short(CStreamedScripts *, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreamedScripts::LoadStreamedScript) + static int address; + static int global_address; + static const int id = 0x470840; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470840, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x40CAB3, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 1>; + using def_t = void(CStreamedScripts *, RwStream *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CStreamedScripts::StartNewStreamedScript) + static int address; + static int global_address; + static const int id = 0x470890; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470890, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46B286, GAME_10US_COMPACT, H_CALL, 0x46B270, 1, + 0x47676D, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1>; + using def_t = CRunningScript *(CStreamedScripts *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreamedScripts::RemoveStreamedScriptFromMemory) + static int address; + static int global_address; + static const int id = 0x4708E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4708E0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x408ABE, GAME_10US_COMPACT, H_CALL, 0x4089A0, 1, + 0x408C55, GAME_10US_COMPACT, H_CALL, 0x4089A0, 2>; + using def_t = void(CStreamedScripts *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreamedScripts::GetStreamedScriptFilename) + static int address; + static int global_address; + static const int id = 0x470900; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470900, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = char const *(CStreamedScripts *, unsigned short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreamedScripts::GetStreamedScriptWithThisStartAddress) + static int address; + static int global_address; + static const int id = 0x470910; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470910, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x465AD4, GAME_10US_COMPACT, H_CALL, 0x465AA0, 1>; + using def_t = unsigned short(CStreamedScripts *, unsigned char *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CStreaming.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CStreaming.h new file mode 100644 index 00000000..c0d0a0fd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CStreaming.h @@ -0,0 +1,2448 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CStreaming::RequestTxdModel) + static int address; + static int global_address; + static const int id = 0x407100; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407100, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x408910, GAME_10US_COMPACT, H_CALL, 0x4087E0, 1, + 0x408952, GAME_10US_COMPACT, H_CALL, 0x4087E0, 2>; + using def_t = void(int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreaming::IsInitialised) + static int address; + static int global_address; + static const int id = 0x407600; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407600, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::AddImageToList) + static int address; + static int global_address; + static const int id = 0x407610; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407610, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5A8108, GAME_10US_COMPACT, H_CALL, 0x5A80D0, 1, + 0x5B915B, GAME_10US_COMPACT, H_CALL, 0x5B9030, 1>; + using def_t = int(char const *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreaming::IsVeryBusy) + static int address; + static int global_address; + static const int id = 0x4076A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4076A0, 0, 0, 0, 0, 0>; + // total references count: 10us (7), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E7D8, GAME_10US_COMPACT, H_CALL, 0x40E670, 1, + 0x4E4FCA, GAME_10US_COMPACT, H_CALL, 0x4E4F70, 1, + 0x4E61B5, GAME_10US_COMPACT, H_CALL, 0x4E60D0, 1, + 0x4E66D0, GAME_10US_COMPACT, H_CALL, 0x4E6550, 1, + 0x4E6D49, GAME_10US_COMPACT, H_CALL, 0x4E6CD0, 1, + 0x65E844, GAME_10US_COMPACT, H_CALL, 0x65E7F0, 1, + 0x66FE42, GAME_10US_COMPACT, H_CALL, 0x66FDA0, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::RetryLoadFile) + static int address; + static int global_address; + static const int id = 0x4076C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4076C0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E37B, GAME_10US_COMPACT, H_CALL, 0x40E170, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::IsObjectInCdImage) + static int address; + static int global_address; + static const int id = 0x407800; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407800, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4727AA, GAME_10US_COMPACT, H_CALL, 0x472310, 1>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::HasVehicleUpgradeLoaded) + static int address; + static int global_address; + static const int id = 0x407820; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407820, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x447EBD, GAME_10US_COMPACT, H_CALL, 0x447E40, 1, + 0x498678, GAME_10US_COMPACT, H_CALL, 0x496E00, 1>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::ForceLayerToRead) + static int address; + static int global_address; + static const int id = 0x407A10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407A10, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B0114, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::SetLoadVehiclesInLoadScene) + static int address; + static int global_address; + static const int id = 0x407A30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407A30, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x44084B, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x44085C, GAME_10US_COMPACT, H_CALL, 0x4404A0, 2, + 0x5B0AC2, GAME_10US_COMPACT, H_CALL, 0x5B05A0, 1, + 0x5B0AF7, GAME_10US_COMPACT, H_CALL, 0x5B05A0, 2>; + using def_t = void(bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::ClearFlagForAll) + static int address; + static int global_address; + static const int id = 0x407A40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407A40, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x44086B, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1>; + using def_t = void(unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::DeleteRwObjectsInSectorList) + static int address; + static int global_address; + static const int id = 0x407A70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407A70, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CPtrList *, int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CStreaming::RemoveUnusedModelsInLoadedList) + static int address; + static int global_address; + static const int id = 0x407AC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407AC0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x441487, GAME_10US_COMPACT, H_CALL, 0x441440, 1, + 0x5B142D, GAME_10US_COMPACT, H_CALL, 0x5B13F0, 1>; + using def_t = unsigned int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::AreAnimsUsedByRequestedModels) + static int address; + static int global_address; + static const int id = 0x407AD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407AD0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40CA4D, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 1, + 0x40CC26, GAME_10US_COMPACT, H_CALL, 0x40CBA0, 1, + 0x40D0D9, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 1>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::ImGonnaUseStreamingMemory) + static int address; + static int global_address; + static const int id = 0x407BE0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407BE0, 0, 0, 0, 0, 0>; + // total references count: 10us (10), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x572EE2, GAME_10US_COMPACT, H_CALL, 0x572EC0, 1, + 0x572F79, GAME_10US_COMPACT, H_CALL, 0x572EC0, 2, + 0x57300D, GAME_10US_COMPACT, H_CALL, 0x572EC0, 3, + 0x57310F, GAME_10US_COMPACT, H_CALL, 0x5730A0, 1, + 0x5731CE, GAME_10US_COMPACT, H_CALL, 0x5730A0, 2, + 0x5AFC38, GAME_10US_COMPACT, H_CALL, 0x5AFBC0, 1, + 0x5AFCD9, GAME_10US_COMPACT, H_CALL, 0x5AFBC0, 2, + 0x5B02B7, GAME_10US_COMPACT, H_CALL, 0x5B02A0, 1, + 0x5B03BA, GAME_10US_COMPACT, H_CALL, 0x5B0390, 1, + 0x5DD92B, GAME_10US_COMPACT, H_CALL, 0x5DD910, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::IHaveUsedStreamingMemory) + static int address; + static int global_address; + static const int id = 0x407BF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407BF0, 0, 0, 0, 0, 0>; + // total references count: 10us (10), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x572F6A, GAME_10US_COMPACT, H_CALL, 0x572EC0, 1, + 0x572FFE, GAME_10US_COMPACT, H_CALL, 0x572EC0, 2, + 0x57308A, GAME_10US_COMPACT, H_CALL, 0x572EC0, 3, + 0x57318B, GAME_10US_COMPACT, H_CALL, 0x5730A0, 1, + 0x57324A, GAME_10US_COMPACT, H_CALL, 0x5730A0, 2, + 0x5AFC76, GAME_10US_COMPACT, H_CALL, 0x5AFBC0, 1, + 0x5AFCFC, GAME_10US_COMPACT, H_CALL, 0x5AFBC0, 2, + 0x5B0359, GAME_10US_COMPACT, H_CALL, 0x5B02A0, 1, + 0x5B03CC, GAME_10US_COMPACT, H_CALL, 0x5B0390, 1, + 0x5DDA55, GAME_10US_COMPACT, H_CALL, 0x5DD910, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::GetDefaultCopModel) + static int address; + static int global_address; + static const int id = 0x407C00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407C00, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5DDCA8, GAME_10US_COMPACT, H_CALL, 0x5DDC60, 1, + 0x615BA9, GAME_10US_COMPACT, H_CALL, 0x615970, 1, + 0x615BBB, GAME_10US_COMPACT, H_CALL, 0x615970, 2>; + using def_t = int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::GetDefaultCopCarModel) + static int address; + static int global_address; + static const int id = 0x407C50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407C50, 0, 0, 0, 0, 0>; + // total references count: 10us (7), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x421A33, GAME_10US_COMPACT, H_JUMP, 0x421980, 1, + 0x4613F8, GAME_10US_COMPACT, H_CALL, 0x461170, 1, + 0x461BEE, GAME_10US_COMPACT, H_CALL, 0x4619C0, 1, + 0x461C0B, GAME_10US_COMPACT, H_CALL, 0x4619C0, 2, + 0x4998BC, GAME_10US_COMPACT, H_CALL, 0x4998A0, 1, + 0x61349B, GAME_10US_COMPACT, H_CALL, 0x6133F0, 1, + 0x61456E, GAME_10US_COMPACT, H_CALL, 0x6144B0, 1>; + using def_t = int(unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::DisableCopBikes) + static int address; + static int global_address; + static const int id = 0x407D10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407D10, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x468643, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x46DBFD, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x46DC0E, GAME_10US_COMPACT, H_CALL, 0x46D050, 2, + 0x53BE19, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1>; + using def_t = void(bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::GetDefaultMedicModel) + static int address; + static int global_address; + static const int id = 0x407D20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407D20, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x613AD7, GAME_10US_COMPACT, H_CALL, 0x613A00, 1>; + using def_t = int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::GetDefaultFiremanModel) + static int address; + static int global_address; + static const int id = 0x407D40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407D40, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x613AE3, GAME_10US_COMPACT, H_CALL, 0x613A00, 1>; + using def_t = int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::GetDefaultCabDriverModel) + static int address; + static int global_address; + static const int id = 0x407D50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407D50, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x61182F, GAME_10US_COMPACT, H_CALL, 0x6117F0, 1, + 0x611928, GAME_10US_COMPACT, H_JUMP, 0x611900, 1, + 0x611A1E, GAME_10US_COMPACT, H_CALL, 0x6119D0, 1>; + using def_t = int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::IsCarModelNeededInCurrentZone) + static int address; + static int global_address; + static const int id = 0x407DD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407DD0, 0, 0, 0, 0, 0>; + // total references count: 10us (7), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x408032, GAME_10US_COMPACT, H_CALL, 0x408000, 1, + 0x40AFFD, GAME_10US_COMPACT, H_CALL, 0x40AFA0, 1, + 0x40B043, GAME_10US_COMPACT, H_CALL, 0x40AFA0, 2, + 0x40B5CD, GAME_10US_COMPACT, H_CALL, 0x40B4F0, 1, + 0x40B5DE, GAME_10US_COMPACT, H_CALL, 0x40B4F0, 2, + 0x40B5F6, GAME_10US_COMPACT, H_CALL, 0x40B4F0, 3, + 0x40B60E, GAME_10US_COMPACT, H_CALL, 0x40B4F0, 4>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::HasSpecialCharLoaded) + static int address; + static int global_address; + static const int id = 0x407F00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407F00, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x47EE4A, GAME_10US_COMPACT, H_CALL, 0x47E090, 1>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::LoadInitialVehicles) + static int address; + static int global_address; + static const int id = 0x407F20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407F20, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5AFFE5, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1, + 0x5BA252, GAME_10US_COMPACT, H_CALL, 0x5BA1A0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::WeAreTryingToPhaseVehicleOut) + static int address; + static int global_address; + static const int id = 0x407F80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407F80, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x611DBC, GAME_10US_COMPACT, H_CALL, 0x611C50, 1>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::FindMIPedSlotForInterior) + static int address; + static int global_address; + static const int id = 0x407FB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407FB0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x594CC7, GAME_10US_COMPACT, H_CALL, 0x594C10, 1, + 0x594FBB, GAME_10US_COMPACT, H_CALL, 0x594E90, 1, + 0x596751, GAME_10US_COMPACT, H_CALL, 0x5965E0, 1>; + using def_t = int(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::AddToLoadedVehiclesList) + static int address; + static int global_address; + static const int id = 0x408000; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x408000, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x408D43, GAME_10US_COMPACT, H_CALL, 0x408CB0, 1, + 0x40C858, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::RemoveCarModel) + static int address; + static int global_address; + static const int id = 0x4080F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4080F0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x408A1B, GAME_10US_COMPACT, H_CALL, 0x4089A0, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::InitImageList) + static int address; + static int global_address; + static const int id = 0x4083C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4083C0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5BF991, GAME_10US_COMPACT, H_CALL, 0x5BF840, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::Shutdown) + static int address; + static int global_address; + static const int id = 0x4084B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4084B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53CA0C, GAME_10US_COMPACT, H_CALL, 0x53C900, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::InstanceLoadedModels) + static int address; + static int global_address; + static const int id = 0x4084F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4084F0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40ED36, GAME_10US_COMPACT, H_CALL, 0x40EB70, 1>; + using def_t = void(CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::RequestModel) + static int address; + static int global_address; + static const int id = 0x4087E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4087E0, 0, 0, 0, 0, 0>; + // total references count: 10us (215), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4044FE, GAME_10US_COMPACT, H_JUMP, 0x4044F0, 1, + 0x4050C3, GAME_10US_COMPACT, H_CALL, 0x404DE0, 1, + 0x405395, GAME_10US_COMPACT, H_CALL, 0x405170, 1, + 0x4054BE, GAME_10US_COMPACT, H_CALL, 0x4053F0, 1, + 0x4055CB, GAME_10US_COMPACT, H_CALL, 0x405520, 1, + 0x405810, GAME_10US_COMPACT, H_CALL, 0x405780, 1, + 0x405879, GAME_10US_COMPACT, H_CALL, 0x405850, 1, + 0x40710E, GAME_10US_COMPACT, H_JUMP, 0x407100, 1, + 0x40712E, GAME_10US_COMPACT, H_JUMP, 0x407120, 1, + 0x40892D, GAME_10US_COMPACT, H_CALL, 0x4087E0, 1, + 0x408C7C, GAME_10US_COMPACT, H_CALL, 0x408C70, 1, + 0x408C99, GAME_10US_COMPACT, H_CALL, 0x408C70, 2, + 0x408DFC, GAME_10US_COMPACT, H_CALL, 0x408CB0, 1, + 0x408EF4, GAME_10US_COMPACT, H_CALL, 0x408E20, 1, + 0x408F36, GAME_10US_COMPACT, H_CALL, 0x408E20, 2, + 0x408F96, GAME_10US_COMPACT, H_CALL, 0x408E20, 3, + 0x40908C, GAME_10US_COMPACT, H_CALL, 0x409050, 1, + 0x409492, GAME_10US_COMPACT, H_CALL, 0x409430, 1, + 0x4095FC, GAME_10US_COMPACT, H_CALL, 0x4095C0, 1, + 0x409632, GAME_10US_COMPACT, H_CALL, 0x4095C0, 2, + 0x409D6E, GAME_10US_COMPACT, H_CALL, 0x409D10, 1, + 0x409FD9, GAME_10US_COMPACT, H_CALL, 0x409D10, 2, + 0x40A071, GAME_10US_COMPACT, H_CALL, 0x409FF0, 1, + 0x40A0D1, GAME_10US_COMPACT, H_CALL, 0x40A080, 1, + 0x40A106, GAME_10US_COMPACT, H_CALL, 0x40A080, 2, + 0x40A127, GAME_10US_COMPACT, H_CALL, 0x40A120, 1, + 0x40A133, GAME_10US_COMPACT, H_CALL, 0x40A120, 2, + 0x40A13F, GAME_10US_COMPACT, H_CALL, 0x40A120, 3, + 0x40A285, GAME_10US_COMPACT, H_CALL, 0x40A150, 1, + 0x40A294, GAME_10US_COMPACT, H_CALL, 0x40A150, 2, + 0x40A3B8, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 1, + 0x40A3CE, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 2, + 0x40A518, GAME_10US_COMPACT, H_CALL, 0x40A400, 1, + 0x40A52E, GAME_10US_COMPACT, H_CALL, 0x40A400, 2, + 0x40A612, GAME_10US_COMPACT, H_CALL, 0x40A560, 1, + 0x40A702, GAME_10US_COMPACT, H_CALL, 0x40A560, 2, + 0x40A9C4, GAME_10US_COMPACT, H_CALL, 0x40A560, 3, + 0x40AB4A, GAME_10US_COMPACT, H_CALL, 0x40AA10, 1, + 0x40AB72, GAME_10US_COMPACT, H_CALL, 0x40AA10, 2, + 0x40ACFC, GAME_10US_COMPACT, H_CALL, 0x40AA10, 3, + 0x40B168, GAME_10US_COMPACT, H_CALL, 0x40B080, 1, + 0x40B4DA, GAME_10US_COMPACT, H_CALL, 0x40B4B0, 1, + 0x40B640, GAME_10US_COMPACT, H_CALL, 0x40B4F0, 1, + 0x40B727, GAME_10US_COMPACT, H_CALL, 0x40B700, 1, + 0x40B733, GAME_10US_COMPACT, H_CALL, 0x40B700, 2, + 0x40B77C, GAME_10US_COMPACT, H_CALL, 0x40B700, 3, + 0x40B788, GAME_10US_COMPACT, H_CALL, 0x40B700, 4, + 0x40B7D1, GAME_10US_COMPACT, H_CALL, 0x40B700, 5, + 0x40B7DD, GAME_10US_COMPACT, H_CALL, 0x40B700, 6, + 0x40B7E9, GAME_10US_COMPACT, H_CALL, 0x40B700, 7, + 0x40B845, GAME_10US_COMPACT, H_CALL, 0x40B700, 8, + 0x40B870, GAME_10US_COMPACT, H_CALL, 0x40B700, 9, + 0x40B914, GAME_10US_COMPACT, H_CALL, 0x40B700, 10, + 0x40B9DB, GAME_10US_COMPACT, H_CALL, 0x40B700, 11, + 0x40B9EA, GAME_10US_COMPACT, H_CALL, 0x40B700, 12, + 0x40B9F9, GAME_10US_COMPACT, H_CALL, 0x40B700, 13, + 0x40BA08, GAME_10US_COMPACT, H_CALL, 0x40B700, 14, + 0x40BC40, GAME_10US_COMPACT, H_CALL, 0x40BBB0, 1, + 0x40BCA0, GAME_10US_COMPACT, H_CALL, 0x40BBB0, 2, + 0x40BD5A, GAME_10US_COMPACT, H_CALL, 0x40BBB0, 3, + 0x40BD75, GAME_10US_COMPACT, H_CALL, 0x40BBB0, 4, + 0x40BDF5, GAME_10US_COMPACT, H_CALL, 0x40BDA0, 1, + 0x40C429, GAME_10US_COMPACT, H_CALL, 0x40C270, 1, + 0x40C506, GAME_10US_COMPACT, H_CALL, 0x40C450, 1, + 0x40C87F, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 1, + 0x40C957, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 2, + 0x40C9A8, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 3, + 0x40C9F9, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 4, + 0x40D3D4, GAME_10US_COMPACT, H_CALL, 0x40D3D0, 1, + 0x40E262, GAME_10US_COMPACT, H_CALL, 0x40E170, 1, + 0x40ED16, GAME_10US_COMPACT, H_CALL, 0x40EB70, 1, + 0x41034E, GAME_10US_COMPACT, H_JUMP, 0x410340, 1, + 0x410A94, GAME_10US_COMPACT, H_CALL, 0x410860, 1, + 0x410B93, GAME_10US_COMPACT, H_CALL, 0x410AD0, 1, + 0x410CAB, GAME_10US_COMPACT, H_CALL, 0x410C00, 1, + 0x410E8F, GAME_10US_COMPACT, H_CALL, 0x410E60, 1, + 0x430506, GAME_10US_COMPACT, H_CALL, 0x430050, 1, + 0x4385B7, GAME_10US_COMPACT, H_CALL, 0x4385B0, 1, + 0x4385C3, GAME_10US_COMPACT, H_CALL, 0x4385B0, 2, + 0x4385CF, GAME_10US_COMPACT, H_CALL, 0x4385B0, 3, + 0x4385DB, GAME_10US_COMPACT, H_CALL, 0x4385B0, 4, + 0x4385E7, GAME_10US_COMPACT, H_CALL, 0x4385B0, 5, + 0x4385F3, GAME_10US_COMPACT, H_CALL, 0x4385B0, 6, + 0x4385FF, GAME_10US_COMPACT, H_CALL, 0x4385B0, 7, + 0x43860B, GAME_10US_COMPACT, H_CALL, 0x4385B0, 8, + 0x43861A, GAME_10US_COMPACT, H_CALL, 0x4385B0, 9, + 0x438626, GAME_10US_COMPACT, H_CALL, 0x4385B0, 10, + 0x438897, GAME_10US_COMPACT, H_CALL, 0x438890, 1, + 0x4388A3, GAME_10US_COMPACT, H_CALL, 0x438890, 2, + 0x4388AF, GAME_10US_COMPACT, H_CALL, 0x438890, 3, + 0x4388BB, GAME_10US_COMPACT, H_CALL, 0x438890, 4, + 0x4388C7, GAME_10US_COMPACT, H_CALL, 0x438890, 5, + 0x4388D3, GAME_10US_COMPACT, H_CALL, 0x438890, 6, + 0x4388DF, GAME_10US_COMPACT, H_CALL, 0x438890, 7, + 0x4388EB, GAME_10US_COMPACT, H_CALL, 0x438890, 8, + 0x4388FA, GAME_10US_COMPACT, H_CALL, 0x438890, 9, + 0x438B37, GAME_10US_COMPACT, H_CALL, 0x438B30, 1, + 0x438B43, GAME_10US_COMPACT, H_CALL, 0x438B30, 2, + 0x438B4F, GAME_10US_COMPACT, H_CALL, 0x438B30, 3, + 0x438B5B, GAME_10US_COMPACT, H_CALL, 0x438B30, 4, + 0x438B67, GAME_10US_COMPACT, H_CALL, 0x438B30, 5, + 0x438B73, GAME_10US_COMPACT, H_CALL, 0x438B30, 6, + 0x438B7F, GAME_10US_COMPACT, H_CALL, 0x438B30, 7, + 0x438B8B, GAME_10US_COMPACT, H_CALL, 0x438B30, 8, + 0x4395B7, GAME_10US_COMPACT, H_CALL, 0x4395B0, 1, + 0x439F11, GAME_10US_COMPACT, H_CALL, 0x439E50, 1, + 0x43A130, GAME_10US_COMPACT, H_CALL, 0x43A0B0, 1, + 0x43A5A5, GAME_10US_COMPACT, H_CALL, 0x43A570, 1, + 0x4448E2, GAME_10US_COMPACT, H_CALL, 0x444810, 1, + 0x44491A, GAME_10US_COMPACT, H_CALL, 0x444810, 2, + 0x445386, GAME_10US_COMPACT, H_CALL, 0x444810, 3, + 0x44538E, GAME_10US_COMPACT, H_CALL, 0x444810, 4, + 0x445416, GAME_10US_COMPACT, H_CALL, 0x4453D0, 1, + 0x447E63, GAME_10US_COMPACT, H_CALL, 0x447E40, 1, + 0x44B5B5, GAME_10US_COMPACT, H_CALL, 0x44AA50, 1, + 0x44D06E, GAME_10US_COMPACT, H_JUMP, 0x44D060, 1, + 0x44DE51, GAME_10US_COMPACT, H_CALL, 0x44DE00, 1, + 0x450D1F, GAME_10US_COMPACT, H_CALL, 0x450A60, 1, + 0x450D2C, GAME_10US_COMPACT, H_CALL, 0x450A60, 2, + 0x45A04C, GAME_10US_COMPACT, H_CALL, 0x45A020, 1, + 0x45CCA4, GAME_10US_COMPACT, H_CALL, 0x45CA70, 1, + 0x45CF03, GAME_10US_COMPACT, H_CALL, 0x45CEA0, 1, + 0x45D03D, GAME_10US_COMPACT, H_CALL, 0x45CEA0, 2, + 0x45D4FC, GAME_10US_COMPACT, H_CALL, 0x45D4B0, 1, + 0x45F5E2, GAME_10US_COMPACT, H_CALL, 0x45F380, 1, + 0x45F715, GAME_10US_COMPACT, H_CALL, 0x45F380, 2, + 0x45F853, GAME_10US_COMPACT, H_CALL, 0x45F380, 3, + 0x45F986, GAME_10US_COMPACT, H_CALL, 0x45F380, 4, + 0x45FAB9, GAME_10US_COMPACT, H_CALL, 0x45F380, 5, + 0x45FC00, GAME_10US_COMPACT, H_CALL, 0x45F380, 6, + 0x46A57E, GAME_10US_COMPACT, H_JUMP, 0x46A570, 1, + 0x46AAB9, GAME_10US_COMPACT, H_CALL, 0x46AA80, 1, + 0x46CE68, GAME_10US_COMPACT, H_CALL, 0x46CD80, 1, + 0x46CFDC, GAME_10US_COMPACT, H_CALL, 0x46CF00, 1, + 0x47503A, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x47EFB2, GAME_10US_COMPACT, H_CALL, 0x47E090, 1, + 0x48C374, GAME_10US_COMPACT, H_CALL, 0x48B590, 1, + 0x49BBA1, GAME_10US_COMPACT, H_CALL, 0x49B8D0, 1, + 0x4D5C62, GAME_10US_COMPACT, H_CALL, 0x4D5C10, 1, + 0x4D5C9D, GAME_10US_COMPACT, H_CALL, 0x4D5C10, 2, + 0x4D5E34, GAME_10US_COMPACT, H_CALL, 0x4D5E20, 1, + 0x4D5E94, GAME_10US_COMPACT, H_CALL, 0x4D5E80, 1, + 0x553824, GAME_10US_COMPACT, H_CALL, 0x553770, 1, + 0x5549C0, GAME_10US_COMPACT, H_CALL, 0x554840, 1, + 0x554C1C, GAME_10US_COMPACT, H_CALL, 0x554B10, 1, + 0x5556CA, GAME_10US_COMPACT, H_CALL, 0x555680, 1, + 0x56EC2A, GAME_10US_COMPACT, H_CALL, 0x56EB30, 1, + 0x584B9E, GAME_10US_COMPACT, H_JUMP, 0x584B50, 1, + 0x584CCB, GAME_10US_COMPACT, H_CALL, 0x584C50, 1, + 0x595134, GAME_10US_COMPACT, H_CALL, 0x5950D0, 1, + 0x5A8153, GAME_10US_COMPACT, H_CALL, 0x5A8120, 1, + 0x5A8179, GAME_10US_COMPACT, H_CALL, 0x5A8120, 2, + 0x5B0030, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1, + 0x5B006B, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 2, + 0x5B110A, GAME_10US_COMPACT, H_CALL, 0x5B05A0, 1, + 0x5D2A7F, GAME_10US_COMPACT, H_CALL, 0x5D2A20, 1, + 0x5D455C, GAME_10US_COMPACT, H_CALL, 0x5D44B0, 1, + 0x5D4583, GAME_10US_COMPACT, H_CALL, 0x5D44B0, 2, + 0x5E894B, GAME_10US_COMPACT, H_CALL, 0x5E8910, 1, + 0x5E895B, GAME_10US_COMPACT, H_CALL, 0x5E8910, 2, + 0x609B08, GAME_10US_COMPACT, H_CALL, 0x6098F0, 1, + 0x609BB3, GAME_10US_COMPACT, H_CALL, 0x6098F0, 2, + 0x611814, GAME_10US_COMPACT, H_CALL, 0x6117F0, 1, + 0x611824, GAME_10US_COMPACT, H_CALL, 0x6117F0, 2, + 0x611835, GAME_10US_COMPACT, H_CALL, 0x6117F0, 3, + 0x611845, GAME_10US_COMPACT, H_CALL, 0x6117F0, 4, + 0x611851, GAME_10US_COMPACT, H_CALL, 0x6117F0, 5, + 0x611861, GAME_10US_COMPACT, H_CALL, 0x6117F0, 6, + 0x611871, GAME_10US_COMPACT, H_CALL, 0x6117F0, 7, + 0x61187E, GAME_10US_COMPACT, H_CALL, 0x6117F0, 8, + 0x61B5B3, GAME_10US_COMPACT, H_CALL, 0x61B580, 1, + 0x61B609, GAME_10US_COMPACT, H_CALL, 0x61B580, 2, + 0x61B638, GAME_10US_COMPACT, H_CALL, 0x61B580, 3, + 0x61B695, GAME_10US_COMPACT, H_CALL, 0x61B580, 4, + 0x61C983, GAME_10US_COMPACT, H_CALL, 0x61C7F0, 1, + 0x623D7C, GAME_10US_COMPACT, H_CALL, 0x623B10, 1, + 0x627B61, GAME_10US_COMPACT, H_CALL, 0x627B20, 1, + 0x629B2B, GAME_10US_COMPACT, H_CALL, 0x629920, 1, + 0x631766, GAME_10US_COMPACT, H_CALL, 0x631730, 1, + 0x6381DF, GAME_10US_COMPACT, H_CALL, 0x6381A0, 1, + 0x638221, GAME_10US_COMPACT, H_CALL, 0x6381A0, 2, + 0x639D38, GAME_10US_COMPACT, H_CALL, 0x639CB0, 1, + 0x639D56, GAME_10US_COMPACT, H_CALL, 0x639CB0, 2, + 0x64D0E5, GAME_10US_COMPACT, H_CALL, 0x64CF40, 1, + 0x64F894, GAME_10US_COMPACT, H_CALL, 0x64F860, 1, + 0x64F8A2, GAME_10US_COMPACT, H_CALL, 0x64F860, 2, + 0x6600F9, GAME_10US_COMPACT, H_CALL, 0x65FFE0, 1, + 0x66064F, GAME_10US_COMPACT, H_CALL, 0x6605C0, 1, + 0x660DBB, GAME_10US_COMPACT, H_CALL, 0x660D80, 1, + 0x661A05, GAME_10US_COMPACT, H_CALL, 0x661950, 1, + 0x6623D4, GAME_10US_COMPACT, H_CALL, 0x662370, 1, + 0x662E65, GAME_10US_COMPACT, H_CALL, 0x662A10, 1, + 0x663853, GAME_10US_COMPACT, H_CALL, 0x6637C0, 1, + 0x66500A, GAME_10US_COMPACT, H_CALL, 0x664E60, 1, + 0x67B5D3, GAME_10US_COMPACT, H_CALL, 0x67B5C0, 1, + 0x682354, GAME_10US_COMPACT, H_CALL, 0x682310, 1, + 0x6823F7, GAME_10US_COMPACT, H_CALL, 0x6823C0, 1, + 0x6825E7, GAME_10US_COMPACT, H_CALL, 0x6825B0, 1, + 0x6873AA, GAME_10US_COMPACT, H_CALL, 0x6872C0, 1, + 0x689B95, GAME_10US_COMPACT, H_CALL, 0x6899F0, 1, + 0x691DB0, GAME_10US_COMPACT, H_CALL, 0x691D50, 1, + 0x6930D4, GAME_10US_COMPACT, H_CALL, 0x692FF0, 1, + 0x6CD35F, GAME_10US_COMPACT, H_CALL, 0x6CD2F0, 1, + 0x6D1726, GAME_10US_COMPACT, H_CALL, 0x6D16A0, 1, + 0x6D17BC, GAME_10US_COMPACT, H_CALL, 0x6D16A0, 2, + 0x6D65DA, GAME_10US_COMPACT, H_CALL, 0x6D64F0, 1, + 0x6E2997, GAME_10US_COMPACT, H_CALL, 0x6E2900, 1, + 0x6F360E, GAME_10US_COMPACT, H_CALL, 0x6F34D0, 1, + 0x6F362D, GAME_10US_COMPACT, H_CALL, 0x6F34D0, 2, + 0x6F7B33, GAME_10US_COMPACT, H_CALL, 0x6F7900, 1, + 0x72282C, GAME_10US_COMPACT, H_CALL, 0x722810, 1, + 0x724F37, GAME_10US_COMPACT, H_CALL, 0x724E40, 1, + 0x724F8D, GAME_10US_COMPACT, H_CALL, 0x724E40, 2, + 0x724FE3, GAME_10US_COMPACT, H_CALL, 0x724E40, 3, + 0x73830C, GAME_10US_COMPACT, H_CALL, 0x737C80, 1>; + using def_t = void(int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreaming::RemoveModel) + static int address; + static int global_address; + static const int id = 0x4089A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4089A0, 0, 0, 0, 0, 0>; + // total references count: 10us (89), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x403EDB, GAME_10US_COMPACT, H_CALL, 0x403EC0, 1, + 0x40451D, GAME_10US_COMPACT, H_JUMP, 0x404510, 1, + 0x40514E, GAME_10US_COMPACT, H_CALL, 0x405110, 1, + 0x4053AE, GAME_10US_COMPACT, H_CALL, 0x405170, 1, + 0x40575F, GAME_10US_COMPACT, H_CALL, 0x405720, 1, + 0x40581D, GAME_10US_COMPACT, H_CALL, 0x405780, 1, + 0x4058B7, GAME_10US_COMPACT, H_CALL, 0x405890, 1, + 0x408DEE, GAME_10US_COMPACT, H_CALL, 0x408CB0, 1, + 0x409082, GAME_10US_COMPACT, H_CALL, 0x409050, 1, + 0x409410, GAME_10US_COMPACT, H_CALL, 0x4093B0, 1, + 0x409921, GAME_10US_COMPACT, H_CALL, 0x409760, 1, + 0x4099AD, GAME_10US_COMPACT, H_CALL, 0x409940, 1, + 0x409A5A, GAME_10US_COMPACT, H_CALL, 0x4099E0, 1, + 0x409C5A, GAME_10US_COMPACT, H_CALL, 0x409C10, 1, + 0x409CE5, GAME_10US_COMPACT, H_CALL, 0x409C90, 1, + 0x409F4C, GAME_10US_COMPACT, H_CALL, 0x409D10, 1, + 0x409F5D, GAME_10US_COMPACT, H_CALL, 0x409D10, 2, + 0x40A015, GAME_10US_COMPACT, H_CALL, 0x409FF0, 1, + 0x40A0DF, GAME_10US_COMPACT, H_CALL, 0x40A080, 1, + 0x40A8CE, GAME_10US_COMPACT, H_CALL, 0x40A560, 1, + 0x40A996, GAME_10US_COMPACT, H_CALL, 0x40A560, 2, + 0x40AC05, GAME_10US_COMPACT, H_CALL, 0x40AA10, 1, + 0x40AC74, GAME_10US_COMPACT, H_CALL, 0x40AA10, 2, + 0x40AE83, GAME_10US_COMPACT, H_CALL, 0x40AA10, 3, + 0x40AF2C, GAME_10US_COMPACT, H_CALL, 0x40AA10, 4, + 0x40B0DB, GAME_10US_COMPACT, H_CALL, 0x40B080, 1, + 0x40B13D, GAME_10US_COMPACT, H_CALL, 0x40B080, 2, + 0x40B22D, GAME_10US_COMPACT, H_CALL, 0x40B080, 3, + 0x40B2E9, GAME_10US_COMPACT, H_CALL, 0x40B080, 4, + 0x40B392, GAME_10US_COMPACT, H_CALL, 0x40B340, 1, + 0x40B96C, GAME_10US_COMPACT, H_CALL, 0x40B700, 1, + 0x40BA30, GAME_10US_COMPACT, H_CALL, 0x40B700, 2, + 0x40BA3D, GAME_10US_COMPACT, H_CALL, 0x40B700, 3, + 0x40BA4A, GAME_10US_COMPACT, H_CALL, 0x40B700, 4, + 0x40BA57, GAME_10US_COMPACT, H_CALL, 0x40B700, 5, + 0x40BB13, GAME_10US_COMPACT, H_CALL, 0x40BAA0, 1, + 0x40BB79, GAME_10US_COMPACT, H_CALL, 0x40BAA0, 2, + 0x40BED3, GAME_10US_COMPACT, H_CALL, 0x40BE60, 1, + 0x40BF35, GAME_10US_COMPACT, H_CALL, 0x40BE60, 2, + 0x40C166, GAME_10US_COMPACT, H_CALL, 0x40C020, 1, + 0x40C18D, GAME_10US_COMPACT, H_JUMP, 0x40C180, 1, + 0x40C1AD, GAME_10US_COMPACT, H_JUMP, 0x40C1A0, 1, + 0x40C1CD, GAME_10US_COMPACT, H_JUMP, 0x40C1C0, 1, + 0x40C24C, GAME_10US_COMPACT, H_CALL, 0x40C1E0, 1, + 0x40C871, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 1, + 0x40C8FB, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 2, + 0x40C949, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 3, + 0x40C99A, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 4, + 0x40C9EB, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 5, + 0x40CA5A, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 6, + 0x40CC33, GAME_10US_COMPACT, H_CALL, 0x40CBA0, 1, + 0x40CFB1, GAME_10US_COMPACT, H_CALL, 0x40CF80, 1, + 0x40D0A7, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 1, + 0x40D0EC, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 2, + 0x40D261, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 3, + 0x40D2B9, GAME_10US_COMPACT, H_CALL, 0x40D270, 1, + 0x40D398, GAME_10US_COMPACT, H_CALL, 0x40D2F0, 1, + 0x40E24B, GAME_10US_COMPACT, H_CALL, 0x40E170, 1, + 0x40E544, GAME_10US_COMPACT, H_CALL, 0x40E4E0, 1, + 0x40E5A8, GAME_10US_COMPACT, H_CALL, 0x40E560, 1, + 0x40E5E4, GAME_10US_COMPACT, H_CALL, 0x40E560, 2, + 0x40E611, GAME_10US_COMPACT, H_CALL, 0x40E560, 3, + 0x40E641, GAME_10US_COMPACT, H_CALL, 0x40E560, 4, + 0x40EC3D, GAME_10US_COMPACT, H_CALL, 0x40EB70, 1, + 0x41036D, GAME_10US_COMPACT, H_JUMP, 0x410360, 1, + 0x410A7A, GAME_10US_COMPACT, H_CALL, 0x410860, 1, + 0x410E3F, GAME_10US_COMPACT, H_CALL, 0x410E00, 1, + 0x410E9C, GAME_10US_COMPACT, H_CALL, 0x410E60, 1, + 0x44E4CD, GAME_10US_COMPACT, H_JUMP, 0x44E4C0, 1, + 0x450975, GAME_10US_COMPACT, H_CALL, 0x450950, 1, + 0x450D3B, GAME_10US_COMPACT, H_CALL, 0x450A60, 1, + 0x459425, GAME_10US_COMPACT, H_CALL, 0x459400, 1, + 0x4594AE, GAME_10US_COMPACT, H_CALL, 0x459440, 1, + 0x45A0D5, GAME_10US_COMPACT, H_CALL, 0x45A0A0, 1, + 0x45A18C, GAME_10US_COMPACT, H_CALL, 0x45A160, 1, + 0x45A5FF, GAME_10US_COMPACT, H_CALL, 0x45A4A0, 1, + 0x4D413A, GAME_10US_COMPACT, H_CALL, 0x4D4130, 1, + 0x584C2A, GAME_10US_COMPACT, H_CALL, 0x584BF0, 1, + 0x584CFF, GAME_10US_COMPACT, H_CALL, 0x584C50, 1, + 0x5A567D, GAME_10US_COMPACT, H_CALL, 0x5A55A0, 1, + 0x5A5FFB, GAME_10US_COMPACT, H_CALL, 0x5A5F70, 1, + 0x5A618B, GAME_10US_COMPACT, H_CALL, 0x5A6040, 1, + 0x5A6264, GAME_10US_COMPACT, H_CALL, 0x5A6040, 2, + 0x5A6398, GAME_10US_COMPACT, H_CALL, 0x5A6040, 3, + 0x5A64F7, GAME_10US_COMPACT, H_CALL, 0x5A6040, 4, + 0x5B0623, GAME_10US_COMPACT, H_CALL, 0x5B05A0, 1, + 0x61BEC1, GAME_10US_COMPACT, H_CALL, 0x61BDF0, 1, + 0x731A63, GAME_10US_COMPACT, H_JUMP, 0x731A30, 1, + 0x731F07, GAME_10US_COMPACT, H_CALL, 0x731E90, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::RequestVehicleUpgrade) + static int address; + static int global_address; + static const int id = 0x408C70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x408C70, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x447E83, GAME_10US_COMPACT, H_CALL, 0x447E40, 1, + 0x498645, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x49B409, GAME_10US_COMPACT, H_CALL, 0x49B3C0, 1>; + using def_t = void(int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreaming::FinishLoadingLargeFile) + static int address; + static int global_address; + static const int id = 0x408CB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x408CB0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E1BE, GAME_10US_COMPACT, H_CALL, 0x40E170, 1>; + using def_t = bool(char *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreaming::GetNextFileOnCd) + static int address; + static int global_address; + static const int id = 0x408E20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x408E20, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x409043, GAME_10US_COMPACT, H_JUMP, 0x408E20, 1, + 0x40CBBD, GAME_10US_COMPACT, H_CALL, 0x40CBA0, 1, + 0x40CC75, GAME_10US_COMPACT, H_CALL, 0x40CBA0, 2>; + using def_t = int(int, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreaming::RequestFilesInChannel) + static int address; + static int global_address; + static const int id = 0x409050; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409050, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::DeleteAllRwObjects) + static int address; + static int global_address; + static const int id = 0x4090A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4090A0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E572, GAME_10US_COMPACT, H_CALL, 0x40E560, 1, + 0x40EC56, GAME_10US_COMPACT, H_CALL, 0x40EB70, 1, + 0x5D13B1, GAME_10US_COMPACT, H_CALL, 0x5D1380, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::DeleteRwObjectsAfterDeath) + static int address; + static int global_address; + static const int id = 0x409210; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409210, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x441482, GAME_10US_COMPACT, H_CALL, 0x441440, 1>; + using def_t = void(CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::RemoveBigBuildings) + static int address; + static int global_address; + static const int id = 0x4093B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4093B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C6D6, GAME_10US_COMPACT, H_CALL, 0x53C680, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::RequestBigBuildings) + static int address; + static int global_address; + static const int id = 0x409430; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409430, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40EC5C, GAME_10US_COMPACT, H_CALL, 0x40EB70, 1>; + using def_t = void(CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::RemoveBuildingsNotInArea) + static int address; + static int global_address; + static const int id = 0x4094B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4094B0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4422E2, GAME_10US_COMPACT, H_CALL, 0x442060, 1, + 0x48B9A1, GAME_10US_COMPACT, H_CALL, 0x48B590, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::AddEntity) + static int address; + static int global_address; + static const int id = 0x409650; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409650, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x533E94, GAME_10US_COMPACT, H_CALL, 0x533D30, 1, + 0x533F93, GAME_10US_COMPACT, H_CALL, 0x533ED0, 1>; + using def_t = void *(CEntity *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::StartRenderEntities) + static int address; + static int global_address; + static const int id = 0x4096C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4096C0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5558EC, GAME_10US_COMPACT, H_JUMP, 0x5556E0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::RenderEntity) + static int address; + static int global_address; + static const int id = 0x4096D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4096D0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5343A8, GAME_10US_COMPACT, H_CALL, 0x534310, 1>; + using def_t = void(CLink *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick *>, 0>; +META_END + +META_BEGIN(CStreaming::RemoveEntity) + static int address; + static int global_address; + static const int id = 0x409710; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409710, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x533FCF, GAME_10US_COMPACT, H_CALL, 0x533FB0, 1, + 0x5340B5, GAME_10US_COMPACT, H_CALL, 0x534030, 1>; + using def_t = void(CLink *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick *>, 0>; +META_END + +META_BEGIN(CStreaming::DeleteLeastUsedEntityRwObject) + static int address; + static int global_address; + static const int id = 0x409760; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409760, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40D1B1, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 1, + 0x40D208, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 2>; + using def_t = bool(bool, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreaming::DeleteRwObjectsBehindCameraInSectorList) + static int address; + static int global_address; + static const int id = 0x409940; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409940, 0, 0, 0, 0, 0>; + // total references count: 10us (12), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40D994, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 1, + 0x40D9CE, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 2, + 0x40D9F9, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 3, + 0x40DC32, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 4, + 0x40DC6A, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 5, + 0x40DC95, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 6, + 0x40DDD6, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 7, + 0x40DE10, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 8, + 0x40DE3B, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 9, + 0x40E069, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 10, + 0x40E0A3, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 11, + 0x40E0CA, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 12>; + using def_t = bool(CPtrList *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreaming::DeleteRwObjectsNotInFrustumInSectorList) + static int address; + static int global_address; + static const int id = 0x4099E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4099E0, 0, 0, 0, 0, 0>; + // total references count: 10us (6), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40DB16, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 1, + 0x40DB50, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 2, + 0x40DB7B, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 3, + 0x40DF66, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 4, + 0x40DFA0, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 5, + 0x40DFCB, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 6>; + using def_t = char(CPtrList *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreaming::AreTexturesUsedByRequestedModels) + static int address; + static int global_address; + static const int id = 0x409A90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409A90, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40C8EE, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 1, + 0x40CBFF, GAME_10US_COMPACT, H_CALL, 0x40CBA0, 1, + 0x40D094, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 1, + 0x40D2A6, GAME_10US_COMPACT, H_CALL, 0x40D270, 1>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::SetModelIsDeletable) + static int address; + static int global_address; + static const int id = 0x409C10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409C10, 0, 0, 0, 0, 0>; + // total references count: 10us (112), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x409C89, GAME_10US_COMPACT, H_JUMP, 0x409C70, 1, + 0x40A221, GAME_10US_COMPACT, H_CALL, 0x40A150, 1, + 0x40A23F, GAME_10US_COMPACT, H_CALL, 0x40A150, 2, + 0x40A24F, GAME_10US_COMPACT, H_CALL, 0x40A150, 3, + 0x40A26D, GAME_10US_COMPACT, H_CALL, 0x40A150, 4, + 0x40A2AD, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 1, + 0x40A2C9, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 2, + 0x40A2D5, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 3, + 0x40A2F2, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 4, + 0x40A2FE, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 5, + 0x40A31A, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 6, + 0x40A325, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 7, + 0x40A341, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 8, + 0x40A34D, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 9, + 0x40A36A, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 10, + 0x40A376, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 11, + 0x40A392, GAME_10US_COMPACT, H_CALL, 0x40A2A0, 12, + 0x40A40D, GAME_10US_COMPACT, H_CALL, 0x40A400, 1, + 0x40A429, GAME_10US_COMPACT, H_CALL, 0x40A400, 2, + 0x40A435, GAME_10US_COMPACT, H_CALL, 0x40A400, 3, + 0x40A452, GAME_10US_COMPACT, H_CALL, 0x40A400, 4, + 0x40A45E, GAME_10US_COMPACT, H_CALL, 0x40A400, 5, + 0x40A47A, GAME_10US_COMPACT, H_CALL, 0x40A400, 6, + 0x40A485, GAME_10US_COMPACT, H_CALL, 0x40A400, 7, + 0x40A4A1, GAME_10US_COMPACT, H_CALL, 0x40A400, 8, + 0x40A4AD, GAME_10US_COMPACT, H_CALL, 0x40A400, 9, + 0x40A4CA, GAME_10US_COMPACT, H_CALL, 0x40A400, 10, + 0x40A4D6, GAME_10US_COMPACT, H_CALL, 0x40A400, 11, + 0x40A4F2, GAME_10US_COMPACT, H_CALL, 0x40A400, 12, + 0x40A5AB, GAME_10US_COMPACT, H_CALL, 0x40A560, 1, + 0x40A5C3, GAME_10US_COMPACT, H_CALL, 0x40A560, 2, + 0x40A72C, GAME_10US_COMPACT, H_CALL, 0x40A560, 3, + 0x40A743, GAME_10US_COMPACT, H_CALL, 0x40A560, 4, + 0x40B3C6, GAME_10US_COMPACT, H_CALL, 0x40B3A0, 1, + 0x40B3DE, GAME_10US_COMPACT, H_CALL, 0x40B3A0, 2, + 0x40B40B, GAME_10US_COMPACT, H_CALL, 0x40B3A0, 3, + 0x40B423, GAME_10US_COMPACT, H_CALL, 0x40B3A0, 4, + 0x40B47D, GAME_10US_COMPACT, H_JUMP, 0x40B470, 1, + 0x40B742, GAME_10US_COMPACT, H_CALL, 0x40B700, 1, + 0x40B758, GAME_10US_COMPACT, H_CALL, 0x40B700, 2, + 0x40B797, GAME_10US_COMPACT, H_CALL, 0x40B700, 3, + 0x40B7AD, GAME_10US_COMPACT, H_CALL, 0x40B700, 4, + 0x40B7F8, GAME_10US_COMPACT, H_CALL, 0x40B700, 5, + 0x40B802, GAME_10US_COMPACT, H_CALL, 0x40B700, 6, + 0x40B821, GAME_10US_COMPACT, H_CALL, 0x40B700, 7, + 0x40B87C, GAME_10US_COMPACT, H_CALL, 0x40B700, 8, + 0x40B88B, GAME_10US_COMPACT, H_CALL, 0x40B700, 9, + 0x40B895, GAME_10US_COMPACT, H_CALL, 0x40B700, 10, + 0x40BA8C, GAME_10US_COMPACT, H_CALL, 0x40BA70, 1, + 0x40BDBD, GAME_10US_COMPACT, H_CALL, 0x40BDA0, 1, + 0x40BDD6, GAME_10US_COMPACT, H_CALL, 0x40BDA0, 2, + 0x40BE16, GAME_10US_COMPACT, H_CALL, 0x40BDA0, 3, + 0x40BE2F, GAME_10US_COMPACT, H_CALL, 0x40BDA0, 4, + 0x43882A, GAME_10US_COMPACT, H_CALL, 0x4385B0, 1, + 0x438834, GAME_10US_COMPACT, H_CALL, 0x4385B0, 2, + 0x43883E, GAME_10US_COMPACT, H_CALL, 0x4385B0, 3, + 0x438848, GAME_10US_COMPACT, H_CALL, 0x4385B0, 4, + 0x438852, GAME_10US_COMPACT, H_CALL, 0x4385B0, 5, + 0x43885C, GAME_10US_COMPACT, H_CALL, 0x4385B0, 6, + 0x438866, GAME_10US_COMPACT, H_CALL, 0x4385B0, 7, + 0x438870, GAME_10US_COMPACT, H_CALL, 0x4385B0, 8, + 0x43887A, GAME_10US_COMPACT, H_CALL, 0x4385B0, 9, + 0x438AD6, GAME_10US_COMPACT, H_CALL, 0x438890, 1, + 0x438AE0, GAME_10US_COMPACT, H_CALL, 0x438890, 2, + 0x438AEA, GAME_10US_COMPACT, H_CALL, 0x438890, 3, + 0x438AF4, GAME_10US_COMPACT, H_CALL, 0x438890, 4, + 0x438AFE, GAME_10US_COMPACT, H_CALL, 0x438890, 5, + 0x438B08, GAME_10US_COMPACT, H_CALL, 0x438890, 6, + 0x438B12, GAME_10US_COMPACT, H_CALL, 0x438890, 7, + 0x438B1C, GAME_10US_COMPACT, H_CALL, 0x438890, 8, + 0x438B26, GAME_10US_COMPACT, H_CALL, 0x438890, 9, + 0x438D02, GAME_10US_COMPACT, H_CALL, 0x438B30, 1, + 0x438D0C, GAME_10US_COMPACT, H_CALL, 0x438B30, 2, + 0x438D16, GAME_10US_COMPACT, H_CALL, 0x438B30, 3, + 0x438D20, GAME_10US_COMPACT, H_CALL, 0x438B30, 4, + 0x438D2A, GAME_10US_COMPACT, H_CALL, 0x438B30, 5, + 0x438D34, GAME_10US_COMPACT, H_CALL, 0x438B30, 6, + 0x438D3E, GAME_10US_COMPACT, H_CALL, 0x438B30, 7, + 0x438D48, GAME_10US_COMPACT, H_CALL, 0x438B30, 8, + 0x43A154, GAME_10US_COMPACT, H_CALL, 0x43A0B0, 1, + 0x49AA8D, GAME_10US_COMPACT, H_JUMP, 0x49AA80, 1, + 0x49ACB0, GAME_10US_COMPACT, H_CALL, 0x49AC90, 1, + 0x49AE57, GAME_10US_COMPACT, H_CALL, 0x49AE30, 1, + 0x49B442, GAME_10US_COMPACT, H_CALL, 0x49B3C0, 1, + 0x49B667, GAME_10US_COMPACT, H_CALL, 0x49B640, 1, + 0x49B90D, GAME_10US_COMPACT, H_CALL, 0x49B8D0, 1, + 0x4D5B4A, GAME_10US_COMPACT, H_CALL, 0x4D5AF0, 1, + 0x4D5B5B, GAME_10US_COMPACT, H_CALL, 0x4D5AF0, 2, + 0x4D5B6F, GAME_10US_COMPACT, H_CALL, 0x4D5AF0, 3, + 0x4D5B83, GAME_10US_COMPACT, H_CALL, 0x4D5AF0, 4, + 0x4D5CB2, GAME_10US_COMPACT, H_CALL, 0x4D5C10, 1, + 0x56EB53, GAME_10US_COMPACT, H_CALL, 0x56EB30, 1, + 0x56F4BF, GAME_10US_COMPACT, H_CALL, 0x56F330, 1, + 0x5701CB, GAME_10US_COMPACT, H_CALL, 0x56F8D0, 1, + 0x5A47C8, GAME_10US_COMPACT, H_CALL, 0x5A47B0, 1, + 0x5A815F, GAME_10US_COMPACT, H_CALL, 0x5A8120, 1, + 0x5A8185, GAME_10US_COMPACT, H_CALL, 0x5A8120, 2, + 0x5A8192, GAME_10US_COMPACT, H_CALL, 0x5A8120, 3, + 0x5A819E, GAME_10US_COMPACT, H_CALL, 0x5A8120, 4, + 0x5B0080, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1, + 0x6119EE, GAME_10US_COMPACT, H_CALL, 0x6119D0, 1, + 0x611A08, GAME_10US_COMPACT, H_CALL, 0x6119D0, 2, + 0x611A26, GAME_10US_COMPACT, H_CALL, 0x6119D0, 3, + 0x611A3B, GAME_10US_COMPACT, H_CALL, 0x6119D0, 4, + 0x611A4F, GAME_10US_COMPACT, H_CALL, 0x6119D0, 5, + 0x611A69, GAME_10US_COMPACT, H_CALL, 0x6119D0, 6, + 0x611A83, GAME_10US_COMPACT, H_CALL, 0x6119D0, 7, + 0x611A9A, GAME_10US_COMPACT, H_CALL, 0x6119D0, 8, + 0x6874D0, GAME_10US_COMPACT, H_CALL, 0x6872C0, 1, + 0x6CD7E1, GAME_10US_COMPACT, H_CALL, 0x6CD2F0, 1, + 0x6D1A2E, GAME_10US_COMPACT, H_CALL, 0x6D1950, 1, + 0x6F7D41, GAME_10US_COMPACT, H_CALL, 0x6F7900, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::SetModelTxdIsDeletable) + static int address; + static int global_address; + static const int id = 0x409C70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409C70, 0, 0, 0, 0, 0>; + // total references count: 10us (15), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43A15A, GAME_10US_COMPACT, H_CALL, 0x43A0B0, 1, + 0x4D5B51, GAME_10US_COMPACT, H_CALL, 0x4D5AF0, 1, + 0x4D5B65, GAME_10US_COMPACT, H_CALL, 0x4D5AF0, 2, + 0x4D5B79, GAME_10US_COMPACT, H_CALL, 0x4D5AF0, 3, + 0x4D5B8D, GAME_10US_COMPACT, H_CALL, 0x4D5AF0, 4, + 0x6119FE, GAME_10US_COMPACT, H_JUMP, 0x6119D0, 1, + 0x611A18, GAME_10US_COMPACT, H_JUMP, 0x6119D0, 2, + 0x611A2C, GAME_10US_COMPACT, H_CALL, 0x6119D0, 3, + 0x611A45, GAME_10US_COMPACT, H_CALL, 0x6119D0, 4, + 0x611A5F, GAME_10US_COMPACT, H_JUMP, 0x6119D0, 5, + 0x611A79, GAME_10US_COMPACT, H_JUMP, 0x6119D0, 6, + 0x611A93, GAME_10US_COMPACT, H_JUMP, 0x6119D0, 7, + 0x611AAA, GAME_10US_COMPACT, H_JUMP, 0x6119D0, 8, + 0x6CD7EC, GAME_10US_COMPACT, H_CALL, 0x6CD2F0, 1, + 0x6F7D49, GAME_10US_COMPACT, H_CALL, 0x6F7900, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::SetMissionDoesntRequireModel) + static int address; + static int global_address; + static const int id = 0x409C90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409C90, 0, 0, 0, 0, 0>; + // total references count: 10us (14), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40B49D, GAME_10US_COMPACT, H_JUMP, 0x40B490, 1, + 0x40E58B, GAME_10US_COMPACT, H_CALL, 0x40E560, 1, + 0x4700ED, GAME_10US_COMPACT, H_JUMP, 0x4700E0, 1, + 0x4708C9, GAME_10US_COMPACT, H_CALL, 0x470890, 1, + 0x47F070, GAME_10US_COMPACT, H_CALL, 0x47E090, 1, + 0x48B57D, GAME_10US_COMPACT, H_JUMP, 0x48B570, 1, + 0x4986AD, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x4986CD, GAME_10US_COMPACT, H_CALL, 0x496E00, 2, + 0x4D5E52, GAME_10US_COMPACT, H_CALL, 0x4D5E50, 1, + 0x4D5ED7, GAME_10US_COMPACT, H_CALL, 0x4D5ED0, 1, + 0x59F6B2, GAME_10US_COMPACT, H_CALL, 0x59F660, 1, + 0x5B00E2, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1, + 0x5B00F6, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 2, + 0x5E867B, GAME_10US_COMPACT, H_CALL, 0x5E8620, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::RequestSpecialModel) + static int address; + static int global_address; + static const int id = 0x409D10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409D10, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40B45E, GAME_10US_COMPACT, H_JUMP, 0x40B450, 1, + 0x4668FF, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x5B1123, GAME_10US_COMPACT, H_CALL, 0x5B05A0, 1, + 0x5E0116, GAME_10US_COMPACT, H_CALL, 0x5E00F0, 1>; + using def_t = void(int, char *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CStreaming::RequestPlayerSection) + static int address; + static int global_address; + static const int id = 0x409FF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x409FF0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(int, char const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CStreaming::RequestFile) + static int address; + static int global_address; + static const int id = 0x40A080; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40A080, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5A420B, GAME_10US_COMPACT, H_CALL, 0x5A41C0, 1, + 0x5A429C, GAME_10US_COMPACT, H_CALL, 0x5A4220, 1, + 0x5A560A, GAME_10US_COMPACT, H_CALL, 0x5A55A0, 1>; + using def_t = void(int, int, int, int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CStreaming::LoadInitialWeapons) + static int address; + static int global_address; + static const int id = 0x40A120; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40A120, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D5C1E, GAME_10US_COMPACT, H_CALL, 0x4D5C10, 1, + 0x5AFFE0, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1, + 0x5BA28A, GAME_10US_COMPACT, H_CALL, 0x5BA1A0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::StreamCopModels) + static int address; + static int global_address; + static const int id = 0x40A150; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40A150, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40B706, GAME_10US_COMPACT, H_CALL, 0x40B700, 1, + 0x40D3DB, GAME_10US_COMPACT, H_CALL, 0x40D3D0, 1, + 0x40ED26, GAME_10US_COMPACT, H_CALL, 0x40EB70, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::StreamAmbulanceAndMedic) + static int address; + static int global_address; + static const int id = 0x40A2A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40A2A0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x42FA9A, GAME_10US_COMPACT, H_CALL, 0x42F9C0, 1, + 0x42FB00, GAME_10US_COMPACT, H_CALL, 0x42F9C0, 2>; + using def_t = bool(bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::StreamFireEngineAndFireman) + static int address; + static int global_address; + static const int id = 0x40A400; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40A400, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x42FB4B, GAME_10US_COMPACT, H_CALL, 0x42F9C0, 1, + 0x42FBA6, GAME_10US_COMPACT, H_CALL, 0x42F9C0, 2>; + using def_t = bool(bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::StreamZoneModels) + static int address; + static int global_address; + static const int id = 0x40A560; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40A560, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E7F3, GAME_10US_COMPACT, H_CALL, 0x40E670, 1, + 0x44232E, GAME_10US_COMPACT, H_CALL, 0x442060, 1, + 0x5B0108, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1>; + using def_t = void(CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::StreamZoneModels_Gangs) + static int address; + static int global_address; + static const int id = 0x40AA10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40AA10, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40B6B9, GAME_10US_COMPACT, H_CALL, 0x40B650, 1, + 0x446F28, GAME_10US_COMPACT, H_CALL, 0x446610, 1>; + using def_t = void(CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::ReclassifyLoadedCars) + static int address; + static int global_address; + static const int id = 0x40AFA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40AFA0, 0, 0, 0, 0, 0>; + // total references count: 10us (7), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40B6DB, GAME_10US_COMPACT, H_CALL, 0x40B650, 1, + 0x439356, GAME_10US_COMPACT, H_JUMP, 0x439230, 1, + 0x4394CE, GAME_10US_COMPACT, H_JUMP, 0x4394B0, 1, + 0x4394FE, GAME_10US_COMPACT, H_JUMP, 0x4394E0, 1, + 0x43985B, GAME_10US_COMPACT, H_CALL, 0x439720, 1, + 0x439EF0, GAME_10US_COMPACT, H_CALL, 0x439E50, 1, + 0x43A09A, GAME_10US_COMPACT, H_JUMP, 0x439F60, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::RemoveCurrentZonesModels) + static int address; + static int global_address; + static const int id = 0x40B080; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40B080, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D5B33, GAME_10US_COMPACT, H_CALL, 0x4D5AF0, 1, + 0x5B140C, GAME_10US_COMPACT, H_CALL, 0x5B13F0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::RemoveLoadedZoneModel) + static int address; + static int global_address; + static const int id = 0x40B340; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40B340, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40D17D, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 1, + 0x40D1C9, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 2, + 0x40D24B, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 3>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::RemoveInappropriatePedModels) + static int address; + static int global_address; + static const int id = 0x40B3A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40B3A0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53BE6C, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1, + 0x618F21, GAME_10US_COMPACT, H_CALL, 0x618E90, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::RequestSpecialChar) + static int address; + static int global_address; + static const int id = 0x40B450; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40B450, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x47EDF5, GAME_10US_COMPACT, H_CALL, 0x47E090, 1>; + using def_t = void(int, char const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CStreaming::SetSpecialCharIsDeletable) + static int address; + static int global_address; + static const int id = 0x40B470; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40B470, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::SetMissionDoesntRequireSpecialChar) + static int address; + static int global_address; + static const int id = 0x40B490; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40B490, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x468749, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x47F443, GAME_10US_COMPACT, H_CALL, 0x47F370, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::LoadZoneVehicle) + static int address; + static int global_address; + static const int id = 0x40B4B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40B4B0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::StreamOneNewCar) + static int address; + static int global_address; + static const int id = 0x40B4F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40B4F0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40B6AF, GAME_10US_COMPACT, H_CALL, 0x40B650, 1, + 0x40B9B1, GAME_10US_COMPACT, H_CALL, 0x40B700, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::StreamVehiclesAndPeds_Always) + static int address; + static int global_address; + static const int id = 0x40B650; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40B650, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E7D0, GAME_10US_COMPACT, H_CALL, 0x40E670, 1>; + using def_t = void(CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::StreamVehiclesAndPeds) + static int address; + static int global_address; + static const int id = 0x40B700; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40B700, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E7E1, GAME_10US_COMPACT, H_CALL, 0x40E670, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::PossiblyStreamCarOutAfterCreation) + static int address; + static int global_address; + static const int id = 0x40BA70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40BA70, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x431F05, GAME_10US_COMPACT, H_CALL, 0x430050, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::ClearSlots) + static int address; + static int global_address; + static const int id = 0x40BAA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40BAA0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40BBD1, GAME_10US_COMPACT, H_CALL, 0x40BBB0, 1, + 0x40BC98, GAME_10US_COMPACT, H_CALL, 0x40BBB0, 2, + 0x40BD52, GAME_10US_COMPACT, H_CALL, 0x40BBB0, 3>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::StreamPedsForInterior) + static int address; + static int global_address; + static const int id = 0x40BBB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40BBB0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x594BF5, GAME_10US_COMPACT, H_CALL, 0x594BF0, 1, + 0x594C2D, GAME_10US_COMPACT, H_CALL, 0x594C10, 1, + 0x596601, GAME_10US_COMPACT, H_CALL, 0x5965E0, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::StreamPedsIntoRandomSlots) + static int address; + static int global_address; + static const int id = 0x40BDA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40BDA0, 0, 0, 0, 0, 0>; + // total references count: 10us (13), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43921D, GAME_10US_COMPACT, H_CALL, 0x4391D0, 1, + 0x439289, GAME_10US_COMPACT, H_CALL, 0x439230, 1, + 0x4393BC, GAME_10US_COMPACT, H_CALL, 0x439360, 1, + 0x439450, GAME_10US_COMPACT, H_CALL, 0x4393F0, 1, + 0x439771, GAME_10US_COMPACT, H_CALL, 0x439720, 1, + 0x439E25, GAME_10US_COMPACT, H_CALL, 0x439DD0, 1, + 0x439EA4, GAME_10US_COMPACT, H_CALL, 0x439E50, 1, + 0x439FC0, GAME_10US_COMPACT, H_CALL, 0x439F60, 1, + 0x43E73F, GAME_10US_COMPACT, H_CALL, 0x43E6D0, 1, + 0x43E78A, GAME_10US_COMPACT, H_CALL, 0x43E6D0, 2, + 0x43E7D5, GAME_10US_COMPACT, H_CALL, 0x43E6D0, 3, + 0x43E835, GAME_10US_COMPACT, H_CALL, 0x43E6D0, 4, + 0x43E894, GAME_10US_COMPACT, H_CALL, 0x43E6D0, 5>; + using def_t = void(int *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::RemoveDodgyPedsFromRandomSlots) + static int address; + static int global_address; + static const int id = 0x40BE60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40BE60, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x43E6E3, GAME_10US_COMPACT, H_JUMP, 0x43E6D0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::RemoveLoadedVehicle) + static int address; + static int global_address; + static const int id = 0x40C020; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40C020, 0, 0, 0, 0, 0>; + // total references count: 10us (6), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40CF87, GAME_10US_COMPACT, H_CALL, 0x40CF80, 1, + 0x40D198, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 1, + 0x40D1FC, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 2, + 0x40D23A, GAME_10US_COMPACT, H_CALL, 0x40CFD0, 3, + 0x40E229, GAME_10US_COMPACT, H_CALL, 0x40E170, 1, + 0x4D5B38, GAME_10US_COMPACT, H_CALL, 0x4D5AF0, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::PurgeRequestList) + static int address; + static int global_address; + static const int id = 0x40C1E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40C1E0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E948, GAME_10US_COMPACT, H_JUMP, 0x40E670, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN_OVERLOADED(CStreaming::ProcessEntitiesInSectorList, void (*)(CPtrList *, float, float, float, float, float, float, float, unsigned int)) + static int address; + static int global_address; + static const int id = 0x40C270; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40C270, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40C672, GAME_10US_COMPACT, H_CALL, 0x40C520, 1, + 0x40D70C, GAME_10US_COMPACT, H_CALL, 0x40D3F0, 1, + 0x40D736, GAME_10US_COMPACT, H_CALL, 0x40D3F0, 2, + 0x40D763, GAME_10US_COMPACT, H_CALL, 0x40D3F0, 3>; + using def_t = void(CPtrList *, float, float, float, float, float, float, float, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5,6,7,8>; +META_END + +META_BEGIN_OVERLOADED(CStreaming::ProcessEntitiesInSectorList, void (*)(CPtrList *, unsigned int)) + static int address; + static int global_address; + static const int id = 0x40C450; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40C450, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40D6B5, GAME_10US_COMPACT, H_CALL, 0x40D3F0, 1, + 0x40D6BF, GAME_10US_COMPACT, H_CALL, 0x40D3F0, 2, + 0x40D6C9, GAME_10US_COMPACT, H_CALL, 0x40D3F0, 3>; + using def_t = void(CPtrList *, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreaming::AddLodsToRequestList) + static int address; + static int global_address; + static const int id = 0x40C520; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40C520, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E71A, GAME_10US_COMPACT, H_CALL, 0x40E670, 1>; + using def_t = void(CVector const *, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreaming::ConvertBufferToObject) + static int address; + static int global_address; + static const int id = 0x40C6B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40C6B0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E2C5, GAME_10US_COMPACT, H_CALL, 0x40E170, 1>; + using def_t = char(char *, int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CStreaming::RequestModelStream) + static int address; + static int global_address; + static const int id = 0x40CBA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40CBA0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E3FD, GAME_10US_COMPACT, H_CALL, 0x40E3A0, 1, + 0x40E427, GAME_10US_COMPACT, H_CALL, 0x40E3A0, 2, + 0x40EB0D, GAME_10US_COMPACT, H_CALL, 0x40EA10, 1, + 0x40EB29, GAME_10US_COMPACT, H_CALL, 0x40EA10, 2>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::RemoveAllUnusedModels) + static int address; + static int global_address; + static const int id = 0x40CF80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40CF80, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E577, GAME_10US_COMPACT, H_CALL, 0x40E560, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::RemoveLeastUsedModel) + static int address; + static int global_address; + static const int id = 0x40CFD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40CFD0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E103, GAME_10US_COMPACT, H_CALL, 0x40D7C0, 1, + 0x40E138, GAME_10US_COMPACT, H_CALL, 0x40E120, 1>; + using def_t = bool(unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::LoadInitialPeds) + static int address; + static int global_address; + static const int id = 0x40D3D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40D3D0, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4D5C19, GAME_10US_COMPACT, H_CALL, 0x4D5C10, 1, + 0x5AFFDB, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1, + 0x5BA257, GAME_10US_COMPACT, H_CALL, 0x5BA1A0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::AddModelsToRequestList) + static int address; + static int global_address; + static const int id = 0x40D3F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40D3F0, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E6FB, GAME_10US_COMPACT, H_CALL, 0x40E670, 1, + 0x40E982, GAME_10US_COMPACT, H_CALL, 0x40E960, 1, + 0x40EC8C, GAME_10US_COMPACT, H_CALL, 0x40EB70, 1, + 0x440544, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1>; + using def_t = void(CVector const *, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreaming::DeleteRwObjectsBehindCamera) + static int address; + static int global_address; + static const int id = 0x40D7C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40D7C0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E164, GAME_10US_COMPACT, H_JUMP, 0x40E120, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::MakeSpaceFor) + static int address; + static int global_address; + static const int id = 0x40E120; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40E120, 0, 0, 0, 0, 0>; + // total references count: 10us (8), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E2A7, GAME_10US_COMPACT, H_CALL, 0x40E170, 1, + 0x572EDD, GAME_10US_COMPACT, H_CALL, 0x572EC0, 1, + 0x572F74, GAME_10US_COMPACT, H_CALL, 0x572EC0, 2, + 0x573008, GAME_10US_COMPACT, H_CALL, 0x572EC0, 3, + 0x57310A, GAME_10US_COMPACT, H_CALL, 0x5730A0, 1, + 0x5731C9, GAME_10US_COMPACT, H_CALL, 0x5730A0, 2, + 0x5AFC33, GAME_10US_COMPACT, H_CALL, 0x5AFBC0, 1, + 0x5DD926, GAME_10US_COMPACT, H_CALL, 0x5DD910, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::ProcessLoadingChannel) + static int address; + static int global_address; + static const int id = 0x40E170; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40E170, 0, 0, 0, 0, 0>; + // total references count: 10us (12), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x407785, GAME_10US_COMPACT, H_CALL, 0x4076C0, 1, + 0x40779D, GAME_10US_COMPACT, H_CALL, 0x4076C0, 2, + 0x40E3CA, GAME_10US_COMPACT, H_CALL, 0x40E3A0, 1, + 0x40E46B, GAME_10US_COMPACT, H_CALL, 0x40E460, 1, + 0x40E48F, GAME_10US_COMPACT, H_CALL, 0x40E460, 2, + 0x40E4A2, GAME_10US_COMPACT, H_CALL, 0x40E460, 3, + 0x40E4C6, GAME_10US_COMPACT, H_CALL, 0x40E460, 4, + 0x40E4D9, GAME_10US_COMPACT, H_CALL, 0x40E460, 5, + 0x40E9D0, GAME_10US_COMPACT, H_CALL, 0x40E9B0, 1, + 0x40E9E3, GAME_10US_COMPACT, H_CALL, 0x40E9B0, 2, + 0x40EAC3, GAME_10US_COMPACT, H_CALL, 0x40EA10, 1, + 0x40EAD7, GAME_10US_COMPACT, H_CALL, 0x40EA10, 2>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::LoadRequestedModels) + static int address; + static int global_address; + static const int id = 0x40E3A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40E3A0, 0, 0, 0, 0, 0>; + // total references count: 10us (10), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E7FB, GAME_10US_COMPACT, H_CALL, 0x40E670, 1, + 0x40E987, GAME_10US_COMPACT, H_CALL, 0x40E960, 1, + 0x573E40, GAME_10US_COMPACT, H_CALL, 0x573CF0, 1, + 0x5A5637, GAME_10US_COMPACT, H_CALL, 0x5A55A0, 1, + 0x5A5F9F, GAME_10US_COMPACT, H_CALL, 0x5A5F70, 1, + 0x5A601F, GAME_10US_COMPACT, H_CALL, 0x5A5F70, 2, + 0x5A605B, GAME_10US_COMPACT, H_CALL, 0x5A6040, 1, + 0x5A60E5, GAME_10US_COMPACT, H_CALL, 0x5A6040, 2, + 0x5A61E5, GAME_10US_COMPACT, H_CALL, 0x5A6040, 3, + 0x5A62ED, GAME_10US_COMPACT, H_CALL, 0x5A6040, 4>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::FlushChannels) + static int address; + static int global_address; + static const int id = 0x40E460; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40E460, 0, 0, 0, 0, 0>; + // total references count: 10us (4), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E558, GAME_10US_COMPACT, H_JUMP, 0x40E4E0, 1, + 0x40EA29, GAME_10US_COMPACT, H_CALL, 0x40EA10, 1, + 0x40EB52, GAME_10US_COMPACT, H_CALL, 0x40EA10, 2, + 0x5A43AC, GAME_10US_COMPACT, H_CALL, 0x5A43A0, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::FlushRequestList) + static int address; + static int global_address; + static const int id = 0x40E4E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40E4E0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40E56D, GAME_10US_COMPACT, H_CALL, 0x40E560, 1, + 0x44147C, GAME_10US_COMPACT, H_CALL, 0x441440, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::ReInit) + static int address; + static int global_address; + static const int id = 0x40E560; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40E560, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53C5DF, GAME_10US_COMPACT, H_CALL, 0x53C550, 1>; + using def_t = unsigned int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::Update) + static int address; + static int global_address; + static const int id = 0x40E670; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40E670, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x53BF0B, GAME_10US_COMPACT, H_CALL, 0x53BEE0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::UpdateForAnimViewer) + static int address; + static int global_address; + static const int id = 0x40E960; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40E960, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::GetDiscInDrive) + static int address; + static int global_address; + static const int id = 0x40E9B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40E9B0, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = signed int(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::LoadAllRequestedModels) + static int address; + static int global_address; + static const int id = 0x40EA10; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40EA10, 0, 0, 0, 0, 0>; + // total references count: 10us (56), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4050DD, GAME_10US_COMPACT, H_CALL, 0x404DE0, 1, + 0x4054EC, GAME_10US_COMPACT, H_CALL, 0x4053F0, 1, + 0x405817, GAME_10US_COMPACT, H_CALL, 0x405780, 1, + 0x40EC84, GAME_10US_COMPACT, H_CALL, 0x40EB70, 1, + 0x40ED30, GAME_10US_COMPACT, H_CALL, 0x40EB70, 2, + 0x40EDCE, GAME_10US_COMPACT, H_JUMP, 0x40ED80, 1, + 0x410BC1, GAME_10US_COMPACT, H_CALL, 0x410AD0, 1, + 0x410E96, GAME_10US_COMPACT, H_CALL, 0x410E60, 1, + 0x411E58, GAME_10US_COMPACT, H_CALL, 0x411E30, 1, + 0x43862D, GAME_10US_COMPACT, H_CALL, 0x4385B0, 1, + 0x438901, GAME_10US_COMPACT, H_CALL, 0x438890, 1, + 0x438B95, GAME_10US_COMPACT, H_CALL, 0x438B30, 1, + 0x4395BE, GAME_10US_COMPACT, H_CALL, 0x4395B0, 1, + 0x439F17, GAME_10US_COMPACT, H_CALL, 0x439E50, 1, + 0x43A137, GAME_10US_COMPACT, H_CALL, 0x43A0B0, 1, + 0x43A5AC, GAME_10US_COMPACT, H_CALL, 0x43A570, 1, + 0x4407C5, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x440827, GAME_10US_COMPACT, H_CALL, 0x4404A0, 2, + 0x45CF0A, GAME_10US_COMPACT, H_CALL, 0x45CEA0, 1, + 0x45D52E, GAME_10US_COMPACT, H_CALL, 0x45D4B0, 1, + 0x466906, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x483DE2, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1, + 0x49B421, GAME_10US_COMPACT, H_CALL, 0x49B3C0, 1, + 0x49BBA8, GAME_10US_COMPACT, H_CALL, 0x49B8D0, 1, + 0x4D5C69, GAME_10US_COMPACT, H_CALL, 0x4D5C10, 1, + 0x4D5CA4, GAME_10US_COMPACT, H_CALL, 0x4D5C10, 2, + 0x4D5E3B, GAME_10US_COMPACT, H_CALL, 0x4D5E20, 1, + 0x4D5E9B, GAME_10US_COMPACT, H_CALL, 0x4D5E80, 1, + 0x570B6F, GAME_10US_COMPACT, H_CALL, 0x56F8D0, 1, + 0x573E4E, GAME_10US_COMPACT, H_CALL, 0x573CF0, 1, + 0x594BFC, GAME_10US_COMPACT, H_CALL, 0x594BF0, 1, + 0x594C34, GAME_10US_COMPACT, H_CALL, 0x594C10, 1, + 0x596607, GAME_10US_COMPACT, H_CALL, 0x5965E0, 1, + 0x5A5611, GAME_10US_COMPACT, H_CALL, 0x5A55A0, 1, + 0x5A5F80, GAME_10US_COMPACT, H_CALL, 0x5A5F70, 1, + 0x5A60CD, GAME_10US_COMPACT, H_CALL, 0x5A6040, 1, + 0x5A61CC, GAME_10US_COMPACT, H_CALL, 0x5A6040, 2, + 0x5A62BB, GAME_10US_COMPACT, H_CALL, 0x5A6040, 3, + 0x5A64BD, GAME_10US_COMPACT, H_CALL, 0x5A6040, 4, + 0x5A8259, GAME_10US_COMPACT, H_CALL, 0x5A81E0, 1, + 0x5B0037, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 1, + 0x5B0072, GAME_10US_COMPACT, H_CALL, 0x5AFD60, 2, + 0x5B1175, GAME_10US_COMPACT, H_CALL, 0x5B05A0, 1, + 0x5BA25E, GAME_10US_COMPACT, H_CALL, 0x5BA1A0, 1, + 0x5BA291, GAME_10US_COMPACT, H_CALL, 0x5BA1A0, 2, + 0x5D2A86, GAME_10US_COMPACT, H_CALL, 0x5D2A20, 1, + 0x5D4563, GAME_10US_COMPACT, H_CALL, 0x5D44B0, 1, + 0x5D458A, GAME_10US_COMPACT, H_CALL, 0x5D44B0, 2, + 0x6164B3, GAME_10US_COMPACT, H_CALL, 0x616470, 1, + 0x618ED8, GAME_10US_COMPACT, H_CALL, 0x618E90, 1, + 0x64F8A9, GAME_10US_COMPACT, H_CALL, 0x64F860, 1, + 0x6F73E6, GAME_10US_COMPACT, H_CALL, 0x6F72F0, 1, + 0x722833, GAME_10US_COMPACT, H_CALL, 0x722810, 1, + 0x724F3D, GAME_10US_COMPACT, H_CALL, 0x724E40, 1, + 0x724F93, GAME_10US_COMPACT, H_CALL, 0x724E40, 2, + 0x724FE9, GAME_10US_COMPACT, H_CALL, 0x724E40, 3>; + using def_t = void(bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::LoadScene) + static int address; + static int global_address; + static const int id = 0x40EB70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40EB70, 0, 0, 0, 0, 0>; + // total references count: 10us (12), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x440820, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x440855, GAME_10US_COMPACT, H_CALL, 0x4404A0, 2, + 0x4414A7, GAME_10US_COMPACT, H_CALL, 0x441440, 1, + 0x4425F0, GAME_10US_COMPACT, H_CALL, 0x442480, 1, + 0x45F0AB, GAME_10US_COMPACT, H_CALL, 0x45F050, 1, + 0x4602CD, GAME_10US_COMPACT, H_CALL, 0x4600F0, 1, + 0x47B838, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x4850F3, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1, + 0x5B0AF0, GAME_10US_COMPACT, H_CALL, 0x5B05A0, 1, + 0x5BD804, GAME_10US_COMPACT, H_CALL, 0x5BD7B0, 1, + 0x618ED1, GAME_10US_COMPACT, H_CALL, 0x618E90, 1, + 0x6F73DF, GAME_10US_COMPACT, H_CALL, 0x6F72F0, 1>; + using def_t = void(CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::LoadSceneCollision) + static int address; + static int global_address; + static const int id = 0x40ED80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x40ED80, 0, 0, 0, 0, 0>; + // total references count: 10us (3), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x441494, GAME_10US_COMPACT, H_CALL, 0x441440, 1, + 0x4425E6, GAME_10US_COMPACT, H_CALL, 0x442480, 1, + 0x618EB5, GAME_10US_COMPACT, H_CALL, 0x618E90, 1>; + using def_t = void(CVector const *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreaming::SetMissionDoesntRequireAnim) + static int address; + static int global_address; + static const int id = 0x48B570; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x48B570, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x48C409, GAME_10US_COMPACT, H_CALL, 0x48B590, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CStreaming::LoadCdDirectory, void (*)(char const *, int)) + static int address; + static int global_address; + static const int id = 0x5B6170; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B6170, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8310, GAME_10US_COMPACT, H_CALL, 0x5B82C0, 1>; + using def_t = void(char const *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN_OVERLOADED(CStreaming::LoadCdDirectory, void (*)()) + static int address; + static int global_address; + static const int id = 0x5B82C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B82C0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8E1B, GAME_10US_COMPACT, H_CALL, 0x5B8AD0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::Init2) + static int address; + static int global_address; + static const int id = 0x5B8AD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B8AD0, 0, 0, 0, 0, 0>; + // total references count: 10us (2), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B9020, GAME_10US_COMPACT, H_JUMP, 0x5B9020, 1, + 0x5B927D, GAME_10US_COMPACT, H_CALL, 0x5B9030, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::Init) + static int address; + static int global_address; + static const int id = 0x5B9020; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5B9020, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::ReadIniFile) + static int address; + static int global_address; + static const int id = 0x5BCCD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5BCCD0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5BF996, GAME_10US_COMPACT, H_CALL, 0x5BF840, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::Save) + static int address; + static int global_address; + static const int id = 0x5D29A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D29A0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D1567, GAME_10US_COMPACT, H_CALL, 0x5D13E0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CStreaming::Load) + static int address; + static int global_address; + static const int id = 0x5D29E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D29E0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5D198F, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CStreamingInfo.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CStreamingInfo.h new file mode 100644 index 00000000..1329d8ee --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CStreamingInfo.h @@ -0,0 +1,179 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CStreamingInfo::Init) + static int address; + static int global_address; + static const int id = 0x407460; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407460, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B8AF2, GAME_10US_COMPACT, H_CALL, 0x5B8AD0, 1>; + using def_t = void(CStreamingInfo *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreamingInfo::AddToList) + static int address; + static int global_address; + static const int id = 0x407480; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407480, 0, 0, 0, 0, 0>; + // total references count: 10us (14), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x4088D1, GAME_10US_COMPACT, H_CALL, 0x4087E0, 1, + 0x408962, GAME_10US_COMPACT, H_CALL, 0x4087E0, 2, + 0x409C4D, GAME_10US_COMPACT, H_CALL, 0x409C10, 1, + 0x409CD8, GAME_10US_COMPACT, H_CALL, 0x409C90, 1, + 0x40ABF8, GAME_10US_COMPACT, H_CALL, 0x40AA10, 1, + 0x40AC67, GAME_10US_COMPACT, H_CALL, 0x40AA10, 2, + 0x40B0CE, GAME_10US_COMPACT, H_CALL, 0x40B080, 1, + 0x40B130, GAME_10US_COMPACT, H_CALL, 0x40B080, 2, + 0x40B95F, GAME_10US_COMPACT, H_CALL, 0x40B700, 1, + 0x40BB06, GAME_10US_COMPACT, H_CALL, 0x40BAA0, 1, + 0x40BB6C, GAME_10US_COMPACT, H_CALL, 0x40BAA0, 2, + 0x40BEC6, GAME_10US_COMPACT, H_CALL, 0x40BE60, 1, + 0x40BF28, GAME_10US_COMPACT, H_CALL, 0x40BE60, 2, + 0x40CB5E, GAME_10US_COMPACT, H_CALL, 0x40C6B0, 1>; + using def_t = void(CStreamingInfo *, CStreamingInfo *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStreamingInfo::RemoveFromList) + static int address; + static int global_address; + static const int id = 0x4074E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4074E0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x40CEA7, GAME_10US_COMPACT, H_CALL, 0x40CBA0, 1>; + using def_t = void(CStreamingInfo *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreamingInfo::GetNext) + static int address; + static int global_address; + static const int id = 0x407520; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407520, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = CStreamingInfo *(CStreamingInfo *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreamingInfo::GetPrev) + static int address; + static int global_address; + static const int id = 0x407540; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407540, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = CStreamingInfo *(CStreamingInfo *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreamingInfo::InList) + static int address; + static int global_address; + static const int id = 0x407560; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407560, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = bool(CStreamingInfo *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreamingInfo::GetCdPosn) + static int address; + static int global_address; + static const int id = 0x407570; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407570, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = unsigned int(CStreamingInfo *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreamingInfo::GetCdSize) + static int address; + static int global_address; + static const int id = 0x407590; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x407590, 0, 0, 0, 0, 0>; + // total references count: 10us (0), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList<>; + using def_t = unsigned int(CStreamingInfo *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStreamingInfo::GetCdPosnAndSize) + static int address; + static int global_address; + static const int id = 0x4075A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4075A0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B6449, GAME_10US_COMPACT, H_CALL, 0x5B6170, 1>; + using def_t = bool(CStreamingInfo *, unsigned int *, unsigned int *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CStreamingInfo::SetCdPosnAndSize) + static int address; + static int global_address; + static const int id = 0x4075E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4075E0, 0, 0, 0, 0, 0>; + // total references count: 10us (1), 10ushl (0), 10eu (0), 11us (0), 11eu (0), sr2 (0), sr2lv (0) + using refs_t = RefList< + 0x5B6486, GAME_10US_COMPACT, H_CALL, 0x5B6170, 1>; + using def_t = void(CStreamingInfo *, unsigned int, unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CStuckCarCheck.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CStuckCarCheck.h new file mode 100644 index 00000000..e6723aaf --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CStuckCarCheck.h @@ -0,0 +1,149 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CStuckCarCheck::ResetArrayElement) + static int address; + static int global_address; + static const int id = 0x463970; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463970, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x465944, GAME_10US_COMPACT, H_CALL, 0x465680, 1>; + using def_t = void(CStuckCarCheck *, unsigned short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStuckCarCheck::Init) + static int address; + static int global_address; + static const int id = 0x4639E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4639E0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4689F0, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x468DF4, GAME_10US_COMPACT, H_CALL, 0x468D50, 1>; + using def_t = void(CStuckCarCheck *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStuckCarCheck::AttemptToWarpVehicle) + static int address; + static int global_address; + static const int id = 0x463A60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463A60, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x465832, GAME_10US_COMPACT, H_CALL, 0x465680, 1, + 0x4658F5, GAME_10US_COMPACT, H_CALL, 0x465680, 2>; + using def_t = bool(CStuckCarCheck *, CVehicle *, CVector *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CStuckCarCheck::RemoveCarFromCheck) + static int address; + static int global_address; + static const int id = 0x463B80; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463B80, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x485154, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1>; + using def_t = void(CStuckCarCheck *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStuckCarCheck::HasCarBeenStuckForAWhile) + static int address; + static int global_address; + static const int id = 0x463C00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463C00, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x48517A, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1>; + using def_t = bool(CStuckCarCheck *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStuckCarCheck::ClearStuckFlagForCar) + static int address; + static int global_address; + static const int id = 0x463C40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463C40, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x43431F, GAME_10US_COMPACT, H_CALL, 0x4342A0, 1>; + using def_t = void(CStuckCarCheck *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStuckCarCheck::IsCarInStuckCarArray) + static int address; + static int global_address; + static const int id = 0x463C70; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463C70, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x498A65, GAME_10US_COMPACT, H_CALL, 0x496E00, 1>; + using def_t = bool(CStuckCarCheck *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CStuckCarCheck::Process) + static int address; + static int global_address; + static const int id = 0x465680; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x465680, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46A04E, GAME_10US_COMPACT, H_CALL, 0x46A000, 1>; + using def_t = void(CStuckCarCheck *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CStuckCarCheck::AddCarToCheck) + static int address; + static int global_address; + static const int id = 0x465970; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x465970, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46DCA1, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x485133, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1>; + using def_t = void(CStuckCarCheck *, int, float, unsigned int, unsigned char, unsigned char, unsigned char, unsigned char, signed char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1,2,3,4,5,6,7,8>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CTheCarGenerators.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CTheCarGenerators.h new file mode 100644 index 00000000..52287cc3 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CTheCarGenerators.h @@ -0,0 +1,105 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CTheCarGenerators::Save) + static int address; + static int global_address; + static const int id = 0x5D38C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D38C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5D1538, GAME_10US_COMPACT, H_CALL, 0x5D13E0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheCarGenerators::Load) + static int address; + static int global_address; + static const int id = 0x5D39B0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D39B0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5D1960, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheCarGenerators::CreateCarGenerator) + static int address; + static int global_address; + static const int id = 0x6F31A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F31A0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47AF74, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x47C20F, GAME_10US_COMPACT, H_CALL, 0x47C100, 1, + 0x5379F2, GAME_10US_COMPACT, H_CALL, 0x537990, 1>; + using def_t = signed int(float, float, float, float, int, short, short, unsigned char, unsigned char, unsigned char, unsigned short, unsigned short, unsigned char, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5,6,7,8,9,10,11,12,13>; +META_END + +META_BEGIN(CTheCarGenerators::RemoveCarGenerators) + static int address; + static int global_address; + static const int id = 0x6F3240; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F3240, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x404C61, GAME_10US_COMPACT, H_JUMP, 0x404B20, 1>; + using def_t = void(unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheCarGenerators::Init) + static int address; + static int global_address; + static const int id = 0x6F3270; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F3270, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53BDF5, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1, + 0x5BF982, GAME_10US_COMPACT, H_CALL, 0x5BF840, 1, + 0x5D39B3, GAME_10US_COMPACT, H_CALL, 0x5D39B0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheCarGenerators::Process) + static int address; + static int global_address; + static const int id = 0x6F3F40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x6F3F40, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53C06A, GAME_10US_COMPACT, H_CALL, 0x53BEE0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CTheScripts.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CTheScripts.h new file mode 100644 index 00000000..5e1c2c4e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CTheScripts.h @@ -0,0 +1,1334 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CTheScripts::PrintListSizes) + static int address; + static int global_address; + static const int id = 0x4646D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4646D0, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::DrawScriptSpritesAndRectangles) + static int address; + static int global_address; + static const int id = 0x464980; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464980, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x58C092, GAME_10US_COMPACT, H_CALL, 0x58C080, 1>; + using def_t = void(char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::WipeLocalVariableMemoryForMissionScript) + static int address; + static int global_address; + static const int id = 0x464BB0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464BB0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4899F0, GAME_10US_COMPACT, H_CALL, 0x489500, 1, + 0x489A70, GAME_10US_COMPACT, H_CALL, 0x489500, 2>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN_OVERLOADED(CTheScripts::StartNewScript, CRunningScript *(*)(unsigned char *)) + static int address; + static int global_address; + static const int id = 0x464C20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464C20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x464D45, GAME_10US_COMPACT, H_CALL, 0x464D40, 1, + 0x46683B, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x46944F, GAME_10US_COMPACT, H_CALL, 0x469390, 1, + 0x4708A9, GAME_10US_COMPACT, H_CALL, 0x470890, 1, + 0x4899FA, GAME_10US_COMPACT, H_CALL, 0x489500, 1, + 0x489A7A, GAME_10US_COMPACT, H_CALL, 0x489500, 2>; + using def_t = CRunningScript *(unsigned char *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CTheScripts::StartNewScript, int (*)(unsigned char *, unsigned short)) + static int address; + static int global_address; + static const int id = 0x464C90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464C90, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5D5323, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 1>; + using def_t = int(unsigned char *, unsigned short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::GetScriptIndexFromPointer) + static int address; + static int global_address; + static const int id = 0x464D20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464D20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5D4F43, GAME_10US_COMPACT, H_CALL, 0x5D4C40, 1>; + using def_t = int(CRunningScript *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::StartTestScript) + static int address; + static int global_address; + static const int id = 0x464D40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464D40, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53BCC4, GAME_10US_COMPACT, H_CALL, 0x53BC80, 1, + 0x53BE88, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::IsPlayerOnAMission) + static int address; + static int global_address; + static const int id = 0x464D50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464D50, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x44310A, GAME_10US_COMPACT, H_CALL, 0x442AD0, 1, + 0x44395B, GAME_10US_COMPACT, H_CALL, 0x443950, 1, + 0x446614, GAME_10US_COMPACT, H_CALL, 0x446610, 1, + 0x446639, GAME_10US_COMPACT, H_CALL, 0x446610, 2, + 0x446AB2, GAME_10US_COMPACT, H_CALL, 0x446610, 3, + 0x446D7A, GAME_10US_COMPACT, H_CALL, 0x446610, 4, + 0x454D40, GAME_10US_COMPACT, H_CALL, 0x454D20, 1, + 0x457CF7, GAME_10US_COMPACT, H_CALL, 0x457410, 1, + 0x457D68, GAME_10US_COMPACT, H_CALL, 0x457410, 2, + 0x45818E, GAME_10US_COMPACT, H_CALL, 0x457410, 3, + 0x4AF7BB, GAME_10US_COMPACT, H_CALL, 0x4AF760, 1, + 0x4C1762, GAME_10US_COMPACT, H_CALL, 0x4C1590, 1, + 0x4C313F, GAME_10US_COMPACT, H_CALL, 0x4C2FC0, 1, + 0x571582, GAME_10US_COMPACT, H_CALL, 0x56F8D0, 1, + 0x585C4E, GAME_10US_COMPACT, H_CALL, 0x585BF0, 1, + 0x586D81, GAME_10US_COMPACT, H_CALL, 0x586D60, 1, + 0x5FC888, GAME_10US_COMPACT, H_CALL, 0x5FC800, 1, + 0x5FC8A1, GAME_10US_COMPACT, H_CALL, 0x5FC800, 2, + 0x5FC8BF, GAME_10US_COMPACT, H_CALL, 0x5FC800, 3, + 0x5FC8D6, GAME_10US_COMPACT, H_CALL, 0x5FC800, 4, + 0x5FC98D, GAME_10US_COMPACT, H_CALL, 0x5FC800, 5, + 0x61034D, GAME_10US_COMPACT, H_CALL, 0x610310, 1, + 0x6425C9, GAME_10US_COMPACT, H_CALL, 0x642510, 1, + 0x644323, GAME_10US_COMPACT, H_CALL, 0x644320, 1, + 0x661D0E, GAME_10US_COMPACT, H_CALL, 0x661BB0, 1, + 0x6CDA8D, GAME_10US_COMPACT, H_CALL, 0x6CD2F0, 1>; + using def_t = bool(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::CheckStreamedScriptVersion) + static int address; + static int global_address; + static const int id = 0x464FF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x464FF0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47084E, GAME_10US_COMPACT, H_CALL, 0x470840, 1>; + using def_t = char(RwStream *, char *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::RemoveScriptTextureDictionary) + static int address; + static int global_address; + static const int id = 0x465A40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x465A40, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468C91, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x4841BB, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1, + 0x53BB00, GAME_10US_COMPACT, H_JUMP, 0x53BB00, 1, + 0x53CADD, GAME_10US_COMPACT, H_CALL, 0x53C900, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::Init) + static int address; + static int global_address; + static const int id = 0x468D50; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x468D50, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53BDD7, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1, + 0x5BA340, GAME_10US_COMPACT, H_CALL, 0x5BA1A0, 1, + 0x5D4FD7, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::Process) + static int address; + static int global_address; + static const int id = 0x46A000; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46A000, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x440A0D, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x53BCC9, GAME_10US_COMPACT, H_CALL, 0x53BC80, 1, + 0x53BE8D, GAME_10US_COMPACT, H_CALL, 0x53BCF0, 1, + 0x53BFC7, GAME_10US_COMPACT, H_CALL, 0x53BEE0, 1, + 0x618F05, GAME_10US_COMPACT, H_CALL, 0x618E90, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::ClearAllSuppressedCarModels) + static int address; + static int global_address; + static const int id = 0x46A7C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46A7C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468755, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x469290, GAME_10US_COMPACT, H_CALL, 0x468D50, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::ClearAllVehicleModelsBlockedByScript) + static int address; + static int global_address; + static const int id = 0x46A840; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46A840, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x469295, GAME_10US_COMPACT, H_CALL, 0x468D50, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::RemoveFromVehicleModelsBlockedByScript) + static int address; + static int global_address; + static const int id = 0x46A860; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46A860, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::HasVehicleModelBeenBlockedByScript) + static int address; + static int global_address; + static const int id = 0x46A890; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46A890, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x611DAF, GAME_10US_COMPACT, H_CALL, 0x611C50, 1>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::AddToWaitingForScriptBrainArray) + static int address; + static int global_address; + static const int id = 0x46AB60; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46AB60, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46CE16, GAME_10US_COMPACT, H_CALL, 0x46CD80, 1, + 0x46CEA7, GAME_10US_COMPACT, H_CALL, 0x46CD80, 2>; + using def_t = void(CEntity *, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::RemoveFromWaitingForScriptBrainArray) + static int address; + static int global_address; + static const int id = 0x46ABC0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46ABC0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46B313, GAME_10US_COMPACT, H_CALL, 0x46B270, 1, + 0x59F6D4, GAME_10US_COMPACT, H_CALL, 0x59F660, 1, + 0x5E869D, GAME_10US_COMPACT, H_CALL, 0x5E8620, 1>; + using def_t = int(CEntity *, short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::AddToVehicleModelsBlockedByScript) + static int address; + static int global_address; + static const int id = 0x46B200; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46B200, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::ProcessWaitingForScriptBrainArray) + static int address; + static int global_address; + static const int id = 0x46CF00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x46CF00, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46A067, GAME_10US_COMPACT, H_CALL, 0x46A000, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::ReinitialiseSwitchStatementData) + static int address; + static int global_address; + static const int id = 0x470370; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470370, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x469F9D, GAME_10US_COMPACT, H_CALL, 0x469F00, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::AddToSwitchJumpTable) + static int address; + static int global_address; + static const int id = 0x470390; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470390, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x471800, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x471870, GAME_10US_COMPACT, H_CALL, 0x470A90, 2>; + using def_t = double(int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::UseSwitchJumpTable) + static int address; + static int global_address; + static const int id = 0x4703C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4703C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47182E, GAME_10US_COMPACT, H_CALL, 0x470A90, 1>; + using def_t = void(int *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::InitialiseConnectLodObjects) + static int address; + static int global_address; + static const int id = 0x470940; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470940, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(unsigned short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::InitialiseAllConnectLodObjects) + static int address; + static int global_address; + static const int id = 0x470960; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470960, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46929A, GAME_10US_COMPACT, H_CALL, 0x468D50, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::AddToListOfConnectedLodObjects) + static int address; + static int global_address; + static const int id = 0x470980; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470980, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x474180, GAME_10US_COMPACT, H_CALL, 0x472310, 1>; + using def_t = void(CObject *, CObject *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::ScriptConnectLodsFunction) + static int address; + static int global_address; + static const int id = 0x470A20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x470A20, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x474179, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x5D33AB, GAME_10US_COMPACT, H_CALL, 0x5D3390, 1>; + using def_t = void(int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::InitialiseSpecialAnimGroup) + static int address; + static int global_address; + static const int id = 0x474710; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x474710, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(unsigned short); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::InitialiseSpecialAnimGroupsAttachedToCharModels) + static int address; + static int global_address; + static const int id = 0x474730; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x474730, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46929F, GAME_10US_COMPACT, H_CALL, 0x468D50, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::AddToListOfSpecialAnimGroupsAttachedToCharModels) + static int address; + static int global_address; + static const int id = 0x474750; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x474750, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x475C31, GAME_10US_COMPACT, H_CALL, 0x474900, 1>; + using def_t = void(int, char *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::ScriptAttachAnimGroupToCharModel) + static int address; + static int global_address; + static const int id = 0x474800; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x474800, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x475C26, GAME_10US_COMPACT, H_CALL, 0x474900, 1, + 0x5D5267, GAME_10US_COMPACT, H_CALL, 0x5D4FD0, 1>; + using def_t = bool(int, char *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::GetUniqueScriptThingIndex) + static int address; + static int global_address; + static const int id = 0x4810C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4810C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46C35A, GAME_10US_COMPACT, H_CALL, 0x46B460, 1>; + using def_t = unsigned int(int, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::DrawScriptSpheres) + static int address; + static int global_address; + static const int id = 0x4810E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4810E0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46A05D, GAME_10US_COMPACT, H_CALL, 0x46A000, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::AddToBuildingSwapArray) + static int address; + static int global_address; + static const int id = 0x481140; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x481140, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4849BD, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1>; + using def_t = void(CBuilding *, int, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CTheScripts::AddToInvisibilitySwapArray) + static int address; + static int global_address; + static const int id = 0x481200; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x481200, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x483195, GAME_10US_COMPACT, H_CALL, 0x481300, 1>; + using def_t = void(CEntity *, bool); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::UndoBuildingSwaps) + static int address; + static int global_address; + static const int id = 0x481290; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x481290, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53C59E, GAME_10US_COMPACT, H_CALL, 0x53C550, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::UndoEntityInvisibilitySettings) + static int address; + static int global_address; + static const int id = 0x4812D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4812D0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53C5A3, GAME_10US_COMPACT, H_CALL, 0x53C550, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::GetNewUniqueScriptThingIndex) + static int address; + static int global_address; + static const int id = 0x483720; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x483720, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4729F4, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x472A82, GAME_10US_COMPACT, H_CALL, 0x472310, 2, + 0x4787BE, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x483B95, GAME_10US_COMPACT, H_CALL, 0x483B30, 1, + 0x4914EF, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x4918BA, GAME_10US_COMPACT, H_CALL, 0x490DB0, 2, + 0x491BFB, GAME_10US_COMPACT, H_CALL, 0x490DB0, 3, + 0x49229E, GAME_10US_COMPACT, H_CALL, 0x490DB0, 4, + 0x492FC6, GAME_10US_COMPACT, H_CALL, 0x492F90, 1, + 0x493153, GAME_10US_COMPACT, H_CALL, 0x493000, 1, + 0x4935CF, GAME_10US_COMPACT, H_CALL, 0x4935A0, 1, + 0x49732C, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x53A433, GAME_10US_COMPACT, H_CALL, 0x53A270, 1>; + using def_t = unsigned int(unsigned int, char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::GetActualScriptThingIndex) + static int address; + static int global_address; + static const int id = 0x4839A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4839A0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468B6F, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x468BAA, GAME_10US_COMPACT, H_CALL, 0x468560, 2, + 0x468BCD, GAME_10US_COMPACT, H_CALL, 0x468560, 3, + 0x468BF0, GAME_10US_COMPACT, H_CALL, 0x468560, 4, + 0x468C41, GAME_10US_COMPACT, H_CALL, 0x468560, 5, + 0x468C5A, GAME_10US_COMPACT, H_CALL, 0x468560, 6, + 0x468C78, GAME_10US_COMPACT, H_CALL, 0x468560, 7, + 0x46BEB8, GAME_10US_COMPACT, H_CALL, 0x46B460, 1, + 0x46C4C9, GAME_10US_COMPACT, H_CALL, 0x46B460, 2, + 0x46C5A0, GAME_10US_COMPACT, H_CALL, 0x46B460, 3, + 0x46D09F, GAME_10US_COMPACT, H_CALL, 0x46D050, 1, + 0x46D0E5, GAME_10US_COMPACT, H_CALL, 0x46D050, 2, + 0x46E4DD, GAME_10US_COMPACT, H_CALL, 0x46D050, 3, + 0x46E68D, GAME_10US_COMPACT, H_CALL, 0x46D050, 4, + 0x471B0F, GAME_10US_COMPACT, H_CALL, 0x470A90, 1, + 0x471B34, GAME_10US_COMPACT, H_CALL, 0x470A90, 2, + 0x471C62, GAME_10US_COMPACT, H_CALL, 0x470A90, 3, + 0x4729BD, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x4729D1, GAME_10US_COMPACT, H_CALL, 0x472310, 2, + 0x472A4B, GAME_10US_COMPACT, H_CALL, 0x472310, 3, + 0x472A5F, GAME_10US_COMPACT, H_CALL, 0x472310, 4, + 0x472E85, GAME_10US_COMPACT, H_CALL, 0x472310, 5, + 0x472F68, GAME_10US_COMPACT, H_CALL, 0x472310, 6, + 0x4731E4, GAME_10US_COMPACT, H_CALL, 0x472310, 7, + 0x476E1A, GAME_10US_COMPACT, H_CALL, 0x4762D0, 1, + 0x477334, GAME_10US_COMPACT, H_CALL, 0x4762D0, 2, + 0x477384, GAME_10US_COMPACT, H_CALL, 0x4762D0, 3, + 0x4785D7, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x478681, GAME_10US_COMPACT, H_CALL, 0x478000, 2, + 0x478777, GAME_10US_COMPACT, H_CALL, 0x478000, 3, + 0x47878D, GAME_10US_COMPACT, H_CALL, 0x478000, 4, + 0x478E6D, GAME_10US_COMPACT, H_CALL, 0x478000, 5, + 0x47B390, GAME_10US_COMPACT, H_CALL, 0x47A760, 1, + 0x47B64C, GAME_10US_COMPACT, H_CALL, 0x47A760, 2, + 0x47FF95, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1, + 0x47FFD5, GAME_10US_COMPACT, H_CALL, 0x47FA30, 2, + 0x483BA7, GAME_10US_COMPACT, H_CALL, 0x483BA0, 1, + 0x484B2E, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1, + 0x4914CF, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1, + 0x49155A, GAME_10US_COMPACT, H_CALL, 0x490DB0, 2, + 0x491879, GAME_10US_COMPACT, H_CALL, 0x490DB0, 3, + 0x49191A, GAME_10US_COMPACT, H_CALL, 0x490DB0, 4, + 0x491963, GAME_10US_COMPACT, H_CALL, 0x490DB0, 5, + 0x491A5C, GAME_10US_COMPACT, H_CALL, 0x490DB0, 6, + 0x491ACF, GAME_10US_COMPACT, H_CALL, 0x490DB0, 7, + 0x491AE9, GAME_10US_COMPACT, H_CALL, 0x490DB0, 8, + 0x491C45, GAME_10US_COMPACT, H_CALL, 0x490DB0, 9, + 0x491C90, GAME_10US_COMPACT, H_CALL, 0x490DB0, 10, + 0x492271, GAME_10US_COMPACT, H_CALL, 0x490DB0, 11, + 0x4922EA, GAME_10US_COMPACT, H_CALL, 0x490DB0, 12, + 0x4923CC, GAME_10US_COMPACT, H_CALL, 0x490DB0, 13, + 0x4926FB, GAME_10US_COMPACT, H_CALL, 0x490DB0, 14, + 0x492FD7, GAME_10US_COMPACT, H_CALL, 0x492FD0, 1, + 0x493167, GAME_10US_COMPACT, H_CALL, 0x493160, 1, + 0x493367, GAME_10US_COMPACT, H_CALL, 0x493360, 1, + 0x493427, GAME_10US_COMPACT, H_CALL, 0x493420, 1, + 0x493487, GAME_10US_COMPACT, H_CALL, 0x493480, 1, + 0x4934F7, GAME_10US_COMPACT, H_CALL, 0x4934F0, 1, + 0x4936C7, GAME_10US_COMPACT, H_CALL, 0x4936C0, 1, + 0x49390A, GAME_10US_COMPACT, H_CALL, 0x493900, 1, + 0x494035, GAME_10US_COMPACT, H_CALL, 0x493FE0, 1, + 0x4940BF, GAME_10US_COMPACT, H_CALL, 0x493FE0, 2, + 0x494249, GAME_10US_COMPACT, H_CALL, 0x493FE0, 3, + 0x494334, GAME_10US_COMPACT, H_CALL, 0x493FE0, 4, + 0x494372, GAME_10US_COMPACT, H_CALL, 0x493FE0, 5, + 0x4943B1, GAME_10US_COMPACT, H_CALL, 0x493FE0, 6, + 0x494414, GAME_10US_COMPACT, H_CALL, 0x493FE0, 7, + 0x494779, GAME_10US_COMPACT, H_CALL, 0x493FE0, 8, + 0x494A1A, GAME_10US_COMPACT, H_CALL, 0x493FE0, 9, + 0x494A8F, GAME_10US_COMPACT, H_CALL, 0x493FE0, 10, + 0x494B91, GAME_10US_COMPACT, H_CALL, 0x493FE0, 11, + 0x494BCD, GAME_10US_COMPACT, H_CALL, 0x493FE0, 12, + 0x494C0D, GAME_10US_COMPACT, H_CALL, 0x493FE0, 13, + 0x494CD9, GAME_10US_COMPACT, H_CALL, 0x493FE0, 14, + 0x4953EF, GAME_10US_COMPACT, H_CALL, 0x493FE0, 15, + 0x497293, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x4972BF, GAME_10US_COMPACT, H_CALL, 0x496E00, 2, + 0x49730C, GAME_10US_COMPACT, H_CALL, 0x496E00, 3, + 0x497457, GAME_10US_COMPACT, H_CALL, 0x496E00, 4, + 0x497517, GAME_10US_COMPACT, H_CALL, 0x496E00, 5, + 0x497574, GAME_10US_COMPACT, H_CALL, 0x496E00, 6, + 0x4979C7, GAME_10US_COMPACT, H_CALL, 0x496E00, 7, + 0x497BD8, GAME_10US_COMPACT, H_CALL, 0x496E00, 8, + 0x497E67, GAME_10US_COMPACT, H_CALL, 0x496E00, 9, + 0x497F0A, GAME_10US_COMPACT, H_CALL, 0x496E00, 10, + 0x498760, GAME_10US_COMPACT, H_CALL, 0x496E00, 11, + 0x4987BB, GAME_10US_COMPACT, H_CALL, 0x496E00, 12, + 0x498813, GAME_10US_COMPACT, H_CALL, 0x496E00, 13, + 0x49889F, GAME_10US_COMPACT, H_CALL, 0x496E00, 14, + 0x5870B9, GAME_10US_COMPACT, H_CALL, 0x587000, 1>; + using def_t = signed int(int, unsigned char); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::AddScriptSphere) + static int address; + static int global_address; + static const int id = 0x483B30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x483B30, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x484B5A, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1>; + using def_t = unsigned int(unsigned int, CVector, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CTheScripts::RemoveScriptSphere) + static int address; + static int global_address; + static const int id = 0x483BA0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x483BA0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x484B86, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::ScriptDebugCircle2D) + static int address; + static int global_address; + static const int id = 0x485C20; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x485C20, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(float, float, float, float, CRGBA); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CTheScripts::HighlightImportantArea) + static int address; + static int global_address; + static const int id = 0x485E00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x485E00, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x467989, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1, + 0x467A96, GAME_10US_COMPACT, H_CALL, 0x466DE0, 2, + 0x467FA0, GAME_10US_COMPACT, H_CALL, 0x466DE0, 3, + 0x46805E, GAME_10US_COMPACT, H_CALL, 0x466DE0, 4, + 0x4801D7, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1, + 0x48704F, GAME_10US_COMPACT, H_CALL, 0x486D80, 1, + 0x4873A4, GAME_10US_COMPACT, H_CALL, 0x4870F0, 1, + 0x4876B2, GAME_10US_COMPACT, H_CALL, 0x487420, 1, + 0x4879B2, GAME_10US_COMPACT, H_CALL, 0x487720, 1, + 0x487CA9, GAME_10US_COMPACT, H_CALL, 0x487A20, 1, + 0x487F13, GAME_10US_COMPACT, H_CALL, 0x487D10, 1, + 0x488E6A, GAME_10US_COMPACT, H_CALL, 0x488B50, 1, + 0x489111, GAME_10US_COMPACT, H_CALL, 0x488EC0, 1, + 0x489378, GAME_10US_COMPACT, H_CALL, 0x489150, 1>; + using def_t = void(int, float, float, float, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5>; +META_END + +META_BEGIN(CTheScripts::HighlightImportantAngledArea) + static int address; + static int global_address; + static const int id = 0x485EF0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x485EF0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x488374, GAME_10US_COMPACT, H_CALL, 0x487F60, 1, + 0x488735, GAME_10US_COMPACT, H_CALL, 0x4883F0, 1, + 0x488AFA, GAME_10US_COMPACT, H_CALL, 0x488780, 1>; + using def_t = void(unsigned int, float, float, float, float, float, float, float, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5,6,7,8,9>; +META_END + +META_BEGIN(CTheScripts::IsPedStopped) + static int address; + static int global_address; + static const int id = 0x486110; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x486110, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47F65B, GAME_10US_COMPACT, H_CALL, 0x47F370, 1, + 0x486E42, GAME_10US_COMPACT, H_CALL, 0x486D80, 1, + 0x487FDC, GAME_10US_COMPACT, H_CALL, 0x487F60, 1, + 0x488C1A, GAME_10US_COMPACT, H_CALL, 0x488B50, 1>; + using def_t = bool(CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::IsVehicleStopped) + static int address; + static int global_address; + static const int id = 0x4861F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4861F0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47D6EE, GAME_10US_COMPACT, H_CALL, 0x47D210, 1, + 0x488F2F, GAME_10US_COMPACT, H_CALL, 0x488EC0, 1>; + using def_t = bool(CVehicle *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::RemoveThisPed) + static int address; + static int global_address; + static const int id = 0x486240; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x486240, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x409DE2, GAME_10US_COMPACT, H_CALL, 0x409D10, 1, + 0x4677A5, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1, + 0x482AD5, GAME_10US_COMPACT, H_CALL, 0x481300, 1>; + using def_t = void(CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::CleanUpThisPed) + static int address; + static int global_address; + static const int id = 0x486300; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x486300, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468B24, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x47D73D, GAME_10US_COMPACT, H_CALL, 0x47D210, 1>; + using def_t = void(CPed *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::CleanUpThisVehicle) + static int address; + static int global_address; + static const int id = 0x486670; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x486670, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468AEB, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x47D775, GAME_10US_COMPACT, H_CALL, 0x47D210, 1, + 0x64CED4, GAME_10US_COMPACT, H_CALL, 0x64CEA0, 1, + 0x64D186, GAME_10US_COMPACT, H_CALL, 0x64CF40, 1>; + using def_t = void(CVehicle *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::CleanUpThisObject) + static int address; + static int global_address; + static const int id = 0x4866C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4866C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468B5D, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x479124, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x47D7A7, GAME_10US_COMPACT, H_CALL, 0x47D210, 1>; + using def_t = void(CObject *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::ReadObjectNamesFromScript) + static int address; + static int global_address; + static const int id = 0x486720; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x486720, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468F40, GAME_10US_COMPACT, H_CALL, 0x468D50, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::UpdateObjectIndices) + static int address; + static int global_address; + static const int id = 0x486780; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x486780, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468F45, GAME_10US_COMPACT, H_CALL, 0x468D50, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::ReadMultiScriptFileOffsetsFromScript) + static int address; + static int global_address; + static const int id = 0x4867C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4867C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468F85, GAME_10US_COMPACT, H_CALL, 0x468D50, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::DrawDebugCube) + static int address; + static int global_address; + static const int id = 0x486840; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x486840, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x480206, GAME_10US_COMPACT, H_CALL, 0x47FA30, 1, + 0x48709A, GAME_10US_COMPACT, H_CALL, 0x486D80, 1, + 0x4873E4, GAME_10US_COMPACT, H_CALL, 0x4870F0, 1, + 0x4876F2, GAME_10US_COMPACT, H_CALL, 0x487420, 1, + 0x4879F2, GAME_10US_COMPACT, H_CALL, 0x487720, 1, + 0x487CF7, GAME_10US_COMPACT, H_CALL, 0x487A20, 1, + 0x487F4F, GAME_10US_COMPACT, H_CALL, 0x487D10, 1, + 0x488E87, GAME_10US_COMPACT, H_CALL, 0x488B50, 1, + 0x489132, GAME_10US_COMPACT, H_CALL, 0x488EC0, 1, + 0x489399, GAME_10US_COMPACT, H_CALL, 0x489150, 1>; + using def_t = void(float, float, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3>; +META_END + +META_BEGIN(CTheScripts::DrawDebugAngledSquare) + static int address; + static int global_address; + static const int id = 0x486990; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x486990, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x477F77, GAME_10US_COMPACT, H_CALL, 0x477DA0, 1, + 0x4883A5, GAME_10US_COMPACT, H_CALL, 0x487F60, 1, + 0x48876A, GAME_10US_COMPACT, H_CALL, 0x4883F0, 1, + 0x488B2F, GAME_10US_COMPACT, H_CALL, 0x488780, 1>; + using def_t = void(float, float, float, float, float, float, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5,6,7>; +META_END + +META_BEGIN(CTheScripts::ClearSpaceForMissionEntity) + static int address; + static int global_address; + static const int id = 0x486B00; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x486B00, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x432048, GAME_10US_COMPACT, H_CALL, 0x431F80, 1, + 0x4321B4, GAME_10US_COMPACT, H_CALL, 0x431F80, 2, + 0x434388, GAME_10US_COMPACT, H_CALL, 0x4342A0, 1, + 0x4343DA, GAME_10US_COMPACT, H_CALL, 0x4342A0, 2, + 0x43A421, GAME_10US_COMPACT, H_CALL, 0x43A0B0, 1, + 0x4409D3, GAME_10US_COMPACT, H_CALL, 0x4404A0, 1, + 0x4422A6, GAME_10US_COMPACT, H_CALL, 0x442060, 1, + 0x442649, GAME_10US_COMPACT, H_CALL, 0x442480, 1, + 0x44276E, GAME_10US_COMPACT, H_CALL, 0x442480, 2, + 0x464E70, GAME_10US_COMPACT, H_CALL, 0x464DC0, 1, + 0x464EB5, GAME_10US_COMPACT, H_CALL, 0x464DC0, 2, + 0x4669B9, GAME_10US_COMPACT, H_CALL, 0x465E60, 1, + 0x46770C, GAME_10US_COMPACT, H_CALL, 0x466DE0, 1, + 0x469872, GAME_10US_COMPACT, H_CALL, 0x469390, 1, + 0x473BE6, GAME_10US_COMPACT, H_CALL, 0x472310, 1, + 0x47D680, GAME_10US_COMPACT, H_CALL, 0x47D210, 1, + 0x47F5E5, GAME_10US_COMPACT, H_CALL, 0x47F370, 1, + 0x482F77, GAME_10US_COMPACT, H_CALL, 0x481300, 1, + 0x4834BC, GAME_10US_COMPACT, H_CALL, 0x481300, 2, + 0x484F6B, GAME_10US_COMPACT, H_CALL, 0x483BD0, 1, + 0x48C98D, GAME_10US_COMPACT, H_CALL, 0x48B590, 1, + 0x491DE3, GAME_10US_COMPACT, H_CALL, 0x490DB0, 1>; + using def_t = void(CVector const *, CEntity *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::AddScriptEffectSystem) + static int address; + static int global_address; + static const int id = 0x492F90; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x492F90, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4942D1, GAME_10US_COMPACT, H_CALL, 0x493FE0, 1, + 0x494D8E, GAME_10US_COMPACT, H_CALL, 0x493FE0, 2>; + using def_t = int(FxSystem_c *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::RemoveScriptEffectSystem) + static int address; + static int global_address; + static const int id = 0x492FD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x492FD0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468B98, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x4786AC, GAME_10US_COMPACT, H_CALL, 0x478000, 1, + 0x4943D8, GAME_10US_COMPACT, H_CALL, 0x493FE0, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::AddScriptSearchLight) + static int address; + static int global_address; + static const int id = 0x493000; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x493000, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4974CD, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x497A58, GAME_10US_COMPACT, H_CALL, 0x496E00, 2>; + using def_t = int(float, float, float, CEntity *, float, float, float, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5,6,7,8>; +META_END + +META_BEGIN(CTheScripts::RemoveScriptSearchLight) + static int address; + static int global_address; + static const int id = 0x493160; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x493160, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468C69, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x49752E, GAME_10US_COMPACT, H_CALL, 0x496E00, 1>; + using def_t = void(unsigned int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::IsPointWithinSearchLight) + static int address; + static int global_address; + static const int id = 0x493280; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x493280, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x493942, GAME_10US_COMPACT, H_CALL, 0x493900, 1, + 0x4939AB, GAME_10US_COMPACT, H_CALL, 0x493960, 1>; + using def_t = bool(CVector *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::MoveSearchLightBetweenTwoPoints) + static int address; + static int global_address; + static const int id = 0x493360; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x493360, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4975D6, GAME_10US_COMPACT, H_CALL, 0x496E00, 1>; + using def_t = void(int, float, float, float, float, float, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5,6,7>; +META_END + +META_BEGIN(CTheScripts::MoveSearchLightToEntity) + static int address; + static int global_address; + static const int id = 0x493420; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x493420, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x497647, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x497969, GAME_10US_COMPACT, H_CALL, 0x496E00, 2>; + using def_t = void(int, CEntity *, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2>; +META_END + +META_BEGIN(CTheScripts::MoveSearchLightToPointAndStop) + static int address; + static int global_address; + static const int id = 0x493480; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x493480, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x49760F, GAME_10US_COMPACT, H_CALL, 0x496E00, 1>; + using def_t = void(int, float, float, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4>; +META_END + +META_BEGIN(CTheScripts::AttachSearchlightToSearchlightObject) + static int address; + static int global_address; + static const int id = 0x4934F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4934F0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x497DA9, GAME_10US_COMPACT, H_CALL, 0x496E00, 1>; + using def_t = void(int, CObject *, CObject *, CObject *, float, float, float); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5,6>; +META_END + +META_BEGIN(CTheScripts::AddScriptCheckpoint) + static int address; + static int global_address; + static const int id = 0x4935A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4935A0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x497ED7, GAME_10US_COMPACT, H_CALL, 0x496E00, 1>; + using def_t = int(float, float, float, float, float, float, float, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1,2,3,4,5,6,7>; +META_END + +META_BEGIN(CTheScripts::RemoveScriptCheckpoint) + static int address; + static int global_address; + static const int id = 0x4936C0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4936C0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x468C87, GAME_10US_COMPACT, H_CALL, 0x468560, 1, + 0x497F21, GAME_10US_COMPACT, H_CALL, 0x496E00, 1>; + using def_t = void(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CTheScripts::IsEntityWithinSearchLight) + static int address; + static int global_address; + static const int id = 0x493900; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x493900, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x49767E, GAME_10US_COMPACT, H_CALL, 0x496E00, 1, + 0x49799F, GAME_10US_COMPACT, H_CALL, 0x496E00, 2>; + using def_t = bool(unsigned int, CEntity *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::IsEntityWithinAnySearchLight) + static int address; + static int global_address; + static const int id = 0x493960; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x493960, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46C1F7, GAME_10US_COMPACT, H_CALL, 0x46B460, 1>; + using def_t = bool(CEntity *, int *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CTheScripts::ProcessAllSearchLights) + static int address; + static int global_address; + static const int id = 0x4939F0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4939F0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46A062, GAME_10US_COMPACT, H_CALL, 0x46A000, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::RenderAllSearchLights) + static int address; + static int global_address; + static const int id = 0x493E30; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x493E30, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x53DE57, GAME_10US_COMPACT, H_CALL, 0x53D950, 1, + 0x53E1D6, GAME_10US_COMPACT, H_CALL, 0x53E170, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::DoScriptSetupAfterPoolsHaveLoaded) + static int address; + static int global_address; + static const int id = 0x5D3390; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D3390, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5D1907, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::Save) + static int address; + static int global_address; + static const int id = 0x5D4C40; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D4C40, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5D14D5, GAME_10US_COMPACT, H_CALL, 0x5D13E0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +META_BEGIN(CTheScripts::Load) + static int address; + static int global_address; + static const int id = 0x5D4FD0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x5D4FD0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x5D18F0, GAME_10US_COMPACT, H_CALL, 0x5D17B0, 1>; + using def_t = void(); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CUpsideDownCarCheck.h b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CUpsideDownCarCheck.h new file mode 100644 index 00000000..331426ca --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/meta/meta.CUpsideDownCarCheck.h @@ -0,0 +1,135 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +namespace plugin { + +META_BEGIN(CUpsideDownCarCheck::Init) + static int address; + static int global_address; + static const int id = 0x463810; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463810, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = void(CUpsideDownCarCheck *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN_OVERLOADED(CUpsideDownCarCheck::IsCarUpsideDown, bool (*)(CVehicle *)) + static int address; + static int global_address; + static const int id = 0x463830; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463830, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x4655C9, GAME_10US_COMPACT, H_JUMP, 0x4655A0, 1, + 0x4655D6, GAME_10US_COMPACT, H_JUMP, 0x4655A0, 2, + 0x46564D, GAME_10US_COMPACT, H_CALL, 0x4655E0, 1, + 0x46577C, GAME_10US_COMPACT, H_CALL, 0x465680, 1, + 0x64450F, GAME_10US_COMPACT, H_CALL, 0x644470, 1, + 0x6451F8, GAME_10US_COMPACT, H_CALL, 0x645100, 1, + 0x647348, GAME_10US_COMPACT, H_CALL, 0x647330, 1, + 0x651127, GAME_10US_COMPACT, H_CALL, 0x6510D0, 1>; + using def_t = bool(CVehicle *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CUpsideDownCarCheck::AreAnyCarsUpsideDown) + static int address; + static int global_address; + static const int id = 0x4638A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4638A0, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = bool(CUpsideDownCarCheck *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CUpsideDownCarCheck::AddCarToCheck) + static int address; + static int global_address; + static const int id = 0x4638D0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4638D0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47D263, GAME_10US_COMPACT, H_CALL, 0x47D210, 1>; + using def_t = void(CUpsideDownCarCheck *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CUpsideDownCarCheck::RemoveCarFromCheck) + static int address; + static int global_address; + static const int id = 0x463910; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463910, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47D292, GAME_10US_COMPACT, H_CALL, 0x47D210, 1>; + using def_t = void(CUpsideDownCarCheck *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN(CUpsideDownCarCheck::HasCarBeenUpsideDownForAWhile) + static int address; + static int global_address; + static const int id = 0x463940; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x463940, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x47D0C6, GAME_10US_COMPACT, H_CALL, 0x47C100, 1>; + using def_t = char(CUpsideDownCarCheck *, int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0,1>; +META_END + +META_BEGIN_OVERLOADED(CUpsideDownCarCheck::IsCarUpsideDown, bool (*)(int)) + static int address; + static int global_address; + static const int id = 0x4655A0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4655A0, 0, 0, 0, 0, 0>; + using refs_t = RefList<>; + using def_t = bool(int); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Cdecl; + using args_t = ArgPick, 0>; +META_END + +META_BEGIN(CUpsideDownCarCheck::UpdateTimers) + static int address; + static int global_address; + static const int id = 0x4655E0; + static const bool is_virtual = false; + static const int vtable_index = -1; + using mv_addresses_t = MvAddresses<0x4655E0, 0, 0, 0, 0, 0>; + using refs_t = RefList< + 0x46A044, GAME_10US_COMPACT, H_CALL, 0x46A000, 1>; + using def_t = void(CUpsideDownCarCheck *); + static const int cb_priority = PRIORITY_BEFORE; + using calling_convention_t = CallingConventions::Thiscall; + using args_t = ArgPick, 0>; +META_END + +} diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/rw/errcom.def b/third-party/plugin-sdk/plugin_sa/game_sa/rw/errcom.def new file mode 100644 index 00000000..25f44e1e --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/rw/errcom.def @@ -0,0 +1,60 @@ +RWECODE(E_RW_BADENGINESTATE, + "Engine in incorrect state for this operation") +RWECODE(E_RW_BADOPEN, + "Error opening the file %s") +RWECODE(E_RW_BADPARAM, + "Invalid Parameter passed. %s") +RWECODE(E_RW_BADVERSION, + "The binary file format version is incompatible with this library") +RWECODE(E_RW_DEBUGSTACK, + "Debug Library has Stack Depth mismatch") +RWECODE(E_RW_DEFAULTPIPELINECREATION, + "Creation of a default pipeline (%s) failed") +RWECODE(E_RW_FRAMENOMATRIX, + "The frame does not have an associated matrix") +RWECODE(E_RW_INVIMAGEDEPTH, + "Invalid Image Depth") +RWECODE(E_RW_INVIMAGEFORMAT, + "Image has no pixel memory allocated") +RWECODE(E_RW_INVIMAGEMASK, + "The mask and image are not the same size") +RWECODE(E_RW_INVIMAGESIZE, + "Destination and source images are of differing sizes") +RWECODE(E_RW_INVRASTERDEPTH, + "Invalid Raster depth") +RWECODE(E_RW_INVRASTERFORMAT, + "Unrecognized raster format") +RWECODE(E_RW_INVRASTERLOCKREQ, + "Invalid Raster lock request") +RWECODE(E_RW_INVRASTERMIPLEVEL, + "Invalid Raster mipmap level") +RWECODE(E_RW_INVRASTERSIZE, + "Invalid Raster size") +RWECODE(E_RW_INVRASTERUNLOCKREQ, + "Invalid Raster unlock request") +RWECODE(E_RW_NOFRAME, + "Unable to find Frame") +RWECODE(E_RW_NOMEM, + "Unable to allocate %d bytes of memory") +RWECODE(E_RW_NOMIPMAPGENERATIONCALLBACK, + "No Mipmap generation callback set - use RtMipmapUseDefaultMipmapGenerationCallback") +RWECODE(E_RW_NOTSSEENABLEDCPU, + "Not SSE enabled CPU") +RWECODE(E_RW_NULLP, + "NULL pointer passed to library routine") +RWECODE(E_RW_PLUGININIT, + "Plugin has already been initialized") +RWECODE(E_RW_PLUGINNOTINIT, + "Plugin not initialized") +RWECODE(E_RW_RANGE, + "A supplied parameter was outside the expected range") +RWECODE(E_RW_READ, + "Read error on stream") +RWECODE(E_RW_REDUNDANT_FUNCTION, + "Call to redundant function - scheduled to be dropped from future releases") +RWECODE(E_RW_WRITE, + "Write error on stream") +RWECODE(E_RX_MESHES_RANGES_OVERLAP, + "\n Geometry is in an invalid format for RxPipeline rendering.\n There may be visible artifacts and/or decreased performance.\n Use RpGeometrySortByMaterial.\n [stream %p type %s]") +RWECODE(E_RW_STRING_TRUNCATION, + "strlen(%s) >= %d; truncating at character #%d == %c") diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/rw/errcore.def b/third-party/plugin-sdk/plugin_sa/game_sa/rw/errcore.def new file mode 100644 index 00000000..c71eed5a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/rw/errcore.def @@ -0,0 +1,117 @@ +RWECODE(E_RW_BADWINDOW, + "Invalid view window dimensions supplied") +RWECODE(E_RW_CHUNKTYPEGET, + "Unable to get a chunk of the given type") +RWECODE(E_RW_DEVICEERROR, + "Device specific error: %s") +RWECODE(E_RW_DEVICEOPEN, + "Request to open device system refused") +RWECODE(E_RW_DEVICESTART, + "Attempt to start Device failed") +RWECODE(E_RW_ENDOFSTREAM, + "At the end of the stream.") +RWECODE(E_RW_FRAMEDESTROYSTATIC, + "RwFrameDestroy called on static frame.") +RWECODE(E_RW_FRAMEBUFFERMISMATCH, + "Resolutions of parent rasters of frame buffer and Z buffer are different") +RWECODE(E_RW_FREELISTFREED, + "Free List value already on the free list") +RWECODE(E_RW_FREELISTINVADDRESS, + "Invalid Free List memory address") +RWECODE(E_RW_FREELISTINVMEMBOUND, + "Invalid Free List memory boundary") +RWECODE(E_RW_FREELISTTRASH, + "An unused Free List entry has been overwritten") +RWECODE(E_RW_INSUFFICIENTRESOURCES, + "Insufficient resources to satisfy the allocation of %d bytes.") +RWECODE(E_RW_INVSTREAMACCESSTYPE, + "Invalid stream access type.") +RWECODE(E_RW_INVSTREAMTYPE, + "Invalid stream type.") +RWECODE(E_RW_NEGCLIPPLANE, + "Negative positioned clip planes are invalid") +RWECODE(E_RW_NOCAMERA, + "Cannot render until a Camera has been created") +RWECODE(E_RW_NOFRAMEBUFFER, + "Camera has no frame buffer raster") +RWECODE(E_RW_NOPARENT, + "The given object has no parent") +RWECODE(E_RW_RASTERRECT, + "Rectangle is not totally within Raster") +RWECODE(E_RW_RASTERSTACK, + "Insufficient Raster stack space available") +RWECODE(E_RW_RASTERSTACKEMPTY, + "No Raster Currently on Stack") +RWECODE(E_RW_READTEXMASK, + "Unable to read Texture %s / Mask %s") +RWECODE(E_RW_STREAMOPEN, + "Unable to open stream : %s") +RWECODE(E_RW_SYSTEMREQUEST, + "A system request call has failed, request code : 0x%x") +RWECODE(E_RW_ZEROLENGTH, + "A Vector of Zero Length was passed for normalizing") +RWECODE(E_RX_CANNOT_TRANSFER_BETWEEN_NODES, + "Node %s cannot output to node %s") +RWECODE(E_RX_CANNOT_TRANSFER_FROM_NODE_TO_PIPELINE, + "Node %s cannot output to specified pipeline") +RWECODE(E_RX_CYCLICPIPELINE, + "Pipeline contains cycles; illegal") +RWECODE(E_RX_DEP_DEPENDENCIESMISMATCH, + "\n" + "*** dependencies cannot be satisfied.\n" + "*** rxCLREQ_REQUIRED on cluster %s, originating\n" + "*** with node %s, not serviced by a rxCLVALID_VALID -\n" + "*** blocked at node %s, output #%ld (\"%s\").") +RWECODE(E_RX_DEP_DUPLICATECLUSTERDEFS, + "\n" + "*** Node %s specifies RxClusterDefinition for cluster %s more than once in\n" + "*** clusters of interest array. Distinct clusters within a pipeline must reference\n" + "*** distinct RxClusterDefinitions, even if the clusters contain the same data type\n") +RWECODE(E_RX_DEP_NULLCLUSTERDEF, + "Node %s specified with RxClusterDefinition pointer NULL for cluster of interest %d\n") +RWECODE(E_RX_DEP_OUTOFMEMORY, + "Dependency chasing; memory alloc failed") +RWECODE(E_RX_EMPTYPIPELINE, + "RwPipeline2Execute cannot execute a pipeline with no nodes :)") +RWECODE(E_RX_FRAGMENTEDPIPELINE, + "Pipeline forms two or more unconnected graphs; illegal") +RWECODE(E_RX_IM3DNOTACTIVE, + "Cannot render Im3D primitives outside of a RwIm3dTransform()/RwIm3dEnd() pair") +RWECODE(E_RX_INVALIDENTRYPOINT, + "Pipeline has an invalid entry point") +RWECODE(E_RX_INVALIDPRIMTYPE, + "Unknown primitive type %d") +RWECODE(E_RX_INVALIDRESUMEPIPELINE, + "RwPipeline2Execute cannot resume a different pipeline to the one previously interrupted") +RWECODE(E_RX_LOCKEDPIPE, + "Illegal operation on a locked pipeline") +RWECODE(E_RX_NODETOOMANYCLUSTERSOFINTEREST, + "Node contains more than RXNODEMAXCLUSTERSOFINTEREST clusters of interest; illegal") +RWECODE(E_RX_NODETOOMANYOUTPUTS, + "Node contains more than RXNODEMAXOUTPUTS outputs; illegal") +RWECODE(E_RX_PIPELINETOOMANYNODES, + "Maximum nodes per pipeline exceeded! You may increase the limit by changing the value of _rxPipelineMaxNodes BEFORE starting RenderWare") +RWECODE(E_RX_NODE_EXECUTION_FAILED, + "Node execution failed - %s") +RWECODE(E_RX_NOVERTS, + "Cannot render Im3D primitive - not enough vertices transformed") +RWECODE(E_RX_PACKETPTRINVALID, + "Value of input/output interruption packets pointer not as expected") +RWECODE(E_RX_PACKETSCOPYFAILED, + "Failed to make copies of packets input to RxPipelineExecute()") +RWECODE(E_RX_RUNFROMNOTVALID, + "RunFrom node not a member of the specified pipeline") +RWECODE(E_RX_RUNTOANDRUNFROM, + "RwPipeline2Execute cannot accept both RunTo *and* RunFrom") +RWECODE(E_RX_RUNTONOTVALID, + "RunTo node not a member of the specified pipeline") +RWECODE(E_RX_TOOMANYVERTS, + "More than 65536 vertices passed to RwIm3DTransform; illegal") +RWECODE(E_RX_UNFINISHEDPIPELINE, + "RwPipeline2Execute must resume and finish an interrupted pipeline") +RWECODE(E_RX_UNLOCKEDPIPE, + "Illegal operation on an unlocked pipeline") +RWECODE(E_RX_UNPROCESSED_PACKETS, + "Unprocessed packets found in finished execution context") +RWECODE(E_RX_UNSATISFIED_REQUIREMENTS, + "Cannot send packet between pipelines, requirements not satisfied. Cluster '%s' is missing") diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/rw/rpcriter.h b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rpcriter.h new file mode 100644 index 00000000..0371a0d0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rpcriter.h @@ -0,0 +1,451 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +/*************************************************************************** + * Module : rpcriter.h * + * * + * Purpose : Store pluginIDs for RenderWare Graphics plugins and toolkits * + * * + **************************************************************************/ + +/* These are plugins */ + +#define rwID_METRICSPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x01) +/** + * \ingroup rwengine + * \def rwID_SPLINEPLUGIN defines the pluginID for the \ref rpspline plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_SPLINEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x02) +#define rwID_STEREOPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x03) +#define rwID_VRMLPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x04) +/** + * \ingroup rwengine + * \def rwID_MORPHPLUGIN defines the pluginID for the \ref rpmorph plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_MORPHPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x05) +#define rwID_PVSPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x06) +#define rwID_MEMLEAKPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x07) +#define rwID_ANIMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x08) +#define rwID_GLOSSPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x09) +/** + * \ingroup rwengine + * \def rwID_LOGOPLUGIN defines the pluginID for the \ref rplogo plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_LOGOPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x0a) +#define rwID_MEMINFOPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x0b) +/** + * \ingroup rwengine + * \def rwID_RANDOMPLUGIN defines the pluginID for the \ref rprandom plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_RANDOMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x0c) +/** + * \ingroup rwengine + * \def rwID_PNGIMAGEPLUGIN defines the pluginID for the \ref rtpng plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_PNGIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x0d) +#define rwID_BONEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x0e) +#define rwID_VRMLANIMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x0f) +/** + * \ingroup rwengine + * \def rwID_SKYMIPMAPVAL defines the pluginID for the \ref rtmipk plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_SKYMIPMAPVAL MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x10) +#define rwID_MRMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x11) +/** + * \ingroup rwengine + * \def rwID_LODATMPLUGIN defines the pluginID for the \ref rplodatm plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_LODATMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x12) +#define rwID_MEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x13) +/** + * \ingroup rwengine + * \def rwID_LTMAPPLUGIN defines the pluginID for the \ref rpltmap plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_LTMAPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x14) +#define rwID_REFINEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x15) +/** + * \ingroup rwengine + * \def rwID_SKINPLUGIN defines the pluginID for the \ref rpskin plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_SKINPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x16) +#define rwID_LABELPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x17) +#define rwID_PARTICLESPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x18) +#define rwID_GEOMTXPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x19) +#define rwID_SYNTHCOREPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x1a) +#define rwID_STQPPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x1b) +#define rwID_PARTPPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x1c) +/** + * \ingroup rwengine + * \def rwID_COLLISPLUGIN defines the pluginID for the \ref rpcollis plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_COLLISPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x1d) +/** + * \ingroup rwengine + * \def rwID_HANIMPLUGIN defines the pluginID for the \ref rphanim plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_HANIMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x1e) +/** + * \ingroup rwengine + * \def rwID_USERDATAPLUGIN defines the pluginID for the \ref rpuserdata plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_USERDATAPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x1f) +/** + * \ingroup rwengine + * \def rwID_MATERIALEFFECTSPLUGIN defines the pluginID for the \ref rpmatfx plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_MATERIALEFFECTSPLUGIN \ + MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x20) +#define rwID_PARTICLESYSTEMPLUGIN \ + MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x21) +/** + * \ingroup rwengine + * \def rwID_DMORPHPLUGIN defines the pluginID for the \ref rpdmorph plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_DMORPHPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x22) +/** + * \ingroup rwengine + * \def rwID_PATCHPLUGIN defines the pluginID for the \ref rppatch plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_PATCHPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x23) +/** + * \ingroup rwengine + * \def rwID_TEAMPLUGIN defines the pluginID for the \ref rpteam plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_TEAMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x24) +/** + * \ingroup rwengine + * \def rwID_CROWDPPPLUGIN defines the pluginID for the \ref rpcrowd plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_CROWDPPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x25) +#define rwID_MIPSPLITPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x26) +/** + * \ingroup rwengine + * \def rwID_ANISOTPLUGIN defines the pluginID for the \ref rpanisot plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_ANISOTPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x27) +/* #define THIS SPACE FREE! MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x28) */ +/** + * \if gcn \ingroup rwengine + * \def rwID_GCNMATPLUGIN defines the GameCube specific Multi-Texturing + * extension to the RpMaterial.See \ref RwEngineRegisterPlugin \endif + */ +#define rwID_GCNMATPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x29) +/** + * \ingroup rwengine + * \def rwID_GPVSPLUGIN defines the pluginID for the \ref rppvs plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_GPVSPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x2a) +/** + * \if xbox \ingroup rwengine + * \def rwID_XBOXMATPLUGIN defines the Xbox specific Multi-Texturing + * extension to the RpMaterial. See \ref RwEngineRegisterPlugin + * \endif + */ +#define rwID_XBOXMATPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x2b) +/** + * \if gcn \ingroup rwengine + * \def rwID_MULTITEXPLUGIN defines the pluginID for the \ref rpmatfx + * Multi-Texturing Extension. See \ref RpMTEffect and + * \ref RwEngineRegisterPlugin \endif + * \if xbox \ingroup rwengine + * \def rwID_MULTITEXPLUGIN defines the pluginID for the \ref rpmatfx + * Multi-Texturing Extension. See \ref RpMTEffect and + * \ref RwEngineRegisterPlugin\endif + */ +#define rwID_MULTITEXPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x2c) +#define rwID_CHAINPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x2d) +/** + * \ingroup rwengine + * \def rwID_TOONPLUGIN defines the pluginID for the \ref rptoon plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_TOONPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x2e) +/** + * \ingroup rwengine + * \def rwID_PTANKPLUGIN defines the pluginID for the \ref rpptank plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_PTANKPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x2f) +/** + * \ingroup rwengine + * \def rwID_PRTSTDPLUGIN defines the pluginID for the \ref rpprtstd plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_PRTSTDPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x30) +/** + * \if sky2 \ingroup rwengine + * \def rwID_PDSPLUGIN defines the pluginID for the \ref rppds plugin. + * See \ref RwEngineRegisterPlugin \endif + */ +#define rwID_PDSPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x31) +/** + * \ingroup rwengine + * \def rwID_PRTADVPLUGIN defines the pluginID for the \ref rpprtadv plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_PRTADVPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x32) +/** + * \if xbox \ingroup rwengine + * \def rwID_NORMMAPPLUGIN defines the pluginID for the \ref rpnormmap plugin. + * See \ref RwEngineRegisterPlugin \endif + */ +#define rwID_NORMMAPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x33) +/** + * \ingroup rwengine + * \def rwID_ADCPLUGIN defines the pluginID for the \ref rpadc plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_ADCPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x34) +/** + * \ingroup rwengine + * \def rwID_UVANIMPLUGIN defines the pluginID for the \ref rpuvanim plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_UVANIMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x35) + +/* These are toolkits */ + +/** + * \ingroup rwengine + * \def rwID_CHARSEPLUGIN defines the pluginID for the \ref rtcharset plugin. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_CHARSEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x80) +/** + * \ingroup rwengine + * \def rwID_NOHSWORLDPLUGIN defines the pluginID for the \ref rtworldimport toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_NOHSWORLDPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x81) +#define rwID_IMPUTILPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x82) +/** + * \ingroup rwengine + * \def rwID_SLERPPLUGIN defines the pluginID for the \ref rtslerp toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_SLERPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x83) +#define rwID_OPTIMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x84) +/** + * \ingroup rwengine + * \def rwID_TLWORLDPLUGIN defines the pluginID for the \ref rtworld toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_TLWORLDPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x85) +#define rwID_DATABASEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x86) +#define rwID_RAYTRACEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x87) +/** + * \ingroup rwengine + * \def rwID_RAYPLUGIN defines the pluginID for the \ref rtray toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_RAYPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x88) +#define rwID_LIBRARYPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x89) +/** + * \ingroup rwengine + * \def rwID_2DPLUGIN defines the pluginID for the \ref rt2d toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_2DPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x90) +/** + * \ingroup rwengine + * \def rwID_TILERENDPLUGIN defines the pluginID for the \ref RtTileRender toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_TILERENDPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x91) +/** + * \ingroup rwengine + * \def rwID_JPEGIMAGEPLUGIN defines the pluginID for the RtJPEG toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_JPEGIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x92) +#define rwID_TGAIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x93) +#define rwID_GIFIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x94) +/** + * \ingroup rwengine + * \def rwID_QUATPLUGIN defines the pluginID for the \ref rtquat toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_QUATPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x95) +/** + * \ingroup rwengine + * \def rwID_SPLINEPVSPLUGIN defines the pluginID for the \ref rtsplinepvs toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_SPLINEPVSPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x96) +#define rwID_MIPMAPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x97) +/** + * \ingroup rwengine + * \def rwID_MIPMAPKPLUGIN defines the pluginID for the \ref rpmipkl toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_MIPMAPKPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x98) +#define rwID_2DFONT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x99) +/** + * \ingroup rwengine + * \def rwID_INTSECPLUGIN defines the pluginID for the \ref rtintersection toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_INTSECPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x9a) +/** + * \ingroup rwengine + * \def rwID_TIFFIMAGEPLUGIN defines the pluginID for the \ref rttiff toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_TIFFIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x9b) +/** + * \ingroup rwengine + * \def rwID_PICKPLUGIN defines the pluginID for the \ref rtpick toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_PICKPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x9c) +/** + * \ingroup rwengine + * \def rwID_BMPIMAGEPLUGIN defines the pluginID for the \ref rtbmp toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_BMPIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x9d) +/** + * \ingroup rwengine + * \def rwID_RASIMAGEPLUGIN defines the pluginID for the \ref rtras toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_RASIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x9e) +#define rwID_SKINFXPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x9f) +/** + * \ingroup rwengine + * \def rwID_VCATPLUGIN defines the pluginID for the \ref rtvcat toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_VCATPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa0) +#define rwID_2DPATH MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa1) +#define rwID_2DBRUSH MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa2) +#define rwID_2DOBJECT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa3) +#define rwID_2DSHAPE MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa4) +#define rwID_2DSCENE MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa5) +#define rwID_2DPICKREGION MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa6) +#define rwID_2DOBJECTSTRING MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa7) +#define rwID_2DANIMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa8) +/** + * \ingroup rwengine + * \def rwID_2DANIM defines the pluginID for the \ref rt2danim toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_2DANIM MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa9) +#define rwID_2DKEYFRAME MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb0) +#define rwID_2DMAESTRO MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb1) +/** + * \ingroup rwengine + * \def rwID_BARYCENTRIC defines the pluginID for the \ref rtbary toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_BARYCENTRIC MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb2) +/** + * \ingroup rwengine + * \def rwID_PITEXDICTIONARYTK defines the pluginID for the \ref rtpitexd toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_PITEXDICTIONARYTK MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb3) +/** + * \ingroup rwengine + * \def rwID_TOCTOOLKIT defines the pluginID for the \ref rttoc toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_TOCTOOLKIT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb4) +#define rwID_TPLTOOLKIT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb5) +/** + * \if sky2 \ingroup rwengine + * \def rwID_ALTPIPETOOLKIT defines the pluginID for the \ref rtaltpipesky2 toolkit. + * See \ref RwEngineRegisterPlugin \endif + */ +#define rwID_ALTPIPETOOLKIT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb6) +/** + * \ingroup rwengine + * \def rwID_ANIMTOOLKIT defines the pluginID for the \ref rtanim toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_ANIMTOOLKIT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb7) +/** + * \ingroup rwengine + * \def rwID_SKINSPLITTOOKIT defines the pluginID for the \ref rtskinsplit toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_SKINSPLITTOOKIT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb8) +/** + * \ingroup rwengine + * \def rwID_CMPKEYTOOLKIT defines the pluginID for the \ref rtcmpkey toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_CMPKEYTOOLKIT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb9) +/** + * \ingroup rwengine + * \def rwID_GEOMCONDPLUGIN defines the pluginID for the \ref rtgcond toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_GEOMCONDPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xba) +/** + * \ingroup rwengine + * \def rwID_WINGPLUGIN defines the pluginID for the \ref rtwing toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_WINGPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xbb) +/** + * \ingroup rwengine + * \def rwID_GENCPIPETOOLKIT defines the pluginID for the \ref rtgencpipe toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_GENCPIPETOOLKIT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xbc) +/** + * \ingroup rwengine + * \def rwID_LTMAPCNVTOOLKIT defines the pluginID for the \ref rtltmapcnv toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_LTMAPCNVTOOLKIT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xbd) +/** + * \ingroup rwengine + * \def rwID_FILESYSTEMPLUGIN defines the pluginID for the \ref rtfsyst toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_FILESYSTEMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xbe) +/** + * \ingroup rwengine + * \def rwID_DICTTOOLKIT defines the pluginID for the \ref rtdict toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_DICTTOOLKIT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xbf) +/** + * \ingroup rwengine + * \def rwID_DICTTOOLKIT defines the pluginID for the \ref rtdict toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_UVANIMLINEAR MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xc0) +/** + * \ingroup rwengine + * \def rwID_DICTTOOLKIT defines the pluginID for the \ref rtdict toolkit. + * See \ref RwEngineRegisterPlugin + */ +#define rwID_UVANIMPARAM MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xc1) + + diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/rw/rperror.h b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rperror.h new file mode 100644 index 00000000..2b622ce0 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rperror.h @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +/*************************************************************************** + * * + * Module : rperror.h * + * * + * Purpose : Used to generate error codes * + * * + **************************************************************************/ + +/**************************************************************************** + Defines + */ + +#define RWECODE(a,b) a, + +enum rwPLUGIN_ERRENUM +{ + rwPLUGIN_ERRENUMLAST = RWFORCEENUMSIZEINT +}; + +typedef enum rwPLUGIN_ERRENUM rwPLUGIN_ERRENUM; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/rw/rphanim.h b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rphanim.h new file mode 100644 index 00000000..6418a6d7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rphanim.h @@ -0,0 +1,263 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +/****************************************** + * * + * RenderWare(TM) Graphics Library * + * * + ******************************************/ + +/* + * This file is a product of Criterion Software Ltd. + * + * This file is provided as is with no warranties of any kind and is + * provided without any obligation on Criterion Software Ltd. + * or Canon Inc. to assist in its use or modification. + * + * Criterion Software Ltd. and Canon Inc. will not, under any + * circumstances, be liable for any lost revenue or other damages + * arising from the use of this file. + * + * Copyright (c) 1998. Criterion Software Ltd. + * All Rights Reserved. + */ + +/*************************************************************************** + * * + * Module : rpanim.h * + * * + * Purpose : Hierarchical animation * + * * + **************************************************************************/ + +/** + * Hierarchal animation plugin + */ + +/* Doxygen plugin groups. */ + +/** + * \defgroup rphanim RpHAnim + * \ingroup objectframehanim + * + * Hierarchical Animation Plugin for RenderWare Graphics. + */ + +/** + * \defgroup rphanimchanges RpHAnim Changes + * \ingroup rphanim + * + */ + +/**************************************************************************** + Includes + */ + +#include +#include +#include + +#include "rwcore.h" +#include "rpworld.h" + +#include "rpcriter.h" /* Note: each vendor can choose their own method for + * allocation of unique ID's. This file defines + * the ID's used by Criterion. + */ +#include "rtquat.h" +#include "rtanim.h" + +#define rpHANIMSTREAMCURRENTVERSION 0x100 + +#if (!defined(DOXYGEN)) + +typedef struct RpHAnimAtomicGlobalVars RpHAnimAtomicGlobalVars; + +struct RpHAnimAtomicGlobalVars +{ + RwInt32 engineOffset; + RwFreeList *HAnimFreeList; +}; + +#endif /* (!defined(DOXYGEN)) */ + +#define rpHANIMSTDKEYFRAMESIZE sizeof(RpHAnimKeyFrame) +#define rpHANIMSTDKEYFRAMETYPEID 0x1 + +#define RpV3dInterpolate(o,a,s,b) \ +MACRO_START \ +{ \ + (o)->x = (((a)->x) + ((s)) * (((b)->x) - ((a)->x))); \ + (o)->y = (((a)->y) + ((s)) * (((b)->y) - ((a)->y))); \ + (o)->z = (((a)->z) + ((s)) * (((b)->z) - ((a)->z))); \ +} \ +MACRO_STOP + + +/** + * \ingroup rphanim + * \ref RpHAnimKeyFrame + * typedef for struct RpHAnimKeyFrame. Based on \ref RtAnimKeyFrameHeader. + */ +typedef struct RpHAnimKeyFrame RpHAnimKeyFrame; + +/** + * \ingroup rphanim + * \struct RpHAnimKeyFrame + * A structure representing the standard keyframe data. Sequences of + * such keyframes in an \ref RtAnimAnimation defines the animation of each + * node in a hierarchy. + */ +struct RpHAnimKeyFrame +{ + RpHAnimKeyFrame *prevFrame; /**< Pointer to the previous keyframe */ + RwReal time; /**< Time at keyframe */ + RtQuat q; /**< Quaternion rotation at keyframe */ + RwV3d t; /**< Translation at keyframe */ +}; + +/** + * \ingroup rphanim + * \ref RpHAnimInterpFrame + * typedef for struct RpHAnimInterpFrame. Based on \ref RtAnimInterpFrameHeader. + */ +typedef struct RpHAnimInterpFrame RpHAnimInterpFrame; + +/** + * \ingroup rphanim + * \struct RpHAnimInterpFrame + * A structure representing an interpolated keyframe. The initial part of the + * structure matches \ref RtAnimInterpFrameHeader. + */ +struct RpHAnimInterpFrame +{ + RpHAnimKeyFrame *keyFrame1; + /**< Pointer to 1st keyframe of current interpolation pair */ + RpHAnimKeyFrame *keyFrame2; + /**< Pointer to 2nd keyframe of current interpolation pair */ + RtQuat q; /**< Quaternion rotation */ + RwV3d t; /**< Translation */ +}; + +/** + * \ingroup rphanim + * \ref RpHAnimHierarchy typedef for struct RpHAnimHierarchy + */ +typedef struct RpHAnimHierarchy RpHAnimHierarchy; + +/* Flags for FrameInfos */ + +#define rpHANIMPOPPARENTMATRIX 0x01 +#define rpHANIMPUSHPARENTMATRIX 0x02 + +/** + * \ingroup rphanim + * \ref RpHAnimNodeInfo + * typedef for struct RpHAnimNodeInfo + */ +typedef struct RpHAnimNodeInfo RpHAnimNodeInfo; + +/** + * \ingroup rphanim + * \struct RpHAnimNodeInfo + * + * Used to describe a hierarchy toplogy. + * It holds flags representing its position in the + * hierarchy as well as a pointer to the matching \ref RwFrame if the + * hierarchy has been attached to a \ref RwFrame hierarchy. + * + */ +struct RpHAnimNodeInfo +{ + RwInt32 nodeID; /**< User defined ID for this node */ + RwInt32 nodeIndex; /**< Array index of node */ + RwInt32 flags; /**< Matrix push/pop flags */ + RwFrame * pFrame; /**< Pointer to an attached RwFrame (see \ref RpHAnimHierarchyAttach) */ +}; + +/** + * \ingroup rphanim + * \ref RpHAnimHierarchyFlag defines type and update modes in HAnimHierarchies + */ +enum RpHAnimHierarchyFlag +{ + /* creation flags */ + rpHANIMHIERARCHYSUBHIERARCHY = 0x01, /**< This hierarchy is a sub-hierarchy */ + rpHANIMHIERARCHYNOMATRICES = 0x02, /**< This hierarchy has no local matrices */ + + /* update flags */ + rpHANIMHIERARCHYUPDATEMODELLINGMATRICES = 0x1000, /**< This hierarchy updates modeling matrices */ + rpHANIMHIERARCHYUPDATELTMS = 0x2000, /**< This hierarchy updates LTMs */ + rpHANIMHIERARCHYLOCALSPACEMATRICES = 0x4000, /**< This hierarchy calculates matrices in a space + relative to its root */ + + rpHANIMHIERARCHYFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; + +/* + * These flags are used to control the creation and + * update status of the hierarchy + */ +typedef enum RpHAnimHierarchyFlag RpHAnimHierarchyFlag; + +/** + * \ingroup rphanim + * \struct RpHAnimHierarchy + * An RpHAnimHierarchy is used to "play back" an animation. + * + * The structure of a hierarchy is defined by an array + * of \ref RpHAnimNodeInfo structures. + * + * The hierarchy is defined by running through the node array in order, + * pushing the parent-node's matrix whenever a child is reached that has + * more than one sibling, and popping the parent matrix when a "leaf" + * node is encountered. + * + */ +struct RpHAnimHierarchy +{ + RwInt32 flags; /**< Flags for the hierarchy */ + RwInt32 numNodes; /**< Number of nodes in the hierarchy */ + + RwMatrix *pMatrixArray; /**< Pointer to node matrices*/ + void *pMatrixArrayUnaligned; /**< Pointer to memory used for node matrices + * from which the aligned pMatrixArray is allocated */ + RpHAnimNodeInfo *pNodeInfo; /**< Array of node information (push/pop flags etc) */ + RwFrame *parentFrame; /**< Pointer to the Root RwFrame of the hierarchy this + * RpHAnimHierarchy represents */ + RpHAnimHierarchy *parentHierarchy; /**< Internal use */ + RwInt32 rootParentOffset; /**< Internal use */ + + RtAnimInterpolator *currentAnim; /**< Internal use */ +}; + +/** + * \ingroup rphanim + * \ref RpHAnimFrameExtension typedef for struct RpHAnimFrameExtension + */ + +typedef struct RpHAnimFrameExtension RpHAnimFrameExtension; + +/** + * \ingroup rphanim + * \struct RpHAnimFrameExtension + * + * Used to extend \ref RwFrame objects, and thus + * allow the mapping between animation hierarchy node ID and \ref RwFrame. + * + */ +struct RpHAnimFrameExtension +{ + RwInt32 id; /**< ID given to this RwFrame (default of -1) */ + RpHAnimHierarchy *hierarchy; /**< Pointer to Animation hierarchy attached to this RwFrame */ +}; + +/* Legacy TypeDef */ + + +typedef RtAnimAnimation RpHAnimAnimation; +typedef RpHAnimKeyFrame RpHAnimStdKeyFrame; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/rw/rpmatfx.h b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rpmatfx.h new file mode 100644 index 00000000..1659caa4 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rpmatfx.h @@ -0,0 +1,77 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +/*===========================================================================* + *--- Include files ---------------------------------------------------------* + *===========================================================================*/ + +#include "rwcore.h" +#include "rpworld.h" + +/*---- start: ./matfx.h----*/ + + +/** + * \defgroup rpmatfx RpMatFX + * \ingroup materials + * + * Material Effects Plugin for RenderWare Graphics. + */ + +/*===========================================================================* + *--- Global Types ----------------------------------------------------------* + *===========================================================================*/ + +/** + * \ingroup rpmatfx + * RpMatFXMaterialFlags, this type represents the different types of + * material effects that can be used on a material. The effects are + * initialized with \ref RpMatFXMaterialSetEffects: + */ +enum RpMatFXMaterialFlags +{ + rpMATFXEFFECTNULL = 0, /** + * Automatically Generated on: Fri Oct 03 09:52:43 2003 + * + ************************************************************************/ + +/*--- System Header Files ---*/ +#include +#include + +/***************************************************************************** + Global Defines & Enums + */ + +#define RWD3D9VSCONST_TRANSFORM_OFFSET 0 +#define RWD3D9VSCONST_AMBIENT_OFFSET 4 +#define RWD3D9VSCONST_LIGHTS_OFFSET 5 + +typedef enum rwD3D9VertexShaderEffectType +{ + rwD3D9VERTEXSHADEREFFECT_NONE = 0, + rwD3D9VERTEXSHADEREFFECT_BUMPMAP = 1, + rwD3D9VERTEXSHADEREFFECT_ENVMAP, + rwD3D9VERTEXSHADEREFFECT_BUMPENVMAP, + rwD3D9VERTEXSHADEREFFECT_DUAL, + rwD3D9VERTEXSHADEREFFECT_DUALREPLICATE, + rwD3D9VERTEXSHADEREFFECT_UVANIM, + rwD3D9VERTEXSHADEREFFECT_DUALUVANIM, + rwD3D9VERTEXSHADEREFFECT_NORMALMAP, + rwD3D9VERTEXSHADEREFFECT_NORMALENVMAP, + rwD3D9VERTEXSHADEREFFECT_CUBEMAP, + rwD3D9VERTEXSHADEREFFECT_BUMPCUBEMAP, + + rwD3D9VERTEXSHADEREFFECT_MAX = (1 << 6), + +} rwD3D9VertexShaderEffectType; + + +typedef enum rwD3D9VertexShaderFogMode +{ + rwD3D9VERTEXSHADERFOG_NONE = 0, + rwD3D9VERTEXSHADERFOG_LINEAR = 1, + rwD3D9VERTEXSHADERFOG_EXP, + rwD3D9VERTEXSHADERFOG_EXP2, + + rwD3D9VERTEXSHADERFOG_MAX +} rwD3D9VertexShaderFogMode; + +/****************************************************************************** + Global Types + */ + +#if !defined(DOXYGEN) + +/* This struct is used to specify the required functionality of the vertex shader */ +typedef struct _rpD3D9VertexShaderDescriptor +{ + RwUInt8 numDirectionalLights : 4; + RwUInt8 numPointLights : 4; + RwUInt8 numSpotLights : 4; + RwUInt8 numTexCoords : 4; + + RwUInt8 morphing : 1; + RwUInt8 numWeights : 3; + RwUInt8 prelit : 1; + RwUInt8 normals : 1; + RwUInt8 normalizeNormals : 1; + RwUInt8 modulateMaterial : 1; + RwUInt8 fogMode : 2; + RwUInt8 effect : 6; + +} _rpD3D9VertexShaderDescriptor; + +/* + * Offsets for the required vertex shader constants. + * The combined transposed matrix world-view-projection is always at offset 0. + * The ambient is always at offset 4. + * The first light is always at offset 5. + * 0xFF indicates that the specified constant is not used. + */ +typedef struct _rpD3D9VertexShaderDispatchDescriptor +{ + RwUInt8 offsetMaterialColor; + RwUInt8 offsetFogRange; + RwUInt8 offsetEffect; + RwUInt8 offsetMorphingCoef; + RwUInt8 offsetBoneMatrices; + RwUInt8 pad[3]; + +} _rpD3D9VertexShaderDispatchDescriptor; + +#endif /* !defined(DOXYGEN) */ + +/* + * Vertex shader pipeline callbacks + */ + +typedef struct RxD3D9ResEntryHeader RxD3D9ResEntryHeader; +typedef struct RxD3D9InstanceData RxD3D9InstanceData; +typedef struct RpMaterial RpMaterial; + +/* Initialize shared components of "desc" and to prepare internal render data */ + +typedef RwBool (*_rxD3D9VertexShaderInstanceCallBack)(void *object, + RxD3D9ResEntryHeader *resEntryHeader, + RwBool reinstance); + +typedef void (*_rxD3D9VertexShaderBeginCallBack)(void *object, + RwUInt32 type, + _rpD3D9VertexShaderDescriptor *desc); + +/* _rwD3D9VSSetActiveWorldMatrix MUST be called before using this two callbacks */ + +typedef RwV4d * (*_rxD3D9VertexShaderLightingCallBack)(void *object, + RwUInt32 type, + RwV4d *shaderConstantPtr, + _rpD3D9VertexShaderDescriptor *desc); + +typedef void *(*_rxD3D9VertexShaderGetMaterialShaderCallBack)(const RpMaterial *material, + _rpD3D9VertexShaderDescriptor *desc, + _rpD3D9VertexShaderDispatchDescriptor *dispatch); + + +typedef void (*_rxD3D9VertexShaderMeshRenderCallBack)(RxD3D9ResEntryHeader *resEntryHeader, + RxD3D9InstanceData *instancedMesh, + const _rpD3D9VertexShaderDescriptor *desc, + const _rpD3D9VertexShaderDispatchDescriptor *dispatch); + +typedef void (*_rxD3D9VertexShaderEndCallBack)(void *object, + RwUInt32 type, + _rpD3D9VertexShaderDescriptor *desc); + +/**************************************************************************** + Global Types + */ + + +typedef struct RpMaterialChunkInfo RpMaterialChunkInfo; +typedef struct RpMaterialChunkInfo _rpMaterial; + +#if (!defined(DOXYGEN)) +struct RpMaterialChunkInfo +{ + RwInt32 flags; /* Material flags - unused currently - + * for future expansion */ + RwRGBA color; /* Color of material. */ + RwInt32 unused; /* Not used */ + RwBool textured; /* Are we textured? */ + RwSurfaceProperties surfaceProps;/* Surface properties */ +}; +#endif /* (!defined(DOXYGEN)) */ + +#if (!defined(RwMaterialAssign)) +#define RwMaterialAssign(_target, _source) \ + ( *(_target) = *(_source) ) +#endif /* (!defined(RwMaterialAssign)) */ + +/** + * \ingroup rpmaterial + * \struct RpMaterial + * Material object. This should be + * considered an opaque type. Use the RpMaterial API functions to access. + */ +typedef struct RpMaterial RpMaterial; + +#if (!defined(DOXYGEN)) +struct RpMaterial +{ + RwTexture *texture; /**< texture */ + RwRGBA color; /**< color */ + RxPipeline *pipeline; /**< pipeline */ + RwSurfaceProperties surfaceProps; /**< surfaceProps */ + RwInt16 refCount; /* C.f. rwsdk/world/bageomet.h:RpGeometry */ + RwInt16 pad; +}; +#endif /* (!defined(DOXYGEN)) */ + +/** + * \ingroup rpmaterial + * \ref RpMaterialCallBack + * represents the function called from \ref RpGeometryForAllMaterials and + * \ref RpWorldForAllMaterials for all materials referenced by polygons in a + * given geometry. This function should return a pointer to the current + * material to indicate success. The callback may return NULL to terminate + * further callbacks on the materials. + * + * \param material Pointer to the current material + * \param data Pointer to developer-defined data structure. + * + * \return Pointer to the current material. + */ +typedef RpMaterial *(*RpMaterialCallBack)(RpMaterial *material, void *data); + +/**************************************************************************** + refCount++), (_material)) + +#define RpMaterialAddRefVoidMacro(_material) \ +MACRO_START \ +{ \ + (_material)->refCount++; \ +} \ +MACRO_STOP + + +#define RpMaterialSetColorMacro(_material, _color) \ + (RwRGBAAssign(&((_material)->color), (_color)), (_material)) + +#define RpMaterialGetColorMacro(_material) \ + (&((_material)->color)) + +#define RpMaterialSetSurfacePropertiesMacro(_material, _surfProps) \ + (RwSurfacePropertiesAssign(&((_material)->surfaceProps), \ + (_surfProps)), (_material)) + +#define RpMaterialGetSurfacePropertiesMacro(_material) \ + (&((_material)->surfaceProps)) + +#define RpMaterialGetTextureMacro(_material) \ + ((_material)->texture) + + +#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) + +#define RpMaterialAddRef(_material) \ + RpMaterialAddRefMacro(_material) + +#define RpMaterialSetColor(_material, _color) \ + RpMaterialSetColorMacro(_material, _color) + +#define RpMaterialGetColor(_material) \ + RpMaterialGetColorMacro(_material) + +#define RpMaterialSetSurfaceProperties(_material, _surfProps) \ + RpMaterialSetSurfacePropertiesMacro(_material, _surfProps) + +#define RpMaterialGetSurfaceProperties(_material) \ + RpMaterialGetSurfacePropertiesMacro(_material) + +#define RpMaterialGetTexture(_material) \ + RpMaterialGetTextureMacro(_material) + +#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */ + +/*--- Automatically derived from: C:/daily/rwsdk/world/bamatlst.h ---*/ +/**************************************************************************** + Global Types + */ + +typedef struct RpMaterialList RpMaterialList; + +#if (!defined(DOXYGEN)) +struct RpMaterialList +{ + RpMaterial **materials; + RwInt32 numMaterials; + RwInt32 space; +}; +#endif /* (!defined(DOXYGEN)) */ + +/*--- Automatically derived from: C:/daily/rwsdk/world/bamesh.h ---*/ + +/* + * + * Purpose: Provide construction and enumeration facilities for meshes. + * + * Copyright (c) 1998 Criterion Software Ltd. + */ + +#define RPMESHGLOBAL(var) \ + (RWPLUGINOFFSET(rpMeshGlobals, \ + RwEngineInstance, \ + meshModule.globalsOffset)->var) + +#define rwPRIMTYPEOR \ + (rwPRIMTYPELINELIST | \ + rwPRIMTYPEPOLYLINE | \ + rwPRIMTYPETRILIST | \ + rwPRIMTYPETRISTRIP | \ + rwPRIMTYPETRIFAN | \ + rwPRIMTYPEPOINTLIST) + +#define rpMESHHEADERPRIMTYPEOR \ + (0 /* rpMESHHEADERTRILIST*/ | \ + rpMESHHEADERTRISTRIP | \ + rpMESHHEADERTRIFAN | \ + rpMESHHEADERLINELIST | \ + rpMESHHEADERPOLYLINE | \ + rpMESHHEADERPOINTLIST) + +/**************************************************************************** + Global types + */ + +/* + * typedef for header structure listing all meshes + * constituting a single RpGeometry or RpWorldSector + */ +typedef struct RpMeshHeader RpMeshHeader; + +/** + * \ingroup rpmesh + * \ref RpMeshHeaderFlags + * represents the different types of mesh. + * \see RpMeshHeader + */ +enum RpMeshHeaderFlags +{ + /* NOTE: trilists are denoted by absence of any other + * primtype flags, so be careful that you test: + * (triListFlag == (flags&triListFlag)) + * or: + * (0 == (flags&rpMESHHEADERPRIMMASK)) + * and not: + * (flags&triListFlag) + */ + rpMESHHEADERTRISTRIP = 0x0001, /**< Render as tristrips */ + rpMESHHEADERTRIFAN = 0x0002, /**< On PlayStation 2 these will be converted to trilists */ + rpMESHHEADERLINELIST = 0x0004, /**< Render as linelists */ + rpMESHHEADERPOLYLINE = 0x0008, /**< On PlayStation 2 these will be converted to linelists */ + rpMESHHEADERPOINTLIST = 0x0010, /**< Pointlists are supported only if rendered by + * custom pipelines; there is no default RenderWare + * way to render pointlists. */ + + rpMESHHEADERPRIMMASK = 0x00FF, /**< All bits reserved for specifying primitive type */ + rpMESHHEADERUNINDEXED = 0x0100, /**< Topology is defined implicitly by vertex + * order, ergo the mesh contains no indices */ + rpMESHHEADERFLAGSFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; + +/* + * Typedef for RpMeshHeaderFlags enumeration + * representing the different types of mesh + */ +typedef enum RpMeshHeaderFlags RpMeshHeaderFlags; + +typedef struct rpMeshGlobals rpMeshGlobals; + +#if (!defined(DOXYGEN)) +struct rpMeshGlobals +{ + RwInt16 nextSerialNum; + RwFreeList *triStripListEntryFreeList; + RwUInt8 meshFlagsToPrimType[rpMESHHEADERPRIMTYPEOR]; + RwUInt8 primTypeToMeshFlags[rwPRIMTYPEOR]; +}; +#endif /* (!defined(DOXYGEN)) */ + +typedef struct RpBuildMeshTriangle RpBuildMeshTriangle; + +/** + * \ingroup rpmesh + * \struct RpBuildMeshTriangle + * This type represents an array of indices into + * the object vertex array. Used during the construction + * of tristrips. + * + * See API functions + * \see RpBuildMeshGeneratePreprocessTriStrip + * \see RpBuildMeshGenerateExhaustiveTriStrip + * \see RpBuildMeshGenerateTrivialTriStrip + * \see RpBuildMeshGenerateDefaultTriStrip + * and + * \see RpMeshSetTriStripMethod + * \see RpMeshGetTriStripMethod + */ +struct RpBuildMeshTriangle +{ + RwUInt16 vertIndex[3]; /**< indices into object vertex + * array. */ + RpMaterial *material; /**< pointer to material used to + * render the mesh. */ + RwUInt16 matIndex; /**< unique index for material used */ + RwUInt16 textureIndex; /**< unique index for texture used */ + RwUInt16 rasterIndex; /**< unique index for raster used */ + RwUInt16 pipelineIndex;/**< unique index for pipeline used */ +}; + +typedef struct RpBuildMesh RpBuildMesh; + +/** + * \ingroup rpmesh + * \struct RpBuildMesh + * This type represents a mesh ready for tri stripping. + * + * See API functions + * \see RpBuildMeshGeneratePreprocessTriStrip + * \see RpBuildMeshGenerateExhaustiveTriStrip + * \see RpBuildMeshGenerateTrivialTriStrip + * \see RpBuildMeshGenerateDefaultTriStrip + * and + * \see RpMeshSetTriStripMethod + * \see RpMeshGetTriStripMethod + */ +struct RpBuildMesh +{ + RwUInt32 triangleBufferSize; /**< number of triangles + * space has been allocated + * for. */ + RwUInt32 numTriangles; /**< number of triangles to be + * tristripped. */ + RpBuildMeshTriangle *meshTriangles; /**< pointer to build mesh + * triangles. */ +}; + +typedef struct RpMesh RpMesh; + +/** + * \ingroup rpmesh + * \struct RpMesh + * This type represents a single polygon mesh. + * A mesh is defined as a collection of triangles derived from an RpGeometry + * or RpWorldSector which have a common material. + * + * See API functions \see RpGeometryForAllMeshes and + * \see RpWorldSectorForAllMeshes and + * the corresponding function callback types: + */ +struct RpMesh +{ + RxVertexIndex *indices; /**< vertex indices defining the mesh */ + RwUInt32 numIndices; /**< number of vertices in mesh */ + RpMaterial *material; /**< pointer to material used to + * render the mesh. */ +}; + +/** + * \ingroup rpmesh + * \struct RpMeshHeader + * Header for all meshes that constitute a single RpGeometry or RpWorldSector + */ +struct RpMeshHeader +{ + RwUInt32 flags; /**< \see RpMeshHeaderFlags */ + RwUInt16 numMeshes; /**< Number of meshes in object */ + RwUInt16 serialNum; /**< Determine if mesh has changed + * since last instance */ + RwUInt32 totalIndicesInMesh; /**< Total triangle index + * count in all meshes + */ + RwUInt32 firstMeshOffset; /**< Offset in bytes from end this + * structure RpMeshHeader + * to the first mesh + */ +}; + +/** + * \ingroup rpmesh + * \ref RpMeshCallBack is the callback + * function supplied to \ref RpGeometryForAllMeshes and + * \ref RpWorldSectorForAllMeshes for all meshes in a given geometry. + * + * This function should return a pointer to the current mesh to indicate + * success. The callback may return NULL to terminate further callbacks + * on the meshes. + * + * \param mesh Pointer to the current mesh, supplied by + * iterator. + * \param meshHeader Pointer to the meshes header + * \param data Pointer to developer-defined data structure. + * + * \return Returns a pointer to the current mesh if successful or NULL + * if an error occurred. + */ +typedef RpMesh *(*RpMeshCallBack) (RpMesh * mesh, + RpMeshHeader * meshHeader, + void *pData); + +/*--- Automatically derived from: C:/daily/rwsdk/world/bameshop.h ---*/ + +/**************************************************************************** + Defines + */ + +#define RPTRISTRIPPOLYGONMAXEDGES 3 + +/** + * \ingroup rpmesh + * \ref RpTriStripMeshCallBack is the callback to generate triangle strips + * when the triangle stripped geometries or world sectors are unlocked. + * + * \param buildMesh pointer to the mesh which the triangle strip will be + * generated from. + * \param data pointer to user-supplied data to pass to the callback + * function. + * + * \return a pointer to the constructed mesh header. + * + */ +typedef RpMeshHeader * +(*RpTriStripMeshCallBack) (RpBuildMesh *buildMesh, void *data); + + + +/**************************************************************************** + Global types + */ + +typedef struct RpTriStripEdge RpTriStripEdge; + +typedef struct RpTriStripPolygon RpTriStripPolygon; +/** + * \ingroup rpmesh + * \struct RpTriStripPolygon + * This type represents a polygon. + * + * \see RpTriStripPolygonFollowStrip + * \see RpBuildMeshGenerateTriStrip + * \see RpTriStripMeshTunnel + */ +struct RpTriStripPolygon +{ + RwLLLink inEndLink; /**< link for list of polygons joined by fewer than + 2 strip edges */ + RwLLLink inUsedLink; /**< link for list of used polygons */ + RwLLLink inFreeLink; /**< link for list of free polygons */ + RwUInt32 numEdges; /**< number of edges */ + RpTriStripEdge *edges[RPTRISTRIPPOLYGONMAXEDGES]; /**< polygon edges */ + RxVertexIndex vertIndex[RPTRISTRIPPOLYGONMAXEDGES]; /**< polygon vertex + indices */ + RwUInt32 testFrame; /**< used to prevent a tri-strip being counted by + the cost function more than once */ +}; + +/** + * \ingroup rpmesh + * \struct RpTriStripEdge + * This type represents a polygon edge which may be part of a tri-strip. + * + * \see RpTriStripPolygonFollowStrip + * \see RpBuildMeshGenerateTriStrip + * \see RpTriStripMeshTunnel + */ +struct RpTriStripEdge +{ + RwLLLink inUsedLink; /**< link for list of used edges */ + RwLLLink inFreeLink; /**< link for list of free edges */ + RpTriStripPolygon *poly1; /**< first polygon including this edge */ + RpTriStripPolygon *poly2; /**< second polygon including this edge or NULL + if this edge is only included in one */ + RxVertexIndex vert1; /**< index of first vertex of edge */ + RxVertexIndex vert2; /**< index of second vertex of edge */ + RwBool strip; /**< TRUE if the edge is part of a tri-strip */ +}; + +typedef struct RpTriStripMesh RpTriStripMesh; +/** + * \ingroup rpmesh + * \struct RpTriStripMesh + * This type represents a mesh and the tri-strips it contains. + * + * \see RpBuildMeshGenerateTriStrip + * \see RpTriStripMeshTunnel + */ +struct RpTriStripMesh +{ + RwUInt32 numPolygons; /**< the number of polygons in the mesh */ + RwLinkList polygonEndList; /**< linked list of polygons joined by fewer + than 2 strip edges. */ + RwLinkList polygonUsedList; /**< linked list of used polygons */ + RwLinkList polygonFreeList; /**< linked list of free polygons */ + RwLinkList edgeUsedList; /**< linked list of used edges */ + RwLinkList edgeFreeList; /**< linked list of free edges */ +}; + +/** + * \ingroup rpmesh + * \ref RpTriStripMeshStripCallBack represents the callback function to + * tri-strip a mesh. + * + * \param mesh Pointer to the mesh to tri-strip. + * \param data Pointer to user-supplied data. + * + * \return Returns a pointer to the current mesh if successful or NULL if an + * error occurred. + */ +typedef RpTriStripMesh * +(*RpTriStripMeshStripCallBack) (RpTriStripMesh *mesh, void *data); + +typedef struct RpTriStripData RpTriStripData; +/** + * \ingroup rpmesh + * \struct RpTriStripData + * This type represents the data required by the + * \ref RpBuildMeshGenerateTriStrip function to tri-strip a mesh. This data must + * be the user-supplied data passed into RpMeshSetTriStripMethod when using + * \ref RpBuildMeshGenerateTriStrip. + * + * \see RpMeshGetTriStripMethod + * \see RpMeshSetTriStripMethod + * \see RpBuildMeshGenerateTriStrip + * \see RpTriStripMeshTunnel + */ +struct RpTriStripData +{ + RwBool ignoreWinding; /**< TRUE to ignore winding order */ + RpTriStripMeshStripCallBack stripCB; /**< callback to tri-strip mesh */ + void *data; /**< data to supply to callback */ +}; + +/** + * \ingroup rpmesh + * \ref RpTriStripCostCallBack represents the callback function used by the + * tunnelling tri-stripper to determine the cost of a tri-strip. + * + * \param startPolygon Pointer to polygon at the start of the tri-strip. + * \param testFrame Value that must be written to the testFrame of all + * polygons in the tri-strip + * \param data Pointer to user-supplied data. + * + * \return Returns the cost of the tri-strip. + */ +typedef RwUInt32 +(*RpTriStripCostCallBack) (RpTriStripPolygon *startPolygon, RwUInt32 testFrame, void *data); + +typedef struct RpTriStripTunnelData RpTriStripTunnelData; +/** + * \ingroup rpmesh + * \struct RpTriStripTunnelData + * This type represents the data required by the + * \ref RpTriStripMeshTunnel function to tri-strip a mesh. This data must + * be the user-supplied data in the RpTriStripData structure passed into + * \ref RpMeshSetTriStripMethod as the user-supplied data when using + * \ref RpTriStripMeshTunnel. + * + * \see RpMeshGetTriStripMethod + * \see RpMeshSetTriStripMethod + * \see RpBuildMeshGenerateTriStrip + * \see RpTriStripMeshTunnel + * \see RpTriStripDefaultCost + */ +struct RpTriStripTunnelData +{ + RwReal quality; /**< Values between 0.1 and 0.5 tend to be fairly quick but + don't always give the best results. Values greater than 0.5 tend to + give good results useful for final artwork but can take much longer. + Large values e.g. 5 allow the length limit to be the limiting factor + instead. */ + RwUInt32 lengthLimit; /**< The maximum tunnel length to use. Values between + 10 and 50 tend to be fairly quick but don't always give the best + results. Values greater than 50 tend to give good results for final + artwork but can take much longer. Large values e.g. 10000 allow the + quality to be the limiting factor. */ + RpTriStripCostCallBack costCB; /**< callback to determine tri-strip cost */ + void *data; /**< data to supply to callbacks */ +}; + + + +/**************************************************************************** + Global Variables + */ + + +/*--- Automatically derived from: C:/daily/rwsdk/world/bageomet.h ---*/ + +/* + * Handling atomic's geometry + * Geometry describe objects, and are the building blocks for atomics + * + * Copyright (c) 1998 Criterion Software Ltd. +*/ + + +/**************************************************************************** + Defines + */ + +/* Type ID */ +#define rpGEOMETRY 8 + +/** + * \ingroup rpgeometry + * RpGeometryFlag + * Geometry type flags + * + * When creating a geometry, these flags can be OR'ed together to + * specify the format along with the rpGEOMETRYTEXCOORDSETS(n) macro if more + * than two sets of texture coordinates are required. See \ref RpGeometryCreate + * for more details. + * + * \see RpGeometryCreate(). + */ +enum RpGeometryFlag +{ + rpGEOMETRYTRISTRIP = 0x00000001, /** MatList[matListWindowBase + 255]) + */ + RwUInt16 matListWindowBase; + + RwUInt16 numVertices; /* Num vertices */ + RwUInt16 numTriangles; /* Num triangles */ + RwUInt16 pad; +}; +#endif /* (!defined(DOXYGEN)) */ + +/** + * \ingroup rpworldsector + * \ref RpWorldSectorCallBack + * represents the function called from \ref RpWorldForAllWorldSectors, + * \ref RpAtomicForAllWorldSectors and \ref RpLightForAllWorldSectors for all + * world sectors in a given world or world sectors a given atomic or light lies + * in. This function should return a pointer to the current world sector to + * indicate success. The callback may return NULL to terminate further + * callbacks on the atomic or light. + * + * \param sector Pointer to the current world sector + * \param data Pointer to developer-defined data structure. + * + * \return Pointer to the current world sector. + * + */ +typedef RpWorldSector *(*RpWorldSectorCallBack)(RpWorldSector *worldSector, void *data); + +typedef struct RpSector RpSector; + +#if (!defined(DOXYGEN)) +struct RpSector +{ + RwInt32 type; +}; + +/* NOTE: The left and right pointers can point to an RpPlaneSector or + * an RpWorldSector + * This is determined what the type is via the type value + */ + +typedef struct RpPlaneSector RpPlaneSector; + +struct RpPlaneSector +{ + RwInt32 type; + + RwReal value; + RpSector *leftSubTree; /* Sector 'left' (less) of the plane */ + RpSector *rightSubTree; /* Sector 'right' (more) of the plane */ + RwReal leftValue; + RwReal rightValue; +}; +#endif /* (!defined(DOXYGEN)) */ + +/*--- Automatically derived from: C:/daily/rwsdk/world/balight.h ---*/ + +/* + * Lighting 3D objects. + * Lights are used to illuminate atomics and worlds + * + * Copyright (c) 1998 Criterion Software Ltd. + */ + + +/**************************************************************************** + Defines + */ + +/* Binary Light */ +typedef struct RpLightChunkInfo RpLightChunkInfo; +typedef struct RpLightChunkInfo _rpLight; + +#if (!defined(DOXYGEN)) +struct RpLightChunkInfo +{ + RwReal radius; /**< radius */ + RwReal red; /**< red */ + RwReal green; /**< green */ + RwReal blue; /**< blue */ + RwReal minusCosAngle; /**< minusCosAngle */ + RwUInt32 typeAndFlags; /**< typeAndFlags */ +}; +#endif /* (!defined(DOXYGEN)) */ + +/* Type ID */ +#define rpLIGHT 3 + +/* Beyond this the lights must be positioned */ +#define rpLIGHTPOSITIONINGSTART 0x80 + +/** + * \ingroup rplight + * \ref RpLightType are + * light sub types. This type represents the different + * types of light source that can be created using the API function \ref RpLightCreate. + * Note that lights of types rpLIGHTPOINT, rpLIGHTSPOT and rpLIGHTSPOTSOFT have linear + * intensity fall-off with distance from the source, reducing to zero at the light's radius:*/ +enum RpLightType +{ + rpNALIGHTTYPE = 0, + + /* These don't take part in the tie mechanism (no position) */ + rpLIGHTDIRECTIONAL, /**currentInterpKeyFrameSize) ) ) ) diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/rw/rtdict.h b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rtdict.h new file mode 100644 index 00000000..c79bdce8 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rtdict.h @@ -0,0 +1,227 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +/* Doxygen plugin groups. */ + +/** + * \defgroup rtdict RtDict + * \ingroup dictionarytools + * + * Dictionary Toolkit for RenderWare Graphics. + */ + + +/**************************************************************************** + Includes + */ + +#include "rwplcore.h" + +/** + * \ingroup rtdict + * Typedef for struct \ref RtDictSchema. + */ +typedef struct RtDictSchema RtDictSchema; + +/** + * \ingroup rtdict + * Typedef for struct \ref RtDict. + */ +typedef struct RtDict RtDict; + +/** + * \ingroup rtdict + * Typedef for dictionary entries + */ +typedef void *RtDictEntryType; + +/** + * \ingroup rtdict + * Typedef for dictionary entries + */ +typedef const void *RtDictEntryConstType; + +/** + * \ingroup rtdict + * The following callbacks are needed for each dictionary schema. + * See \ref RtDictSchema. + * + * + * \ref RtDictEntryAddRefCallBack + * defines a callback function for registering that the caller has a + * reference to a particular entry. + * + * \param Entry the entry of which to increment the reference count + * + * \return The entry + */ +typedef void *(RtDictEntryAddRefCallBack)(RtDictEntryType entry); + +/** + * \ingroup rtdict + * \ref RtDictEntryDestroyCallBack + * defines a callback function for destroying an entry in the dictionary. + * + * \param entry The entry to be destroyed + * + * \return Unused, \ref RwBool to match most RenderWare object destruction + * functions + */ +typedef RwBool (RtDictEntryDestroyCallBack)(RtDictEntryType entry); + +/** + * \ingroup rtdict + * \ref RtDictEntryGetNameCallBack + * defines a callback function to get the name of an entry in the + * dictionary. + * + * \param Entry The entry + * + * \return A pointer to the name + */ +typedef const RwChar *(RtDictEntryGetNameCallBack)(RtDictEntryConstType entry); + +/** + * \ingroup rtdict + * \ref RtDictEntryStreamGetSizeCallBack + * gets the streamable size of an entry in the dictionary. + * + * \param entry The entry + * + * \return The size of the entry when streamed + */ +typedef RwUInt32 (RtDictEntryStreamGetSizeCallBack)(RtDictEntryConstType entry); + +/** + * \ingroup rtdict + * \ref RtDictEntryStreamReadCallBack + * reads a new entry from a stream. This function + * should return a pointer to a freshly allocated and initialized entry, + * with a nominal reference count of 1 (which will be assigned to the + * dictionary). + * + * \param stream The stream to read from + * + * \return A pointer to the new entry on success; NULL on failure. + */ +typedef RtDictEntryType (RtDictEntryStreamReadCallBack)(RwStream *stream); + +/** + * \ingroup rtdict + * \ref RtDictStreamReadCompatibilityCallBack + * enables older dictionaries to be retrofitted to use the new generic + * dictionary code. This callback is for internal use. + * + * \param stream The stream to read from + * + * \return A pointer to the new dictionary on success; NULL on failure. + */ +typedef RtDict *(RtDictStreamReadCompatibilityCallBack)(RwStream *stream); + +/** + * \ingroup rtdict + * \ref RtDictEntryStreamWriteCallBack + * writes an entry of the dictionary to a stream. + * + * \param entry The entry to write + * \param stream The stream to write to + * + * \return The entry on success; NULL on failure. + */ +typedef const RtDictEntryType (RtDictEntryStreamWriteCallBack)(RtDictEntryConstType entry, RwStream *stream); + + +/** + * The following callbacks are used by utility functions that work with dictionaries + * See \ref RtDictSchema and \ref RtDict. + */ + +/** + * \ingroup rtdict + * \ref RtDictCallBack + * is to be applied to each dictionary in a \ref RtDictSchema. + * + * \param dictionary The dictionary to apply the callback to + * \param data User supplied data + * + * \return The dictionary the callback was applied to. + * \see RtDictSchemaForAllDictionaries + */ +typedef RtDict *(RtDictCallBack)(RtDict *dictionary, void *data); + +/** + * \ingroup rtdict + * \ref RtDictEntryCallBack + * is to be applied to each entry in a dictionary. + * + * \param entry The entry to apply the callback to + * \param data User supplied data + * + * \return The entry the callback was applied to. + * \see RtDictForAllEntries + */ +typedef RtDictEntryType (RtDictEntryCallBack)(RtDictEntryType entry, void *data); + +/** + * \ingroup rtdict + * \struct RtDict + * A container of objects; objects which may be obtained by name. A dictionary + * is always created and managed via a schema object, \ref RtDictSchema. + * + * \see RtDictSchema + * \see RtDictSchemaCreateDict + * \see RtDictSchemaStreamReadDict + */ +struct RtDict +{ + RtDictSchema *schema; + /**< The schema that defines the layout of the dictionary. */ + RwSList *entries; + /**< The entries held within the dictionary. */ +}; + +/** + * \ingroup rtdict + * \struct RtDictSchema + * Defines the layout and management functions for a dictionary, or set of + * dictionaries. Maintains a 'current' dictionary for each layout. Provides a + * way of creating, or streaming in, dictionaries. + * + * \see RtDict + */ +struct RtDictSchema +{ + const RwChar *name; + /**< Name of the schema. Handy for debugging. */ + RwUInt32 dictChunkType; + /**< Chunk type of the dictionary in a stream */ + RwUInt32 entryChunkType; + /**< Chunk type of the dictionary entries in a stream */ + RwUInt32 compatibilityVersion; + /**< Used for inner version checking when streaming in dictionaries. If + *< the dictionary's version is less than this, \ref streamReadCompatibilityCB + *< will be used for reading in the contents. */ + RwSList *dictionaries; + /**< List of dictionaries that have been created using this layout */ + RtDict *current; + /**< Current dictionary of this layout type */ + RtDictEntryAddRefCallBack *addRefCB; + /**< Callback used to register that the dictionary has a reference to an entry */ + RtDictEntryDestroyCallBack *destroyCB; + /**< Callback used to register that the dictionary no longer has a reference to an entry */ + RtDictEntryGetNameCallBack *getNameCB; + /**< Callback used to obtain the name of an entry */ + RtDictEntryStreamGetSizeCallBack *streamGetSizeCB; + /**< Callback used to obtain the size of an entry */ + RtDictEntryStreamReadCallBack *streamReadCB; + /**< Callback used to stream in an entry */ + RtDictStreamReadCompatibilityCallBack *streamReadCompatibilityCB; + /**< Callback used to stream in an old version of the dictionary. For internal use; may be set to NULL */ + RtDictEntryStreamWriteCallBack *streamWriteCB; + /**< Callback used to stream out an entry */ +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/rw/rtquat.h b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rtquat.h new file mode 100644 index 00000000..a8bd3212 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rtquat.h @@ -0,0 +1,73 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +/* + * Data structures for Quaternions + * See http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Hamilton.html + * + * Copyright (c) Criterion Software Limited + */ + +/** + * \defgroup rtquat RtQuat + * \ingroup mathtools + * + * Quaternion Toolkit for RenderWare. + * + * See also http://www.gamasutra.com/features/19980703/quaternions_01.htm + */ + +/* + * See http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Hamilton.html + * On 16 October 1843 (a Monday) Hamilton was walking in along the Royal + * Canal with his wife to preside at a Council meeting of the Royal Irish + * Academy. + * + * Although his wife talked to him now and again Hamilton hardly + * heard, for the discovery of the quaternions, the first noncommutative + * algebra to be studied, was taking shape in his mind:- + * + * "And here there dawned on me the notion that we must admit, in + * some sense, a fourth dimension of space for the purpose of calculating + * with triples ... An electric circuit seemed to close, and a spark + * flashed forth." + */ + + +/**************************************************************************** + Includes + */ + +#include +/* renderware */ +#include "rwcore.h" + +#define RW_TOL_ORTHONORMAL ((RwReal)0.01) + +/**************************************************************************** + Global Types + */ + + +typedef struct RtQuat RtQuat; +/** + * \ingroup rtquat + * \struct RtQuat + * A structure describing a Quaternion + * +*/ +struct RtQuat +{ + RwV3d imag; /**< The imaginary part(s) */ + RwReal real; /**< The real part */ +}; + +/* + * Backwards compatibility code + */ + +typedef RtQuat RpQuat; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/rw/rwcore.h b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rwcore.h new file mode 100644 index 00000000..7bc210a7 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rwcore.h @@ -0,0 +1,2476 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +/******************************************/ +/* */ +/* RenderWare(TM) Graphics Library */ +/* */ +/******************************************/ + +/* + * This file is a product of Criterion Software Ltd. + * + * This file is provided as is with no warranties of any kind and is + * provided without any obligation on Criterion Software Ltd. + * or Canon Inc. to assist in its use or modification. + * + * Criterion Software Ltd. and Canon Inc. will not, under any + * circumstances, be liable for any lost revenue or other damages + * arising from the use of this file. + * + * Copyright (c) 1999. Criterion Software Ltd. + * All Rights Reserved. + */ + +/************************************************************************* + * + * Filename: + * Automatically Generated on: Fri Oct 03 09:52:43 2003 + * + ************************************************************************/ + +/*--- System Header Files ---*/ +#include "rwplcore.h" + + +/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2resort.h ---*/ + +/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2macros.h ---*/ + +/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2heap.h ---*/ + +#if (defined(RWDEBUG) && (defined(RWMEMDEBUG))) + +#if (!defined(DISABLERWHEAP)) +#define DISABLERWHEAP +#endif /* (!defined(DISABLERWHEAP)) */ + +#endif /* (defined(RWDEBUG) && (defined(RWMEMDEBUG))) */ + +typedef struct rxHeapFreeBlock rxHeapFreeBlock; +typedef struct rxHeapSuperBlockDescriptor rxHeapSuperBlockDescriptor; +typedef struct RxHeap RxHeap; +typedef struct rxHeapBlockHeader rxHeapBlockHeader; + +#if (!defined(DOXYGEN)) +struct rxHeapFreeBlock +{ + RwUInt32 size; + rxHeapBlockHeader *ptr; +}; + +struct rxHeapSuperBlockDescriptor +{ + void *start; + RwUInt32 size; + rxHeapSuperBlockDescriptor *next; +}; +#endif /* (!defined(DOXYGEN)) */ + +/** + * \ingroup rwcoregeneric + * \struct RxHeap + * structure describing a pipeline execution heap + */ +struct RxHeap +{ + RwUInt32 superBlockSize; /**< Granularity of heap growth */ + rxHeapSuperBlockDescriptor *head; /**< Internally used superblock pointer */ + rxHeapBlockHeader *headBlock; /**< Internally used block pointer */ + rxHeapFreeBlock *freeBlocks; /**< Internally used free blocks pointer */ + RwUInt32 entriesAlloced; /**< Number of entries allocated */ + RwUInt32 entriesUsed; /**< Number of entries used */ + RwBool dirty; /**< Internally used boolean, flags whether + * the heap needs resetting or not. */ +}; + +#if (!defined(DOXYGEN)) +struct rxHeapBlockHeader +{ + /* present in all blocks (used & unused) */ + rxHeapBlockHeader *prev, *next; + RwUInt32 size; + rxHeapFreeBlock *freeEntry; /* (or null) */ + RwUInt32 pad[4]; /* alignment padding to 32 bytes */ +}; +#endif /* (!defined(DOXYGEN)) */ + +#if (defined(DISABLERWHEAP)) + +typedef struct rxHeapMallocTrace rxHeapMallocTrace; +struct rxHeapMallocTrace +{ + rxHeapMallocTrace *next; + rxHeapBlockHeader *block; +}; + +#endif /* (defined(DISABLERWHEAP)) */ + + +/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2dep.h ---*/ + +/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2core.h ---*/ + +/* Beneficial padding of PowerPipe types is still being worked out... */ +#define PADCLUSTERSx + + +/************************************************************* + * Global Defines + */ + +#define RWBOOLTOGGLE(bVar) ((bVar == FALSE)?(bVar = TRUE):(bVar = FALSE)) + +/* Both these currently limited due to the use of RwUInt32 bit-fields */ +#define RXNODEMAXCLUSTERSOFINTEREST 32 +#define RXNODEMAXOUTPUTS 32 + +/* Useful (for memory alloc) to limit this during pipeline construction */ +#define RXPIPELINEDEFAULTMAXNODES 64 + +/* + * Cluster flags + */ + +#define rxCLFLAGS_NULL ((RwUInt16) 0x0000U) +#define rxCLFLAGS_CLUSTERVALID ((RwUInt16) 0x0001U) +#define rxCLFLAGS_EXTERNAL ((RwUInt16) 0x0002U) +#define rxCLFLAGS_EXTERNALMODIFIABLE ((RwUInt16) 0x0004U | 0x0002U) +#define rxCLFLAGS_MODIFIED ((RwUInt16) 0x0008U) + +/* + * Packet flags + */ + +#define rxPKFLAGS_NULL ((RwUInt16) 0x0000U) + +/* + * used in input specification + */ + +/** + * \ingroup rwcoregeneric + * \ref RxClusterValidityReq + * Flags specifying the state requirements for + * a \ref RxCluster on entry to a node */ +enum RxClusterValidityReq +{ + rxCLREQ_DONTWANT = 0, /** + *
  • The pixel color format corresponding to one of the following values: + *
      + *
    • rwRASTERFORMAT1555 + *
    • rwRASTERFORMAT565 + *
    • rwRASTERFORMAT4444 + *
    • rwRASTERFORMATLUM8 + *
    • rwRASTERFORMAT8888 + *
    • rwRASTERFORMAT888 + *
    • rwRASTERFORMAT16 + *
    • rwRASTERFORMAT24 + *
    • rwRASTERFORMAT32 + *
    • rwRASTERFORMAT555 + *
    + * This value may be masked out of the raster format using + * rwRASTERFORMATPIXELFORMATMASK. + *
  • The palette depth if the raster is palettized: + *
      + *
    • rwRASTERFORMATPAL4 + *
    • rwRASTERFORMATPAL8 + *
    + * In these cases, the color format refers to that of the palette. + *
  • Flag rwRASTERFORMATMIPMAP. Set if the raster contains mipmap levels. + *
  • Flag rwRASTERFORMATAUTOMIPMAP. Set if the mipmap levels were generated + * automatically by RenderWare. + * + */ +enum RwRasterFormat +{ + rwRASTERFORMATDEFAULT = 0x0000, /* Whatever the hardware likes best */ + + rwRASTERFORMAT1555 = 0x0100, /**<16 bits - 1 bit alpha, 5 bits red, green and blue */ + rwRASTERFORMAT565 = 0x0200, /**<16 bits - 5 bits red and blue, 6 bits green */ + rwRASTERFORMAT4444 = 0x0300, /**<16 bits - 4 bits per component */ + rwRASTERFORMATLUM8 = 0x0400, /**objVertex) +#define RxObjSpace3DVertexSetPos(_vert, _pos) \ + ((_vert)->objVertex = *(_pos)) + +/* Pre-lighting colours */ +#define RxObjSpace3DVertexGetPreLitColor(_vert, _col) \ +MACRO_START \ +{ \ + (_col)->alpha = (RwUInt8)((_vert)->color >> 24) & 0xFF; \ + (_col)->red = (RwUInt8)((_vert)->color >> 16) & 0xFF; \ + (_col)->green = (RwUInt8)((_vert)->color >> 8) & 0xFF; \ + (_col)->blue = (RwUInt8)((_vert)->color ) & 0xFF; \ +} \ +MACRO_STOP + +#define RxObjSpace3DVertexSetPreLitColor(_vert, _col) \ + ((_vert)->color = (((RwUInt32)(_col)->alpha) << 24) | \ + (((RwUInt32)(_col)->red) << 16) | \ + (((RwUInt32)(_col)->green) << 8) | \ + (((RwUInt32)(_col)->blue) )) + +/* This uses the same slot as color (they are mutually exclusive) */ +#define RxObjSpace3DVertexGetColor RxObjSpace3DVertexGetPreLitColor + +/* Normals */ +#define RxObjSpace3DVertexGetNormal(_vert, _normal) \ + (*(_normal) = (_vert)->objNormal) +#define RxObjSpace3DVertexSetNormal(_vert, _normal) \ + ((_vert)->objNormal = *(_normal)) + +/* Us and Vs */ +#define RxObjSpace3DVertexGetU(_vert) \ + ((_vert)->u) +#define RxObjSpace3DVertexGetV(_vert) \ + ((_vert)->v) +#define RxObjSpace3DVertexSetU(_vert, _imu) \ + ((_vert)->u = (_imu)) +#define RxObjSpace3DVertexSetV(_vert, _imv) \ + ((_vert)->v = (_imv)) + +/**************************************************************************** + Object-space 3D lit vertex macros + */ + +/* Vertex positions */ +#define RxObjSpace3DLitVertexGetPos(_vert, _pos) \ + (*(_pos) = (_vert)->objVertex) +#define RxObjSpace3DLitVertexSetPos(_vert, _pos) \ + ((_vert)->objVertex = *(_pos)) + +/* Vertex colours */ +#define RxObjSpace3DLitVertexGetColor(_vert, _col) \ +MACRO_START \ +{ \ + (_col)->red = ((_vert)->color >> 16) & 0xFF; \ + (_col)->green = ((_vert)->color >> 8) & 0xFF; \ + (_col)->blue = ((_vert)->color ) & 0xFF; \ + (_col)->alpha = ((_vert)->color >> 24) & 0xFF; \ +} \ +MACRO_STOP +#define RxObjSpace3DLitVertexSetColor(_vert, _col) \ + ((_vert)->color = (((RwUInt32)(_col)->alpha) << 24) | \ + (((RwUInt32)(_col)->red) << 16) | \ + (((RwUInt32)(_col)->green) << 8) | \ + (((RwUInt32)(_col)->blue) )) + +/* Us and Vs */ +#define RxObjSpace3DLitVertexGetU(_vert) \ + ((_vert)->u) +#define RxObjSpace3DLitVertexGetV(_vert) \ + ((_vert)->v) +#define RxObjSpace3DLitVertexSetU(_vert, _imu) \ + ((_vert)->u = (_imu)) +#define RxObjSpace3DLitVertexSetV(_vert, _imv) \ + ((_vert)->v = (_imv)) + +/* LEGACY-SUPPORT for old objvert names - NB does NOT guarantee the + * app will work, because the old IM3DVERTEX macros are NOT correctly + * abstracted - 'Get' will return pointers to RwV3ds inside the + * ObjVert, but you can't assume there are any RwV3ds inside an + * opaque vertex type */ + +#define RwIm3DVertexSetU RxObjSpace3DLitVertexSetU +#define RwIm3DVertexSetV RxObjSpace3DLitVertexSetV +#define RwIm3DVertexGetNext(_vert) ((_vert) + 1) + +#define RwIm2DCameraVertexSetU(_devvert, _camvert, _u, _recipz) \ +MACRO_START \ +{ \ + RwReal _uTmp = _u; \ + _camvert->u = _uTmp; \ + RwIm2DVertexSetU(_devvert, _uTmp, _recipz); \ +} \ +MACRO_STOP +#define RwIm2DCameraVertexSetV(_devvert, _camvert, _v, _recipz) \ +MACRO_START \ +{ \ + RwReal _vTmp = _v; \ + _camvert->v = _vTmp; \ + RwIm2DVertexSetV(_devvert, _vTmp, _recipz); \ +} \ +MACRO_STOP + +#define RwIm3DVertexSetPos(_vert, _imx, _imy, _imz) \ +MACRO_START \ +{ \ + (_vert)->objVertex.x = _imx; \ + (_vert)->objVertex.y = _imy; \ + (_vert)->objVertex.z = _imz; \ +} \ +MACRO_STOP + +#define RwIm3DVertexSetNormal(vert, imx, imy, imz) \ +MACRO_START \ +{ \ + RwV3d packed; \ + packed.x = imx; \ + packed.y = imy; \ + packed.z = imz; \ + RxObjSpace3DVertexSetNormal(vert, &packed); \ +} \ +MACRO_STOP + +#define RwIm3DVertexSetRGBA(_vert, _r, _g, _b, _a) \ +MACRO_START \ +{ \ + ((_vert)->color = ((_a) << 24) | \ + ((_r) << 16) | \ + ((_g) << 8) | \ + ((_b))); \ +} \ +MACRO_STOP + +#define RwIm3DVertexGetPos(_vert) (&((_vert)->objVertex)) +#define RwIm3DVertexGetNormal(vert) (&((vert)->objNormal)) + +#define RwIm3DVertexCopyRGBA(_dst, _src) (((_dst)->color) = ((_src)->color)) + + +/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2renderstate.h ---*/ + +/** + * \ingroup rwcoregeneric + * RxRenderStateFlag + * Flags used in the \ref RxRenderStateVector structure */ +enum RxRenderStateFlag +{ + rxRENDERSTATEFLAG_TEXTUREPERSPECTIVE = 0x00000001, /**stride = (_stride)), (_image)) + +#define RwImageSetPixelsMacro(_image, _pixels) \ + (((_image)->cpPixels = (_pixels)), (_image)) + +#define RwImageSetPaletteMacro(_image, _palette) \ + (((_image)->palette = (_palette)), (_image)) + +#define RwImageGetWidthMacro(_image) \ + ((_image)->width) + +#define RwImageGetHeightMacro(_image) \ + ((_image)->height) + +#define RwImageGetDepthMacro(_image) \ + ((_image)->depth) + +#define RwImageGetStrideMacro(_image) \ + ((_image)->stride) + +#define RwImageGetPixelsMacro(_image) \ + ((_image)->cpPixels) + +#define RwImageGetPaletteMacro(_image) \ + ((_image)->palette) + + +#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) + +#define RwImageSetStride(_image, _stride) \ + RwImageSetStrideMacro(_image, _stride) + +#define RwImageSetPixels(_image, _pixels) \ + RwImageSetPixelsMacro(_image, _pixels) + +#define RwImageSetPalette(_image, _palette) \ + RwImageSetPaletteMacro(_image, _palette) + +#define RwImageGetWidth(_image) \ + RwImageGetWidthMacro(_image) + +#define RwImageGetHeight(_image) \ + RwImageGetHeightMacro(_image) + +#define RwImageGetDepth(_image) \ + RwImageGetDepthMacro(_image) + +#define RwImageGetStride(_image) \ + RwImageGetStrideMacro(_image) + +#define RwImageGetPixels(_image) \ + RwImageGetPixelsMacro(_image) + +#define RwImageGetPalette(_image) \ + RwImageGetPaletteMacro(_image) + +#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */ + +/**************************************************************************** + Function prototypes + */ + +/*--- Automatically derived from: C:/daily/rwsdk/driver/common/palquant.h ---*/ + +/**************************************************************************** + Defines + */ + +#define RWPALQUANT_MAXDEPTH 8 +#define RWPALQUANT_MAXCOLOR (1<raster) + +#define RwTextureAddRefMacro(_tex) \ + (((_tex)->refCount++), (_tex)) + +#define RwTextureAddRefVoidMacro(_tex) \ +MACRO_START \ +{ \ + (_tex)->refCount++; \ +} \ +MACRO_STOP + +#define RwTextureGetNameMacro(_tex) \ + ((_tex)->name) + +#define RwTextureGetMaskNameMacro(_tex) \ + ((_tex)->mask) + +#define RwTextureGetDictionaryMacro(_tex) \ + ((_tex)->dict) + +#define RwTextureSetFilterModeMacro(_tex, _filtering) \ + (((_tex)->filterAddressing = \ + ((_tex)->filterAddressing & ~rwTEXTUREFILTERMODEMASK) | \ + (((RwUInt32)(_filtering)) & rwTEXTUREFILTERMODEMASK)), \ + (_tex)) + +#define RwTextureGetFilterModeMacro(_tex) \ + ((RwTextureFilterMode)((_tex)->filterAddressing & \ + rwTEXTUREFILTERMODEMASK)) + +#define RwTextureSetAddressingMacro(_tex, _addressing) \ + (((_tex)->filterAddressing = \ + ((_tex)->filterAddressing & ~rwTEXTUREADDRESSINGMASK) | \ + (((((RwUInt32)(_addressing)) << 8) & rwTEXTUREADDRESSINGUMASK) | \ + ((((RwUInt32)(_addressing)) << 12) & rwTEXTUREADDRESSINGVMASK))), \ + (_tex)) + +#define RwTextureSetAddressingUMacro(_tex, _addressing) \ + (((_tex)->filterAddressing = \ + ((_tex)->filterAddressing & ~rwTEXTUREADDRESSINGUMASK) | \ + (((RwUInt32)(_addressing) << 8) & rwTEXTUREADDRESSINGUMASK)), \ + (_tex)) + +#define RwTextureSetAddressingVMacro(_tex, _addressing) \ + (((_tex)->filterAddressing = \ + ((_tex)->filterAddressing & ~rwTEXTUREADDRESSINGVMASK) | \ + (((RwUInt32)(_addressing) << 12) & rwTEXTUREADDRESSINGVMASK)), \ + (_tex)) + +#define RwTextureGetAddressingMacro(_tex) \ + (((((_tex)->filterAddressing & rwTEXTUREADDRESSINGUMASK) >> 8) == \ + (((_tex)->filterAddressing & rwTEXTUREADDRESSINGVMASK) >> 12)) ? \ + ((RwTextureAddressMode)(((_tex)->filterAddressing & \ + rwTEXTUREADDRESSINGVMASK) >> 12)) : \ + rwTEXTUREADDRESSNATEXTUREADDRESS) + +#define RwTextureGetAddressingUMacro(_tex) \ + ((RwTextureAddressMode)(((_tex)->filterAddressing & \ + rwTEXTUREADDRESSINGUMASK) >> 8)) + +#define RwTextureGetAddressingVMacro(_tex) \ + ((RwTextureAddressMode)(((_tex)->filterAddressing & \ + rwTEXTUREADDRESSINGVMASK) >> 12)) + + +#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) + +#define RwTextureGetRaster(_tex) \ + RwTextureGetRasterMacro(_tex) + +#define RwTextureAddRef(_tex) \ + RwTextureAddRefMacro(_tex) + +#define RwTextureGetName(_tex) \ + RwTextureGetNameMacro(_tex) + +#define RwTextureGetMaskName(_tex) \ + RwTextureGetMaskNameMacro(_tex) + +#define RwTextureGetDictionary(_tex) \ + RwTextureGetDictionaryMacro(_tex) + +#define RwTextureSetFilterMode(_tex, _filtering) \ + RwTextureSetFilterModeMacro(_tex, _filtering) + +#define RwTextureGetFilterMode(_tex) \ + RwTextureGetFilterModeMacro(_tex) + +#define RwTextureSetAddressing(_tex, _addressing) \ + RwTextureSetAddressingMacro(_tex, _addressing) + +#define RwTextureSetAddressingU(_tex, _addressing) \ + RwTextureSetAddressingUMacro(_tex, _addressing) + +#define RwTextureSetAddressingV(_tex, _addressing) \ + RwTextureSetAddressingVMacro(_tex, _addressing) + +#define RwTextureGetAddressing(_tex) \ + RwTextureGetAddressingMacro(_tex) + +#define RwTextureGetAddressingU(_tex) \ + RwTextureGetAddressingUMacro(_tex) + +#define RwTextureGetAddressingV(_tex) \ + RwTextureGetAddressingVMacro(_tex) + +#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */ + +/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2stdcls.h ---*/ + +/* + * Current: + * + * wait on Simon for instructions to do cluster renaming thing, + * or go thru and change all cluster type names and cluster + * names (add CSL?) + * + */ + +/* CamVerts.csl */ + +/* clip flags */ + +/** + * \ingroup rwcoregeneric + * \ref RwClipFlag + * Flags specifying the clipping status of a vertex + */ +enum RwClipFlag +{ + rwXLOCLIP = 0x01, /**col.red = (r)); \ + ((camvert)->col.green = (g)); \ + ((camvert)->col.blue = (b)); \ + ((camvert)->col.alpha = (a)); \ +} \ +MACRO_STOP + +#define RxCamSpace3DVertexAddRGBA(camvert, r, g, b, a) \ +MACRO_START \ +{ \ + ((camvert)->col.red += (r)); \ + ((camvert)->col.green += (g)); \ + ((camvert)->col.blue += (b)); \ + ((camvert)->col.alpha += (a)); \ +} \ +MACRO_STOP + +/* LEGACY-SUPPORT macros */ +#define RXCAMSPACE3DVERTEXSetRGBA(camvert, r, g, b, a) \ + RxCamSpace3DVertexSetRGBA(camvert, r, g, b, a) +#define RXCAMSPACE3DVERTEXAddRGBA(camvert, r, g, b, a) \ + RxCamSpace3DVertexAddRGBA(camvert, r, g, b, a) + +/* MeshState.csl */ + + +/** + * \ingroup rwcoregeneric + * \ref RxGeometryFlag + * Flags describing geometry properties + */ +enum RxGeometryFlag +{ + rxGEOMETRY_TRISTRIP = 0x01, /**=1000) +# pragma pack(push, 1) +# endif /* (_MSC_VER>=1000) */ +#endif /* (defined(_MSC_VER)) */ + +typedef struct RxVStep RxVStep; +/** + * \ingroup rwcoregeneric + * \struct RxVStep + * Structure used by the RxClVStep cluster. + * To use the step values in the RxClVStep cluster, start at the beginning + * of the RxVStep and vertex arrays and proceed as follows: (a) Process one + * vertex, (b) Skip 'step' vertices, (c) Increment the cursor of the RxClVStep + * cluster. Repeat (a)-(c) until the entire vertex array has been processed. + * If the RxVStep array contains valid data, you should not have to bounds-check + * its cursor. + */ +struct RxVStep +{ + RwUInt8 step; /**< \ref RwUInt8 The number of vertices after the current one + * which can be skipped in lighting and other calculations because, + * for example, they belong only to back-facing triangles */ +}; + +#if (defined(_MSC_VER)) +# if (_MSC_VER>=1000) +# pragma pack(pop) +# endif /* (_MSC_VER>=1000) */ +#endif /* (defined(_MSC_VER)) */ + +/* CamNorms.csl */ +/** + * \ingroup rwcoregeneric + * \ref RxCamNorm + * typedef for \ref RwV3d used by the RxClVStep cluster */ +typedef RwV3d RxCamNorm; + +/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/baim3d.h ---*/ + +/** + * \ingroup rwim3d + * RwIm3DTransformFlags + * The bit-field type RwIm3DTransformFlags + * specifies options available for controlling execution of the 3D immediate + * mode pipeline (see API function \ref RwIm3DTransform):*/ +enum RwIm3DTransformFlags +{ + rwIM3D_VERTEXUV = 1, /**modelling) +#if (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )) +#define RwFrameGetMatrix(_f) RwFrameGetMatrixMacro(_f) +#endif + +/*--- Automatically derived from: C:/daily/rwsdk/src/batypehf.h ---*/ + +typedef struct RwObjectHasFrame RwObjectHasFrame; +typedef RwObjectHasFrame * (*RwObjectHasFrameSyncFunction)(RwObjectHasFrame *object); + +#if (!defined(DOXYGEN)) +struct RwObjectHasFrame +{ + RwObject object; + RwLLLink lFrame; + RwObjectHasFrameSyncFunction sync; +}; +#endif /* (!defined(DOXYGEN)) */ + + +/* ObjectHASFRAME METHODS */ +#define rwObjectHasFrameInitialize(o, type, subtype, syncFunc) \ +MACRO_START \ +{ \ + rwObjectInitialize(o, type, subtype); \ + ((RwObjectHasFrame *)o)->sync = syncFunc; \ +} \ +MACRO_STOP + +#define rwObjectHasFrameSync(o) \ + ((RwObjectHasFrame *)(o))->sync(o) + +/*--- Automatically derived from: C:/daily/rwsdk/src/basync.h ---*/ + +/*--- Automatically derived from: C:/daily/rwsdk/src/babintex.h ---*/ +/**************************************************************************** + Global types + */ +typedef struct rpTextureChunkInfo RwTextureChunkInfo; + +#if (!defined(DOXYGEN)) +struct rpTextureChunkInfo +{ + RwTextureFilterMode filtering; + RwTextureAddressMode addressingU; + RwTextureAddressMode addressingV; +}; +#endif /* (!defined(DOXYGEN)) */ + +/* Bit flags defining properties of textures when stream */ +enum RwTextureStreamFlags +{ + rwNATEXTURESTREAMFLAG = 0x00, + rwTEXTURESTREAMFLAGSUSERMIPMAPS = 0x01, + rwTEXTURESTREAMFLAGSFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; +typedef enum RwTextureStreamFlags RwTextureStreamFlags; + +/*--- Automatically derived from: C:/daily/rwsdk/src/babinfrm.h ---*/ +/**************************************************************************** + Global types + */ + +typedef struct rwFrameList rwFrameList; + +#if (!defined(DOXYGEN)) +struct rwFrameList +{ + RwFrame **frames; + RwInt32 numFrames; +}; +#endif /* (!defined(DOXYGEN)) */ + +/*--- Automatically derived from: C:/daily/rwsdk/src/babbox.h ---*/ +/**************************************************************************** + Global types + */ + +typedef struct RwBBox RwBBox; +/** + * \ingroup rwbbox + * \struct RwBBox + * This type represents a 3D axis-aligned bounding-box + * specified by the positions of two corners which lie on a diagonal. + * Typically used to specify a world bounding-box when the world is created + * + * \param sup Supremum vertex (contains largest values) + * \param inf Infimum vertex (contains smallest values) + * + * \see RpWorldCreate + */ +struct RwBBox +{ + /* Must be in this order */ + RwV3d sup; /**< Supremum vertex. */ + RwV3d inf; /**< Infimum vertex. */ +}; + +#if (!defined(RwBBoxAssign)) +#define RwBBoxAssign(_target, _source) \ + ( *(_target) = *(_source) ) +#endif /* (!defined(RwBBoxAssign)) */ + +/*--- Automatically derived from: C:/daily/rwsdk/src/bacamera.h ---*/ + +/**************************************************************************** + Defines + */ + +/* Type ID */ +#define rwCAMERA 4 + + +/**************************************************************************** + Global Types + */ + +/** + * \ingroup rwcamera + * RwCameraClearMode + * Camera clear flags */ +enum RwCameraClearMode +{ + rwCAMERACLEARIMAGE = 0x1, /**var) + +/*--- Automatically derived from: C:/daily/rwsdk/src/babincam.h ---*/ +/**************************************************************************** + Global types + */ + +/* Camera stream format */ + +/** + * \ingroup rwcamera + * \ref RwCameraChunkInfo is typedef'd to a structure that holds camera + * data. This should be considered an opaque type. Use the RwCamera + * API functions to access it. + */ + +typedef struct rwStreamCamera RwCameraChunkInfo; +typedef struct rwStreamCamera rwStreamCamera; + +#if (!defined(DOXYGEN)) +struct rwStreamCamera +{ + RwV2d viewWindow; + RwV2d viewOffset; + RwReal nearPlane, farPlane; + RwReal fogPlane; + RwUInt32 projection; +}; +#endif /* (!defined(DOXYGEN)) */ diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/rw/rwplcore.h b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rwplcore.h new file mode 100644 index 00000000..fa2aeade --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/rw/rwplcore.h @@ -0,0 +1,4913 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +/******************************************/ +/* */ +/* RenderWare(TM) Graphics Library */ +/* */ +/******************************************/ + +/* + * This file is a product of Criterion Software Ltd. + * + * This file is provided as is with no warranties of any kind and is + * provided without any obligation on Criterion Software Ltd. + * or Canon Inc. to assist in its use or modification. + * + * Criterion Software Ltd. and Canon Inc. will not, under any + * circumstances, be liable for any lost revenue or other damages + * arising from the use of this file. + * + * Copyright (c) 1999. Criterion Software Ltd. + * All Rights Reserved. + */ + +/************************************************************************* + * + * Filename: + * Automatically Generated on: Fri Oct 03 09:52:43 2003 + * + ************************************************************************/ + +/*--- System Header Files ---*/ +#include +#include +#include +#include + + +/*--- Automatically derived from: C:/daily/rwsdk/os/win/ostypes.h ---*/ +#ifndef WIN_OSTYPES_H +#define WIN_OSTYPES_H + +#define rwLITTLEENDIAN /* This is a little endian machine */ + +typedef long RwFixed; +typedef int RwInt32; +typedef unsigned int RwUInt32; +typedef short RwInt16; +typedef unsigned short RwUInt16; +typedef unsigned char RwUInt8; +typedef signed char RwInt8; + +#ifdef RWUNICODE +typedef wchar_t RwChar; +#else /* RWUNICODE */ +typedef char RwChar; +#endif /* RWUNICODE */ +typedef float RwReal; +typedef RwInt32 RwBool; + +#if defined(_MSC_VER) +typedef long long RwInt64; +typedef unsigned long long RwUInt64; +#define RWZERO64 ((RwUInt64)0) +#elif defined(__GNUC__) +typedef long long RwInt64; +typedef unsigned long long RwUInt64; +#define RWZERO64 ((RwUInt64)0) +#else /* defined(_MSC_VER) || defined(__GNUC__) */ + +typedef struct _RwUInt64 RwUInt64; +typedef struct _RwInt64 RwInt64; + +/* We'll do it with structures (can't do maths on these, but OK for allocation): */ +#if (!defined(DOXYGEN)) +#ifdef rwBIGENDIAN +struct _RwUInt64 +{ + RwUInt32 top; + RwUInt32 bottom; +}; + +struct _RwInt64 +{ + RwInt32 top; + RwUInt32 bottom; +}; + +#else /* rwBIGENDIAN */ +#ifdef rwLITTLEENDIAN +struct _RwUInt64 +{ + RwUInt32 bottom; + RwUInt32 top; +}; + +struct _RwInt64 +{ + RwUInt32 bottom; + RwInt32 top; +}; + +#else /* rwLITTLEENDIAN */ +#error "ENDIAN-ness undefined!" +#endif /* rwLITTLEENDIAN */ +#endif /* rwBIGENDIAN */ +#endif /* (!defined(DOXYGEN)) */ + +#define RWZERO64 { (RwUInt32)0, (RwUInt32)0 } +#endif /* defined(_MSC_VER) || defined(__GNUC__) */ + +typedef struct _RwUInt128 RwUInt128; +typedef struct _RwInt128 RwInt128; + +/* We'll do it with structures + * (can't do maths on these, but OK for allocation): */ +#if (!defined(DOXYGEN)) +#ifdef rwBIGENDIAN +struct _RwUInt128 +{ + RwUInt64 top; + RwUInt64 bottom; +}; + +struct _RwInt128 +{ + RwInt64 top; + RwUInt64 bottom; +}; + +#else /* rwBIGENDIAN */ +#ifdef rwLITTLEENDIAN +struct _RwUInt128 +{ + RwUInt64 bottom; + RwUInt64 top; +}; + +struct _RwInt128 +{ + RwUInt64 bottom; + RwInt64 top; +}; + +#else /* rwLITTLEENDIAN */ +#error "ENDIAN-ness undefined!" +#endif /* rwLITTLEENDIAN */ +#endif /* rwBIGENDIAN */ +#endif /* (!defined(DOXYGEN)) */ + +#define RWZERO128 { RWZERO64, RWZERO64 } + +/* Limits of types */ +#define RwInt32MAXVAL 0x7FFFFFFF +#define RwInt32MINVAL 0x80000000 +#define RwUInt32MAXVAL 0xFFFFFFFF +#define RwUInt32MINVAL 0x00000000 +#define RwRealMAXVAL (RwReal)(3.40282347e+38) +#define RwRealMINVAL (RwReal)(1.17549435e-38) +#define RwInt16MAXVAL 0x7FFF +#define RwInt16MINVAL 0x8000 +#define RwUInt16MAXVAL 0xFFFF +#define RwUInt16MINVAL 0x0000 + +/* Structure alignment */ +#define RWALIGN(type, x) type /* nothing */ +#define rwMATRIXALIGNMENT sizeof(RwUInt32) +#define rwFRAMEALIGNMENT sizeof(RwUInt32) +#define rwV4DALIGNMENT sizeof(RwUInt32) + +#if (!defined(rwMALLOCALIGNMENT)) +#define rwMALLOCALIGNMENT sizeof(RwUInt32) +#endif /* (!defined(rwMALLOCALIGNMENT) */ + +#if (defined(_MSC_VER)) + +#include +/* + * Keep true calls to these functions since + * some x86 runtime libraries do not support _CIpow() etc + */ +#pragma function( acos, asin, cosh, fmod, pow, sinh , tanh ) + +#if (!defined(RWINT32FROMFLOAT)) + +static __inline RwInt32 +int32fromreal(RwReal x) +{ + RwInt16 savemode; + RwInt16 workmode; + RwInt32 res; + + _asm + { + fnstcw savemode ; get fpu mode + fld dword ptr[x] ; load rwreal x + + mov ax,savemode ; put fpu mode in register + or ah,0ch ; or-in truncate mode + + mov workmode,ax ; make ready to set fpu mode + fldcw workmode ; set fpu to truncate mode + fistp dword ptr[res]; store the rwint32eger result + fldcw savemode ; restore fpu mode + } + + return res; +} +#define RwInt32FromRealMacro(x) int32fromreal(x) + +#endif /* (!defined(RWINT32FROMFLOAT)) */ + +#if (!defined(NOASM) && !defined(__GNUC__) && !defined(__clang__)) +static __inline RwUInt32 +RwFastRealToUInt32Inline(RwReal x) +{ + RwUInt32 res; + + __asm fld dword ptr[x]; + __asm fistp dword ptr[res]; + + return(res); +} + +#define RwFastRealToUInt32 RwFastRealToUInt32Inline + +#endif /* (defined(NOASM)) */ + +#endif /* (defined(_MSC_VER)) */ + +#endif /* WIN_OSTYPES_H */ + + +/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/bamath.h ---*/ + +/**************************************************************************** + Defines + */ + +#if (!defined(RwInt32FromRealMacro)) +#define RwInt32FromRealMacro(x) \ + ((RwInt32)(x)) +#endif /* (!defined(RwInt32FromRealMacro)) */ + +#if (!defined(RwFastRealToUInt32)) +#define RwFastRealToUInt32(_x) \ + ((RwUInt32)RwInt32FromRealMacro(((RwReal)(_x)))) +#endif /* (!defined(RwFastRealToUInt32)) */ + +/* + * Ensure inclusion of prototypes for single precison maths functions + * e.g. from + * /usr/local/sce/ee/gcc/ee/include/math.h + * /Program Files/Intel/Compiler4.0/include/mathf.h + */ + +#if (defined(__ICL)) + +#if (defined(RWVERBOSE)) + +/* + * See + * http://www.eskimo.com/~scs/C-faq/q11.17.html + */ + +#define _STRINGIFY(X) #X +#define _STRINGIFY_EXP(X) _STRINGIFY(X) + +#pragma message ("Intel Compiler Version " _STRINGIFY_EXP(__ICL) ":" __FILE__ "(" _STRINGIFY_EXP(__LINE__) ")\n") +#pragma comment ( user, "comment:" "Intel Compiler Version " _STRINGIFY_EXP(__ICL) ":" __FILE__ "(" _STRINGIFY_EXP(__LINE__) ")\n") + +#endif /* (defined(RWVERBOSE)) */ + +#if (400 <= __ICL) +#if (defined(__cplusplus)) +#define _INC_MATH +#endif /* (defined(__cplusplus)) */ +#include +#else /* (400 < __ICL) */ +#undef RW_USE_SPF +#endif /* (400 < __ICL) */ + +#endif /* (defined(__ICL)) */ + +#include + +#define _RW_C1 ( (float) 4.1666667908e-02 ) +#define _RW_C2 ( (float)-1.3888889225e-03 ) +#define _RW_C3 ( (float) 2.4801587642e-05 ) +#define _RW_C4 ( (float)-2.7557314297e-07 ) +#define _RW_C5 ( (float) 2.0875723372e-09 ) +#define _RW_C6 ( (float)-1.1359647598e-11 ) +#define _RW_S1 ( (float)-1.6666667163e-01 ) +#define _RW_S2 ( (float) 8.3333337680e-03 ) +#define _RW_S3 ( (float)-1.9841270114e-04 ) +#define _RW_S4 ( (float) 2.7557314297e-06 ) +#define _RW_S5 ( (float)-2.5050759689e-08 ) +#define _RW_S6 ( (float) 1.5896910177e-10 ) +#define _RW_one ( (float) 1.0000000000e+00 ) +#define _RW_pS0 ( (float) 1.6666667163e-01 ) +#define _RW_pS1 ( (float)-3.2556581497e-01 ) +#define _RW_pS2 ( (float) 2.0121252537e-01 ) +#define _RW_pS3 ( (float)-4.0055535734e-02 ) +#define _RW_pS4 ( (float) 7.9153501429e-04 ) +#define _RW_pS5 ( (float) 3.4793309169e-05 ) +#define _RW_pi ( (float) 3.1415925026e+00 ) +#define _RW_pi_tol ( (float) 0.0312500000e+00 ) +#define _RW_pio2_hi ( (float) 1.5707962513e+00 ) +#define _RW_pio2_lo ( (float) 7.5497894159e-08 ) +#define _RW_qS1 ( (float)-2.4033949375e+00 ) +#define _RW_qS2 ( (float) 2.0209457874e+00 ) +#define _RW_qS3 ( (float)-6.8828397989e-01 ) +#define _RW_qS4 ( (float) 7.7038154006e-02 ) + +#define RwCosMinusPiToPiMacro(result, x) \ +MACRO_START \ +{ \ + const float z = x * x; \ + const float r = ( z * (_RW_C1 + \ + z * (_RW_C2 + \ + z * (_RW_C3 + \ + z * (_RW_C4 + \ + z * (_RW_C5 + \ + z * _RW_C6)))))); \ + result = (_RW_one - ((float) 0.5 * z - (z * r ))); \ +} \ +MACRO_STOP + +#define RwSinMinusPiToPiMacro(result, x) \ +do \ +{ \ + const float z = x * x; \ + const float v = z * x; \ + const float r = ( _RW_S2 + \ + z * (_RW_S3 + \ + z * (_RW_S4 + \ + z * (_RW_S5 + \ + z * _RW_S6))) ); \ + result = x + v * (_RW_S1 + z * r); \ +} \ +while(0) + +typedef union _rwIEEEFloatShapeType _rwIEEEFloatShapeType; + +#if (!defined(DOXYGEN)) +union _rwIEEEFloatShapeType +{ + float value; + unsigned int word; +}; +#endif /* (!defined(DOXYGEN)) */ + +#define _RW_GET_FLOAT_WORD(i,d) \ +do { \ + _rwIEEEFloatShapeType gf_u; \ + gf_u.value = (d); \ + (i) = gf_u.word; \ +} while (0) + +/* Set a float from a 32 bit int. */ + +#define _RW_SET_FLOAT_WORD(d,i) \ +do { \ + _rwIEEEFloatShapeType sf_u; \ + sf_u.word = (i); \ + (d) = sf_u.value; \ +} while (0) + +#define RwIEEEACosfMacro(result, x) \ +do \ +{ \ + float z, p, q, r, w, s, c, df; \ + int hx, ix; \ + \ + _RW_GET_FLOAT_WORD(hx, x); \ + ix = hx & 0x7fffffff; \ + if (ix >= 0x3f800000) \ + { /* |x|>=1 */ \ + if (hx > 0) \ + { \ + /* acos(1) = 0 */ \ + result = (0.0); \ + } \ + else \ + { \ + /* acos(-1)= _RW_pi */ \ + result = (_RW_pi + (float) 2.0 * _RW_pio2_lo); \ + } \ + \ + } \ + else if (ix < 0x3f000000) \ + { /* |x| < 0.5 */ \ + if (ix <= 0x23000000) \ + { \ + /*if |x|<2**-57 */ \ + result = (_RW_pio2_hi + _RW_pio2_lo); \ + } \ + else \ + { \ + z = x * x; \ + p = z * (_RW_pS0 + \ + z * (_RW_pS1 + \ + z * (_RW_pS2 + \ + z * (_RW_pS3 + \ + z * (_RW_pS4 + z * _RW_pS5))))); \ + q = _RW_one + z * (_RW_qS1 + \ + z * (_RW_qS2 + \ + z * (_RW_qS3 + z * _RW_qS4))); \ + r = p / q; \ + result = (_RW_pio2_hi - (x - (_RW_pio2_lo - x * r))); \ + } \ + \ + } \ + else if (hx < 0) \ + { /* x < -0.5 */ \ + z = (_RW_one + x) * (float) 0.5; \ + p = z * (_RW_pS0 + \ + z * (_RW_pS1 + \ + z * (_RW_pS2 + \ + z * (_RW_pS3 + \ + z * (_RW_pS4 + z * _RW_pS5))))); \ + q = _RW_one + z * (_RW_qS1 + \ + z * (_RW_qS2 + z * (_RW_qS3 + z * _RW_qS4))); \ + rwSqrtMacro(&s, z); \ + r = p / q; \ + w = r * s - _RW_pio2_lo; \ + result = (_RW_pi - (float) 2.0 * (s + w)); \ + } \ + else \ + { /* x > 0.5 */ \ + int idf; \ + \ + z = (_RW_one - x) * (float) 0.5; \ + rwSqrtMacro(&s, z); \ + df = s; \ + _RW_GET_FLOAT_WORD(idf, df); \ + _RW_SET_FLOAT_WORD(df, idf & 0xfffff000); \ + c = (z - df * df) / (s + df); \ + p = z * (_RW_pS0 + \ + z * (_RW_pS1 + \ + z * (_RW_pS2 + \ + z * (_RW_pS3 + \ + z * (_RW_pS4 + z * _RW_pS5))))); \ + q = _RW_one + z * (_RW_qS1 + \ + z * (_RW_qS2 + z * (_RW_qS3 + z * _RW_qS4))); \ + r = p / q; \ + w = r * s + c; \ + result = ((float) 2.0 * (df + w)); \ + } \ +} \ +while(0) + +#if (defined(RW_USE_SPF)) + +#define RwACos(_x) acosf(_x) +#define RwACosh(_x) acoshf(_x) +#define RwASin(_x) asinf(_x) +#define RwASinh(_x) asinhf(_x) + +#if (!defined(__ICL)) +/* + * No SPF version in + * Program Files/Intel/compilerXXX/include/mathf.h + * of atan2() + */ +#define RwATan2(_x, _y) atan2f(_x, _y) +#endif /* (!defined(__ICL)) */ + +#define RwATan(_x) atanf(_x) +#define RwATanh(_x) atanhf(_x) +#define RwCabs() cabsf() +#define RwCbrt(_x) cbrtf(_x) +#define RwCeil(_x) ceilf(_x) +#define RwCopysign(_x, _y) copysignf(_x, _y) +#define RwCos(_x) cosf(_x) +#define RwCosh(_x) coshf(_x) +#define RwDrem(_x, _y) dremf(_x, _y) +#define RwErfc(_x) erfcf(_x) +#define RwErf(_x) erff(_x) +#define RwExp(_x) expf(_x) +#define RwExpm1(_x) expm1f(_x) +#define RwFinite(_x) finitef(_x) +#define RwIlogb(_x) ilogbf(_x) +#define RwIsinf(_x) isinff(_x) +#define RwIsnan(_x) isnanf(_x) +#define RwFabs(_x) fabsf(_x) +#define RwFloor(_x) floorf(_x) +#define RwFmod(_x, _y) fmodf(_x, _y) +#define RwFrexp(_x, _iptr) frexpf(_x, _iptr) +#define RwGamma(_x) gammaf(_x) +#define RwGammaf_(_x, _iptr) gammaf_r(_x, _iptr) +#define RwHypot(_x, _y) hypotf(_x, _y) +#define RwInfinity() infinityf() +#define RwJ0(_x) j0f(_x) +#define RwJ1(_x) j1f(_x) +#define RwJn(_i, _x) jnf(_i, _x) +#define RwLdexp(_x, _i) ldexpf(_x, _i) +#define RwLgamma(_x) lgammaf(_x) +#define RwLgammaf_(_x, _iptr) lgammaf_r(_x, _iptr) +#define RwLog10(_x) log10f(_x) +#define RwLog1p(_x) log1pf(_x) +#define RwLog(_x) logf(_x) +#define RwModf(_x, _y) modff(_x, _y) +#define RwNan() nanf() +#define RwNextafter(_x, _y) nextafterf(_x, _y) +#define RwPow(_x, _y) powf(_x, _y) +#define RwRemainder(_x, _y) remainderf(_x, _y) +#define RwRint(_x) rintf(_x) +#define RwScalbn(_x, _i) scalbnf(_x, _i) +#define RwSin(_x) sinf(_x) +#define RwSinh(_x) sinhf(_x) +/* rwSqrtMacro/rwInvSqrtMacro are overloaded in drvmodel.h + * (if they are at all) and wrapped as func/macro below */ +#define RwTan(_x) tanf(_x) +#define RwTanh(_x) tanhf(_x) +#define RwY0(_x) y0f(_x) +#define RwY1(_x) y1f(_x) +#define RwYn(_i, _x) ynf(_i, _x) + +#endif /* (defined(RW_USE_SPF)) */ + +#if (!defined(RwACos)) +#define RwACos(_x) acos(_x) +#endif /* (!defined(RwACos)) */ +#if (!defined(RwACosh)) +#define RwACosh(_x) acosh(_x) +#endif /* (!defined(RwACosh)) */ +#if (!defined(RwASin)) +#define RwASin(_x) asin(_x) +#endif /* (!defined(RwASin)) */ +#if (!defined(RwASinh)) +#define RwASinh(_x) asinh(_x) +#endif /* (!defined(RwASinh)) */ +#if (!defined(RwATan2)) +#define RwATan2(_x, _y) atan2(_x, _y) +#endif /* (!defined(RwATan2)) */ +#if (!defined(RwATan)) +#define RwATan(_x) atan(_x) +#endif /* (!defined(RwATan)) */ +#if (!defined(RwATanh)) +#define RwATanh(_x) atanh(_x) +#endif /* (!defined(RwATanh)) */ +#if (!defined(RwCabs)) +#define RwCabs() cabs() +#endif /* (!defined(RwCabs)) */ +#if (!defined(RwCbrt)) +#define RwCbrt(_x) cbrt(_x) +#endif /* (!defined(RwCbrt)) */ +#if (!defined(RwCeil)) +#define RwCeil(_x) ceil(_x) +#endif /* (!defined(RwCeil)) */ +#if (!defined(RwCopysign)) +#define RwCopysign(_x, _y) copysign(_x, _y) +#endif /* (!defined(RwCopysign)) */ +#if (!defined(RwCos)) +#define RwCos(_x) cos(_x) +#endif /* (!defined(RwCos)) */ +#if (!defined(RwCosh)) +#define RwCosh(_x) cosh(_x) +#endif /* (!defined(RwCosh)) */ +#if (!defined(RwDrem)) +#define RwDrem(_x, _y) drem(_x, _y) +#endif /* (!defined(RwDrem)) */ +#if (!defined(RwErfc)) +#define RwErfc(_x) erfc(_x) +#endif /* (!defined(RwErfc)) */ +#if (!defined(RwEr)) +#define RwEr(_x) erf(_x) +#endif /* (!defined(RwEr)) */ +#if (!defined(RwExp)) +#define RwExp(_x) exp(_x) +#endif /* (!defined(RwExp)) */ +#if (!defined(RwExpm1)) +#define RwExpm1(_x) expm1(_x) +#endif /* (!defined(RwExpm1)) */ +#if (!defined(RwFinite)) +#define RwFinite(_x) finite(_x) +#endif /* (!defined(RwFinite)) */ +#if (!defined(RwIlogb)) +#define RwIlogb(_x) ilogb(_x) +#endif /* (!defined(RwIlogb)) */ +#if (!defined(RwIsin)) +#define RwIsin(_x) isinf(_x) +#endif /* (!defined(RwIsin)) */ +#if (!defined(RwIsnan)) +#define RwIsnan(_x) isnan(_x) +#endif /* (!defined(RwIsnan)) */ +#if (!defined(RwFabs)) +#define RwFabs(_x) fabs(_x) +#endif /* (!defined(RwFabs)) */ +#if (!defined(RwFloor)) +#define RwFloor(_x) floor(_x) +#endif /* (!defined(RwFloor)) */ +#if (!defined(RwFmod)) +#define RwFmod(_x, _y) fmod(_x, _y) +#endif /* (!defined(RwFmod)) */ +#if (!defined(RwFrexp)) +#define RwFrexp(_x, _iptr) frexp(_x, _iptr) +#endif /* (!defined(RwFrexp)) */ +#if (!defined(RwGamma)) +#define RwGamma(_x) gamma(_x) +#endif /* (!defined(RwGamma)) */ +#if (!defined(RwGammaf_)) +#define RwGammaf_(_x, _iptr) gammaf_r(_x, _iptr) +#endif /* (!defined(RwGammaf_)) */ +#if (!defined(RwHypot)) +#define RwHypot(_x, _y) hypot(_x, _y) +#endif /* (!defined(RwHypot)) */ +#if (!defined(RwInfinity)) +#define RwInfinity() infinity() +#endif /* (!defined(RwInfinity)) */ +#if (!defined(RwJ0)) +#define RwJ0(_x) j0(_x) +#endif /* (!defined(RwJ0)) */ +#if (!defined(RwJ1)) +#define RwJ1(_x) j1(_x) +#endif /* (!defined(RwJ1)) */ +#if (!defined(RwJn)) +#define RwJn(_i, _x) jn(_i, _x) +#endif /* (!defined(RwJn)) */ +#if (!defined(RwLdexp)) +#define RwLdexp(_x, _i) ldexp(_x, _i) +#endif /* (!defined(RwLdexp)) */ +#if (!defined(RwLgamma)) +#define RwLgamma(_x) lgamma(_x) +#endif /* (!defined(RwLgamma)) */ +#if (!defined(RwLgammaf_)) +#define RwLgammaf_(_x, _iptr) lgammaf_r(_x, _iptr) +#endif /* (!defined(RwLgammaf_)) */ +#if (!defined(RwLog10)) +#define RwLog10(_x) log10(_x) +#endif /* (!defined(RwLog10)) */ +#if (!defined(RwLog1p)) +#define RwLog1p(_x) log1p(_x) +#endif /* (!defined(RwLog1p)) */ +#if (!defined(RwLog)) +#define RwLog(_x) log(_x) +#endif /* (!defined(RwLog)) */ +#if (!defined(RwMod)) +#define RwMod(_x, _y) mod(_x, _y ) +#endif /* (!defined(RwMod)) */ +#if (!defined(RwNan)) +#define RwNan() nan() +#endif /* (!defined(RwNan)) */ +#if (!defined(RwNextafter)) +#define RwNextafter(_x, _y) nextafter(_x, _y) +#endif /* (!defined(RwNextafter)) */ +#if (!defined(RwPow)) +#define RwPow(_x, _y) pow(_x, _y) +#endif /* (!defined(RwPow)) */ +#if (!defined(RwRemainder)) +#define RwRemainder(_x, _y) remainder(_x, _y) +#endif /* (!defined(RwRemainder)) */ +#if (!defined(RwRint)) +#define RwRint(_x) rint(_x) +#endif /* (!defined(RwRint)) */ +#if (!defined(RwScalbn)) +#define RwScalbn(_x, _i) scalbn(_x, _i) +#endif /* (!defined(RwScalbn)) */ +#if (!defined(RwSin)) +#define RwSin(_x) sin(_x) +#endif /* (!defined(RwSin)) */ +#if (!defined(RwSinh)) +#define RwSinh(_x) sinh(_x) +#endif /* (!defined(RwSinh)) */ +#if (!defined(rwSqrt)) +/* NOTE: this is overloaded in drvmodel.h for some targets (SKY2 and XBOX atm) + * [we do in fact do overload w/ sqrtf there, if RW_USE_SPF, + * for D3D8, OpenGL and SoftRas] */ +#define rwSqrt(_result, _x) rwSqrtMacro(_result, _x) +#endif /* (!defined(rwSqrt)) */ +#if (!defined(rwInvSqrt)) +/* NOTE: this is overloaded in drvmodel.h for some targets (SKY2 and XBOX atm) + * [we do in fact do overload w/ (1 / sqrtf) there, if RW_USE_SPF, + * for D3D8, OpenGL and SoftRas] */ +#define rwInvSqrt(_recip, _x) rwInvSqrtMacro(_recip, _x) +#endif /* (!defined(rwInvSqrt)) */ +#if (!defined(RwTan)) +#define RwTan(_x) tan(_x) +#endif /* (!defined(RwTan)) */ +#if (!defined(RwTanh)) +#define RwTanh(_x) tanh(_x) +#endif /* (!defined(RwTanh)) */ +#if (!defined(RwY0)) +#define RwY0(_x) y0(_x) +#endif /* (!defined(RwY0)) */ +#if (!defined(RwY1)) +#define RwY1(_x) y1(_x) +#endif /* (!defined(RwY1)) */ +#if (!defined(RwYn)) +#define RwYn(_i, _x) yn(_i, _x) +#endif /* (!defined(RwYn)) */ + + +/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/batypes.h ---*/ +#define rwLIBRARYBASEVERSION 0x34000 +#define rwLIBRARYNOWARNVERSION 0x35000 +#define rwLIBRARYCURRENTVERSION 0x36003 + +#define rwLIBRARYVERSION34001 0x34001 +#if (rwLIBRARYVERSION34001 < rwLIBRARYBASEVERSION) +#error "Time to remove all rwLIBRARYVERSION34001 code" +#endif + +#define rwLIBRARYVERSION34002 0x34002 +#if (rwLIBRARYVERSION34002 < rwLIBRARYBASEVERSION) +#error "Time to remove all rwLIBRARYVERSION34002 code" +#endif + +#define rwLIBRARYVERSION34004 0x34004 +#if (rwLIBRARYVERSION34004 < rwLIBRARYBASEVERSION) +#error "Time to remove all rwLIBRARYVERSION34004 code" +#endif + +#define rwLIBRARYVERSION35000 0x35000 +#if (rwLIBRARYVERSION35000 < rwLIBRARYBASEVERSION) +#error "Time to remove all rwLIBRARYVERSION35000 code" +#endif + +#define rwLIBRARYVERSION36000 0x36000 +#if (rwLIBRARYVERSION36000 < rwLIBRARYBASEVERSION) +#error "Time to remove all rwLIBRARYVERSION36000 code" +#endif + +#define rwLIBRARYVERSION36002 0x36002 +#if (rwLIBRARYVERSION36002 < rwLIBRARYBASEVERSION) +#error "Time to remove all rwLIBRARYVERSION36002 code" +#endif + +#define rwLIBRARYVERSION36003 0x36003 +#if (rwLIBRARYVERSION36003 < rwLIBRARYBASEVERSION) +#error "Time to remove all rwLIBRARYVERSION36003 code" +#endif + +/* + * RWBUILDNUMBER + * This 16-bit int will be externally defined in an official build, and + * is used to construct chunk header library ID when streaming out. All + * unofficial builds will be stamped with the following:- + */ +#if !defined(RWBUILDNUMBER) +#define RWBUILDNUMBER 0xffff +#endif + +/* IMPORTANT: + * The following Doxygen comment MUST be copied into RwCore.h, + * so don't move it from here. */ + +#if (!defined(RWFORCEENUMSIZEINT)) +#define RWFORCEENUMSIZEINT ((RwInt32)((~((RwUInt32)0))>>1)) +#endif /* (!defined(RWFORCEENUMSIZEINT)) */ + +/* + * See + * http://www.eskimo.com/~scs/C-faq/q11.17.html + */ + +#define RW_STRINGIFY(X) #X +#define RW_STRINGIFY_EXPANDED(X) RW_STRINGIFY(X) + +/**************************************************************************** + Attributes + */ + +#if (defined(__GNUC__)) + +/* See http://www.gnu.org/software/gcc/onlinedocs/gcc_4.html#SEC91 */ + +#if (!(defined(__cplusplus) || defined(__MWERKS__) || defined(__RWUNUSED__))) +#define __RWUNUSED__ __attribute__ ((unused)) +#endif /* (!(defined(__cplusplus) || defined(__MWERKS__) || defined(__RWUNUSED__))) */ + +#if (!(defined(__RWUNUSEDRELEASE__) || defined(RWVALIDATEPARAM))) +#if (!( defined(__cplusplus) || defined(__MWERKS__) || defined(RWDEBUG))) +#define __RWUNUSEDRELEASE__ __attribute__ ((unused)) +#endif /* (!(defined(__cplusplus) || defined(__MWERKS__) || defined(RWDEBUG))) */ +#endif /* (!(defined(__RWUNUSEDRELEASE__) || defined(RWVALIDATEPARAM))) */ + +#if (!defined(__RWFORMAT__)) +#define __RWFORMAT__(_archetype, _string_index, _first_to_check) \ + __attribute__ ((format (_archetype, _string_index, _first_to_check))) +#endif /* (!defined(__RWFORMAT__)) */ + +#endif /* (defined(__GNUC__)) */ + +#if (!defined(__RWUNUSED__)) +#define __RWUNUSED__ /* No op */ +#endif /* (!defined(__RWUNUSED__)) */ + +#if (!defined(__RWUNUSEDRELEASE__)) +#define __RWUNUSEDRELEASE__ /* No op */ +#endif /* (!defined(__RWUNUSEDRELEASE__)) */ + +#if (!defined(__RWFORMAT__)) +#define __RWFORMAT__(_archetype, _string_index, _first_to_check) /* No op */ +#endif /* (!defined(__RWFORMAT__)) */ + +/**************************************************************************** + Calling conventions + */ + +#if (defined(WIN32)) +#define RWASMCALL __cdecl +#define RWASMAPI(TYPE) TYPE RWASMCALL +#endif /* (defined(WIN32)) */ + +#if (!defined(RWASMCALL)) +#define RWASMCALL /* No op */ +#endif /* (!defined(RWASMCALL)) */ + +#if (!defined(RWASMAPI)) +#define RWASMAPI(TYPE) TYPE +#endif /* (!defined(RWASMAPI)) */ + + +/* Maximum number of nested contexts */ +#define rwMAXPIPECONTEXT 10 + + +/**************************************************************************** + Macro wrappers. These are needed everywhere. + */ + +#ifndef MACRO_START +#define MACRO_START do +#endif /* MACRO_START */ + +#ifndef MACRO_STOP +#define MACRO_STOP while(0) +#endif /* MACRO_STOP */ + +/**************************************************************************** + Types needed everywhere + */ + +#ifdef FALSE +#undef FALSE +#endif +#define FALSE 0 + +#ifdef TRUE +#undef TRUE +#endif +#define TRUE !FALSE + +/**************************************************************************** + MS VC/C++ Specific + */ + +#if (defined(_MSC_VER)) +#if (_MSC_VER>=1000) + + +/* + * Check for correct compiler version + */ +#define RW_MSC_VER 1200 + +#if (0 && !defined(RW_NO_COMPILER_CHECK)) +#if (_MSC_VER != RW_MSC_VER ) +# pragma message (__FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) "):" "\n This compiler is a different version (" RW_STRINGIFY_EXPANDED(_MSC_VER) ")\n to the compiler used to build the RenderWare product libraries (" RW_STRINGIFY_EXPANDED(RW_MSC_VER) ") \n To turn off this warning please define RW_NO_COMPILER_CHECK " ) +# pragma comment ( user, "comment:" __FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) "):" "\n This compiler is a different version (" RW_STRINGIFY_EXPANDED(_MSC_VER) ")\n to the compiler used to build the RenderWare product libraries (" RW_STRINGIFY_EXPANDED(RW_MSC_VER) ") \n To turn off this warning please define RW_NO_COMPILER_CHECK " ) +#endif /* (_MSC_VER != RW_MSC_VER ) */ +#endif /* (0 && !defined(RW_NO_COMPILER_CHECK)) */ + +/* + * Output some compiler messages and object file comments + */ + +#pragma comment ( compiler ) + +#pragma comment ( user, "comment:" __DATE__" " __TIME__ " - " __FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) ")") +#pragma comment ( user, "comment:" " _MSC_VER==" RW_STRINGIFY_EXPANDED(_MSC_VER) "; _M_IX86==" RW_STRINGIFY_EXPANDED(_M_IX86)) +#if (defined(rwLIBRARYCURRENTVERSION)) +#pragma comment ( user, "comment:" "rwLIBRARYCURRENTVERSION:" RW_STRINGIFY_EXPANDED(rwLIBRARYCURRENTVERSION) ) +#endif /* (defined(rwLIBRARYCURRENTVERSION)) */ + +#if (defined(RWDEBUG) && defined(RWVERBOSE)) + +#if (defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC)) +#define _CRTDBG_MAP_ALLOC +#endif /* defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC)) */ +#include + +#pragma message (__DATE__" " __TIME__ " - " __FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) ")" ) +#pragma message ("_MSC_VER==" RW_STRINGIFY_EXPANDED(_MSC_VER) "; _M_IX86==" RW_STRINGIFY_EXPANDED(_M_IX86)) + +#if (defined(rwLIBRARYCURRENTVERSION)) +#pragma message ( "rwLIBRARYCURRENTVERSION:" RW_STRINGIFY_EXPANDED(rwLIBRARYCURRENTVERSION) ) +#endif /* (defined(rwLIBRARYCURRENTVERSION)) */ + +#endif /* (defined(RWDEBUG) && defined(RWVERBOSE) ) */ + +#endif /* (_MSC_VER>=1000) */ +#endif /* (defined(_MSC_VER)) */ + +/*******************/ +/* Primitive types */ +/*******************/ + +/* String construction stuff (gets us UNICODE support) */ +#ifdef RWUNICODE +#define _RWSTRING(x) L ## x +#else /* RWUNICODE */ +#define _RWSTRING(x) x +#endif /* RWUNICODE */ +#define RWSTRING(x) _RWSTRING(x) + +/* NB volatile keyword required for VC5.0 to ensure a reload - AMB */ +typedef union RwSplitBits RwSplitBits; + +#if (!defined(DOXYGEN)) +union RwSplitBits +{ + RwReal nReal; + volatile RwInt32 nInt; + volatile RwUInt32 nUInt; +}; + +typedef struct RwSplitFixed RwSplitFixed; + +#ifdef rwBIGENDIAN +struct RwSplitFixed +{ + RwInt16 integral; + RwUInt16 fractional; +}; + +#else /* rwBIGENDIAN */ +#ifdef rwLITTLEENDIAN +struct RwSplitFixed +{ + RwUInt16 fractional; + RwInt16 integral; +}; + +#else /* rwLITTLEENDIAN */ +#error "ENDIAN-ness undefined!" +#endif /* rwLITTLEENDIAN */ +#endif /* rwBIGENDIAN */ + +typedef union RwUnionReal RwUnionReal; + +union RwUnionReal /* MSB is sign bit in any circumstance */ +{ + RwReal real; /* 4 bytes interpreted as RwReal */ + float floating; /* 4 bytes interpreted as float */ + RwFixed fixed; /* 4 bytes interpreted as 16:16 fixed */ + RwSplitFixed splitfixed; /* 4 bytes interpreted as 16:16 fixed */ +}; +#endif /* (!defined(DOXYGEN)) */ + +/*****************/ + +/* Complex types */ + +/*****************/ + +typedef struct RwV2d RwV2d; +/** + * \ingroup rwv2d + * \struct RwV2d + * This type represents points in a 2D space, such as device + * space, specified by the (x, y) coordinates of the point. + */ +struct RwV2d +{ + RwReal x; /**< X value*/ + RwReal y; /**< Y value */ +}; + +typedef struct RwV3d RwV3d; +/** + * \ingroup rwv3d + * \struct RwV3d + * This type represents 3D points and vectors specified by + * the (x, y, z) coordinates of a 3D point or the (x, y, z) components of a + * 3D vector. + */ +struct RwV3d +{ + RwReal x; /**< X value */ + RwReal y; /**< Y value */ + RwReal z; /**< Z value */ +}; + +#define RWV4DALIGNMENT(_v4d) \ + (! (((rwV4DALIGNMENT)-1) & ((RwUInt32)(_v4d)))) + + +#if (!defined(DOXYGEN)) + +struct RwV4dTag +{ + RwReal x; /**< X value */ + RwReal y; /**< Y value */ + RwReal z; /**< Z value */ + RwReal w; /**< W value */ +}; + +/* + * RwV4d & RwV4dTag must be different otherwise the alignment + * directive is ignored when compiling under C++ on Visual C + */ +typedef struct RwV4dTag RWALIGN(RwV4d, rwV4DALIGNMENT); + +#else /* (!defined(DOXYGEN)) */ + +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup rwv4d + * \struct RwV4d + * This type represents 4D points and vectors specified by + * the (x, y, z, w) coordinates of a 4D point or the (x, y, z, w) components of a + * 4D vector. + */ +#endif /* RWADOXYGENEXTERNAL */ + +typedef struct RwV4d RWALIGN(RwV4d, rwV4DALIGNMENT); + +#endif /* (!defined(DOXYGEN)) */ + + + +typedef struct RwRect RwRect; +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup geometricaltypes + * \struct RwRect + * This type represents a 2D device space rectangle specified + * by the position of the top-left corner (the offset x, y) and its width (w) + * and height (h). + */ +#endif /* RWADOXYGENEXTERNAL */ +struct RwRect +{ + RwInt32 x; /**< X value of the top-left corner */ + RwInt32 y; /**< Y value of the top-left corner */ + RwInt32 w; /**< Width of the rectangle */ + RwInt32 h; /**< Height of the rectangle */ +}; + +typedef struct RwSphere RwSphere; +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup geometricaltypes + * \struct RwSphere + * This type represents a sphere specified by the position + * of its center and its radius. + */ +#endif /* RWADOXYGENEXTERNAL */ +struct RwSphere +{ + RwV3d center; /**< Sphere center */ + RwReal radius; /**< Sphere radius */ +}; + +#if (!defined(RwSphereAssign)) +#define RwSphereAssign(_target, _source) \ + ( *(_target) = *(_source) ) +#endif /* (!defined(RwSphereAssign)) */ + +typedef struct RwLine RwLine; +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup geometricaltypes + * \struct RwLine + * This type represents a 3D line specified by the position + * of its start and end points. + */ +#endif /* RWADOXYGENEXTERNAL */ +struct RwLine +{ + RwV3d start; /**< Line start */ + RwV3d end; /**< Line end */ +}; + +#if (!defined(RwLineAssign)) +#define RwLineAssign(_target, _source) \ + ( *(_target) = *(_source) ) +#endif /* (!defined(RwLineAssign)) */ + +/* The maximum number of texture coordinates */ +#define rwMAXTEXTURECOORDS 8 +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup fundtypesdatatypes + * RwTextureCoordinateIndex + * This type represents the index for texture coordinates. + */ +#endif /* RWADOXYGENEXTERNAL */ +enum RwTextureCoordinateIndex +{ + rwNARWTEXTURECOORDINATEINDEX = 0, + rwTEXTURECOORDINATEINDEX0, + rwTEXTURECOORDINATEINDEX1, + rwTEXTURECOORDINATEINDEX2, + rwTEXTURECOORDINATEINDEX3, + rwTEXTURECOORDINATEINDEX4, + rwTEXTURECOORDINATEINDEX5, + rwTEXTURECOORDINATEINDEX6, + rwTEXTURECOORDINATEINDEX7, + rwTEXTURECOORDINATEINDEXFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; +typedef enum RwTextureCoordinateIndex RwTextureCoordinateIndex; + +typedef struct RwTexCoords RwTexCoords; +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup fundtypesdatatypes + * \struct RwTexCoords + * This type represents the u and v texture + * coordinates of a particular vertex. + */ +#endif /* RWADOXYGENEXTERNAL */ +struct RwTexCoords +{ + RwReal u; /**< U value */ + RwReal v; /**< V value */ +}; + + +/* Singley linked list macros. End marked as NULL */ + +typedef struct RwSLLink RwSLLink; /*** RwSLLink ***/ + +#if (!defined(DOXYGEN)) +struct RwSLLink +{ + RwSLLink *next; +}; +#endif /* (!defined(DOXYGEN)) */ + +#define rwSLLinkGetData(link,type,entry) \ + ((type *)(((RwUInt8 *)(link))-offsetof(type,entry))) + +#define rwSLLinkGetConstData(link,type,entry) \ + ((const type *)(((const RwUInt8 *)(link))-offsetof(type,entry))) + +#define rwSLLinkInitialize(linkvar) \ + (linkvar)->next = NULL; + +#define rwSLLinkGetNext(linkvar) \ + ((linkvar)->next) + +typedef struct RwSingleList RwSingleList; + +#if (!defined(DOXYGEN)) +struct RwSingleList +{ + RwSLLink link; +}; +#endif /* (!defined(DOXYGEN)) */ + +#define rwSingleListInitialize(list) \ + (list)->link.next= NULL; +#define rwSingleListEmpty(list) \ + (((list)->link.next)==NULL) +#define rwSingleListAddSLLink(list,linkvar) \ + ( (linkvar)->next = (list)->link.next, \ + (list)->link.next = (linkvar) ) +#define rwSingleListGetFirstSLLink(list) \ + ((list)->link.next) +#define rwSingleListGetTerminator(list) (NULL) + +/* Doubly linked list. End marked as start (its a ring) */ + +typedef struct RwLLLink RwLLLink; /*** RwLLLink ***/ + +#if (!defined(DOXYGEN)) +struct RwLLLink +{ + RwLLLink *next; + RwLLLink *prev; +}; +#endif /* (!defined(DOXYGEN)) */ + +#define rwLLLinkGetData(linkvar,type,entry) \ + ((type *)(((RwUInt8 *)(linkvar))-offsetof(type,entry))) + +#define rwLLLinkGetConstData(linkvar,type,entry) \ + ((const type *)(((const RwUInt8 *)(linkvar))-offsetof(type,entry))) + +#define rwLLLinkGetNext(linkvar) \ + ((linkvar)->next) + +#define rwLLLinkGetPrevious(linkvar) \ + ((linkvar)->prev) + +#define rwLLLinkInitialize(linkvar) \ + ( (linkvar)->prev = (RwLLLink *)NULL, \ + (linkvar)->next = (RwLLLink *)NULL ) + +#define rwLLLinkAttached(linkvar) \ + ((linkvar)->next) + +typedef struct RwLinkList RwLinkList; + +#if (!defined(DOXYGEN)) +struct RwLinkList +{ + RwLLLink link; +}; +#endif /* (!defined(DOXYGEN)) */ + +#define rwLinkListInitialize(list) \ + ( (list)->link.next = ((RwLLLink *)(list)), \ + (list)->link.prev = ((RwLLLink *)(list)) ) +#define rwLinkListEmpty(list) \ + (((list)->link.next) == (&(list)->link)) +#define rwLinkListAddLLLink(list, linkvar) \ + ( (linkvar)->next = (list)->link.next, \ + (linkvar)->prev = (&(list)->link), \ + ((list)->link.next)->prev = (linkvar), \ + (list)->link.next = (linkvar) ) +#define rwLinkListRemoveLLLink(linkvar) \ + ( ((linkvar)->prev)->next = (linkvar)->next, \ + ((linkvar)->next)->prev = (linkvar)->prev ) +#define rwLinkListGetFirstLLLink(list) \ + ((list)->link.next) +#define rwLinkListGetLastLLLink(list) \ + ((list)->link.prev) +#define rwLinkListGetTerminator(list) \ + (&((list)->link)) + +typedef struct RwSurfaceProperties RwSurfaceProperties; +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup fundtypesdatatypes + * \struct RwSurfaceProperties + * This type represents the ambient, diffuse and + * specular reflection coefficients of a particular geometry. Each coefficient + * is specified in the range 0.0 (no reflection) to 1.0 (maximum reflection). + * Note that currently the specular element is not used. + */ +#endif /* RWADOXYGENEXTERNAL */ +struct RwSurfaceProperties +{ + RwReal ambient; /**< ambient reflection coefficient */ + RwReal specular; /**< specular reflection coefficient */ + RwReal diffuse; /**< reflection coefficient */ +}; + +#if (!defined(RwSurfacePropertiesAssign)) +#define RwSurfacePropertiesAssign(_target, _source) \ + ( *(_target) = *(_source) ) +#endif /* (!defined(RwSurfacePropertiesAssign)) */ + +/********** + * Macros * + **********/ + +/* ANSI C defines the offsetof(type,member) macro; should be in */ + +/* If not, fall back to this: */ +#ifndef offsetof +#define offsetof(type, member) \ + ((size_t)((RwUInt8 *)&((type *) 0)->member - (RwUInt8 *)((type *) 0))) +#endif /* offsetof */ + +/* + * + * Numeric Macros to handle Fixed/Floating point versions of RenderWare + * + */ +#define RWFIX_MIN (1) +#define RWFIX_MAX (0x7fffffff) +#define RwFixedToInt(a) ((a) >> 16) +#define RwFixedToFloat(a) ((float)(((float)(a)) * (1.0f / 65536.0f))) +#define RwFixedToReal(a) ((RwReal)(((RwReal)(a)) * (1.0f / 65536.0f))) +#define RwIntToFixed(a) ((a) << 16) +#define RwRealToFixed(a) (RwInt32FromRealMacro((a) * 65536.0f)) +#define RwRealAbs(a) ((RwReal)((a) >= (RwReal)(0.0) ? (a) : (-(a)))) +#define RwRealMin2(a,b) ((RwReal)( ((a) <= (b)) ? (a) : (b))) +#define RwRealMax2(a,b) ((RwReal)( ((a) >= (b)) ? (a) : (b))) +#define RwRealMin3(a,b,c) RwRealMin2(a,RwRealMin2(b,c)) +#define RwRealMax3(a,b,c) RwRealMax2(a,RwRealMax2(b,c)) + +#ifndef NORWREALSHORTCUT +#define RToFixed RwRealToFixed +#define RAbs RwRealAbs +#define FxToInt RwFixedToInt +#define FxToFloat RwFixedToFloat +#define FxToReal RwFixedToFloat + +#endif + +#ifndef rwPI +#define rwPI ((RwReal)(3.1415926535f)) +#define rwPIOVER2 (rwPI / (RwReal)(2.0f)) +#endif +#define RWRGBALONG(r,g,b,a) \ + ((RwUInt32) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))) + +/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + RwPlane + + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ + + +/* + * typedef for struct RwPlane + */ +typedef struct RwPlane RwPlane; + +#if (!defined(DOXYGEN)) +/* + * This type represents a plane + */ +struct RwPlane +{ + RwV3d normal; /**< Normal to the plane */ + RwReal distance; /**< Distance to plane from origin in normal direction*/ +}; +#endif /* (!defined(DOXYGEN)) */ + +/**************************************************************************** + Defines + */ + +enum RwPlaneType +{ + rwXPLANE = 0, /* These are deliberately multiples of sizeof(RwReal) */ + rwYPLANE = 4, + rwZPLANE = 8, + rwPLANETYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; +typedef enum RwPlaneType RwPlaneType; + +#define rwSECTORATOMIC -1 +#define rwSECTORBUILD -2 /* Only used when building a world */ + +/* vect is a RwV3d, y is the component */ +#define GETCOORD(vect,y) \ + (*(RwReal *)(((RwUInt8 *)(&((vect).x)))+(RwInt32)(y))) +#define GETCONSTCOORD(vect,y) \ + (*(const RwReal *)(((const RwUInt8 *)(&((vect).x)))+(RwInt32)(y))) +#define SETCOORD(vect,y,value) \ + (((*(RwReal *)(((RwUInt8 *)(&((vect).x)))+(RwInt32)(y))))=(value)) +#define SETCONSTCOORD(vect,y,value) \ + (((*(const RwReal *) \ + (((const RwUInt8 *) \ + (&((vect).x)))+(RwInt32)(y))))=(value)) +#define GETCOORDINT(vect,y) \ + (*(RwInt32 *)(((RwUInt8 *)(&((vect).x)))+(y))) +#define GETCONSTCOORDINT(vect,y) \ + (*(const RwInt32 *)(((const RwUInt8 *)(&((vect).x)))+(y))) + + +/** + * \ingroup integertypes + * \page inttypes Integer Types + * + * RenderWare supports a number of integer types: + * + * RwInt8 8-bit signed integer. + * \li RwUInt8 8-bit unsigned integer. + * \li RwChar Character type. + * \li RwInt16 16-bit signed integer. + * \li RwUInt16 16-bit unsigned integer. + * \li RwInt32 32-bit signed integer. + * \li RwUInt32 32-bit unsigned integer. + * \li RwInt64 64-bit signed integer. + * \li RwUInt64 64-bit unsigned integer. + * \li RwInt128 128-bit signed integer. + * \li RwUInt128 128-bit unsigned integer. + * \li RwBool Boolean type (in 32 bits). + * + * These types should be used in applications in preference to the underlying + * native types. + * + * The following constants indicate the maximum and minimum values possible + * for the various RenderWare integer types: + * + * \li RwInt32MAXVAL Maximum RwInt32 value. + * \li RwInt32MINVAL Minimum RwInt32 value. + * \li RwUInt32MAXVAL Maximum RwUInt32 value. + * \li RwUInt32MINVAL Minimum RwUInt32 value. + * \li RwInt16MAXVAL Maximum RwInt16 value. + * \li RwInt16MINVAL Minimum RwInt16 value. + * \li RwUInt16MAXVAL Maximum RwUInt16 value. + * \li RwUInt16MINVAL Minimum RwUInt16 value. + * + * \see RwReal + */ + +/** + * \ingroup realtypes + * \typedef RwReal + * + * RenderWare supports a single RwReal floating-point type to aid portability + * across platforms. This type should be used in applications in preference to + * the underlying native type. + * + * The constants RwRealMAXVAL and RwRealMINVAL are provided for determining + * the maximum and minimum values possible using the RwReal type. + * + * In addition, the following macros are available for operations on RwReal + * types: + * \li RwRealMin2(a, b) Find the minimum of two RwReal values. + * \li RwRealMax2(a, b) Find the maximum of two RwReal values. + * \li RwRealMin3(a, b, c) Find the minimum of three RwReal values. + * \li RwRealMax3(a, b, c) Find the maximum of three RwReal values. + * \li RwRealAbs(x) Find the absolute value of a RwReal value. + * + * \see \ref inttypes + */ + +/** + * \ingroup realtypes + * \typedef RwFixed + * + * RenderWare supports a single RwFixed fixed-point type. + * + * Although popular in the days when integer mathematics was much faster than + * floating point mathematics, fixed-point math is now rarely used. It is + * provided because it is still useful for some processes. + * + * The maximum and minimum size of an RwFixed value are defined by the constants + * RWFIX_MAX and RWFIX_MIN respectively. + * + * The following macros are provided to help you work with RwFixed datatypes: + * \li RwFixedToInt(x) Convert an RwFixed to an integer. (The fractional portion is lost.) + * \li RwFixedToFloat(x) Convert an RwFixed to a float. + * \li RwFixedToReal(x) Convert an RwFixed to an RwReal. + * \li RwRealToFixed(x) Convert an RwReal to an RwFixed. (Some precision may be lost.) + * \li RwIntToFixed(x) Convert an RwInt32 to an RwFixed. (Some precision may be lost.) + */ + +/** + * \ingroup integertypes + * \typedef RwInt8 + * + * Signed 8 bit integer type. + * \see \ref inttypes + */ + +/** + * \ingroup integertypes + * \typedef RwUInt8 + * + * Unsigned 8bit integer type. + * \see \ref inttypes + */ + +/** + * \ingroup integertypes + * \typedef RwChar + * + * Character type. + * \see \ref inttypes + */ + +/** + * \ingroup integertypes + * \typedef RwInt16 + * + * Signed 16 bit integer type. + * \see \ref inttypes + */ + +/** + * \ingroup integertypes + * \typedef RwUInt16 + * + * Unsigned 16 bit integer type. + * \see \ref inttypes + */ + +/** + * \ingroup integertypes + * \typedef RwInt32 + * + * Signed 32 bit integer type. + * \see \ref inttypes + */ + +/** + * \ingroup integertypes + * \typedef RwUInt32 + * + * Unsigned 32 bit integer type. + * \see \ref inttypes + */ + +/** + * \ingroup integertypes + * \typedef RwInt64 + * + * Signed 64 bit integer type. + * \see \ref inttypes + */ + +/** + * \ingroup integertypes + * \typedef RwUInt64 + * + * Unsigned 64 bit integer type. + * \see \ref inttypes + */ + +/** + * \ingroup integertypes + * \typedef RwInt128 + * + * Signed 128 bit integer type. + * \see \ref inttypes + */ + +/** + * \ingroup integertypes + * \typedef RwUInt128 + * + * Unsigned 128 bit integer type. + * \see \ref inttypes + */ + +/** + * \ingroup integertypes + * \typedef RwBool + * + * Boolean type. + * \see \ref inttypes + */ + + +/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/batype.h ---*/ +/**************************************************************************** + Defines +*/ + +/* + * Object Types - these are used in the binary object + * representations and in the debug library. They must + * be unique. They are the old system. + */ + +#define rwID_DATABASE 0x64617462 /* datb */ + +#define MAKECHUNKID(vendorID, chunkID) (((vendorID & 0xFFFFFF) << 8) | (chunkID & 0xFF)) +#define GETOBJECTID(chunkID) (chunkID & 0xFF) +#define GETVENDORID(chunkID) ((chunkID >> 8) & 0xFFFFFF) + +/*** + *** These are the vendor IDs. A customer must reserve a vendor ID in order + *** to be able to write toolkits (this prevents clashes between toolkits). + *** We reserve some for our own use as shown below. These are all 24 bit. + *** + *** IMPORTANT NOTE: DO NOT UNDER ANY CIRCUMSTANCES CHANGE THESE VALUES. IF + *** YOU ARE ADDING A NEW ONE, APPEND IT! + *** + *** They must all be unique. + ***/ + +enum RwPluginVendor +{ + rwVENDORID_CORE = 0x000000L, + rwVENDORID_CRITERIONTK = 0x000001L, + rwVENDORID_REDLINERACER = 0x000002L, + rwVENDORID_CSLRD = 0x000003L, + rwVENDORID_CRITERIONINT = 0x000004L, + rwVENDORID_CRITERIONWORLD = 0x000005L, + rwVENDORID_BETA = 0x000006L, + rwVENDORID_CRITERIONRM = 0x000007L, + rwVENDORID_CRITERIONRWA = 0x000008L, /* RenderWare Audio */ + rwVENDORID_CRITERIONRWP = 0x000009L, /* RenderWare Physics */ + rwPLUGINVENDORFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; +typedef enum RwPluginVendor RwPluginVendor; + +/*** + *** These are the core objects (8 bit IDs). They must all be unique. + *** We can get away without using the MAKECHUNKID macro because the + *** vendor ID in all cases will be zero (rwVENDORID_CORE). + *** + *** IMPORTANT NOTE: DO NOT UNDER ANY CIRCUMSTANCES CHANGE THESE VALUES. IF + *** YOU ARE ADDING A NEW ONE, APPEND IT! + ***/ + +/* These are the internal ones. Because the core ID is 0, we can get away without + * using the MAKECHUNKID macro for the CORE chunks. + */ + +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup rwstream + * \ref RwCorePluginID + * + * A chunk is a block of binary stream data containing objects. These objects + * are referenced using object IDs which are listed below. Before an object + * stream is read, a chunk needs to be obtained containing the object ID. + * These IDs are used with the function \ref RwStreamFindChunk. + * + * To write a chunk into a stream \ref RwStreamWriteChunkHeader is used + * with one of the following object IDs. + * + * \note \ref rt2d and \ref rt2danim use different object IDs. These + * are listed in \ref rt2dobjectids and \ref rt2danimobjectids. + * + * \see RwStreamFindChunk + * \see RwStreamWriteChunkHeader + */ +enum RwCorePluginID +{ + rwID_NAOBJECT = MAKECHUNKID(rwVENDORID_CORE, 0x00), + rwID_STRUCT = MAKECHUNKID(rwVENDORID_CORE, 0x01), + rwID_STRING = MAKECHUNKID(rwVENDORID_CORE, 0x02), + rwID_EXTENSION = MAKECHUNKID(rwVENDORID_CORE, 0x03), + + rwID_CAMERA = MAKECHUNKID(rwVENDORID_CORE, 0x05), +/**< RwCamera chunk. See \ref RwCameraStreamRead */ + + rwID_TEXTURE = MAKECHUNKID(rwVENDORID_CORE, 0x06), +/**< RwTexture chunk. See \ref RwTextureStreamRead */ + + rwID_MATERIAL = MAKECHUNKID(rwVENDORID_CORE, 0x07), +/**< RpMaterial chunk. See \ref RpMaterialStreamRead. */ + + rwID_MATLIST = MAKECHUNKID(rwVENDORID_CORE, 0x08), + rwID_ATOMICSECT = MAKECHUNKID(rwVENDORID_CORE, 0x09), + rwID_PLANESECT = MAKECHUNKID(rwVENDORID_CORE, 0x0A), + + rwID_WORLD = MAKECHUNKID(rwVENDORID_CORE, 0x0B), +/**< RpWorld chunk. See \ref RpWorldStreamRead. */ + + rwID_SPLINE = MAKECHUNKID(rwVENDORID_CORE, 0x0C), +/**< RpSpline chunk. See \ref RpSplineStreamRead */ + + rwID_MATRIX = MAKECHUNKID(rwVENDORID_CORE, 0x0D), +/**< RwMatrix chunk. See \ref RwMatrixStreamRead */ + + rwID_FRAMELIST = MAKECHUNKID(rwVENDORID_CORE, 0x0E), + + rwID_GEOMETRY = MAKECHUNKID(rwVENDORID_CORE, 0x0F), +/**< RpGeometry chunk. See \ref RpGeometryStreamRead. */ + + rwID_CLUMP = MAKECHUNKID(rwVENDORID_CORE, 0x10), +/**< RpClump chunk. See \ref RpClumpStreamRead. */ + + rwID_LIGHT = MAKECHUNKID(rwVENDORID_CORE, 0x12), +/**< RpLight chunk. See \ref RpLightStreamRead. */ + + rwID_UNICODESTRING = MAKECHUNKID(rwVENDORID_CORE, 0x13), + + rwID_ATOMIC = MAKECHUNKID(rwVENDORID_CORE, 0x14), +/**< RpAtomic chunk. See \ref RpAtomicStreamRead */ + + rwID_TEXTURENATIVE = MAKECHUNKID(rwVENDORID_CORE, 0x15), + + rwID_TEXDICTIONARY = MAKECHUNKID(rwVENDORID_CORE, 0x16), +/**< RwTexDictionary - platform specific texture dictionary. + * See \ref RwTexDictionaryStreamRead. */ + + rwID_ANIMDATABASE = MAKECHUNKID(rwVENDORID_CORE, 0x17), + + rwID_IMAGE = MAKECHUNKID(rwVENDORID_CORE, 0x18), +/**< RwImage chunk. See \ref RwImageStreamRead */ + + rwID_SKINANIMATION = MAKECHUNKID(rwVENDORID_CORE, 0x19), + rwID_GEOMETRYLIST = MAKECHUNKID(rwVENDORID_CORE, 0x1A), + + rwID_ANIMANIMATION = MAKECHUNKID(rwVENDORID_CORE, 0x1B), +/**< RtAnimAnimation chunk. See \ref RtAnimAnimationStreamRead. */ + rwID_HANIMANIMATION = MAKECHUNKID(rwVENDORID_CORE, 0x1B), +/**< RtAnimAnimation chunk. For backwards compatibility. See \ref rwID_ANIMANIMATION. */ + + rwID_TEAM = MAKECHUNKID(rwVENDORID_CORE, 0x1C), +/**< \ref RpTeam chunk. See \ref RpTeamStreamRead */ + rwID_CROWD = MAKECHUNKID(rwVENDORID_CORE, 0x1D), + + rwID_DMORPHANIMATION = MAKECHUNKID(rwVENDORID_CORE, 0x1E), +/**< RpDMorphAnimation - delta morph animation chunk. See \ref RpDMorphAnimationStreamRead */ + + rwID_RIGHTTORENDER = MAKECHUNKID(rwVENDORID_CORE, 0x1f), + + rwID_MTEFFECTNATIVE = MAKECHUNKID(rwVENDORID_CORE, 0x20), +/**< \if xbox RpMTEffect - multi-texture effect chunk. See \ref RpMTEffectStreamRead \endif */ +/**< \if gcn RpMTEffect - multi-texture effect chunk. See \ref RpMTEffectStreamRead \endif */ + + rwID_MTEFFECTDICT = MAKECHUNKID(rwVENDORID_CORE, 0x21), +/**< \if xbox RpMTEffectDict - multi-texture effect dictionary chunk. See \ref RpMTEffectDictStreamRead \endif */ +/**< \if gcn RpMTEffectDict - multi-texture effect dictionary chunk. See \ref RpMTEffectDictStreamRead \endif */ + + rwID_TEAMDICTIONARY = MAKECHUNKID(rwVENDORID_CORE, 0x22), +/**< \ref RpTeamDictionary chunk. See \ref RpTeamDictionaryStreamRead */ + + rwID_PITEXDICTIONARY = MAKECHUNKID(rwVENDORID_CORE, 0x23), +/**< RwTexDictionary - platform independent texture dictionary. See \ref RtPITexDictionaryStreamRead. */ + + rwID_TOC = MAKECHUNKID(rwVENDORID_CORE, 0x24), +/**< RtTOC chunk. See \ref RtTOCStreamRead */ + + rwID_PRTSTDGLOBALDATA = MAKECHUNKID(rwVENDORID_CORE, 0x25), +/**< RpPrtStdEmitterClass, RpPrtStdParticleClass and RpPrtStdPropertyTable chunks. + * See \ref RpPrtStdEClassStreamRead, \ref RpPrtStdPClassStreamRead + * \ref RpPrtStdPropTabStreamRead and \ref RpPrtStdGlobalDataStreamRead */ + + rwID_ALTPIPE = MAKECHUNKID(rwVENDORID_CORE, 0x26), + rwID_PIPEDS = MAKECHUNKID(rwVENDORID_CORE, 0x27), + rwID_PATCHMESH = MAKECHUNKID(rwVENDORID_CORE, 0x28), +/**< RpPatchMesh chunk. See \ref RpPatchMeshStreamRead */ + + rwID_CHUNKGROUPSTART = MAKECHUNKID(rwVENDORID_CORE, 0x29), + rwID_CHUNKGROUPEND = MAKECHUNKID(rwVENDORID_CORE, 0x2A), + + rwID_UVANIMDICT = MAKECHUNKID(rwVENDORID_CORE, 0x2B), +/**< UV anim dictionary chunk. See \ref RpUVAnimGetDictSchema */ + + rwID_COLLTREE = MAKECHUNKID(rwVENDORID_CORE, 0x2C), + +/* Insert before MAX and increment MAX */ + rwID_COREPLUGINIDMAX = MAKECHUNKID(rwVENDORID_CORE, 0x2D), + rwCOREPLUGINIDFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; +typedef enum RwCorePluginID RwCorePluginID ; +#endif /* RWADOXYGENEXTERNAL */ + +/*** + *** These are the Criterion internal plugin extensions. Use with rwVENDORID_CRITERIONINT. + *** + *** IMPORTANT NOTE: DO NOT UNDER ANY CIRCUMSTANCES CHANGE THESE VALUES. IF + *** YOU ARE ADDING A NEW ONE, APPEND IT! + ***/ + +enum RwCriterionPluginID +{ + rwID_COREPLUGIN = 0x01, + rwID_WORLDPLUGIN = 0x02, + rwID_TOOLPLUGIN = 0x03, + rwID_TOOL2PLUGIN = 0x04, + rwCRITERIONPLUGINIDFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; +typedef enum RwCriterionPluginID RwCriterionPluginID; + +/** + * \ingroup rwengine + * The Core Library is consisted from a collection of plugins that constitute + * it. This is a list of the pluginIDs that belong to the Core. See + * \ref RwEngineRegisterPlugin + */ +enum RwCriterionCoreID +{ + /* Guard value that should not be used. */ + rwID_NACOREID = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x00), + + /* The valid plugin IDs */ + /**< Vector module pluginID. See \ref rwv2d and \ref rwv3d */ + rwID_VECTORMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x01), + /**< Matrix module pluginID. See \ref rwmatrix */ + rwID_MATRIXMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x02), + /**< Frame module pluginID. See \ref rwframe */ + rwID_FRAMEMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x03), + /**< Stream module pluginID. See \ref rwstream */ + rwID_STREAMMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x04), + /**< Camera module pluginID. See \ref rwcamera */ + rwID_CAMERAMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x05), + /**< Image module pluginID. See \ref rwimage */ + rwID_IMAGEMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x06), + /**< Raster module pluginID. See \ref rwraster */ + rwID_RASTERMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x07), + /**< Texture module pluginID. See \ref rwtexture */ + rwID_TEXTUREMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x08), + /**< Pipeline module pluginID. See \ref RxPipeline */ + rwID_PIPEMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x09), + /**< Immediate module pluginID. See \ref rwim3d */ + rwID_IMMEDIATEMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x0A), + /**< Resource module pluginID. See \ref rwresources */ + rwID_RESOURCESMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x0B), + /**< Device module pluginID */ + rwID_DEVICEMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x0C), + /**< Color module pluginID. See \ref rwrgba */ + rwID_COLORMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x0D), + /* Not used */ + rwID_POLYPIPEMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x0E), + /**< Error module pluginID. See \ref rwerror */ + rwID_ERRORMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x0F), + /**< Metrics module pluginID. See \ref RwMetrics */ + rwID_METRICSMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x10), + /**< Driver module pluginID */ + rwID_DRIVERMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x11), + /**< Chunk group module pluginID. See \ref rwchunkgroup */ + rwID_CHUNKGROUPMODULE = MAKECHUNKID(rwVENDORID_CRITERIONINT, 0x12), + rwCRITERIONCOREIDFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; +typedef enum RwCriterionCoreID RwCriterionCoreID; + +/*** + *** These are the Criterion internal platform identifies. + *** + *** IMPORTANT NOTE: DO NOT UNDER ANY CIRCUMSTANCES CHANGE THESE VALUES. IF + *** YOU ARE ADDING A NEW ONE, APPEND IT! + ***/ +enum RwPlatformID +{ + rwID_PCD3D7 = 1, + rwID_PCOGL, + rwID_MAC, + rwID_PS2, + rwID_XBOX, + rwID_GAMECUBE, + rwID_SOFTRAS, + rwID_PCD3D8, + rwID_PCD3D9, + rwPLATFROMIDFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; +typedef enum RwPlatformID RwPlatformID; + + +/**************************************************************************** + Global Types + */ + +typedef struct RwObject RwObject; +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup rwobject + * \struct RwObject + * This should be considered an opaque type. Use + * the RwObject API functions to access. + */ +#endif /* RWADOXYGENEXTERNAL */ +struct RwObject +{ + RwUInt8 type; /**< Internal Use */ + RwUInt8 subType; /**< Internal Use */ + RwUInt8 flags; /**< Internal Use */ + RwUInt8 privateFlags; /**< Internal Use */ + void *parent; /**< Internal Use */ + /* Often a Frame */ +}; +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup rwobject + * \ref RwObjectCallBack + * callback function supplied for object callback functions. + * + * \param object Pointer to the current object, supplied by + * iterator. + * \param data Pointer to developer-defined data structure. + * + * \return Pointer to the current object + * + * \see RwFrameForAllObjects + * + */ +#endif /* RWADOXYGENEXTERNAL */ +typedef RwObject *(*RwObjectCallBack)(RwObject *object, void *data); + +/**************************************************************************** +Function prototypes +*/ + + /* TYPE METHODS */ + + /* Creation/cloning */ + +#define rwObjectCopy(d,s) \ +MACRO_START \ +{ \ + ((RwObject *)(d))->type = \ + ((const RwObject *)(s))->type; \ + ((RwObject *)(d))->subType = \ + ((const RwObject *)(s))->subType; \ + ((RwObject *)(d))->flags = \ + ((const RwObject *)(s))->flags; \ + ((RwObject *)(d))->privateFlags = \ + ((const RwObject *)(s))->privateFlags; \ + ((RwObject *)(d))->parent = \ + NULL; \ +} \ +MACRO_STOP + +#define rwObjectInitialize(o, t, s) \ +MACRO_START \ +{ \ + ((RwObject *)(o))->type = (RwUInt8)(t); \ + ((RwObject *)(o))->subType = (RwUInt8)(s); \ + ((RwObject *)(o))->flags = 0; \ + ((RwObject *)(o))->privateFlags = 0; \ + ((RwObject *)(o))->parent = NULL; \ +} \ +MACRO_STOP + + /* Debug */ +#define RwObjectGetType(o) (((const RwObject *)(o))->type) + +#define rwObjectSetType(o, t) (((RwObject *)(o))->type) = (RwUInt8)(t) + + /* Sub type */ +#define rwObjectGetSubType(o) (((const RwObject *)(o))->subType) +#define rwObjectSetSubType(o, t) (((RwObject *)(o))->subType) = (RwUInt8)(t) + + /* Flags */ +#define rwObjectGetFlags(o) (((const RwObject *)(o))->flags) +#define rwObjectSetFlags(o, f) (((RwObject *)(o))->flags) = (RwUInt8)(f) +#define rwObjectTestFlags(o, f) ((((const RwObject *)(o))->flags) & (RwUInt8)(f)) + + /* Private flags */ +#define rwObjectGetPrivateFlags(c) (((const RwObject *)(c))->privateFlags) +#define rwObjectSetPrivateFlags(c,f) (((RwObject *)(c))->privateFlags) = (RwUInt8)(f) +#define rwObjectTestPrivateFlags(c,flag) ((((const RwObject *)(c))->privateFlags) & (RwUInt8)(flag)) + + /* Hierarchy */ +#define rwObjectGetParent(object) (((const RwObject *)(object))->parent) +#define rwObjectSetParent(c,p) (((RwObject *)(c))->parent) = (void *)(p) + +/*--- Automatically derived from: C:/daily/rwsdk/os/win/osintf.h ---*/ + +/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/rwdbgerr.h ---*/ +#define RWECODE(a,b) a, + +/* Construct an enum type with all the plugin error codes (for the app to use) */ +enum RwErrorCodePlugin_errcore +{ +#include "errcore.def" + rwLASTERROR_errcore = RWFORCEENUMSIZEINT +}; +typedef enum RwErrorCodePlugin_errcore RwErrorCodePlugin_errcore; + + +#undef RWECODE + + +/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/resmem.h ---*/ + +/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/bamemory.h ---*/ +#if (defined(RWMEMDEBUG)) +#ifdef _XBOX +/* Need OutputDebugString macros */ +#include +#endif +#endif + +/**************************************************************************** + Defines + */ + +/* + * Debug fill bytes for compatibility with MSVC/C++ debug heap + * See + * \Program Files\Microsoft Visual Studio\VC98\CRT\SRC\DBGHEAP.C: + * static unsigned char _bNoMansLandFill = 0xFD; + * // fill no-man's land with this + * static unsigned char _bDeadLandFill = 0xDD; + * // fill free objects with this + * static unsigned char _bCleanLandFill = 0xCD; + * // fill new objects with this + */ + +#if (!defined(rwFREELISTNOMANSLANDFILL)) +#define rwFREELISTNOMANSLANDFILL 0xFD +#endif /* (!defined(rwFREELISTNOMANSLANDFILL)) */ + +#if (!defined(rwFREELISTDEADLANDFILL)) +#define rwFREELISTDEADLANDFILL 0xDD +#endif /* (!defined(rwFREELISTDEADLANDFILL)) */ + +#if (!defined(rwFREELISTCLEANLANDFILL)) +#define rwFREELISTCLEANLANDFILL 0xCD +#endif /* (!defined(rwFREELISTCLEANLANDFILL)) */ + +#define RWFREELISTALIGNED(_pData, _freelist) \ + (! (((RwUInt32)(_pData)) & ((_freelist)->alignment - 1)) ) + +/***************************** + * REGULAR MEMORY ALLOCATION * + *****************************/ + +/** + * \ingroup memoryfileinterface + * \def RwMalloc + * RwMalloc(_s, _h) is a macro that calls the currently registered RwMalloc function. + * You can access all registered memory functions through an + * \ref RwOsGetMemoryInterface() call which returns a pointer to an + * \ref RwMemoryFunctions structure. You can also override the default + * RenderWare Graphics functions by passing a structure populated with + * your own RwMemoryFunctions structure to \ref RwEngineInit(). + * + * \see RwMemoryFunctions for more specific function documentation. + */ + +/** + * \ingroup memoryfileinterface + * \def RwFree + * RwFree(_p) is a macro that calls the currently registered RwFree function. + * You can access all registered memory functions through an + * \ref RwOsGetMemoryInterface() call which returns a pointer to an + * \ref RwMemoryFunctions structure. You can also override the default + * RenderWare Graphics functions by passing a structure populated with + * your own RwMemoryFunctions structure to \ref RwEngineInit(). + * + * \see RwMemoryFunctions for more specific function documentation. + */ + +/** + * \ingroup memoryfileinterface + * \def RwCalloc + * RwCalloc(_n, _s, _h) is a macro that calls the currently registered RwCalloc + * function. You can access all registered memory functions + * through an \ref RwOsGetMemoryInterface() call which returns a pointer + * to an \ref RwMemoryFunctions structure. You can also override the + * default RenderWare Graphics functions by passing a structure populated + * with your own RwMemoryFunctions structure to \ref RwEngineInit(). + * + * \see RwMemoryFunctions for more specific function documentation. + */ + +/** + * \ingroup memoryfileinterface + * \def RwRealloc + * RwRealloc(_p, _s, _h) is a macro that calls the currently registered RwRealloc + * function. You can access all registered memory functions + * through an \ref RwOsGetMemoryInterface() call which returns a pointer + * to an \ref RwMemoryFunctions structure. You can also override the + * default RenderWare Graphics functions by passing a structure populated + * with your own RwMemoryFunctions structure to \ref RwEngineInit(). + * + * \see RwMemoryFunctions for more specific function documentation. + */ + +#if ( (defined(RWMEMDEBUG)) && defined(RWDEBUG) ) + +#if (!defined(RWNOFREELISTS)) +#define RWNOFREELISTS +#endif /* (!defined(RWNOFREELISTS)) */ + +#if (defined(rwPLUGIN_ID)) +#define _CLIENT_TAG \ + ( 0xFFFF & (rwPLUGIN_ID) ) +#endif /* (defined(rwPLUGIN_ID)) */ + +#if (!defined(_CLIENT_TAG)) +#define _CLIENT_TAG \ + ( 0xFFFF & (MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x00) ) ) +#endif /* (!defined(_CLIENT_TAG)) */ + +# if (defined(_MSC_VER)) +# if ((_MSC_VER>=1000) && defined(_DEBUG)) + +#if (defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC)) +#define _CRTDBG_MAP_ALLOC +#endif /* defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC)) */ +#include + +#define RwMalloc(_s, _h) \ + _malloc_dbg((_s), \ + _CLIENT_BLOCK | ((_CLIENT_TAG)<<16), \ + __FILE__, \ + __LINE__) + +#define RwFree(_p) \ + _free_dbg((_p), \ + _CLIENT_BLOCK | ((_CLIENT_TAG)<<16)) + +#define RwCalloc(_n, _s, _h) \ + _calloc_dbg((_n), (_s), \ + _CLIENT_BLOCK | ((_CLIENT_TAG)<<16), \ + __FILE__, \ + __LINE__) + +#define RwRealloc(_p, _s, _h) \ + _realloc_dbg((_p), \ + (_s), \ + _CLIENT_BLOCK | ((_CLIENT_TAG)<<16), \ + __FILE__, \ + __LINE__) + +#define RWCRTORDBGFLAG(_flag) \ + do \ + { \ + int _DbgFlag; \ + \ + _DbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); \ + _DbgFlag |= (_flag); \ + _CrtSetDbgFlag(_DbgFlag); \ + } while(0) + +#define VALID_HEAP_STR \ + __FILE__##"("##RW_STRINGIFY_EXPANDED(__LINE__)##"): valid heap\n" + +#define RWCRTCHECKMEMORY() \ + do \ + { \ + int valid_heap; \ + \ + valid_heap = _CrtCheckMemory(); \ + _ASSERTE(valid_heap); \ + } while(0) + +/* + * if (valid_heap) \ + * OutputDebugString(VALID_HEAP_STR); \ + */ + +#define NO_LEAKS_FOUND_STR \ + __FILE__##"("##RW_STRINGIFY_EXPANDED(__LINE__)##"): no heap leaks found\n" + +#define RWCRTDUMPMEMORYLEAKS() \ + do \ + { \ + int leaks_found; \ + \ + leaks_found = _CrtDumpMemoryLeaks(); \ + _ASSERTE(!leaks_found); \ + if (!leaks_found) \ + OutputDebugString(NO_LEAKS_FOUND_STR); \ + } while(0) + +#define HEAP_DIFFERENCES_FOUND_STR \ + __FILE__##"("##RW_STRINGIFY_EXPANDED(__LINE__)##"): heap differences found\n" + +#define NO_DIFFERENCES_FOUND_STR \ + __FILE__##"("##RW_STRINGIFY_EXPANDED(__LINE__)##"): no heap differences found\n" + +#define RWCRTHEAPDIFFERENCESINCE(_Then) \ + do \ + { \ + /* only dump differences when \ + * there are in fact differences */ \ + _CrtMemState _Now; \ + _CrtMemState _Delta; \ + const int _DbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); \ + int Differences; \ + \ + _CrtMemCheckpoint(&_Now); \ + _CrtMemDifference(&_Delta, _Then, &_Now); \ + \ + (Differences) = ( ( 0 != _Delta.lCounts[_CLIENT_BLOCK] ) || \ + ( 0 != _Delta.lCounts[_NORMAL_BLOCK] ) || \ + ( (_DbgFlag & _CRTDBG_CHECK_CRT_DF) && \ + ( 0 != _Delta.lCounts[_CRT_BLOCK]) ) ); \ + \ + if ( (Differences) ) \ + { \ + /* difference detected: dump objects since _Then. */ \ + OutputDebugString(HEAP_DIFFERENCES_FOUND_STR); \ + _CrtMemDumpAllObjectsSince(_Then); \ + _CrtMemDumpStatistics(&_Delta); \ + } \ + else \ + { \ + OutputDebugString(NO_DIFFERENCES_FOUND_STR); \ + } \ + } while (0) + +#define RWCRTDBGBREAK() \ + _CrtDbgBreak() + +#define RWCRTDOFORALLCLIENTOBJECTS(_f, _c) \ + _CrtDoForAllClientObjects(_f, _c) + +#define RWCRTISMEMORYBLOCK(_p, _t, _r, _f, _l) \ + _CrtIsMemoryBlock(_p, _t, _r, _f, _l) + +#define RWCRTISVALIDHEAPPOINTER(_p) \ + _CrtIsValidHeapPointer(_p) + +#define RWCRTISVALIDPOINTER(_p, _n, _r) \ + _CrtIsValidPointer(_p, _n, _r) + +#define RWCRTMEMCHECKPOINT(_s) \ + _CrtMemCheckpoint(_s) + +#define RWCRTMEMDIFFERENCE(_s1, _s2, _s3) \ + _CrtMemDifference(_s1, _s2, _s3) + +#define RWCRTMEMDUMPALLOBJECTSSINCE(_s) \ + _CrtMemDumpAllObjectsSince(_s) + +#define RWCRTMEMDUMPSTATISTICS(_s) \ + _CrtMemDumpStatistics(_s) + +#define RWCRTSETALLOCHOOK(_f) \ + _CrtSetAllocHook(_f) + +#define RWCRTSETBREAKALLOC(_a) \ + _CrtSetBreakAlloc(_a) + +#define RWCRTSETDBGFLAG(_f) \ + _CrtSetDbgFlag(_f) + +#define RWCRTSETDUMPCLIENT(_f) \ + _CrtSetDumpClient(_f) + +#define RWCRTSETREPORTFILE(_t, _f) \ + _CrtSetReportFile(_t, _f) + +#define RWCRTSETREPORTHOOK(_f) \ + _CrtSetReportHook(_f) + +#define RWCRTSETREPORTMODE(_t, _f) \ + _CrtSetReportMode(_t, _f) + +#if (!defined(_CRTDBG_FLAGS)) +#define _CRTDBG_FLAGS \ + ( (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_DELAY_FREE_MEM_DF | \ + _CRTDBG_CHECK_CRT_DF | _CRTDBG_LEAK_CHECK_DF) & \ + ~(_CRTDBG_CHECK_ALWAYS_DF |_CRTDBG_RESERVED_DF) ) +#endif /* (!defined(_CRTDBG_FLAGS)) */ + +# endif /* ((_MSC_VER>=1000) && defined(_DEBUG)) */ +# endif /* (defined(_MSC_VER)) */ + + + +#if (!defined(rwDEADPTRFILL)) +#define rwDEADPTRFILL ((void *)0xDDDDDDDD) +#endif /* (!defined(rwDEADPTRFILL)) */ + +#endif /* (defined(RWDEBUG) && (defined(RWMEMDEBUG))) */ + +#if (!defined(rwDEADPTRFILL)) +#define rwDEADPTRFILL (NULL) +#endif /* (!defined(rwDEADPTRFILL)) */ + +#if (!defined(RwMalloc)) +#define RwMalloc(_s, _h) \ + ((RWSRCGLOBAL(memoryFuncs).rwmalloc)((_s), (_h))) +#endif /* (!defined(RwMalloc)) */ + +#if (!defined(RwFree)) +#define RwFree(_p) \ + ((RWSRCGLOBAL(memoryFuncs).rwfree)((_p))) +#endif /* (!defined(RwFree)) */ + +#if (!defined(RwCalloc)) +#define RwCalloc(_n, _s, _h) \ + ((RWSRCGLOBAL(memoryFuncs).rwcalloc)((_n), (_s), (_h))) +#endif /* (!defined(RwCalloc)) */ + +#if (!defined(RwRealloc)) +#define RwRealloc(_p, _s, _h) \ + ((RWSRCGLOBAL(memoryFuncs).rwrealloc)((_p),(_s), (_h))) +#endif /* (!defined(RwRealloc)) */ + +#if (!defined(RWCRTORDBGFLAG)) +#define RWCRTORDBGFLAG(_flag) /* No op */ +#endif /* (!defined(RWCRTORDBGFLAG)) */ + +#if (!defined(RWCRTCHECKMEMORY)) +#define RWCRTCHECKMEMORY() /* No Op */ +#endif /* (!defined(RWCRTCHECKMEMORY)) */ + +#if (!defined(RWCRTDBGBREAK)) +#define RWCRTDBGBREAK() /* No Op */ +#endif /* (!defined(RWCRTDBGBREAK)) */ + +#if (!defined(RWCRTDOFORALLCLIENTOBJECTS)) +#define RWCRTDOFORALLCLIENTOBJECTS(_f, _c) /* No Op */ +#endif /* (!defined(RWCRTDOFORALLCLIENTOBJECTS)) */ + +#if (!defined(RWCRTDUMPMEMORYLEAKS)) +#define RWCRTDUMPMEMORYLEAKS() /* No Op */ +#endif /* (!defined(RWCRTDUMPMEMORYLEAKS)) */ + +#if (!defined(RWCRTHEAPDIFFERENCESINCE)) +#define RWCRTHEAPDIFFERENCESINCE(_Then) /* No Op */ +#endif /* (!defined(RWCRTHEAPDIFFERENCESINCE)) */ + +#if (!defined(RWCRTISMEMORYBLOCK)) +#define RWCRTISMEMORYBLOCK(_p, _t, _r, _f, _l) (NULL != (_p)) +#endif /* (!defined(RWCRTISMEMORYBLOCK)) */ + +#if (!defined(RWCRTISVALIDHEAPPOINTER)) +#define RWCRTISVALIDHEAPPOINTER(_p) (NULL != (_p)) +#endif /* (!defined(RWCRTISVALIDHEAPPOINTER)) */ + +#if (!defined(RWCRTISVALIDPOINTER)) +#define RWCRTISVALIDPOINTER(_p, _n, _r) (NULL != (_p)) +#endif /* (!defined(RWCRTISVALIDPOINTER)) */ + +#if (!defined(RWCRTMEMCHECKPOINT)) +#define RWCRTMEMCHECKPOINT(_s) /* No Op */ +#endif /* (!defined(RWCRTMEMCHECKPOINT)) */ + +#if (!defined(RWCRTMEMDIFFERENCE)) +#define RWCRTMEMDIFFERENCE(_s1, _s2, _s3) /* No Op */ +#endif /* (!defined(RWCRTMEMDIFFERENCE)) */ + +#if (!defined(RWCRTMEMDUMPALLOBJECTSSINCE)) +#define RWCRTMEMDUMPALLOBJECTSSINCE(_s) /* No Op */ +#endif /* (!defined(RWCRTMEMDUMPALLOBJECTSSINCE)) */ + +#if (!defined(RWCRTMEMDUMPSTATISTICS)) +#define RWCRTMEMDUMPSTATISTICS(_s) (NULL) +#endif /* (!defined(RWCRTMEMDUMPSTATISTICS)) */ + +#if (!defined(RWCRTSETALLOCHOOK)) +#define RWCRTSETALLOCHOOK(_f) (NULL) +#endif /* (!defined(RWCRTSETALLOCHOOK)) */ + +#if (!defined(RWCRTSETBREAKALLOC)) +#define RWCRTSETBREAKALLOC(_a) (0) +#endif /* (!defined(RWCRTSETBREAKALLOC)) */ + +#if (!defined(RWCRTSETDBGFLAG)) +#define RWCRTSETDBGFLAG(_f) (0) +#endif /* (!defined(RWCRTSETDBGFLAG)) */ + +#if (!defined(RWCRTSETDUMPCLIENT)) +#define RWCRTSETDUMPCLIENT(_f) (NULL) +#endif /* (!defined(RWCRTSETDUMPCLIENT)) */ + +#if (!defined(RWCRTSETREPORTFILE)) +#define RWCRTSETREPORTFILE(_t, _f) (NULL) +#endif /* (!defined(RWCRTSETREPORTFILE)) */ + +#if (!defined(RWCRTSETREPORTHOOK)) +#define RWCRTSETREPORTHOOK(_f) (NULL) +#endif /* (!defined(RWCRTSETREPORTHOOK)) */ + +#if (!defined(RWCRTSETREPORTMODE)) +#define RWCRTSETREPORTMODE(_t, _f) (0) +#endif /* (!defined(RWCRTSETREPORTMODE)) */ + +#if (!defined(RWREGSETBREAKALLOC)) +#define RWREGSETBREAKALLOC(_name) /* No op */ +#endif /* (!defined(RWREGSETBREAKALLOC)) */ + +#if (!defined(RWREGSETASSERTPRINT)) +#define RWREGSETASSERTPRINT(_name) /* No op */ +#endif /* (!defined(RWREGSETASSERTPRINT)) */ + +#if (!defined(RWGETWINREGDWORD)) +#define RWGETWINREGDWORD(_env_var, _match) /* No op */ +#endif /* (!defined(RWGETWINREGDWORD)) */ + +#if (!defined(RWGETWINREGBINARY)) +#define RWGETWINREGBINARY(_env_var, _match) /* No op */ +#endif /* (!defined(RWGETWINREGBINARY)) */ + +#if (!defined(RWGETWINREGSTRING)) +#define RWGETWINREGSTRING(_env_var, _match) /* No op */ +#endif /* (!defined(RWGETWINREGSTRING)) */ + +#if (!defined(_CRTDBG_FLAGS)) +#define _CRTDBG_FLAGS 0x33 +#endif /* (!defined(_CRTDBG_FLAGS)) */ + +/** + * \ingroup memoryfileinterface + * Macro for extracting chunkID from a hint. This is the id of either + * the object for which a memory request came, or of the module a call + * for allocation belongs to. Refer to \ref RwCorePluginID for a list of + * all object IDs and to \ref rwengine, \ref RwCriterionCoreID + * and \ref RwCriterionWorldID for a list of all module IDs. Refer to + * RwMemoryFunctions for more details about the hints. + */ +#define RwMemoryHintGetChunkID(_h) ((_h) & 0xFFFF) +/** + * \ingroup memoryfileinterface + * Macro for extracting duration from a hint. Refer to RwMemoryFunctions + * for more details about the hints. + * \see RwMemoryHintDuration + */ +#define RwMemoryHintGetDuration(_h) ((_h) & rwMEMHINTDUR_MASK) +/** + * \ingroup memoryfileinterface + * Macro for extracting flags from a hint. Refer to RwMemoryFunctions + * for more details about the hints. + * \see RwMemoryHintFlag + */ +#define RwMemoryHintGetFlags(_h) ((_h) & rwMEMHINTFLAG_MASK) + +/**************************************************************************** + Global Types + */ + +/** + * \ingroup memoryfileinterface + * This type represents the memory hint flags. + */ +enum RwMemoryHintFlag +{ + /** Indicates that memory being allocated will potentially be + * resized with calls to \ref RwRealloc + */ + rwMEMHINTFLAG_RESIZABLE = 0x01000000, + rwMEMHINTFLAG_MASK = 0xFF000000, + rwMEMHINTFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; +typedef enum RwMemoryHintFlag RwMemoryHintFlag; + +/** + * \ingroup memoryfileinterface + * This type represents the duration of a memory. + */ +enum RwMemoryHintDuration +{ + rwMEMHINTDUR_NADURATION = 0x00000000, + /** Is used for allocating some temporary memory which + * will be freed inside the function scope. + */ + rwMEMHINTDUR_FUNCTION = 0x00010000, + /** Is used for per frame memory allocations. + */ + rwMEMHINTDUR_FRAME = 0x00020000, + /** Is used for allocations which persist for longer + * than per frame, but are not global. This can be per + * level or per event. + */ + rwMEMHINTDUR_EVENT = 0x00030000, + /** Is used for all global allocations, happening on and + * before RwEngineStart() and which are freed on and after + * RwEngineStop() + */ + rwMEMHINTDUR_GLOBAL = 0x00040000, + rwMEMHINTDUR_MASK = 0x00FF0000, + rwMEMHINTDURFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; +typedef enum RwMemoryHintDuration RwMemoryHintDuration; + +/** + * \ingroup memoryfileinterface + * \struct RwMemoryFunctions + * This type represents the memory functions used by RenderWare. The + * application may override the default functions by passing a + * RwMemoryFunctions structure populated with a user defined functions + * to \ref RwEngineInit(). + * + * All RenderWare Graphics memory-management functions that allocate + * memory take an additional RwUInt32 parameter which is a memory hint. + * The main purpose of the hints is to help improve memory management, + * such as preventing memory fragmentation. To use the memory hints, you + * should have provided your own memory-management function through the + * RwEngineInit() function. For example, you might want to have a + * separate memory heap just for the RwMatrix or RpGeometry objects, or + * a separate heap for all temporary allocations inside RenderWare + * Graphics. As always, memory-management is very specific to each + * application and has to be organized and tuned for each one. + + * A memory hint contains the following information: + * RwMemoryHintDuration, RwMemoryHintFlag and chunkID. ChunkID is the id + * of either the object for which a memory request came, or of the module + * a call for allocation belongs to. Refer to \ref RwCorePluginID for a + * list of all object IDs and to \ref rwengine, \ref RwCriterionCoreID + * and \ref RwCriterionWorldID for a list of all module IDs. You can extend + * all of these fields using specific values for duration, object IDs, + * flags and create custom hints that can be passed to all the memory + * allocation calls you make. A tipical call to RwMalloc looks like: + * \code RwMalloc(size, rwID_MATRIX | rwMEMHINTDUR_FUNCTION);\endcode + * + * \note Note that once you override these function you will be responsible + * for aligning the memory properly. Memory alignment differs between the + * various platforms and it can also affect the application performance. + * + * \see RwMemoryHintGetDuration, RwMemoryHintGetChunkID, + * RwMemoryHintGetFlags, RwEngineInit. + */ +struct RwMemoryFunctions +{ + /* c.f. + * Program Files/Microsoft Visual Studio/VC98/Include/MALLOC.H + */ + void *(*rwmalloc)(size_t size, RwUInt32 hint); + /**< Allocates memory blocks. + * \param size Number of bytes to allocate. Should be greater + * then zero. + * \param hint A RwUInt32 value representing a memory hint. + * \return A void pointer to the allocated space, or NULL if + * there is insufficient memory available. + */ + void (*rwfree)(void *mem); + /**< Deallocates or frees a memory block. + * \param mem Previously allocated memory block to be freed. + * Shouldn't be NULL pointer. + */ + void *(*rwrealloc)(void *mem, size_t newSize, RwUInt32 hint); + /**< Reallocate memory blocks. + * \param mem Pointer to previously allocated memory block. + * \param size New size in bytes. Should be greater then zero. + * \param hint A RwUInt32 value representing a memory hint. + * \return A void pointer to the allocated space, or NULL if + * there is insufficient memory available. + */ + void *(*rwcalloc)(size_t numObj, size_t sizeObj, RwUInt32 hint); + /**< Allocates an array in memory with elements initialized to 0. + * \param numObj Non-zero number of elements. + * \param sizeObj Non-zero length in bytes of each element. + * \param hint A RwUInt32 value representing a memory hint. + * \return A void pointer to the allocated space, or NULL if + * there is insufficient memory available. + */ +}; +typedef struct RwMemoryFunctions RwMemoryFunctions; + + /** + * \ingroup rwfreelist + * The free list was statically allocated + * + * \see RwFreeListSetFlags + */ +#define rwFREELISTFLAG_STATIC 0x00000001 + +/** + * \ingroup rwfreelist + * \hideinitializer + * Free blocks as soon as they are empty. + * + * \see RwFreeListSetFlags + */ +#define rwFREELISTFLAG_FREEBLOCKS 0x00000002 + + +typedef struct RwFreeList RwFreeList; + +/** + * \ingroup rwfreelist + * Holds free list info, should be considered opaque. Use API functions to access. + */ +struct RwFreeList +{ + RwUInt32 entrySize; /** + rwFREELISTFLAG_FREEBLOCKS */ + RwLLLink link; /** + +#define RwFreeListAlloc(_f, _h) \ + memalign(((_f)->alignment), (_f)->entrySize) + +#else /* ((defined(__MWERKS__) || defined(__GNUC__)) && defined(__R5900__)) */ + +#define RwFreeListAlloc(_f, _h) \ + RwMalloc(((_f)->entrySize), (_h)) + +#endif /* ((defined(__MWERKS__) || defined(__GNUC__)) && defined(__R5900__)) */ + +#define RwFreeListFree(_f, _p) \ + RwFree((_p)) + +#endif /* (defined(RWDEBUG) && defined(RWNOFREELISTS) && !defined(RWKEEPFREELISTS)) */ + +#if (!defined(RwFreeListAlloc)) +#define RwFreeListAlloc(_f, _h) \ + RWSRCGLOBAL(memoryAlloc)((_f), (_h)) +#endif /* (!defined(RwFreeListAlloc)) */ + +#if (!defined(RwFreeListFree)) +#define RwFreeListFree(_f, _p) \ + RWSRCGLOBAL(memoryFree)(_f, _p) +#endif /* (!defined(RwFreeListFree)) */ + + +/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/bastream.h ---*/ + +/**************************************************************************** + Defines + */ + +#define rwSTREAMSTACKSIZE 512 + +/**************************************************************************** + Global Types + */ + +/** + * \ingroup rwstream + * \ref RwStreamType + * This type represents the different types of stream that + * can be used. + * See API section \ref rwstream + */ +enum RwStreamType +{ + rwNASTREAM = 0, /**=1000) && defined(_DEBUG)) + +typedef char MatrixString[1024]; + +#define RWMATRIXPRINT(_matrix) \ +MACRO_START \ +{ \ + MatrixString message; \ + MatrixString output; \ + \ + if (NULL != (_matrix)) \ + { \ + const RwV3d * const _x = &(_matrix)->right; \ + const RwV3d * const _y = &(_matrix)->up; \ + const RwV3d * const _z = &(_matrix)->at; \ + const RwV3d * const _w = &(_matrix)->pos; \ + \ + _snprintf(message, sizeof(MatrixString), \ + "[ [ %8.4f, %8.4f, %8.4f, %8.4f ]\n" \ + " [ %8.4f, %8.4f, %8.4f, %8.4f ]\n" \ + " [ %8.4f, %8.4f, %8.4f, %8.4f ]\n" \ + " [ %8.4f, %8.4f, %8.4f, %8.4f ] ]\n" \ + " %08x == flags\n", \ + _x->x, _x->y, _x->z, (RwReal) 0, \ + _y->x, _y->y, _y->z, (RwReal) 0, \ + _z->x, _z->y, _z->z, (RwReal) 0, \ + _w->x, _w->y, _w->z, (RwReal) 1, \ + (_matrix)->flags); \ + } \ + else \ + { \ + _snprintf(message, sizeof(MatrixString), \ + "NULL"); \ + } \ + \ + _snprintf(output, sizeof(MatrixString), \ + "%s(%d): %s [%p] ==\n%s\n", \ + __FILE__, __LINE__, \ + #_matrix, _matrix, message); \ + \ + OutputDebugString(RWSTRING(output)); \ +} \ +MACRO_STOP + +# endif /* ((_MSC_VER>=1000) && defined(_DEBUG)) */ +# endif /* (defined(_MSC_VER)) */ +#endif /* (defined(RWMATRIXMONITOR)) */ + +#if (!(defined(RWMATRIXPRINT))) +#define RWMATRIXPRINT(_matrix) /* No op */ +#endif /* (!(defined(RWMATRIXPRINT))) */ + +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup rwmatrix + * enum RwOpCombineType + * This type represents a combination operator which + * can be applied to frames and matrices. + * The operator determines the order + * in which one object is combined with another + */ +#endif /* RWADOXYGENEXTERNAL */ +enum RwOpCombineType +{ + rwCOMBINEREPLACE = 0, /**right) +#define RwMatrixGetUp(m) (&(m)->up) +#define RwMatrixGetAt(m) (&(m)->at) +#define RwMatrixGetPos(m) (&(m)->pos) + +/*--- Automatically derived from: C:/daily/rwsdk/driver/d3d9/drvmodel.h ---*/ +#ifndef D3D9_DRVMODEL_H +#define D3D9_DRVMODEL_H + +#if (defined(__ICL)) +/* Avoid voluminous + * 'warning #344: typedef name has already been declared (with same type)' + * warnings from MS include files + */ +#pragma warning( disable : 344 ) +#endif /* (defined(__ICL)) */ + + +#if (defined(RWDEBUG)) +#if (defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC)) +#define _CRTDBG_MAP_ALLOC +#endif /* defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC)) */ +#include +#define ERR_WRAP(A) (_rwRePrintErrorDDD3D((A), __FILE__, __LINE__)) +#endif /* (defined(RWDEBUG)) */ + +#if (!defined(ERR_WRAP)) +#define ERR_WRAP(A) (A) +#endif /* (!defined(ERR_WRAP)) */ + +/**************************************************************************** + Defines + */ + +/* Set true depth information (for fogging, eg) */ +#define RwIm2DVertexSetCameraX(vert, camx) /* Nothing */ +#define RwIm2DVertexSetCameraY(vert, camy) /* Nothing */ +#define RwIm2DVertexSetCameraZ(vert, camz) /* Nothing */ + +#define RwIm2DVertexSetRecipCameraZ(vert, recipz) ((vert)->rhw = recipz) + +#define RwIm2DVertexGetCameraX(vert) (cause an error) +#define RwIm2DVertexGetCameraY(vert) (cause an error) +#define RwIm2DVertexGetCameraZ(vert) (cause an error) +#define RwIm2DVertexGetRecipCameraZ(vert) ((vert)->rhw) + +/* Set screen space coordinates in a device vertex */ +#define RwIm2DVertexSetScreenX(vert, scrnx) ((vert)->x = (scrnx)) +#define RwIm2DVertexSetScreenY(vert, scrny) ((vert)->y = (scrny)) +#define RwIm2DVertexSetScreenZ(vert, scrnz) ((vert)->z = (scrnz)) +#define RwIm2DVertexGetScreenX(vert) ((vert)->x) +#define RwIm2DVertexGetScreenY(vert) ((vert)->y) +#define RwIm2DVertexGetScreenZ(vert) ((vert)->z) + +/* Set texture coordinates in a device vertex */ +#define RwIm2DVertexSetU(vert, texU, recipz) ((vert)->u = (texU)) +#define RwIm2DVertexSetV(vert, texV, recipz) ((vert)->v = (texV)) +#define RwIm2DVertexGetU(vert) ((vert)->u) +#define RwIm2DVertexGetV(vert) ((vert)->v) + +/* Modify the luminance stuff */ +#define RwIm2DVertexSetRealRGBA(vert, red, green, blue, alpha) \ + ((vert)->emissiveColor = \ + (((RwFastRealToUInt32(alpha)) << 24) | \ + ((RwFastRealToUInt32(red)) << 16) | \ + ((RwFastRealToUInt32(green)) << 8) | \ + ((RwFastRealToUInt32(blue))))) + +#define RwIm2DVertexSetIntRGBA(vert, red, green, blue, alpha) \ + ((vert)->emissiveColor = \ + ((((RwUInt32)(alpha)) << 24) | \ + (((RwUInt32)(red)) << 16) | \ + (((RwUInt32)(green)) << 8) | \ + (((RwUInt32)(blue))))) + +#define RwIm2DVertexGetRed(vert) \ + (((vert)->emissiveColor >> 16) & 0xFF) + +#define RwIm2DVertexGetGreen(vert) \ + (((vert)->emissiveColor >> 8) & 0xFF) + +#define RwIm2DVertexGetBlue(vert) \ + ((vert)->emissiveColor & 0xFF) + +#define RwIm2DVertexGetAlpha(vert) \ + (((vert)->emissiveColor >> 24) & 0xFF) + +#define RwIm2DVertexCopyRGBA(dst, src) \ + ((dst)->emissiveColor = (src)->emissiveColor) + +/* Clipper stuff */ + +#define RwIm2DVertexClipRGBA(o, i, n, f) \ +MACRO_START \ +{ \ + const RwInt32 _factor = \ + (RwFastRealToUInt32(i * (RwReal)(255))) & 255; \ + \ + (o)->emissiveColor = \ + (((((RwIm2DVertexGetAlpha(f) - RwIm2DVertexGetAlpha(n)) * \ + _factor) >> 8) + RwIm2DVertexGetAlpha(n)) << 24) | \ + (((((RwIm2DVertexGetRed(f) - RwIm2DVertexGetRed(n)) * \ + _factor) >> 8) + RwIm2DVertexGetRed(n)) << 16) | \ + (((((RwIm2DVertexGetGreen(f) - RwIm2DVertexGetGreen(n)) * \ + _factor) >> 8) + RwIm2DVertexGetGreen(n)) << 8) | \ + (((((RwIm2DVertexGetBlue(f) - RwIm2DVertexGetBlue(n)) * \ + _factor) >> 8) + RwIm2DVertexGetBlue(n))); \ +} \ +MACRO_STOP + +/**************************************************************************** + Global Types + */ + +/* We use RwD3D9Vertex to drive the hardware in 2D mode */ + +/* + * D3D9 vertex structure definition for 2D geometry + */ +#if !defined(RWADOXYGENEXTERNAL) +typedef struct RwD3D9Vertex RwD3D9Vertex; +/** + * \ingroup rwcoredriverd3d9 + * \struct RwD3D9Vertex + * D3D9 vertex structure definition for 2D geometry + */ +struct RwD3D9Vertex +{ + RwReal x; /**< Screen X */ + RwReal y; /**< Screen Y */ + RwReal z; /**< Screen Z */ + RwReal rhw; /**< Reciprocal of homogeneous W */ + + RwUInt32 emissiveColor; /**< Vertex color */ + + RwReal u; /**< Texture coordinate U */ + RwReal v; /**< Texture coordinate V */ +}; +#endif /* !defined(RWADOXYGENEXTERNAL) */ + +/* Define types used */ + +#if !defined(RWADOXYGENEXTERNAL) +/** + * \ingroup rwcoredriverd3d9 + * \ref RwIm2DVertex + * Typedef for a RenderWare Graphics Immediate Mode 2D Vertex + */ +typedef RwD3D9Vertex RwIm2DVertex; +#endif /* !defined(RWADOXYGENEXTERNAL) */ + +#if !defined(RWADOXYGENEXTERNAL) +/** + * \ingroup rwcoredriverd3d9 + * \ref RxVertexIndex + * + * Typedef for a RenderWare Graphics Powe rPipe Immediate + * Mode Vertex + */ +typedef RwUInt16 RxVertexIndex; +#endif /* !defined(RWADOXYGENEXTERNAL) */ + +#if !defined(RWADOXYGENEXTERNAL) +/** + * \ingroup rwcoredriverd3d9 + * \ref RwImVertexIndex + * Typedef for a RenderWare Graphics Immediate Mode Vertex. + */ +typedef RxVertexIndex RwImVertexIndex; +#endif /* !defined(RWADOXYGENEXTERNAL) */ + +#if !defined(RWADOXYGENEXTERNAL) +/** + * \ingroup rwcoredriverd3d9 + * \struct RwD3D9Metrics + * Structure containing metrics counters + */ +typedef struct +{ + RwUInt32 numRenderStateChanges; /**< Number of Render States changed */ + RwUInt32 numTextureStageStateChanges; /**< Number of Texture Stage States changed */ + RwUInt32 numSamplerStageStateChanges; /**< Number of Sampler States changed */ + RwUInt32 numMaterialChanges; /**< Number of Material changes */ + RwUInt32 numLightsChanged; /**< Number of Lights changed */ + RwUInt32 numVBSwitches; /**< Number of Vertex Buffer switches */ +} +RwD3D9Metrics; +#endif /* !defined(RWADOXYGENEXTERNAL) */ + +#endif /* D3D9_DRVMODEL_H */ + +/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/bavector.h ---*/ + +#define RWRAD2DEG(_x) ((_x) * (((RwReal)180)/(rwPI))) + +#if (!defined(rw4OVERPISQ)) +#define rw4OVERPISQ ( ((RwReal)4) / ( rwPI * rwPI )) +#endif /* (!defined(rw4OVERPISQ)) */ + +#if (!defined(rwPI3)) +#define rwPI3 (rwPI * (RwReal)3) +#endif /* (!defined(rwPI3)) */ + +#if (!defined(rwPI3OVER2)) +#define rwPI3OVER2 ( rwPI3 / (RwReal)2 ) +#endif /* (!defined(rwPI3OVER2)) */ + +#if (!defined(rwPI3OVER8)) +#define rwPI3OVER8 (rwPI3 / (RwReal)8 ) +#endif /* (!defined(rwPI3OVER8)) */ + +/**************************************************************************** + Global Types + */ +#if !defined(RWNOVECMULTFUNCS) +/* + * Typedef for pointer to Vector multiplication by Matrix function + */ +typedef RwV3d *(*rwVectorMultFn) (RwV3d * pointOut, + const RwV3d * pointIn, + const RwMatrix * matrix); + +typedef RwV3d *(*rwVectorsMultFn) (RwV3d * pointsOut, + const RwV3d * pointsIn, + RwInt32 numPoints, + const RwMatrix * matrix); +#endif /* !defined(RWNOVECMULTFUNCS) */ + +/* Other useful stuff */ + +/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/balist.h ---*/ +/**************************************************************************** + Global Types + */ + +typedef struct RwSList RwSList; + +#if (!defined(DOXYGEN)) +struct RwSList +{ + RwUInt8 *listElements; + RwInt32 numElementsFilled; + RwInt32 numElementsAlloced; + RwInt32 entrySize; +}; +#endif /* (!defined(DOXYGEN) */ + +/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/baimmedi.h ---*/ + +/**************************************************************************** + Defines + */ + + +/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + Immediate mode interface V2.0 + + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup rwrenderstate + * RwRenderState represents the global state variables that control + * rendering. These may be set and queried using the + * \ref RwRenderStateSet and \ref RwRenderStateGet functions respectively. + * + * Refer to the \ref rwrenderstateoverview for an overview of this system. + * + * \note The texture render states (raster, address & filter modes) would + * normally just be used when rendering in immediate mode and should be + * specificied completely every time a texture is used. Retained mode + * pipelines will frequently set theses states internally, usually based on + * \ref RwTexture objects. + */ +#endif /* RWADOXYGENEXTERNAL */ +enum RwRenderState +{ + rwRENDERSTATENARENDERSTATE = 0, + + rwRENDERSTATETEXTURERASTER, + /** Supported on Xbox, D3D8, D3D9, and OpenGL only. + * Default: FALSE. + */ + rwRENDERSTATESTENCILFAIL, + /**<\ref RwStencilOperation used when the stencil test passes. + * Supported on Xbox, D3D8, D3D9, and OpenGL only. + * Default: rwSTENCILOPERATIONKEEP. + */ + rwRENDERSTATESTENCILZFAIL, + /**<\ref RwStencilOperation used when the stencil test passes and + * the depth test (z-test) fails. + * Supported on Xbox, D3D8, D3D9, and OpenGL only. + * Default: rwSTENCILOPERATIONKEEP. + */ + rwRENDERSTATESTENCILPASS, + /**<\ref RwStencilOperation used when both the stencil and the depth + * (z) tests pass. + * Supported on Xbox, D3D8, D3D9, and OpenGL only. + * Default: rwSTENCILOPERATIONKEEP. + */ + rwRENDERSTATESTENCILFUNCTION, + /**<\ref RwStencilFunction for the stencil test. + * Supported on Xbox, D3D8, D3D9, and OpenGL only. + * Default: rwSTENCILFUNCTIONALWAYS. + */ + rwRENDERSTATESTENCILFUNCTIONREF, + /** Supported on Xbox, D3D8, D3D9, and OpenGL only. + * Default: 0. + */ + rwRENDERSTATESTENCILFUNCTIONMASK, + /** Supported on Xbox, D3D8, D3D9, and OpenGL only. + * Default: 0xffffffff. + */ + rwRENDERSTATESTENCILFUNCTIONWRITEMASK, + /** Supported on Xbox, D3D8, D3D9, and OpenGL only. + * Default: 0xffffffff. + */ + rwRENDERSTATEALPHATESTFUNCTION, + /**<\ref RwAlphaTestFunction for the alpha test. When a pixel fails, + * neither the frame buffer nor the Z-buffer are updated. + * Default: rwALPHATESTFUNCTIONGREATER (GameCube, Xbox, D3D8, D3D9 + * and OpenGL). The default PS2 behaviour is to always update the + * frame buffer and update the Z-buffer only if a greater than or + * equal test passes. + */ + rwRENDERSTATEALPHATESTFUNCTIONREF, + /** Range is 0 to 255, mapped to the platform's actual range + * Default: 128 (PS2) 0 (GameCube, Xbox, D3D8, D3D9 and OpenGL). + */ + + rwRENDERSTATEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; +typedef enum RwRenderState RwRenderState; + +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup rwrenderstate + * RwShadeMode represents the available shading modes that may be + * set using the \ref RwRenderState \ref rwRENDERSTATESHADEMODE. + */ +#endif /* RWADOXYGENEXTERNAL */ +enum RwShadeMode +{ + rwSHADEMODENASHADEMODE = 0, + rwSHADEMODEFLAT, /**red = (((a)->red) + ( (b)->red)); \ + (o)->green = (((a)->green) + ( (b)->green)); \ + (o)->blue = (((a)->blue) + ( (b)->blue)); \ + (o)->alpha = (((a)->alpha) + ( (b)->alpha)); \ +} \ +MACRO_STOP + +#define RwRGBARealSubMacro(o,a,b) \ +MACRO_START \ +{ \ + (o)->red = (((a)->red) - ( (b)->red)); \ + (o)->green = (((a)->green) - ( (b)->green)); \ + (o)->blue = (((a)->blue) - ( (b)->blue)); \ + (o)->alpha = (((a)->alpha) - ( (b)->alpha)); \ +} \ +MACRO_STOP + +#define RwRGBARealScaleMacro(o,a,scale) \ +MACRO_START \ +{ \ + (o)->red = (((a)->red) * ( scale)); \ + (o)->green = (((a)->green) * ( scale)); \ + (o)->blue = (((a)->blue) * ( scale)); \ + (o)->alpha = (((a)->alpha) * ( scale)); \ +} \ +MACRO_STOP + +/* Conversion macros */ +#define RwRGBAFromRwRGBARealMacro(o, i) \ +MACRO_START \ +{ \ + RwInt32 quantize; \ + \ + quantize = RwInt32FromRealMacro( ((i)->red * (RwReal)255.0) \ + + (RwReal)0.5 ); \ + (o)->red = (RwUInt8) quantize; \ + quantize = RwInt32FromRealMacro( ((i)->green * (RwReal)255.0) \ + + (RwReal)0.5 ); \ + (o)->green = (RwUInt8) quantize; \ + quantize = RwInt32FromRealMacro( ((i)->blue * (RwReal)255.0) \ + + (RwReal)0.5 ); \ + (o)->blue = (RwUInt8) quantize; \ + quantize = RwInt32FromRealMacro( ((i)->alpha * (RwReal)255.0) \ + + (RwReal)0.5 ); \ + (o)->alpha = (RwUInt8) quantize; \ + \ +} \ +MACRO_STOP + +#define RwRGBARealFromRwRGBAMacro(o, i) \ +MACRO_START \ +{ \ + (o)->red = \ + (((RwReal)(((i)->red))) * ( (RwReal)((1.0/255.0)))); \ + (o)->green = \ + (((RwReal)(((i)->green))) * ( (RwReal)((1.0/255.0)))); \ + (o)->blue = \ + (((RwReal)(((i)->blue))) * ( (RwReal)((1.0/255.0)))); \ + (o)->alpha = \ + (((RwReal)(((i)->alpha))) * ( (RwReal)((1.0/255.0)))); \ +} \ +MACRO_STOP + +#define RwRGBARealAdd(o,a,b) \ + RwRGBARealAddMacro(o,a,b) + +#define RwRGBARealSub(o,a,b) \ + RwRGBARealSubMacro(o,a,b) + +#define RwRGBARealScale(o,a,scale) \ + RwRGBARealScaleMacro(o,a,scale) + +#define RwRGBAFromRwRGBAReal(o, i) \ + RwRGBAFromRwRGBARealMacro(o, i) + +#define RwRGBARealFromRwRGBA(o, i) \ + RwRGBARealFromRwRGBAMacro(o, i) + +/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/babinmtx.h ---*/ + +/**************************************************************************** + Global types + */ + +/* Matrix stream format */ +typedef struct rwStreamMatrix RwMatrixChunkInfo; +typedef struct rwStreamMatrix rwStreamMatrix; +#if (!defined(DOXYGEN)) +struct rwStreamMatrix +{ + RwV3d right; + RwV3d up; + RwV3d at; + RwV3d pos; + RwInt32 type; +}; +#endif /* (!defined(DOXYGEN)) */ + +/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/babinary.h ---*/ + +/**************************************************************************** + Global Types + */ + +typedef struct RwChunkHeaderInfo RwChunkHeaderInfo; +#ifndef RWADOXYGENEXTERNAL +/** + * \ingroup rwstream + * \struct RwChunkHeaderInfo + * Holds data for a chunk header read from a + * stream with \ref RwStreamReadChunkHeaderInfo. */ +#endif /* RWADOXYGENEXTERNAL */ +struct RwChunkHeaderInfo +{ + RwUInt32 type; /**< chunk ID - see \ref RwStreamFindChunk */ + RwUInt32 length; /**< length of the chunk data in bytes */ + RwUInt32 version; /**< version of the chunk data. + * See \ref RwEngineGetVersion. */ + RwUInt32 buildNum; /**< build number of the RenderWare libraries + * previously used to stream out the data */ + RwBool isComplex; /**< Internal Use */ +}; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/rw/skeleton.h b/third-party/plugin-sdk/plugin_sa/game_sa/rw/skeleton.h new file mode 100644 index 00000000..a7e029a1 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/rw/skeleton.h @@ -0,0 +1,304 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +/**************************************************************************** + * + * skeleton.h + * + * This file is a product of Criterion Software Ltd. + * + * This file is provided as is with no warranties of any kind and is + * provided without any obligation on Criterion Software Ltd. + * or Canon Inc. to assist in its use or modification. + * + * Criterion Software Ltd. and Canon Inc. will not, under any + * circumstances, be liable for any lost revenue or other damages + * arising from the use of this file. + * + * Copyright (c) 1999, 2000 Criterion Software Ltd. + * All Rights Reserved. + * + */ +#include "rwcore.h" +#include + +/* Default arena size depending on platform. */ + +#if (defined(SKY)) +#define rsRESOURCESDEFAULTARENASIZE (8 << 20) +#elif (defined(_XBOX)) +#define rsRESOURCESDEFAULTARENASIZE (8 << 20) +#elif (defined(DOLPHIN)) +#define rsRESOURCESDEFAULTARENASIZE (4 << 20) +#elif (defined(D3D8_DRVMODEL_H)) +#define rsRESOURCESDEFAULTARENASIZE (4 << 20) +#elif (defined(D3D9_DRVMODEL_H)) +#define rsRESOURCESDEFAULTARENASIZE (4 << 20) +#elif (defined(OPENGL_DRVMODEL_H)) +#if (defined(macintosh)) +#define rsRESOURCESDEFAULTARENASIZE (2 << 20) +#else +#define rsRESOURCESDEFAULTARENASIZE (16 << 20) +#endif +#else +#define rsRESOURCESDEFAULTARENASIZE (16 << 20) +#endif + +enum RsInputDeviceType +{ + rsKEYBOARD, + rsMOUSE, + rsPAD +}; +typedef enum RsInputDeviceType RsInputDeviceType; + +enum RsEventStatus +{ + rsEVENTERROR, + rsEVENTPROCESSED, + rsEVENTNOTPROCESSED +}; +typedef enum RsEventStatus RsEventStatus; + +enum RsEvent +{ +#ifdef RWSPLASH + rsDISPLAYSPLASH, +#endif + rsCAMERASIZE, + rsCOMMANDLINE, + rsFILELOAD, + rsINITDEBUG, + rsINPUTDEVICEATTACH, + rsLEFTBUTTONDOWN, + rsLEFTBUTTONUP, + rsMOUSEMOVE, + rsMOUSEWHEELMOVE, + rsPLUGINATTACH, + rsREGISTERIMAGELOADER, + rsRIGHTBUTTONDOWN, + rsRIGHTBUTTONUP, + rsRWINITIALIZE = 21, + rsRWTERMINATE, + rsSELECTDEVICE, + rsINITIALIZE, + rsTERMINATE, + rsIDLE, + rsFRONTENDIDLE, + rsKEYDOWN, + rsKEYUP, + rsQUITAPP, + rsPADBUTTONDOWN, + rsPADBUTTONUP, + rsPADANALOGUELEFT, + rsPADANALOGUELEFTRESET, + rsPADANALOGUERIGHT, + rsPADANALOGUERIGHTRESET, + rsPREINITCOMMANDLINE, + rsACTIVATE, + rsSETMEMORYFUNCS +}; +typedef enum RsEvent RsEvent; + +typedef RsEventStatus (*RsInputEventHandler)(RsEvent event, void *param); + +typedef struct RsInputDevice RsInputDevice; +struct RsInputDevice +{ + RsInputDeviceType inputDeviceType; + RwBool used; + RsInputEventHandler inputEventHandler; +}; + +struct psGlobalType +{ + HWND window; + HINSTANCE instance; + RwBool fullScreen; + RwV2d lastMousePos; + int field_14; + void* diInterface; + void* diMouse; + void* diDevice1; + void* diDevice2; +}; + +typedef struct RsGlobalType RsGlobalType; +struct RsGlobalType +{ + const RwChar *appName; + RwInt32 maximumWidth; + RwInt32 maximumHeight; + RwInt32 maxFPS; + RwBool quit; + + psGlobalType *ps; /* platform specific data */ + + RsInputDevice keyboard; + RsInputDevice mouse; + RsInputDevice pad; +}; + +typedef struct RsMouseStatus RsMouseStatus; +struct RsMouseStatus +{ + RwV2d pos; + RwV2d delta; + RwBool shift; + RwBool control; +#if defined(macintosh) + RwBool alt; +#endif /* defined(macintosh) */ +}; + +enum RsKeyCodes +{ + rsMOUSELEFTBUTTON = 1, + rsMOUSEMIDDLEBUTTON = 2, + rsMOUSERIGHTBUTTON = 3, + rsMOUSEWHEELUPBUTTON = 4, + rsMOUSEWHEELDOWNBUTTON = 5, + rsMOUSEX1BUTTON = 6, + rsMOUSEX2BUTTON = 7, + rsSPACE = 32, + rsESC = 1000, + rsF1 = 1001, + rsF2 = 1002, + rsF3 = 1003, + rsF4 = 1004, + rsF5 = 1005, + rsF6 = 1006, + rsF7 = 1007, + rsF8 = 1008, + rsF9 = 1009, + rsF10 = 1010, + rsF11 = 1011, + rsF12 = 1012, + rsINS = 1013, + rsDEL = 1014, + rsHOME = 1015, + rsEND = 1016, + rsPGUP = 1017, + rsPGDN = 1018, + rsUP = 1019, + rsDOWN = 1020, + rsLEFT = 1021, + rsRIGHT = 1022, + rsDIVIDE = 1023, + rsTIMES = 1024, + rsPLUS = 1025, + rsMINUS = 1026, + rsPADDEL = 1027, + rsPADEND = 1028, + rsPADDOWN = 1029, + rsPADPGDN = 1030, + rsPADLEFT = 1031, + rsPAD5 = 1032, + rsNUMLOCK = 1033, + rsPADRIGHT = 1034, + rsPADHOME = 1035, + rsPADUP = 1036, + rsPADPGUP = 1037, + rsPADINS = 1038, + rsPADENTER = 1039, + rsSCROLL = 1040, + rsPAUSE = 1041, + rsBACKSP = 1042, + rsTAB = 1043, + rsCAPSLK = 1044, + rsENTER = 1045, + rsLSHIFT = 1046, + rsRSHIFT = 1047, + rsSHIFT = 1048, + rsLCTRL = 1049, + rsRCTRL = 1050, + rsLALT = 1051, + rsRALT = 1052, + rsLWIN = 1053, + rsRWIN = 1054, + rsAPPS = 1055, + rsNULL = 1056, +}; +typedef enum RsKeyCodes RsKeyCodes; + +typedef struct RsKeyStatus RsKeyStatus; +struct RsKeyStatus +{ + RwInt32 keyScanCode; + RwInt32 keyCharCode; +#if defined(macintosh) + RwBool shift; + RwBool control; + RwBool alt; +#endif /* defined(macintosh) */ +}; + +typedef struct RsPadButtonStatus RsPadButtonStatus; +struct RsPadButtonStatus +{ + RwInt32 padID; + RwUInt32 padButtons; +}; + +enum RsPadButtons +{ + rsPADDPADLEFT = 0x00000001, + rsPADDPADRIGHT = 0x00000002, + rsPADDPADUP = 0x00000004, + rsPADDPADDOWN = 0x00000008, + rsPADSTART = 0x00000010, + rsPADSELECT = 0x00000020, + rsPADBUTTON1 = 0x00000040, + rsPADBUTTON2 = 0x00000080, + rsPADBUTTON3 = 0x00000100, + rsPADBUTTON4 = 0x00000200, + rsPADBUTTON5 = 0x00000400, + rsPADBUTTON6 = 0x00000800, + rsPADBUTTON7 = 0x00001000, + rsPADBUTTON8 = 0x00002000, + rsPADBUTTONA1 = 0x00004000, + rsPADBUTTONA2 = 0x00008000 +}; +typedef enum RsPadButtons RsPadButtons; + +enum RsPrintPos +{ + rsPRINTPOSMIDDLE = 0, + + rsPRINTPOSLEFT = 1, + rsPRINTPOSRIGHT = 2, + rsPRINTPOSTOP = 4, + rsPRINTPOSBOTTOM = 8, + + rsPRINTPOSTOPLEFT = rsPRINTPOSTOP | rsPRINTPOSLEFT, + rsPRINTPOSTOPRIGHT = rsPRINTPOSTOP | rsPRINTPOSRIGHT, + rsPRINTPOSBOTTOMLEFT = rsPRINTPOSBOTTOM | rsPRINTPOSLEFT, + rsPRINTPOSBOTTOMRIGHT = rsPRINTPOSBOTTOM | rsPRINTPOSRIGHT, + + rsPRINTPOSFORCENUMSIZEINT = 0x7FFFFFFF +}; +typedef enum RsPrintPos RsPrintPos; + +/* Screen margins in charset width/height units, used w/ RsPrintPos */ +enum RsPrintMargin +{ + rsPRINTMARGINMIDDLE = 0, + +#if ((defined(SKY2_DRVMODEL_H)) || (defined(GCN_DRVMODEL_H)) || (defined(XBOX_DRVMODEL_H))) + rsPRINTMARGINTOP = 2, + rsPRINTMARGINBOTTOM = 4, + rsPRINTMARGINLEFT = 5, + rsPRINTMARGINRIGHT = 5, +#else /* ((defined(SKY2_DRVMODEL_H)) || (defined(GCN_DRVMODEL_H)) || (defined(XBOX_DRVMODEL_H)) */ + rsPRINTMARGINTOP = 1, + rsPRINTMARGINBOTTOM = 1, + rsPRINTMARGINLEFT = 1, + rsPRINTMARGINRIGHT = 1, +#endif /* ((defined(SKY2_DRVMODEL_H)) || (defined(GCN_DRVMODEL_H)) || (defined(XBOX_DRVMODEL_H)) */ + rsPRINTMARGINFORCENUMSIZEINT = 0x7FFFFFFF +}; +typedef enum RsPrintMargin RsPrintMargin; diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/tBikeHandlingData.h b/third-party/plugin-sdk/plugin_sa/game_sa/tBikeHandlingData.h new file mode 100644 index 00000000..6337a20a --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/tBikeHandlingData.h @@ -0,0 +1,30 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +struct PLUGIN_API tBikeHandlingData { + int m_nVehicleId; + float m_fLeanFwdCOM; + float m_fLeanFwdForce; + float m_fLeanBakCOM; + float m_fLeanBakForce; + float m_fMaxLean; + float m_fFullAnimLean; + float m_fDesLean; + float m_fSpeedSteer; + float m_fSlipSteer; + float m_fNoPlayerCOMz; + float m_fWheelieAng; + float m_fStoppieAng; + float m_fWheelieSteer; + float m_fWheelieStabMult; + float m_fStoppieStabMult; +}; + +VALIDATE_SIZE(tBikeHandlingData, 0x40); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/tBinaryIplFile.h b/third-party/plugin-sdk/plugin_sa/game_sa/tBinaryIplFile.h new file mode 100644 index 00000000..5894e7bd --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/tBinaryIplFile.h @@ -0,0 +1,32 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CFileObjectInstance.h" + +struct tBinaryIplFile { + char fourcc[4]; // "bnry" + unsigned short numInstances; +private: + char _unused06[14]; +public: + unsigned short numCarGenerators; +private: + char _unused16[6]; +public: + unsigned int instancesOffset; // file offset to CFileObjectInstance structures +private: + char _unused20[28]; +public: + unsigned int carGeneratorsOffset; +private: + char _unused40[12]; +public: +}; + +VALIDATE_SIZE(tBinaryIplFile, 0x4C); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/tBoatHandlingData.h b/third-party/plugin-sdk/plugin_sa/game_sa/tBoatHandlingData.h new file mode 100644 index 00000000..6f407139 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/tBoatHandlingData.h @@ -0,0 +1,26 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +struct PLUGIN_API tBoatHandlingData { + int m_nVehicleId; + float m_fThrustY; + float m_fThrustZ; + float m_fThrustAppZ; + float m_fAqPlaneForce; + float m_fAqPlaneLimit; + float m_fAqPlaneOffset; + float m_fWaveAudioMult; + float m_fLookLRBehindCamHeight; + CVector m_vecMoveRes; + CVector m_vecTurnRes; +}; + +VALIDATE_SIZE(tBoatHandlingData, 0x3C); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/tFlyingHandlingData.h b/third-party/plugin-sdk/plugin_sa/game_sa/tFlyingHandlingData.h new file mode 100644 index 00000000..5e367687 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/tFlyingHandlingData.h @@ -0,0 +1,33 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "CVector.h" + +struct PLUGIN_API tFlyingHandlingData { + int m_nVehicleId; + float m_fThrust; + float m_fThrustFallOff; + float m_fYaw; + float m_fYawStab; + float m_fSideSlip; + float m_fRoll; + float m_fRollStab; + float m_fPitch; + float m_fPitchStab; + float m_fFormLift; + float m_fAttackLift; + float m_fGearUpR; + float m_fGearDownL; + float m_fWindMult; + float m_fMoveRes; + CVector m_vecTurnRes; + CVector m_vecSpeedRes; +}; + +VALIDATE_SIZE(tFlyingHandlingData, 0x58); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/tHandlingData.h b/third-party/plugin-sdk/plugin_sa/game_sa/tHandlingData.h new file mode 100644 index 00000000..f5366321 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/tHandlingData.h @@ -0,0 +1,128 @@ +/* +Plugin-SDK (Grand Theft Auto San Andreas) header file +Authors: GTA Community. See more here +https://github.com/DK22Pac/plugin-sdk +Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "cTransmission.h" +#include "CVector.h" +#include "eVehicleHandlingModelFlags.h" +#include "eVehicleHandlingFlags.h" + +enum PLUGIN_API eVehicleLightsSize : unsigned char { + LIGHTS_LONG, + LIGHTS_SMALL, + LIGHTS_BIG, + LIGHTS_TALL +}; + +struct PLUGIN_API tHandlingData { + int m_nVehicleId; + float m_fMass; // 1.0 to 50000.0 + float field_8; + float m_fTurnMass; + float m_fDragMult; + CVector m_vecCentreOfMass; // x, y, z - 1.0 to 50000.0 + unsigned char m_nPercentSubmerged; // 10 to 120 (> 100% vehicle sinks) + float m_fBuoyancyConstant; + float m_fTractionMultiplier; // 0.5 to 2.0 + cTransmission m_transmissionData; + float m_fBrakeDeceleration; // 0.1 to 10.0 + float m_fBrakeBias; // 0.0 > x > 1.0 + char m_bABS; // 0/1 + char field_9D; + char field_9E; + char field_9F; + float m_fSteeringLock; // 10.0 to 40.0 + float m_fTractionLoss; + float m_fTractionBias; + float m_fSuspensionForceLevel; // not [L/M/H] + float m_fSuspensionDampingLevel; // not [L/M/H] + float m_fSuspensionHighSpdComDamp; // often zero - 200.0 or more for bouncy vehicles + float m_fSuspensionUpperLimit; + float m_fSuspensionLowerLimit; + float m_fSuspensionBiasBetweenFrontAndRear; + float m_fSuspensionAntiDiveMultiplier; + float m_fCollisionDamageMultiplier; // 0.2 to 5.0 + union { + eVehicleHandlingModelFlags m_nModelFlags; + struct { + unsigned int m_bIsVan : 1; + unsigned int m_bIsBus : 1; + unsigned int m_bIsLow : 1; + unsigned int m_bIsBig : 1; + unsigned int m_bReverseBonnet : 1; + unsigned int m_bHangingBoot : 1; + unsigned int m_bTailgateBoot : 1; + unsigned int m_bNoswingBoot : 1; + unsigned int m_bNoDoors : 1; + unsigned int m_bTandemSeats : 1; + unsigned int m_bSitInBoat : 1; + unsigned int m_bConvertible : 1; + unsigned int m_bNoExhaust : 1; + unsigned int m_bDoubleExhaust : 1; + unsigned int m_bNo1fpsLookBehind : 1; + unsigned int m_bForceDoorCheck : 1; + unsigned int m_bAxleFNotlit : 1; + unsigned int m_bAxleFSolid : 1; + unsigned int m_bAxleFMcpherson : 1; + unsigned int m_bAxleFReverse : 1; + unsigned int m_bAxleRNotlit : 1; + unsigned int m_bAxleRSolid : 1; + unsigned int m_bAxleRMcpherson : 1; + unsigned int m_bAxleRReverse : 1; + unsigned int m_bIsBike : 1; + unsigned int m_bIsHeli : 1; + unsigned int m_bIsPlane : 1; + unsigned int m_bIsBoat : 1; + unsigned int m_bBouncePanels : 1; + unsigned int m_bDoubleRwheels : 1; + unsigned int m_bForceGroundClearance : 1; + unsigned int m_bIsHatchback : 1; + }; + }; + union { + eVehicleHandlingFlags m_nHandlingFlags; + struct { + unsigned int m_b1gBoost : 1; + unsigned int m_b2gBoost : 1; + unsigned int m_bNpcAntiRoll : 1; + unsigned int m_bNpcNeutralHandl : 1; + unsigned int m_bNoHandbrake : 1; + unsigned int m_bSteerRearwheels : 1; + unsigned int m_bHbRearwheelSteer : 1; + unsigned int m_bAltSteerOpt : 1; + unsigned int m_bWheelFNarrow2 : 1; + unsigned int m_bWheelFNarrow : 1; + unsigned int m_bWheelFWide : 1; + unsigned int m_bWheelFWide2 : 1; + unsigned int m_bWheelRNarrow2 : 1; + unsigned int m_bWheelRNarrow : 1; + unsigned int m_bWheelRWide : 1; + unsigned int m_bWheelRWide2 : 1; + unsigned int m_bHydraulicGeom : 1; + unsigned int m_bHydraulicInst : 1; + unsigned int m_bHydraulicNone : 1; + unsigned int m_bNosInst : 1; + unsigned int m_bOffroadAbility : 1; + unsigned int m_bOffroadAbility2 : 1; + unsigned int m_bHalogenLights : 1; + unsigned int m_bProcRearwheelFirst : 1; + unsigned int m_bUseMaxspLimit : 1; + unsigned int m_bLowRider : 1; + unsigned int m_bStreetRacer : 1; + unsigned int m_bUnused1 : 1; + unsigned int m_bSwingingChassis : 1; + }; + }; + float m_fSeatOffsetDistance; // // ped seat position offset towards centre of car + unsigned int m_nMonetaryValue; // 1 to 100000 + eVehicleLightsSize m_nFrontLights; + eVehicleLightsSize m_nRearLights; + unsigned char m_nAnimGroup; +}; + +VALIDATE_SIZE(tHandlingData, 0xE0); diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/tPickupMessage.h b/third-party/plugin-sdk/plugin_sa/game_sa/tPickupMessage.h new file mode 100644 index 00000000..fced5d55 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/tPickupMessage.h @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include "CRGBA.h" + +struct tPickupMessage { + float x; + float y; + float z; + float width; + float height; + CRGBA color; + unsigned char flags; + char field_19; +private: + char _pad1A[2]; +public: + unsigned int price; + char *messageText; +}; + +VALIDATE_SIZE(tPickupMessage, 0x24); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/game_sa/tTransmissionGear.h b/third-party/plugin-sdk/plugin_sa/game_sa/tTransmissionGear.h new file mode 100644 index 00000000..fca20f09 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/game_sa/tTransmissionGear.h @@ -0,0 +1,18 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +struct PLUGIN_API tTransmissionGear +{ + float m_fMaxVelocity; + float m_fChangeUpVelocity; + float m_fChangeDownVelocity; +}; + +VALIDATE_SIZE(tTransmissionGear, 0xC); \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/plugin_sa.h b/third-party/plugin-sdk/plugin_sa/plugin_sa.h new file mode 100644 index 00000000..1ecf8a62 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/plugin_sa.h @@ -0,0 +1,9 @@ +/* + Plugin-SDK (Grand Theft Auto San Andreas) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "plugin.h" diff --git a/third-party/plugin-sdk/plugin_sa/plugin_sa.vcxproj b/third-party/plugin-sdk/plugin_sa/plugin_sa.vcxproj new file mode 100644 index 00000000..d8fff389 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/plugin_sa.vcxproj @@ -0,0 +1,996 @@ + + + + + Release + Win32 + + + zDebug + Win32 + + + + {E7E89EBA-5353-5331-9C91-04D7083B3186} + true + Win32Proj + plugin_sa + + + + StaticLibrary + false + MultiByte + v142 + true + + + StaticLibrary + true + MultiByte + v142 + + + + + + + + + + + + + $(PLUGIN_SDK_DIR)\output\lib\ + $(PLUGIN_SDK_DIR)\output\obj\$(ProjectName)\Release\ + plugin + .lib + + + $(PLUGIN_SDK_DIR)\output\lib\ + $(PLUGIN_SDK_DIR)\output\obj\$(ProjectName)\Debug\ + plugin_d + .lib + + + + NotUsing + Level3 + 4073;%(DisableSpecificWarnings) + _CRT_SECURE_NO_WARNINGS;_CRT_NON_CONFORMING_SWPRINTFS;GTASA;PLUGIN_SGV_10US;_USE_MATH_DEFINES;%(PreprocessorDefinitions) + $(PLUGIN_SDK_DIR)\plugin_sa;$(PLUGIN_SDK_DIR)\plugin_sa\game_sa;$(PLUGIN_SDK_DIR)\shared;$(PLUGIN_SDK_DIR)\shared\game;%(AdditionalIncludeDirectories) + None + Full + true + true + false + true + MultiThreaded + /sdl- /std:c++latest %(AdditionalOptions) + + + _CRT_SECURE_NO_WARNINGS;_CRT_NON_CONFORMING_SWPRINTFS;GTASA;PLUGIN_SGV_10US;%(PreprocessorDefinitions) + $(PLUGIN_SDK_DIR)\plugin_sa;$(PLUGIN_SDK_DIR)\plugin_sa\game_sa;$(PLUGIN_SDK_DIR)\shared;$(PLUGIN_SDK_DIR)\shared\game;%(AdditionalIncludeDirectories) + + + Windows + false + true + true + + + MachineX86 + + + + + NotUsing + Level3 + 4073;%(DisableSpecificWarnings) + _CRT_SECURE_NO_WARNINGS;_CRT_NON_CONFORMING_SWPRINTFS;GTASA;PLUGIN_SGV_10US;%(PreprocessorDefinitions) + $(PLUGIN_SDK_DIR)\plugin_sa;$(PLUGIN_SDK_DIR)\plugin_sa\game_sa;$(PLUGIN_SDK_DIR)\shared;$(PLUGIN_SDK_DIR)\shared\game;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + MultiThreadedDebug + /sdl- /std:c++latest %(AdditionalOptions) + + + _CRT_SECURE_NO_WARNINGS;_CRT_NON_CONFORMING_SWPRINTFS;GTASA;PLUGIN_SGV_10US;%(PreprocessorDefinitions) + $(PLUGIN_SDK_DIR)\plugin_sa;$(PLUGIN_SDK_DIR)\plugin_sa\game_sa;$(PLUGIN_SDK_DIR)\shared;$(PLUGIN_SDK_DIR)\shared\game;%(AdditionalIncludeDirectories) + + + Windows + true + + + MachineX86 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/third-party/plugin-sdk/plugin_sa/plugin_sa.vcxproj.filters b/third-party/plugin-sdk/plugin_sa/plugin_sa.vcxproj.filters new file mode 100644 index 00000000..1b0e1d84 --- /dev/null +++ b/third-party/plugin-sdk/plugin_sa/plugin_sa.vcxproj.filters @@ -0,0 +1,2676 @@ + + + + + {92E89FE6-FEC7-1E82-07E0-A958733E85E3} + + + {C815F266-B478-810B-5DFE-B9C149404D8E} + + + {6ACEC7D5-5686-0923-BF8D-E27EAB64A413} + + + {9C5CB11B-88FE-DBF1-71B9-EF455DFA6242} + + + {D486591C-403C-D211-C930-CCE835E5C815} + + + {FA4D5A1C-6603-D311-EFF7-CCE85BACC915} + + + {EBF0DA17-5752-B825-E0BF-FED74C20EFE4} + + + {EA9E7FD9-562A-ED9D-5F3B-7092CB45499E} + + + {5BA4F438-C7BA-F2CE-1032-7EF07C87C356} + + + {3DA7DB79-A9B4-0960-329B-054B9EA7D516} + + + {E5435C1C-51F9-D411-DAED-CEE846A2CB15} + + + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared\bass + + + shared + + + shared\comp + + + shared\comp + + + shared\comp\plugins + + + shared\extender + + + shared\extender + + + shared\extender + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\extensions\scripting + + + shared\game + + + shared\game + + + shared\game + + + shared + + + shared + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\meta + + + game_sa\rw + + + game_sa\rw + + + game_sa\rw + + + game_sa\rw + + + game_sa\rw + + + game_sa\rw + + + game_sa\rw + + + game_sa\rw + + + game_sa\rw + + + game_sa\rw + + + game_sa\rw + + + game_sa\rw + + + game_sa\rw + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared + + + shared\comp + + + shared\comp + + + shared\comp\plugins + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\extensions + + + shared\game + + + shared\game + + + shared\game + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + game_sa + + + + + shared + + + \ No newline at end of file diff --git a/third-party/plugin-sdk/shared/ArgPicker.h b/third-party/plugin-sdk/shared/ArgPicker.h new file mode 100644 index 00000000..70f337e4 --- /dev/null +++ b/third-party/plugin-sdk/shared/ArgPicker.h @@ -0,0 +1,73 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include +#include + +namespace plugin { + +template +struct ArgTypes {}; + +template +struct ArgPick; + +template +struct ArgPick, Indices...> { + using CallbackType = std::function; + using FnPtrType = void(*)(Types...); + + template + void operator()(CallbackType fun, Tuple& t) const { fun(std::get(t)...); } +}; + +struct DefaultArgs {}; + +template +struct DefaultArgPicker { + using CallbackType = std::function; + using FnPtrType = void(*)(Types...); + + template + void call_it(CallbackType const &fun, Tuple& t, std::index_sequence) const { + fun(std::get(t)...); + } + + template + void operator()(CallbackType fun, Tuple& t) const { + call_it(fun, t, std::make_index_sequence::value>{}); + } +}; + +using NoArgs = ArgPick>; + +using ArgPickNone = NoArgs; + +template +using ArgPickN = ArgPick, N>; + +template +using ArgPick2N = ArgPick, N1, N2>; + +template +using ArgPick3N = ArgPick, N1, N2, N3>; + +template +using ArgPick4N = ArgPick, N1, N2, N3, N4>; + +template +using ArgPick5N = ArgPick, N1, N2, N3, N4, N5>; + +template +using ArgPick6N = ArgPick, N1, N2, N3, N4, N5, N6>; + +template +using ArgPick10N = ArgPick, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10>; + +template +using ArgPick11N = ArgPick, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11>; +} diff --git a/third-party/plugin-sdk/shared/Audio.cpp b/third-party/plugin-sdk/shared/Audio.cpp new file mode 100644 index 00000000..63dfd37d --- /dev/null +++ b/third-party/plugin-sdk/shared/Audio.cpp @@ -0,0 +1,177 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "plugin.h" +#include "Audio.h" +#ifdef GTA2 +#include "GBH.h" +#else +#include "RenderWare.h" +#endif +#include "bass/bass.h" + +#pragma comment(lib, "bass.lib") + +using namespace plugin; + +bool BassAudio::bassInit = false; +std::vector BassAudio::objects = {}; + +void BassAudio::BassSetEvents() { + if (!bassInit) { + BassInit(); + + plugin::Events::gameProcessEvent += [&] { + BassUpdate(); + }; + +#ifdef GTA2 + plugin::Events::shutdownEngineEvent += [&] { +#else + plugin::Events::shutdownRwEvent += [&] { +#endif + BassShutdown(); + }; + + bassInit = true; + } +} + +void BassAudio::BassInit() { + BASS_Init(-1, 44100, 0, NULL, NULL); +} + +void BassAudio::BassShutdown() { + BASS_Free(); +} + +void BassAudio::BassUpdate() { + for (auto& obj : objects) { + for (auto& chu : obj->chunks) { + BASS_SAMPLE info; + BASS_SampleGetInfo(chu.chunk, &info); + + DWORD* channels = new DWORD[info.max * sizeof(HCHANNEL)]; + DWORD count = BASS_SampleGetChannels(chu.chunk, channels); + + for (DWORD i = 0; i < count; i++) { +#ifdef GTA2 + void* wnd = GetHWnd(); +#else + void* wnd = RsGlobal.ps->window; +#endif + + if ((wnd && GetForegroundWindow() == wnd) && !obj->settings.mute()) { + BASS_ChannelSetAttribute(channels[i], BASS_ATTRIB_VOL, chu.volume * obj->settings.masterVolume()); + } + else + BASS_ChannelSetAttribute(channels[i], BASS_ATTRIB_VOL, 0.0f); + + int a = BASS_ChannelIsActive(channels[i]); + if (obj->settings.playPause() && a == BASS_ACTIVE_PAUSED) { + BASS_ChannelPlay(channels[i], FALSE); + } + else if (!obj->settings.playPause() && a == BASS_ACTIVE_PLAYING) { + BASS_ChannelPause(channels[i]); + } + + if (obj->settings.stop()) { + BASS_ChannelStop(channels[i]); + } + + if (obj->settings.loop()) { + BASS_ChannelFlags(channels[i], BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP); + } + else { + BASS_ChannelFlags(channels[i], NULL, BASS_SAMPLE_LOOP); + } + } + delete[] channels; + } + } +} + +void BassAudio::BassAddObject(BassAudioObject* obj) { + BassAudio::objects.push_back(obj); +} + +void BassAudio::BassRemoveObject(BassAudioObject* obj) { + if (BassAudio::objects.size() > 0) + BassAudio::objects.erase(std::remove(BassAudio::objects.begin(), BassAudio::objects.end(), obj), BassAudio::objects.end()); +} + +// BASS Audio Object + +BassAudioObject::BassAudioObject() { + chunks.reserve(16); + + settings.mute = [] { return false; }; + settings.masterVolume = [] { return 1.0f; }; + settings.playPause = [] { return true; }; + settings.stop = [] { return false; }; + settings.loop = [] { return false; }; + + BassAudio::BassSetEvents(); + BassAudio::BassAddObject(this); +} + +BassAudioObject::~BassAudioObject() { + for (auto& it : chunks) + BASS_SampleFree(it.chunk); + + BassAudio::BassRemoveObject(this); +} + +void BassAudioObject::LoadChunk(const char* file) { + unsigned long chunk = BASS_SampleLoad(FALSE, file, 0, 0, 3, 0); + chunks.push_back({chunk, 1.0f}); +} + +void BassAudioObject::LoadChunks(std::vector files) { + for (auto& it : files) { + LoadChunk(it); + } +} + +void BassAudioObject::PlayChunk(int id, float volume) { + auto c = BASS_SampleGetChannel(chunks[id].chunk, NULL); + volume = CLAMP(volume, 0.0f, 1.0f); + chunks[id].volume = volume; + BASS_ChannelSetAttribute(c, BASS_ATTRIB_VOL, chunks[id].volume * settings.masterVolume()); + BASS_ChannelPlay(c, TRUE); +} + +void BassAudioObject::StopChunk(int id) { + BASS_SAMPLE info; + BASS_SampleGetInfo(chunks[id].chunk, &info); + + DWORD* channels = new DWORD[info.max * sizeof(HCHANNEL)]; + DWORD count = BASS_SampleGetChannels(chunks[id].chunk, channels); + + for (DWORD i = 0; i < count; i++) { + BASS_ChannelSetPosition(channels[i], 0, BASS_POS_BYTE); + BASS_SampleStop(channels[i]); + BASS_ChannelStop(channels[i]); + } + delete[] channels; +} + +void BassAudioObject::StopAllChunks() { + for (auto& chu : chunks) { + BASS_SAMPLE info; + BASS_SampleGetInfo(chu.chunk, &info); + + DWORD* channels = new DWORD[info.max * sizeof(HCHANNEL)]; + DWORD count = BASS_SampleGetChannels(chu.chunk, channels); + + for (DWORD i = 0; i < count; i++) { + BASS_ChannelSetPosition(channels[i], 0, BASS_POS_BYTE); + BASS_SampleStop(channels[i]); + BASS_ChannelStop(channels[i]); + } + delete[] channels; + } +} diff --git a/third-party/plugin-sdk/shared/Audio.h b/third-party/plugin-sdk/shared/Audio.h new file mode 100644 index 00000000..dcac4de5 --- /dev/null +++ b/third-party/plugin-sdk/shared/Audio.h @@ -0,0 +1,52 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" + +namespace plugin { + struct BassChunk { + unsigned long chunk; + float volume; + }; + + class BassAudioObject { + public: + std::vector chunks; + + struct { + std::function mute; + std::function masterVolume; + std::function playPause; + std::function stop; + std::function loop; + } settings; + + public: + BassAudioObject(); + ~BassAudioObject(); + + void LoadChunk(const char* file); + void LoadChunks(std::vector files); + void PlayChunk(int id, float volume); + void StopChunk(int id); + void StopAllChunks(); + }; + + class BassAudio { + private: + static bool bassInit; + static std::vector objects; + + public: + static void BassSetEvents(); + static void BassInit(); + static void BassUpdate(); + static void BassShutdown(); + static void BassAddObject(BassAudioObject* obj); + static void BassRemoveObject(BassAudioObject* obj); + }; +} diff --git a/third-party/plugin-sdk/shared/Base.h b/third-party/plugin-sdk/shared/Base.h new file mode 100644 index 00000000..34b7fbf4 --- /dev/null +++ b/third-party/plugin-sdk/shared/Base.h @@ -0,0 +1,55 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include + +#define PLUGIN_API + +#define VALIDATE_SIZE(struc, size) static_assert(sizeof(struc) == size, "Invalid structure size of " #struc) +#define VALIDATE_OFFSET(struc, member, offset) \ + static_assert(offsetof(struc, member) == offset, "The offset of " #member " in " #struc " is not " #offset "...") + +VALIDATE_SIZE(bool, 1); +VALIDATE_SIZE(char, 1); +VALIDATE_SIZE(short, 2); +VALIDATE_SIZE(int, 4); +VALIDATE_SIZE(float, 4); +VALIDATE_SIZE(long long, 8); + +// Basic types for structures describing +typedef unsigned char bool8; +typedef int bool32; +typedef long long int64; +typedef unsigned long long uint64; +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned int uint; + +#define _IGNORED_ +#define _CAN_BE_NULL_ + +#if (defined(__GNUC__) || defined(__GNUG__) || defined(__clang__)) +#define PLUGIN_SOURCE_FILE +#define PLUGIN_VARIABLE +#define _NOINLINE_ +#elif (defined(_MSC_VER)) +#define PLUGIN_SOURCE_FILE __pragma(init_seg(lib)) +#define PLUGIN_VARIABLE +#define _NOINLINE_ __declspec(noinline) +#else +#define PLUGIN_SOURCE_FILE +#define PLUGIN_VARIABLE +#define _NOINLINE_ +#endif + +// III/VC char > wchar_t string conversion +#define _SWSTRING_INIT(str, id) std::wstring my_ws##id; for (size_t i = 0; i < strlen(str); i++) my_ws##id += str[i] +#define _SWSTRING(id) const_cast(my_ws##id.c_str()) +#define _SWSTRING_STATIC_INIT(id) static wchar_t my_ws##id[512] ; my_ws##id[0] = 0 +#define _SWSTRING_STATIC(id) my_ws##id +#define _SWSTRING_STATIC_FROM(id, src) for (size_t i = 0; i < strlen(src); i++) my_ws##id[i] = src[i] +#define _SWSTRING_STATIC_TO(id, dst) for (size_t i = 0; i < wcslen(my_ws##id); i++) dst[i] = static_cast(my_ws##id[i]) diff --git a/third-party/plugin-sdk/shared/Color.cpp b/third-party/plugin-sdk/shared/Color.cpp new file mode 100644 index 00000000..c0563f1d --- /dev/null +++ b/third-party/plugin-sdk/shared/Color.cpp @@ -0,0 +1,152 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "Color.h" +#include "Base.h" + +PLUGIN_SOURCE_FILE + +PLUGIN_VARIABLE CRGBA plugin::color::IndianRed = { 205, 92, 92, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightCoral = { 240, 128, 128, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Salmon = { 250, 128, 114, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkSalmon = { 233, 150, 122, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightSalmon = { 255, 160, 122, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Crimson = { 220, 20, 60, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Red = { 255, 0, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::FireBrick = { 178, 34, 34, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkRed = { 139, 0, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Pink = { 255, 192, 203, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightPink = { 255, 182, 193, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::HotPink = { 255, 105, 180, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DeepPink = { 255, 20, 147, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::MediumVioletRed = { 199, 21, 133, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::PaleVioletRed = { 219, 112, 147, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Coral = { 255, 127, 80, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Tomato = { 255, 99, 71, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::OrangeRed = { 255, 69, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkOrange = { 255, 140, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Orange = { 255, 165, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Gold = { 255, 215, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Yellow = { 255, 255, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightYellow = { 255, 255, 224, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LemonChion = { 255, 250, 205, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightGoldenrodYellow = { 250, 250, 210, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::PapayaWhip = { 255, 239, 213, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Moccasin = { 255, 228, 181, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::PeachPu = { 255, 218, 185, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::PaleGoldenrod = { 238, 232, 170, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Khaki = { 240, 230, 140, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkKhaki = { 189, 183, 107, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Lavender = { 230, 230, 250, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Thistle = { 216, 191, 216, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Plum = { 221, 160, 221, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Violet = { 238, 130, 238, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Orchid = { 218, 112, 214, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Fuchsia = { 255, 0, 255, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Magenta = { 255, 0, 255, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::MediumOrchid = { 186, 85, 211, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::MediumPurple = { 147, 112, 219, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::BlueViolet = { 138, 43, 226, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkViolet = { 148, 0, 211, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkOrchid = { 153, 50, 204, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkMagenta = { 139, 0, 139, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Purple = { 128, 0, 128, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Indigo = { 75, 0, 130, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::SlateBlue = { 106, 90, 205, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkSlateBlue = { 72, 61, 139, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::GreenYellow = { 173, 255, 47, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Chartreuse = { 127, 255, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LawnGreen = { 124, 252, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Lime = { 0, 255, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LimeGreen = { 50, 205, 50, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::PaleGreen = { 152, 251, 152, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightGreen = { 144, 238, 144, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::MediumSpringGreen = { 0, 250, 154, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::SpringGreen = { 0, 255, 127, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::MediumSeaGreen = { 60, 179, 113, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::SeaGreen = { 46, 139, 87, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::ForestGreen = { 34, 139, 34, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Green = { 0, 128, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkGreen = { 0, 100, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::YellowGreen = { 154, 205, 50, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::OliveDrab = { 107, 142, 35, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Olive = { 128, 128, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkOliveGreen = { 85, 107, 47, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::MediumAquamarine = { 102, 205, 170, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkSeaGreen = { 143, 188, 143, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightSeaGreen = { 32, 178, 170, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkCyan = { 0, 139, 139, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Teal = { 0, 128, 128, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Aqua = { 0, 255, 255, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Cyan = { 0, 255, 255, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightCyan = { 224, 255, 255, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::PaleTurquoise = { 175, 238, 238, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Aquamarine = { 127, 255, 212, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Turquoise = { 64, 224, 208, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::MediumTurquoise = { 72, 209, 204, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkTurquoise = { 0, 206, 209, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::CadetBlue = { 95, 158, 160, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::SteelBlue = { 70, 130, 180, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightSteelBlue = { 176, 196, 222, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::PowderBlue = { 176, 224, 230, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightBlue = { 173, 216, 230, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::SkyBlue = { 135, 206, 235, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightSkyBlue = { 135, 206, 250, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DeepSkyBlue = { 0, 191, 255, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DodgerBlue = { 30, 144, 255, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::CornlowerBlue = { 100, 149, 237, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::MediumSlateBlue = { 123, 104, 238, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::RoyalBlue = { 65, 105, 225, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Blue = { 0, 0, 255, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::MediumBlue = { 0, 0, 205, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkBlue = { 0, 0, 139, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Navy = { 0, 0, 128, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::MidnightBlue = { 25, 25, 112, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Cornsilk = { 255, 248, 220, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::BlanchedAlmond = { 255, 235, 205, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Bisque = { 255, 228, 196, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::NavajoWhite = { 255, 222, 173, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Wheat = { 245, 222, 179, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::BurlyWood = { 222, 184, 135, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Tan = { 210, 180, 140, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::RosyBrown = { 188, 143, 143, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::SandyBrown = { 244, 164, 96, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Goldenrod = { 218, 165, 32, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkGoldenrod = { 184, 134, 11, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Peru = { 205, 133, 63, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Chocolate = { 210, 105, 30, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::SaddleBrown = { 139, 69, 19, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Sienna = { 160, 82, 45, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Brown = { 165, 42, 42, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Maroon = { 128, 0, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::White = { 255, 255, 255, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Snow = { 255, 250, 250, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Honeydew = { 240, 255, 240, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::MintCream = { 245, 255, 250, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Azure = { 240, 255, 255, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::AliceBlue = { 240, 248, 255, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::GhostWhite = { 248, 248, 255, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::WhiteSmoke = { 245, 245, 245, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Seashell = { 255, 245, 238, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Beige = { 245, 245, 220, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::OldLace = { 253, 245, 230, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::FloralWhite = { 255, 250, 240, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Ivory = { 255, 255, 240, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::AntiqueWhite = { 250, 235, 215, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Linen = { 250, 240, 230, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LavenderBlush = { 255, 240, 245, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::MistyRose = { 255, 228, 225, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Gainsboro = { 220, 220, 220, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightGrey = { 211, 211, 211, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Silver = { 192, 192, 192, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkGray = { 169, 169, 169, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Gray = { 128, 128, 128, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DimGray = { 105, 105, 105, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::LightSlateGray = { 119, 136, 153, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::SlateGray = { 112, 128, 144, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::DarkSlateGray = { 47, 79, 79, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Black = { 0, 0, 0, 255 }; +PLUGIN_VARIABLE CRGBA plugin::color::Transparent = { 0, 0, 0, 0 }; diff --git a/third-party/plugin-sdk/shared/Color.h b/third-party/plugin-sdk/shared/Color.h new file mode 100644 index 00000000..4034c1d4 --- /dev/null +++ b/third-party/plugin-sdk/shared/Color.h @@ -0,0 +1,157 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "CRGBA.h" + +namespace plugin { + +namespace color { + extern CRGBA IndianRed, + LightCoral, + Salmon, + DarkSalmon, + Crimson, + Red, + FireBrick, + DarkRed, + Pink, + LightPink, + HotPink, + DeepPink, + MediumVioletRed, + PaleVioletRed, + LightSalmon, + Coral, + Tomato, + OrangeRed, + DarkOrange, + Orange, + Gold, + Yellow, + LightYellow, + LemonChion, + LightGoldenrodYellow, + PapayaWhip, + Moccasin, + PeachPu, + PaleGoldenrod, + Khaki, + DarkKhaki, + Lavender, + Thistle, + Plum, + Violet, + Orchid, + Fuchsia, + Magenta, + MediumOrchid, + MediumPurple, + BlueViolet, + DarkViolet, + DarkOrchid, + DarkMagenta, + Purple, + Indigo, + SlateBlue, + DarkSlateBlue, + GreenYellow, + Chartreuse, + LawnGreen, + Lime, + LimeGreen, + PaleGreen, + LightGreen, + MediumSpringGreen, + SpringGreen, + MediumSeaGreen, + SeaGreen, + ForestGreen, + Green, + DarkGreen, + YellowGreen, + OliveDrab, + Olive, + DarkOliveGreen, + MediumAquamarine, + DarkSeaGreen, + LightSeaGreen, + DarkCyan, + Teal, + Aqua, + Cyan, + LightCyan, + PaleTurquoise, + Aquamarine, + Turquoise, + MediumTurquoise, + DarkTurquoise, + CadetBlue, + SteelBlue, + LightSteelBlue, + PowderBlue, + LightBlue, + SkyBlue, + LightSkyBlue, + DeepSkyBlue, + DodgerBlue, + CornlowerBlue, + MediumSlateBlue, + RoyalBlue, + Blue, + MediumBlue, + DarkBlue, + Navy, + MidnightBlue, + Cornsilk, + BlanchedAlmond, + Bisque, + NavajoWhite, + Wheat, + BurlyWood, + Tan, + RosyBrown, + SandyBrown, + Goldenrod, + DarkGoldenrod, + Peru, + Chocolate, + SaddleBrown, + Sienna, + Brown, + Maroon, + White, + Snow, + Honeydew, + MintCream, + Azure, + AliceBlue, + GhostWhite, + WhiteSmoke, + Seashell, + Beige, + OldLace, + FloralWhite, + Ivory, + AntiqueWhite, + Linen, + LavenderBlush, + MistyRose, + Gainsboro, + LightGrey, + Silver, + DarkGray, + Gray, + DimGray, + LightSlateGray, + SlateGray, + DarkSlateGray, + Black, + Transparent; +}; + +} \ No newline at end of file diff --git a/third-party/plugin-sdk/shared/DynAddress.cpp b/third-party/plugin-sdk/shared/DynAddress.cpp new file mode 100644 index 00000000..f30885a7 --- /dev/null +++ b/third-party/plugin-sdk/shared/DynAddress.cpp @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "DynAddress.h" +#include +#include "Base.h" + +int _NOINLINE_ plugin::GetBaseAddress() { + static int addr = reinterpret_cast(GetModuleHandleA(NULL)); + return addr; +} + +int _NOINLINE_ plugin::GetGlobalAddress(int address) { + return GetBaseAddress() - 0x400000 + address; +} + +const int _NOINLINE_ plugin::GetExternalAddress(const char* processName, int shift, int address) { + static int addr = reinterpret_cast(GetModuleHandleA(processName)); + return (GetBaseAddress() - 0x400000) + (addr - shift + address); +} + \ No newline at end of file diff --git a/third-party/plugin-sdk/shared/DynAddress.h b/third-party/plugin-sdk/shared/DynAddress.h new file mode 100644 index 00000000..595d93b2 --- /dev/null +++ b/third-party/plugin-sdk/shared/DynAddress.h @@ -0,0 +1,17 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +namespace plugin { + +int GetBaseAddress(); + +int GetGlobalAddress(int address); + +const int GetExternalAddress(const char* processName, int shift, int address); + +} diff --git a/third-party/plugin-sdk/shared/Error.h b/third-party/plugin-sdk/shared/Error.h new file mode 100644 index 00000000..e41e09e6 --- /dev/null +++ b/third-party/plugin-sdk/shared/Error.h @@ -0,0 +1,86 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include +#include +#include +#include "extensions\Paths.h" + +namespace plugin +{ + struct message_gen { + template + static bool msga(char const *title, int iconType, char const *format, ArgTypes... Args) { + static char text[1024]; + sprintf_s(text, format, Args...); + std::string messageTitle; + if (title) + messageTitle = title; + MessageBoxA(GetActiveWindow(), text, messageTitle.c_str(), iconType); + return false; + } + + template + static bool msgw(wchar_t const *title, int iconType, wchar_t const *format, ArgTypes... Args) { + static wchar_t text[1024]; + swprintf_s(text, format, Args...); + std::wstring messageTitle; + if (title) + messageTitle = title; + MessageBoxW(GetActiveWindow(), text, messageTitle.c_str(), iconType); + return false; + } + }; + + template bool Message(char const *format, ArgTypes... Args) { + return message_gen::msga(plugin::paths::GetPluginFileNameA(), MB_ICONINFORMATION, format, Args...); + } + + template bool Warning(char const *format, ArgTypes... Args) { + return message_gen::msga(plugin::paths::GetPluginFileNameA(), MB_ICONWARNING, format, Args...); + } + + template bool Error(char const *format, ArgTypes... Args) { + return message_gen::msga(plugin::paths::GetPluginFileNameA(), MB_ICONERROR, format, Args...); + } + + template bool Message(wchar_t const *format, ArgTypes... Args) { + return message_gen::msgw(plugin::paths::GetPluginFileNameW(), MB_ICONINFORMATION, format, Args...); + } + + template bool Warning(wchar_t const *format, ArgTypes... Args) { + return message_gen::msgw(plugin::paths::GetPluginFileNameW(), MB_ICONWARNING, format, Args...); + } + + template bool Error(wchar_t const *format, ArgTypes... Args) { + return message_gen::msgw(plugin::paths::GetPluginFileNameW(), MB_ICONERROR, format, Args...); + } + + template bool InternalMessage(char const *format, ArgTypes... Args) { + return message_gen::msga("plugin-sdk", MB_ICONINFORMATION, format, Args...); + } + + template bool InternalWarning(char const *format, ArgTypes... Args) { + return message_gen::msga("plugin-sdk", MB_ICONWARNING, format, Args...); + } + + template bool InternalError(char const *format, ArgTypes... Args) { + return message_gen::msga("plugin-sdk", MB_ICONERROR, format, Args...); + } + + template bool InternalMessage(wchar_t const *format, ArgTypes... Args) { + return message_gen::msgw(L"plugin-sdk", MB_ICONINFORMATION, format, Args...); + } + + template bool InternalWarning(wchar_t const *format, ArgTypes... Args) { + return message_gen::msgw(L"plugin-sdk", MB_ICONWARNING, format, Args...); + } + + template bool InternalError(wchar_t const *format, ArgTypes... Args) { + return message_gen::msgw(L"plugin-sdk", MB_ICONERROR, format, Args...); + } +} diff --git a/third-party/plugin-sdk/shared/EventList.h b/third-party/plugin-sdk/shared/EventList.h new file mode 100644 index 00000000..0ad74c85 --- /dev/null +++ b/third-party/plugin-sdk/shared/EventList.h @@ -0,0 +1,313 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "../injector/hooking.hpp" +#include "ArgPicker.h" +#include "RefList.h" +#include "GameVersion.h" +#include +#include +#include + +namespace plugin { + +enum eHookType { + H_CALL = 0, + H_JUMP = 1, + H_CALLBACK = 2 +}; + +enum eEventPriority { + PRIORITY_BEFORE = 0, + PRIORITY_AFTER = 1 +}; + +// calling conventions +struct CallingConventions { + struct Cdecl {}; + struct Thiscall {}; +}; + +template class Injector, class RList /* RefList<...> */, class ArgPicker, class Prototype> +class BaseEventI; + +template class Injector, class RList, class ArgPicker, class Ret, class... Args> +class BaseEventI { +public: + using SelectedArgPicker = std::conditional_t::value, + DefaultArgPicker, ArgPicker>; + + using CallbackType = typename SelectedArgPicker::CallbackType; + using FnPtrType = typename SelectedArgPicker::FnPtrType; + using HookInfo = std::pair; + using HookList = std::list; + + void Add(HookList &hooks, CallbackType const &cb, unsigned int id) { + bool can_add = true; + if (id == 0) { + FnPtrType const *target = cb. template target(); + if (target) + can_add = !HasFunctionPtr(hooks, *target); + } + else + can_add = !HasFunctionId(hooks, id); + if (can_add) { + Patch(); + hooks.emplace_back(cb, id); + } + } + + void AddBefore(CallbackType const &cb, unsigned int id) { Add(hooksBefore, cb, id); } + void AddAfter(CallbackType const &cb, unsigned int id) { Add(hooksAfter, cb, id); } + + void Remove(HookList &hooks, FnPtrType fn) { + auto end = std::remove_if(hooks.begin(), hooks.end(), [&fn](HookInfo &hook) { + FnPtrType *ptr = hook.first. template target(); + return ptr && *ptr == fn; + }); + hooks.erase(end, hooks.end()); + } + + void RemoveBefore(FnPtrType fn) { Remove(hooksBefore, fn); } + void RemoveAfter(FnPtrType fn) { Remove(hooksAfter, fn); } + + void RemoveById(HookList &hooks, unsigned int id) { + if (id == 0) + return; + auto end = std::remove_if(hooks.begin(), hooks.end(), [&id](HookInfo &hook) { + return hook.second == id; + }); + hooks.erase(end, hooks.end()); + } + + void RemoveBeforeById(unsigned int id) { RemoveById(hooksBefore, id); } + void RemoveAfterById(unsigned int id) { RemoveById(hooksAfter, id); } + +private: + bool bPatched = false; + HookList hooksBefore; + HookList hooksAfter; + + bool HasFunctionPtr(HookList &hooks, FnPtrType fn) { + for (auto &hook : hooks) { + FnPtrType const *ptr = hook.first. template target(); + if (ptr && *ptr == fn) + return true; + } + return false; + } + + bool HasFunctionId(HookList &hooks, unsigned int id) { + for (auto &hook : hooks) { + if (hook.second == id) + return true; + } + return false; + } + + void Patch() { + if (bPatched == false) { + bPatched = true; + PatchAll(RList()); + } + } + + void PatchAll(RefList<>) {} + + template + void PatchAll(RefList) { + if (GameVersion == GetGameVersion()) { + // Using void* instead of Ret as the return value because we need to capture the return value and return that, + // and void* has the size of the x86/x64 (and most arches) register types, so let's use that. + using hook_type = Injector>, + RefAddr, void*(Args...)>; + injector::make_static_hook([this](typename hook_type::func_type func, Args... args) { + auto arg_tie = std::forward_as_tuple(std::forward(args)...); + std::for_each(hooksBefore.begin(), hooksBefore.end(), [&](HookInfo& hook) { + SelectedArgPicker()(hook.first, arg_tie); + }); + void* ret = func(std::forward(args)...); + std::for_each(hooksAfter.begin(), hooksAfter.end(), [&](HookInfo& hook) { + SelectedArgPicker()(hook.first, arg_tie); + }); + return ret; + }); + } + PatchAll(RefList()); + } +}; + +template class Injector, class RList /* RefList<...> */, int Priority, class ArgPicker, class Prototype> +class BaseEvent; + +template class Injector, class RList, int Priority, class ArgPicker, class Ret, class... Args> +class BaseEvent { +protected: + BaseEventI &GetInstance() { + static BaseEventI instance; + return instance; + } +public: + using SelectedArgPicker = std::conditional_t::value, + DefaultArgPicker, ArgPicker>; + + using CallbackType = typename SelectedArgPicker::CallbackType; + using FnPtrType = typename SelectedArgPicker::FnPtrType; + + class EventBefore { + BaseEvent &parent; + public: + EventBefore(BaseEvent &p) : parent(p) {} + + EventBefore& AddAtId(unsigned int id, CallbackType const &cb) { + parent.GetInstance().AddBefore(cb, id); + return *this; + } + + EventBefore& Add(CallbackType const &cb) { + return AddAtId(0, cb); + } + + EventBefore& Remove(FnPtrType fn) { + parent.GetInstance().RemoveBefore(fn); + return *this; + } + + EventBefore& RemoveById(unsigned int id) { + parent.GetInstance().RemoveBeforeById(id); + return *this; + } + + EventBefore& operator+=(CallbackType const &cb) { return Add(cb); } + EventBefore& operator-=(FnPtrType fn) { return Remove(fn); } + } before; + + class EventAfter { + BaseEvent &parent; + public: + EventAfter(BaseEvent &p) : parent(p) {} + + EventAfter& AddAtId(unsigned int id, CallbackType const &cb) { + parent.GetInstance().AddAfter(cb, id); + return *this; + } + + EventAfter& Add(CallbackType const &cb) { + return AddAtId(0, cb); + } + + EventAfter& Remove(FnPtrType fn) { + parent.GetInstance().RemoveAfter(fn); + return *this; + } + + EventAfter& RemoveById(unsigned int id) { + parent.GetInstance().RemoveAfterById(id); + return *this; + } + + EventAfter& operator+=(CallbackType const &cb) { return Add(cb); } + EventAfter& operator-=(FnPtrType fn) { return Remove(fn); } + } after; + + BaseEvent() : before(*this), after(*this) {} + BaseEvent(CallbackType const &cb) : before(*this), after(*this) { Add(cb); } + BaseEvent(CallbackType const &cb, unsigned int id) : before(*this), after(*this) { AddAtId(cb, id); } + + BaseEvent(CallbackType const &cb_before, CallbackType const &cb_after) : before(*this), after(*this) { + Add(cb_before, PRIORITY_BEFORE); + Add(cb_after, PRIORITY_AFTER); + } + + BaseEvent(CallbackType const &cb_before, unsigned int id_before, + CallbackType const &cb_after, unsigned int id_after) : before(*this), after(*this) + { + AddAtId(id_before, cb_before, PRIORITY_BEFORE); + AddAtId(id_after, cb_after, PRIORITY_AFTER); + } + + BaseEvent& AddAtId(unsigned int id, CallbackType const &cb, int priority = Priority) { + if (priority == PRIORITY_BEFORE) + GetInstance().AddBefore(cb, id); + else + GetInstance().AddAfter(cb, id); + return *this; + } + + BaseEvent& Add(CallbackType const &cb, int priority = Priority) { + return AddAtId(0, cb, priority); + } + + BaseEvent& Remove(FnPtrType fn, int priority = Priority) { + if (priority == PRIORITY_BEFORE) + GetInstance().RemoveBefore(fn); + else + GetInstance().RemoveAfter(fn); + return *this; + } + + BaseEvent& RemoveById(unsigned int id, int priority = Priority) { + if (priority == PRIORITY_BEFORE) + GetInstance().RemoveBeforeById(id); + else + GetInstance().RemoveAfterById(id); + return *this; + } + + BaseEvent& AddBeforeAtId(unsigned int id, CallbackType const &cb) { + GetInstance().AddBefore(cb, id); + return *this; + } + + BaseEvent& AddBefore(CallbackType const &cb) { + return AddBeforeAtId(0, cb); + } + + BaseEvent& RemoveBefore(FnPtrType fn) { + GetInstance().RemoveBefore(fn); + return *this; + } + + BaseEvent& RemoveBeforeById(unsigned int id) { + GetInstance().RemoveBeforeById(id); + return *this; + } + + BaseEvent& AddAfterAtId(unsigned int id, CallbackType const &cb) { + GetInstance().AddAfter(cb, id); + return *this; + } + + BaseEvent& AddAfter(CallbackType const &cb) { + return AddAfterAtId(0, cb); + } + + BaseEvent& RemoveAfter(FnPtrType fn) { + GetInstance().RemoveAfter(fn); + return *this; + } + + BaseEvent& RemoveAfterById(unsigned int id) { + GetInstance().RemoveAfterById(id); + return *this; + } + + BaseEvent& operator+=(CallbackType const &cb) { return Add(cb); } + BaseEvent& operator-=(FnPtrType fn) { return Remove(fn); } +}; + +template +using CdeclEvent = BaseEvent; + +template +using StdcallEvent = BaseEvent; + +template +using ThiscallEvent = BaseEvent; + +} diff --git a/third-party/plugin-sdk/shared/Events.cpp b/third-party/plugin-sdk/shared/Events.cpp new file mode 100644 index 00000000..e9eb2dae --- /dev/null +++ b/third-party/plugin-sdk/shared/Events.cpp @@ -0,0 +1,377 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "Events.h" + +using namespace plugin; +using namespace plugin::Events; + +#ifdef GTASA +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawingEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawHudEvent; + +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawAfterFadeEvent; + +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawRadarEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawBlipsEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void(bool)> plugin::Events::drawRadarOverlayEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(void *)> plugin::Events::drawMenuBackgroundEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initRwEvent; +CdeclEvent , PRIORITY_BEFORE, ArgPickNone, void()> plugin::Events::shutdownRwEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CVehicle*)> plugin::Events::vehicleCtorEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CVehicle*)> plugin::Events::vehicleDtorEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CPed*)> plugin::Events::pedCtorEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CPed*)> plugin::Events::pedDtorEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CObject*)> plugin::Events::objectCtorEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CObject*)> plugin::Events::objectDtorEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initPoolsEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::shutdownPoolsEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CVehicle*)> plugin::Events::vehicleRenderEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CPed*) > plugin::Events::pedRenderEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CObject*)> plugin::Events::objectRenderEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPick2N, void(CVehicle*, int)> plugin::Events::vehicleSetModelEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPick2N, void(CPed*, int)> plugin::Events::pedSetModelEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::d3dResetEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::d3dLostEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::gameProcessEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initGameEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::reInitGameEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickNone, void(void*)> plugin::Events::onPauseAllSounds; +ThiscallEvent , PRIORITY_BEFORE, ArgPickNone, void(void*)> plugin::Events::onResumeAllSounds; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initScriptsEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::processScriptsEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, bool()> plugin::Events::attachRwPluginsEvent; +#endif +#ifdef GTAVC +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawingEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawHudEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawRadarMapEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawBlipsEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initRwEvent; +CdeclEvent , PRIORITY_BEFORE, ArgPickNone, void()> plugin::Events::shutdownRwEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initPoolsEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::shutdownPoolsEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CVehicle*)> plugin::Events::vehicleCtorEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CVehicle*)> plugin::Events::vehicleDtorEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CPed*)> plugin::Events::pedCtorEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CPed*)> plugin::Events::pedDtorEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CObject*)> plugin::Events::objectCtorEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CObject*)> plugin::Events::objectDtorEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CVehicle*)> plugin::Events::vehicleRenderEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CPed*) > plugin::Events::pedRenderEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CObject*)> plugin::Events::objectRenderEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPick2N, void(CVehicle*, int)> plugin::Events::vehicleSetModelEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPick2N, void(CPed*, int)> plugin::Events::pedSetModelEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::d3dResetEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::d3dLostEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::gameProcessEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initGameEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initScriptsEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::processScriptsEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, bool()> plugin::Events::attachRwPluginsEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::menuDrawingEvent; +#endif +#ifdef GTA3 +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawingEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawHudEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawRadarMapEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawBlipsEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initRwEvent; +CdeclEvent , PRIORITY_BEFORE, ArgPickNone, void()> plugin::Events::shutdownRwEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initPoolsEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::shutdownPoolsEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CVehicle*)> plugin::Events::vehicleCtorEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CVehicle*)> plugin::Events::vehicleDtorEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CPed*)> plugin::Events::pedCtorEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CPed*)> plugin::Events::pedDtorEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CObject*)> plugin::Events::objectCtorEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CObject*)> plugin::Events::objectDtorEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CVehicle*)> plugin::Events::vehicleRenderEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CPed*) > plugin::Events::pedRenderEvent; +ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CObject*)> plugin::Events::objectRenderEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPick2N, void(CVehicle*, int)> plugin::Events::vehicleSetModelEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPick2N, void(CPed*, int)> plugin::Events::pedSetModelEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::d3dResetEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::d3dLostEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::gameProcessEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initGameEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initScriptsEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::processScriptsEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(CMenuManager *)> plugin::Events::menuDrawingEvent; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, bool()> plugin::Events::attachRwPluginsEvent; +#endif +#ifdef GTA2 +ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(CMenuManager*)> plugin::Events::menuDrawingEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(CMenuManager*)> plugin::Events::drawMenuBackgroundEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(CHud*)> plugin::Events::drawHudEvent; +StdcallEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::drawHudEvent2; +ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(int*)> plugin::Events::renderGameEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(void*)> plugin::Events::gameProcessEvent; +StdcallEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::initEngineEvent; +StdcallEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::shutdownEngineEvent; +StdcallEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::d3dResetEvent; +StdcallEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::d3dLostEvent; +StdcallEvent , PRIORITY_AFTER, ArgPickNone, void()> plugin::Events::processScriptEvent; +ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CPlayerPed*)> plugin::Events::processPlayerPedEvent; +#endif diff --git a/third-party/plugin-sdk/shared/Events.h b/third-party/plugin-sdk/shared/Events.h new file mode 100644 index 00000000..1eb22a6e --- /dev/null +++ b/third-party/plugin-sdk/shared/Events.h @@ -0,0 +1,434 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "EventList.h" + +class CPed; +class CVehicle; +class CObject; +class CMenuManager; +class CHud; +class CPlayerPed; + +namespace plugin { +namespace Events { +#ifdef GTASA +// When 2d things are drawing +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawingEvent; + +// When HUD is drawing +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawHudEvent; + +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawAfterFadeEvent; + +// When radar is drawing +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawRadarEvent; + +// When radar blips are drawing +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawBlipsEvent; + +// Draw on a radar map +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void(bool)> drawRadarOverlayEvent; + +// Draw in menu background +extern ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(void *)> drawMenuBackgroundEvent; + +// When RenderWare engine is initialised +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> initRwEvent; + +// When RenderWare is closing +extern CdeclEvent , PRIORITY_BEFORE, ArgPickNone, void()> shutdownRwEvent; + +// Vehicle/ped/object creation/destroying +extern ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CVehicle*)> vehicleCtorEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CVehicle*)> vehicleDtorEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CPed*)> pedCtorEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CPed*)> pedDtorEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CObject*)> objectCtorEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CObject*)> objectDtorEvent; + +// When pools are allocated +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> initPoolsEvent; + +// When pools are destroyed +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> shutdownPoolsEvent; + +// When vehicle is rendering (CVehicle::Render) +// parameter1 - CVehicle * - vehicle +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CVehicle*)> vehicleRenderEvent; + +// When ped is rendering (CPed::Render) +// parameter1 - CPed * - ped +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CPed*) > pedRenderEvent; + +// When object is rendering (CVehicle::Render) +// parameter1 - CObject * - object +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CObject*)> objectRenderEvent; + +// When vehicle model is set +// parameter1 - CVehicle * - vehicle +// parameter2 - int - modelId +extern ThiscallEvent , PRIORITY_AFTER, ArgPick2N, void(CVehicle*, int)> vehicleSetModelEvent; + +// When ped model is set +// parameter1 - CPed * - ped +// parameter2 - int - modelId +extern ThiscallEvent , PRIORITY_AFTER, ArgPick2N, void(CPed*, int)> pedSetModelEvent; + +// Unload all d3d dynamic resources +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> d3dResetEvent; + +// Reset all d3d dynamic resources +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> d3dLostEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> gameProcessEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> initGameEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> reInitGameEvent; + +// When game focus is lost we pause all game sounds +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickNone, void(void*)> onPauseAllSounds; + +// When game is active again we resume all game sounds +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickNone, void(void*)> onResumeAllSounds; + +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> initScriptsEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> processScriptsEvent; + +// attach RenderWare plugins (AppEventHandler > PluginAttach()) +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, bool()> attachRwPluginsEvent; +#endif +#ifdef GTAVC +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawingEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawHudEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawRadarMapEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawBlipsEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> initRwEvent; +extern CdeclEvent , PRIORITY_BEFORE, ArgPickNone, void()> shutdownRwEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> initPoolsEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> shutdownPoolsEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CVehicle*)> vehicleCtorEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CVehicle*)> vehicleDtorEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CPed*)> pedCtorEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CPed*)> pedDtorEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CObject*)> objectCtorEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CObject*)> objectDtorEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CVehicle*)> vehicleRenderEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CPed*) > pedRenderEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CObject*)> objectRenderEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPick2N, void(CVehicle*, int)> vehicleSetModelEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPick2N, void(CPed*, int)> pedSetModelEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> d3dResetEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> d3dLostEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> gameProcessEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> initGameEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> initScriptsEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> processScriptsEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, bool()> attachRwPluginsEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> menuDrawingEvent; +#endif +#ifdef GTA3 +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawingEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawHudEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawRadarMapEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawBlipsEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> initRwEvent; +extern CdeclEvent , PRIORITY_BEFORE, ArgPickNone, void()> shutdownRwEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> initPoolsEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> shutdownPoolsEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CVehicle*)> vehicleCtorEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CVehicle*)> vehicleDtorEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CPed*)> pedCtorEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CPed*)> pedDtorEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CObject*)> objectCtorEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CObject*)> objectDtorEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CVehicle*)> vehicleRenderEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CPed*) > pedRenderEvent; +extern ThiscallEvent , PRIORITY_BEFORE, ArgPickN, void(CObject*)> objectRenderEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPick2N, void(CVehicle*, int)> vehicleSetModelEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPick2N, void(CPed*, int)> pedSetModelEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> d3dResetEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> d3dLostEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> gameProcessEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> initGameEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> initScriptsEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> processScriptsEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(CMenuManager *)> menuDrawingEvent; +extern CdeclEvent , PRIORITY_AFTER, ArgPickNone, bool()> attachRwPluginsEvent; +#endif +#ifdef GTA2 +extern ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(CMenuManager*)> menuDrawingEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(CMenuManager*)> drawMenuBackgroundEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(CHud*)> drawHudEvent; +extern StdcallEvent , PRIORITY_AFTER, ArgPickNone, void()> drawHudEvent2; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(int*)> renderGameEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(void*)> gameProcessEvent; +extern StdcallEvent , PRIORITY_AFTER, ArgPickNone, void()> initEngineEvent; +extern StdcallEvent , PRIORITY_AFTER, ArgPickNone, void()> shutdownEngineEvent; +extern StdcallEvent , PRIORITY_AFTER, ArgPickNone, void()> d3dResetEvent; +extern StdcallEvent , PRIORITY_AFTER, ArgPickNone, void()> d3dLostEvent; +extern StdcallEvent , PRIORITY_AFTER, ArgPickNone, void()> processScriptEvent; +extern ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CPlayerPed*)> processPlayerPedEvent; +#endif +} +} diff --git a/third-party/plugin-sdk/shared/Extender.h b/third-party/plugin-sdk/shared/Extender.h new file mode 100644 index 00000000..e22a40a9 --- /dev/null +++ b/third-party/plugin-sdk/shared/Extender.h @@ -0,0 +1,56 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include + +namespace plugin { + template + class ExtenderInterface { + public: + virtual void AllocateBlocks() = 0; + virtual void OnConstructor(T *object) = 0; + virtual void OnDestructor(T *object) = 0; + }; + + template + class ExtendersHandler + { + protected: + struct static_data + { + std::vector *> extenders; + bool injected; + }; + + static inline static_data& get_data() { + // Has to be constructed at some point, so it is allocated at first call + // of this function. + static static_data data; + + return data; + } + + static void Allocate() { + static_data& data = get_data(); + for (auto &i : data.extenders) + i->AllocateBlocks(); + } + + static void Constructor(T *object) { + static_data& data = get_data(); + for (auto &i : data.extenders) + i->OnConstructor(object); + } + + static void Destructor(T *object) { + static_data& data = get_data(); + for (auto &i : data.extenders) + i->OnDestructor(object); + } + }; +}; diff --git a/third-party/plugin-sdk/shared/GameVersion.cpp b/third-party/plugin-sdk/shared/GameVersion.cpp new file mode 100644 index 00000000..d43873a9 --- /dev/null +++ b/third-party/plugin-sdk/shared/GameVersion.cpp @@ -0,0 +1,218 @@ +/* + Plugin-SDK (Grand Theft Auto) source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "GameVersion.h" +#include "Patch.h" +#include "Base.h" + +namespace plugin { + +unsigned int _NOINLINE_ detect_game_id() { +#ifdef GTASA + //if (plugin::patch::GetUInt(0x82457C) == 0x94BF) + // return GAME_10US; + if (plugin::patch::GetUInt(0x401000) == 0x53EC8B55) + return GAME_10US_COMPACT; + if (plugin::patch::GetUInt(0x401000) == 0x16197BE9) + return GAME_10US_HOODLUM; + if (plugin::patch::GetUInt(0x8245BC) == 0x94BF) + return GAME_10EU; + if (plugin::patch::GetUInt(0x8252FC) == 0x94BF) + return GAME_11US; + if (plugin::patch::GetUInt(0x82533C) == 0x94BF) + return GAME_11EU; + if (plugin::patch::GetUInt(0x858D51) == 0x3539F633) + return GAME_STEAM; + if (plugin::patch::GetUInt(0x858C61) == 0x3539F633) + return GAME_STEAM_LV; +#endif +#ifdef GTAVC + if (plugin::patch::GetUInt(0x667BF0) == 0x53E58955) + return GAME_10EN; + if (plugin::patch::GetUInt(0x667C40) == 0x53E58955) + return GAME_11EN; + if (plugin::patch::GetUInt(0x666BA0) == 0x53E58955) + return GAME_STEAM; +#endif +#ifdef GTA3 + if (plugin::patch::GetUInt(0x5C1E70) == 0x53E58955) + return GAME_10EN; + if (plugin::patch::GetUInt(0x5C2130) == 0x53E58955) + return GAME_11EN; + if (plugin::patch::GetUInt(0x5C6FD0) == 0x53E58955) + return GAME_STEAM; +#endif +#ifdef GTA2 + if (plugin::patch::GetUInt(0x401000) == 0x5D22D4A1) + return GAME_9600EN; +#endif + return GAME_UNKNOWN; +} + +} + +unsigned int _NOINLINE_ plugin::GetGameVersion() { + static unsigned int gameId = detect_game_id(); + return gameId; +} + +/* +* These functions are used to select a value (usually, address or offset) depending on launched +* game version. +* +*/ + +#ifdef GTASA +int plugin::by_v_dyn(int A_10US_C, int A_10US_H, int A_10EU, int A_11US, int A_11EU, int A_Steam, int A_Steam_LV) { + switch (GetGameVersion()) { + case GAME_10US_COMPACT: + return A_10US_C; + case GAME_10US_HOODLUM: + return A_10US_H; + case GAME_10EU: + return A_10EU; + case GAME_11US: + return A_11US; + case GAME_11EU: + return A_11EU; + case GAME_STEAM: + return A_Steam; + case GAME_STEAM_LV: + return A_Steam_LV; + } + return 0; +} + +int plugin::by_version_dyn(int A_10US_C, int A_10US_H, int A_10EU, int A_11US, int A_11EU, int A_Steam, int A_Steam_LV) { + return by_v_dyn(A_10US_C, A_10US_H, A_10EU, A_11US, A_11EU, A_Steam, A_Steam_LV); +} + +int plugin::by_v_dyn(int A_10US, int A_10EU, int A_11US, int A_11EU, int A_Steam, int A_Steam_LV) { + switch (GetGameVersion()) { + case GAME_10US_COMPACT: + case GAME_10US_HOODLUM: + return A_10US; + case GAME_10EU: + return A_10EU; + case GAME_11US: + return A_11US; + case GAME_11EU: + return A_11EU; + case GAME_STEAM: + return A_Steam; + case GAME_STEAM_LV: + return A_Steam_LV; + } + return 0; +} + +int plugin::by_version_dyn(int A_10US, int A_10EU, int A_11US, int A_11EU, int A_Steam, int A_Steam_LV) { + return by_v_dyn(A_10US, A_10EU, A_11US, A_11EU, A_Steam, A_Steam_LV); +} + +int plugin::by_v_dyn(int A_10US, int A_10EU) { + switch (GetGameVersion()) { + case GAME_10US_COMPACT: + case GAME_10US_HOODLUM: + return A_10US; + case GAME_10EU: + return A_10EU; + } + return 0; +} + +int plugin::by_version_dyn(int A_10US, int A_10EU) { + return by_v_dyn(A_10US, A_10EU); +} + +int plugin::by_v_dyn(int A_10US, int A_10EU, int A_11US, int A_11EU) { + switch (GetGameVersion()) { + case GAME_10US_COMPACT: + case GAME_10US_HOODLUM: + return A_10US; + case GAME_10EU: + return A_10EU; + case GAME_11US: + return A_11US; + case GAME_11EU: + return A_11EU; + } + return 0; +} + +int plugin::by_version_dyn(int A_10US, int A_10EU, int A_11US, int A_11EU) { + return by_v_dyn(A_10US, A_10EU, A_11US, A_11EU); +} + +int plugin::by_v_dyn(int A_10US, int A_10EU, int A_11US, int A_11EU, int A_Steam) { + switch (GetGameVersion()) { + case GAME_10US_COMPACT: + case GAME_10US_HOODLUM: + return A_10US; + case GAME_10EU: + return A_10EU; + case GAME_11US: + return A_11US; + case GAME_11EU: + return A_11EU; + case GAME_STEAM: + return A_Steam; + } + return 0; +} + +int plugin::by_version_dyn(int A_10US, int A_10EU, int A_11US, int A_11EU, int A_Steam) { + return by_v_dyn(A_10US, A_10EU, A_11US, A_11EU, A_Steam); +} + +int plugin::by_v_dyn(int A_10US, int A_10EU, int A_Steam) { + switch (GetGameVersion()) { + case GAME_10US_COMPACT: + case GAME_10US_HOODLUM: + return A_10US; + case GAME_10EU: + return A_10EU; + case GAME_STEAM: + return A_Steam; + } + return 0; +} + +int plugin::by_version_dyn(int A_10US, int A_10EU, int A_Steam) { + return by_v_dyn(A_10US, A_10EU, A_Steam); +} +#elif GTA2 +#else +int plugin::by_v_dyn(int A_10EN, int A_11EN, int A_Steam) { + switch (GetGameVersion()) { + case GAME_10EN: + return A_10EN; + case GAME_11EN: + return A_11EN; + case GAME_STEAM: + return A_Steam; + } + return 0; +} + +int plugin::by_version_dyn(int A_10EN, int A_11EN, int A_Steam) { + return by_v_dyn(A_10EN, A_11EN, A_Steam); +} + +int plugin::by_v_dyn(int A_10EN, int A_11EN) { + switch (GetGameVersion()) { + case GAME_10EN: + return A_10EN; + case GAME_11EN: + return A_11EN; + } + return 0; +} + +int plugin::by_version_dyn(int A_10EN, int A_11EN) { + return by_v_dyn(A_10EN, A_11EN); +} +#endif diff --git a/third-party/plugin-sdk/shared/GameVersion.h b/third-party/plugin-sdk/shared/GameVersion.h new file mode 100644 index 00000000..7c3137bd --- /dev/null +++ b/third-party/plugin-sdk/shared/GameVersion.h @@ -0,0 +1,327 @@ +/* + Plugin-SDK (Grand Theft Auto) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#define GAME_UNKNOWN 0 +#ifdef GTASA +#define GAME_10US_COMPACT 1001 +#define GAME_10US_HOODLUM 1002 +#define GAME_10EU 1011 +#define GAME_11US 1101 +#define GAME_11EU 1111 +#define GAME_SR2 3200 +#define GAME_SR2LV 3210 +#define GAME_STEAM GAME_SR2 +#define GAME_STEAM_LV GAME_SR2LV +#elif GTA2 +#define GAME_9600EN 9600 +#else +#define GAME_10EN 100 +#define GAME_11EN 110 +#define GAME_STEAM 120 +#endif + +namespace plugin { + +// Returns GAME_X id for launched game +unsigned int GetGameVersion(); + +// Returns version name for game version id +inline char const *GetGameVersionName(int gameVersionId) { + switch (gameVersionId) { +#ifdef GTASA + case GAME_10US_COMPACT: + return "GTA SA 1.0 US 'Compact'"; + case GAME_10US_HOODLUM: + return "GTA SA 1.0 US 'HoodLum'"; + case GAME_10EU: + return "GTA SA 1.0 EU"; + case GAME_11US: + return "GTA SA 1.01 US"; + case GAME_11EU: + return "GTA SA 1.01 EU"; + case GAME_STEAM: + return "GTA SA 'NewSteam R2'"; + case GAME_STEAM_LV: + return "GTA SA 'NewSteam R2-LV'"; +#endif +#ifdef GTAVC + case GAME_10EN: + return "GTA VC 1.0 EN"; + case GAME_11EN: + return "GTA VC 1.1 EN"; + case GAME_STEAM: + return "GTA VC Steam"; +#endif +#ifdef GTA3 + case GAME_10EN: + return "GTA 3 1.0 EN"; + case GAME_11EN: + return "GTA 3 1.1 EN"; + case GAME_STEAM: + return "GTA 3 Steam"; +#endif +#ifdef GTA2 + case GAME_9600EN: + return "GTA2 9.6.0.0"; +#endif + } + return "Unknown"; +} + +// Returns version name for launched game +inline char const *GetGameVersionName() { + return GetGameVersionName(GetGameVersion()); +} + +// Checks if launched game version is unknown +inline bool IsGameVersionUnknown() { + return GetGameVersion() == GAME_UNKNOWN; +} + +#ifdef GTASA +// Checks if launched game version is 1.0 US +inline bool IsGameVersion10us() { + return GetGameVersion() == GAME_10US_COMPACT || GetGameVersion() == GAME_10US_HOODLUM; +} + +// Checks if launched game version is 1.0 EU +inline bool IsGameVersion10eu() { + return GetGameVersion() == GAME_10EU; +} + +// Checks if launched game version is 1.1 US +inline bool IsGameVersion11us() { + return GetGameVersion() == GAME_11US; +} + +// Checks if launched game version is 1.1 EU +inline bool IsGameVersion11eu() { + return GetGameVersion() == GAME_11EU; +} + +// Checks if launched game version is Steam R2 (including R2-LV ('German version')) +inline bool IsGameVersionSteam() { + return GetGameVersion() == GAME_STEAM || GetGameVersion() == GAME_STEAM_LV; +} + +// Checks if launched game version Steam R2-LV ('German version') +inline bool IsGameVersionSteamLV() { + return GetGameVersion() == GAME_STEAM_LV; +} +#elif GTA2 +inline bool IsGameVersion9600en() { + return GetGameVersion() == GAME_9600EN; +} +#else +// Checks if launched game version is 1.0 EN +inline bool IsGameVersion10en() { + return GetGameVersion() == GAME_10EN; +} + +// Checks if launched game version is 1.1 EN +inline bool IsGameVersion11en() { + return GetGameVersion() == GAME_11EN; +} + +// Checks if launched game version is Steam +inline bool IsGameVersionSteam() { + return GetGameVersion() == GAME_STEAM; +} +#endif + +// Checks if game version is supported by this plugin +inline bool IsSupportedGameVersion(int gameVersionId) { + switch (gameVersionId) { +#ifdef GTASA + case GAME_10US_COMPACT: + case GAME_10US_HOODLUM: + #ifdef PLUGIN_SGV_10US + return true; + #else + return false; + #endif + case GAME_10EU: + #ifdef PLUGIN_SGV_10EU + return true; + #else + return false; + #endif + case GAME_11US: + #ifdef PLUGIN_SGV_11US + return true; + #else + return false; + #endif + case GAME_11EU: + #ifdef PLUGIN_SGV_11EU + return true; + #else + return false; + #endif + case GAME_STEAM: + #ifdef PLUGIN_SGV_SR2 + return true; + #else + return false; + #endif + case GAME_STEAM_LV: + #ifdef PLUGIN_SGV_SR2LV + return true; + #else + return false; + #endif +#elif GTA2 + case GAME_9600EN: + #ifdef PLUGIN_SGV_96EN + return true; + #else + return false; + #endif +#else + case GAME_10EN: + #ifdef PLUGIN_SGV_10EN + return true; + #else + return false; + #endif + case GAME_11EN: + #ifdef PLUGIN_SGV_11EN + return true; + #else + return false; + #endif + case GAME_STEAM: + #ifdef PLUGIN_SGV_STEAM + return true; + #else + return false; + #endif +#endif + } + return false; +} + +// Checks if launched game version is supported by this plugin +inline bool IsSupportedGameVersion() { + return IsSupportedGameVersion(GetGameVersion()); +} + +/* + * These functions are used to select a value (usually, address or offset) depending on launched + * game version. + * + */ + +#ifdef GTASA +int by_v_dyn(int A_10US_C, int A_10US_H, int A_10EU, int A_11US, int A_11EU, int A_Steam, int A_Steam_LV); +int by_version_dyn(int A_10US_C, int A_10US_H, int A_10EU, int A_11US, int A_11EU, int A_Steam, int A_Steam_LV); + +template +int by_v() { + return by_v_dyn(A_10US_C, A_10US_H, A_10EU, A_11US, A_11EU, A_Steam, A_Steam_LV); +} + +template +int by_version() { + return by_v_dyn(A_10US_C, A_10US_H, A_10EU, A_11US, A_11EU, A_Steam, A_Steam_LV); +} + +int by_v_dyn(int A_10US, int A_10EU, int A_11US, int A_11EU, int A_Steam, int A_Steam_LV); +int by_version_dyn(int A_10US, int A_10EU, int A_11US, int A_11EU, int A_Steam, int A_Steam_LV); + +template +int by_v() { + return by_v_dyn(A_10US, A_10EU, A_11US, A_11EU, A_Steam, A_Steam_LV); +} + +template +int by_version() { + return by_v_dyn(A_10US, A_10EU, A_11US, A_11EU, A_Steam, A_Steam_LV); +} + +int by_v_dyn(int A_10US, int A_10EU); +int by_version_dyn(int A_10US, int A_10EU); + +template +int by_v() { + return by_v_dyn(A_10US, A_10EU); +} + +template +int by_version() { + return by_v_dyn(A_10US, A_10EU); +} + +int by_v_dyn(int A_10US, int A_10EU, int A_11US, int A_11EU); +int by_version_dyn(int A_10US, int A_10EU, int A_11US, int A_11EU); + +template +int by_v() { + return by_v_dyn(A_10US, A_10EU, A_11US, A_11EU); +} + +template +int by_version() { + return by_v_dyn(A_10US, A_10EU, A_11US, A_11EU); +} + +int by_v_dyn(int A_10US, int A_10EU, int A_11US, int A_11EU, int A_Steam); +int by_version_dyn(int A_10US, int A_10EU, int A_11US, int A_11EU, int A_Steam); + +template +int by_v() { + return by_v_dyn(A_10US, A_10EU, A_11US, A_11EU, A_Steam); +} + +template +int by_version() { + return by_v_dyn(A_10US, A_10EU, A_11US, A_11EU, A_Steam); +} + +int by_v_dyn(int A_10US, int A_10EU, int A_Steam); +int by_version_dyn(int A_10US, int A_10EU, int A_Steam); + +template +int by_v() { + return by_v_dyn(A_10US, A_10EU, A_Steam); +} + +template +int by_version() { + return by_v_dyn(A_10US, A_10EU, A_Steam); +} +#elif GTA2 +#else +int by_v_dyn(int A_10EN, int A_11EN, int A_Steam); +int by_version_dyn(int A_10EN, int A_11EN, int A_Steam); + +template +int by_v() { + return by_v_dyn(A_10EN, A_11EN, A_Steam); +} + +template +int by_version() { + return by_v_dyn(A_10EN, A_11EN, A_Steam); +} + +int by_v_dyn(int A_10EN, int A_11EN); +int by_version_dyn(int A_10EN, int A_11EN); + +template +int by_v() { + return by_v_dyn(A_10EN, A_11EN); +} + +template +int by_version() { + return by_v_dyn(A_10EN, A_11EN); +} +#endif + +} diff --git a/third-party/plugin-sdk/shared/GameVersionMessage.h b/third-party/plugin-sdk/shared/GameVersionMessage.h new file mode 100644 index 00000000..bbc3ebce --- /dev/null +++ b/third-party/plugin-sdk/shared/GameVersionMessage.h @@ -0,0 +1,92 @@ +/* + Plugin-SDK (Grand Theft Auto) header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "GameVersion.h" +#include +#include +#include "Error.h" +#include "extensions/Paths.h" + +namespace plugin { + +// Returns list of supported game versions for this plugin (divided by separator) +inline std::string GetSupportedGameVersionsString(std::string const &sep) { + std::vector versions; +#ifdef GTASA + #ifdef PLUGIN_SGV_10US + versions.push_back(GetGameVersionName(GAME_10US_COMPACT)); + versions.push_back(GetGameVersionName(GAME_10US_HOODLUM)); + #endif + #ifdef PLUGIN_SGV_10EU + versions.push_back(GetGameVersionName(GAME_10EU)); + #endif + #ifdef PLUGIN_SGV_11US + versions.push_back(GetGameVersionName(GAME_11US)); + #endif + #ifdef PLUGIN_SGV_11EU + versions.push_back(GetGameVersionName(GAME_11EU)); + #endif + #ifdef PLUGIN_SGV_SR2 + versions.push_back(GetGameVersionName(GAME_STEAM)); + #endif + #ifdef PLUGIN_SGV_SR2LV + versions.push_back(GetGameVersionName(GAME_STEAM_LV)); + #endif +#elif GTA2 +#ifdef PLUGIN_SGV_96EN + versions.push_back(GetGameVersionName(GAME_9600EN)); +#endif +#else + #ifdef PLUGIN_SGV_10EN + versions.push_back(GetGameVersionName(GAME_10EN)); + #endif + #ifdef PLUGIN_SGV_11EN + versions.push_back(GetGameVersionName(GAME_11EN)); + #endif + #ifdef PLUGIN_SGV_STEAM + versions.push_back(GetGameVersionName(GAME_STEAM)); + #endif +#endif + std::string result; + if (!versions.empty()) { + bool first = true; + for (const auto& version : versions) + { + if (first) { + result += version; + first = false; + } + else + result += sep + version; + } + } + return result; +} + +// Validates if plugin supports launched game version (displays error message if not supported) +inline bool ValidateGameVersion(bool showErrorMessage = true) { + if (IsSupportedGameVersion()) + return true; + if (showErrorMessage) { + Error("This game version is not supported by %s plugin.\n%s plugin supports these game versions:\n %s", + plugin::paths::GetPluginFileNameA(), plugin::paths::GetPluginFileNameA(), GetSupportedGameVersionsString("\n ").c_str()); + } + return false; +} + +// Displays a message with all supported game versions for this plugin +inline void ShowSupportedGameVersionsMessage() { + Message("This plugin supports these game versions:\n %s", GetSupportedGameVersionsString("\n ").c_str()); +} + +// Displays a message with current game version +inline void ShowCurrentGameVersionsMessage() { + Message("Current game version: %s", GetGameVersionName()); +} + +} diff --git a/third-party/plugin-sdk/shared/Other.cpp b/third-party/plugin-sdk/shared/Other.cpp new file mode 100644 index 00000000..eb478235 --- /dev/null +++ b/third-party/plugin-sdk/shared/Other.cpp @@ -0,0 +1,174 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "Other.h" +#include +#include + +unsigned int plugin::FormattingUtils::currentBuf = 0; +char plugin::FormattingUtils::buf[plugin::FormattingUtils::BUF_SIZE][4096]; +unsigned int plugin::FormattingUtils::currentBufW = 0; +wchar_t plugin::FormattingUtils::bufW[plugin::FormattingUtils::BUF_SIZE][4096]; + +void plugin::InitRandom() { + srand(time(NULL)); +} + +unsigned int plugin::Random(unsigned int min, unsigned int max) { + return min + (rand() % (max - min + 1)); +} + +float plugin::Random(float min, float max) { + return min + (max - min) * (rand() / float(RAND_MAX + 1)); +} + +bool plugin::KeyPressed(unsigned int keyCode) { + return (GetKeyState(keyCode) & 0x8000) != 0; +} + +bool plugin::IsPluginInstalled(const TCHAR *pluginName) { + return GetModuleHandle(pluginName) ? true : false; +} + +std::wstring plugin::AtoW(std::string const &str) { + std::wstring result; + result.resize(str.size()); + for (unsigned int i = 0; i < str.size(); i++) + result[i] = static_cast(static_cast(str[i])); + return result; +} + +std::string plugin::WtoA(std::wstring const &str) { + std::string result; + result.resize(str.size()); + for (unsigned int i = 0; i < str.size(); i++) + result[i] = static_cast(static_cast(str[i])); + return result; +} + +char *plugin::FormattingUtils::GetBuf() { + char *result = buf[currentBuf]; + currentBuf += 1; + if (currentBuf >= BUF_SIZE) + currentBuf = 0; + return result; +} + +wchar_t *plugin::FormattingUtils::GetBufW() { + wchar_t *result = bufW[currentBufW]; + currentBufW += 1; + if (currentBufW >= BUF_SIZE) + currentBufW = 0; + return result; +} + +bool plugin::LoadTGAFromFile(const char* path, unsigned short* width, unsigned short* height, unsigned char** pixels) { + std::ifstream f; + + f.open(path, std::ios::in | std::ios::binary); + + if (!f.is_open()) { + printf("Texture can't be found"); + return false; + } + + int i = 0; + f.read(reinterpret_cast(&i), sizeof(unsigned char)); + f.read(reinterpret_cast(&i), sizeof(unsigned char)); + f.read(reinterpret_cast(&i), sizeof(unsigned char)); + f.read(reinterpret_cast(&i), sizeof(short)); + f.read(reinterpret_cast(&i), sizeof(short)); + f.read(reinterpret_cast(&i), sizeof(unsigned char)); + f.read(reinterpret_cast(&i), sizeof(short)); + f.read(reinterpret_cast(&i), sizeof(short)); + + short imageWidth; + f.read(reinterpret_cast(&imageWidth), sizeof(short)); + + short imageHeight; + f.read(reinterpret_cast(&imageHeight), sizeof(short)); + + unsigned char imageBitCount; + f.read(reinterpret_cast(&imageBitCount), sizeof(unsigned char)); + + f.read(reinterpret_cast(&i), sizeof(unsigned char)); + + int colorMode = 4; + int realColorMode = imageBitCount / 8; + int imageSize = imageWidth * imageHeight * colorMode; + + unsigned char* imageData = new unsigned char[imageSize]; + unsigned char* buff = new unsigned char[imageSize]; + f.read(reinterpret_cast(imageData), imageSize); + + f.close(); + int j = 0; + for (unsigned int i = 0; i < imageSize; i += colorMode) { + unsigned char r; + unsigned char g; + unsigned char b; + + switch (imageBitCount) { + case 16: + r = (imageData[j + 1] >> 2) & 0x1F; + g = ((imageData[j + 1] << 3) & 0x1C) | ((imageData[j] >> 5) & 0x07); + b = (imageData[j] & 0x1F); + + r = (r << 3) | (r >> 2); + g = (g << 3) | (g >> 2); + b = (b << 3) | (b >> 2); + + buff[i] = b; + buff[i + 1] = g; + buff[i + 2] = r; + buff[i + 3] = 255; + break; + default: + r = imageData[i + 2]; + g = imageData[i + 1]; + b = imageData[i]; + + buff[i] = b; + buff[i + 1] = g; + buff[i + 2] = r; + + if (realColorMode < 4) + buff[i + 3] = 255; + break; + } + j += realColorMode; + } + imageData = buff; + + + // Flip + size_t bytesPerRow = (size_t)imageWidth * (colorMode * sizeof(unsigned char)); + unsigned char temp[2048]; + unsigned char* bytes = imageData; + + for (int i = 0; i < (imageHeight >> 1); i++) { + unsigned char* row0 = bytes + i * bytesPerRow; + unsigned char* row1 = bytes + (imageHeight - i - 1) * bytesPerRow; + + size_t bytesLeft = bytesPerRow; + while (bytesLeft) { + size_t bytes_copy = (bytesLeft < sizeof(temp)) ? bytesLeft : sizeof(temp); + memcpy(temp, row0, bytes_copy); + memcpy(row0, row1, bytes_copy); + memcpy(row1, temp, bytes_copy); + row0 += bytes_copy; + row1 += bytes_copy; + bytesLeft -= bytes_copy; + } + } + + + *width = imageWidth; + *height = imageHeight; + *pixels = imageData; + + return true; +} diff --git a/third-party/plugin-sdk/shared/Other.h b/third-party/plugin-sdk/shared/Other.h new file mode 100644 index 00000000..65322915 --- /dev/null +++ b/third-party/plugin-sdk/shared/Other.h @@ -0,0 +1,119 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include +#include + +#ifndef GTA2 +#include "CTimer.h" +#include "CVector2D.h" +#endif + +#include "CVector.h" + +namespace plugin { + void InitRandom(); + unsigned int Random(unsigned int min, unsigned int max); + float Random(float min, float max); + + bool KeyPressed(unsigned int keyCode); + bool IsPluginInstalled(const TCHAR *pluginName); + std::wstring AtoW(std::string const &str); + std::string WtoA(std::wstring const &str); + + bool LoadTGAFromFile(const char* path, unsigned short* width, unsigned short* height, unsigned char** pixels); + + class FormattingUtils { + static const unsigned int BUF_SIZE = 10; + static unsigned int currentBuf; + static char buf[BUF_SIZE][4096]; + static unsigned int currentBufW; + static wchar_t bufW[BUF_SIZE][4096]; + public: + template static T const &Arg(T const &arg) { return arg; } + static char const *Arg(std::string const &arg) { return arg.c_str(); } + static wchar_t const *Arg(std::wstring const &arg) { return arg.c_str(); } + static char *GetBuf(); + static wchar_t *GetBufW(); + }; + + template + char *FormatStatic(const std::string &format, ArgTypes... args) { + char *buf = FormattingUtils::GetBuf(); + snprintf(buf, 4096, format.c_str(), FormattingUtils::Arg(args)...); + return buf; + } + + template + std::string Format(const std::string &format, ArgTypes... args) { + return FormatStatic(format, FormattingUtils::Arg(args)...); + } + + template + wchar_t *FormatStatic(const std::wstring &format, ArgTypes... args) { + wchar_t *buf = FormattingUtils::GetBufW(); + _snwprintf(buf, 4096, format.c_str(), FormattingUtils::Arg(args)...); + return buf; + } + + template + std::wstring Format(const std::wstring &format, ArgTypes... args) { + return FormatStatic(format, FormattingUtils::Arg(args)...); + } + + template + static T DegToRad(T x) { + return (x * M_PI / (T)180); + } + + template + static T RadToDeg(T x) { + return (x * (T)180 / M_PI); + } + + template + static T Clamp(T v, T2 low, T3 high) { + return ((v) < (low) ? (low) : (v) > (high) ? (high) : (v)); + } + + static float InterpF(float a, float b, float f) { + return (a + (f) * (b - a)); + } + + static CVector2D InterpV2D(CVector2D a, CVector2D b, float f) { + return CVector2D((a.x + (f) * (b.x - a.x)), (a.y + (f) * (b.y - a.y))); + } + + static float GetTimeStepFix() { +#ifdef GTA2 + return 1.0f / (50.0f / 30.0f); +#else + return CTimer::ms_fTimeStep / (50.0f / 30.0f); +#endif + } + + static bool IsNearlyEqualF(float a, float b, float t) { + return (fabs(a - b) <= t); + } + + static bool FileExists(const char* name) { + struct stat buffer; + return (stat(name, &buffer) == 0); + } +} + +#ifdef UNICODE +#define _LoadTGAFromFile plugin::LoadTGAFromFileW +#else +#define _LoadTGAFromFile plugin::LoadTGAFromFile +#endif + +#define DEGTORAD(x) plugin::DegToRad(x) +#define RADTODEG(x) plugin::RadToDeg(x) + +#define CLAMP(v, low, high) plugin::Clamp(v, low, high) +#define INTERPF(a, b, f) plugin::InterpF(a, b, f) diff --git a/third-party/plugin-sdk/shared/Patch.cpp b/third-party/plugin-sdk/shared/Patch.cpp new file mode 100644 index 00000000..40c4ecab --- /dev/null +++ b/third-party/plugin-sdk/shared/Patch.cpp @@ -0,0 +1,129 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "Patch.h" + +void plugin::patch::Nop(int address, size_t size, bool vp) { + injector::MakeNOP(GetGlobalAddress(address), size, vp); +} + +void plugin::patch::RedirectCall(int address, void *func, bool vp) { + injector::MakeCALL(GetGlobalAddress(address), func, vp); +} + +void plugin::patch::RedirectJump(int address, void *func, bool vp) { + injector::MakeJMP(GetGlobalAddress(address), func, vp); +} + +void plugin::patch::SetChar(int address, char value, bool vp) { + injector::WriteMemory(GetGlobalAddress(address), value, vp); +} + +void plugin::patch::SetUChar(int address, unsigned char value, bool vp) { + injector::WriteMemory(GetGlobalAddress(address), value, vp); +} + +void plugin::patch::SetShort(int address, short value, bool vp) { + injector::WriteMemory(GetGlobalAddress(address), value, vp); +} + +void plugin::patch::SetUShort(int address, unsigned short value, bool vp) { + injector::WriteMemory(GetGlobalAddress(address), value, vp); +} + +void plugin::patch::SetInt(int address, int value, bool vp) { + injector::WriteMemory(GetGlobalAddress(address), value, vp); +} + +void plugin::patch::SetUInt(int address, unsigned int value, bool vp) { + injector::WriteMemory(GetGlobalAddress(address), value, vp); +} + +void plugin::patch::SetFloat(int address, float value, bool vp) { + injector::WriteMemory(GetGlobalAddress(address), value, vp); +} + +void plugin::patch::SetPointer(int address, void *value, bool vp) { + injector::WriteMemory(GetGlobalAddress(address), value, vp); +} + +char plugin::patch::GetChar(int address, bool vp) { + return injector::ReadMemory(GetGlobalAddress(address), vp); +} + +unsigned char plugin::patch::GetUChar(int address, bool vp) { + return injector::ReadMemory(GetGlobalAddress(address), vp); +} + +short plugin::patch::GetShort(int address, bool vp) { + return injector::ReadMemory(GetGlobalAddress(address), vp); +} + +unsigned short plugin::patch::GetUShort(int address, bool vp) { + return injector::ReadMemory(GetGlobalAddress(address), vp); +} + +int plugin::patch::GetInt(int address, bool vp) { + return injector::ReadMemory(GetGlobalAddress(address), vp); +} + +unsigned int plugin::patch::GetUInt(int address, bool vp) { + return injector::ReadMemory(GetGlobalAddress(address), vp); +} + +float plugin::patch::GetFloat(int address, bool vp) { + return injector::ReadMemory(GetGlobalAddress(address), vp); +} + +void *plugin::patch::GetPointer(int address, bool vp) { + return injector::ReadMemory(GetGlobalAddress(address), vp); +} + +void plugin::patch::ReplaceFunction(int address, void *func, bool vp) { + RedirectJump(address, func, vp); +} + +void plugin::patch::ReplaceFunctionCall(int address, void *func, bool vp) { + RedirectCall(address, func, vp); +} + +void plugin::patch::SetRaw(int address, void* value, size_t size, bool vp) { + injector::WriteMemoryRaw(GetGlobalAddress(address), value, size, vp); +} + +void plugin::patch::GetRaw(int address,void* ret, size_t size, bool vp) { + + injector::ReadMemoryRaw(GetGlobalAddress(address), ret, size, vp); +} + +void plugin::patch::RedirectShortJump(int address, void* dest, bool vp) { + + int GlobalAddress = GetGlobalAddress(address); + injector::WriteMemory(GlobalAddress, 0xEB, vp); + if (dest) + injector::MakeRelativeOffset(GlobalAddress + 1, dest, 1, vp); +} + +void plugin::patch::PutRetn(int address, unsigned short BytesToPop, bool vp) { + injector::MakeRET(GetGlobalAddress(address), BytesToPop, vp); +} + +void plugin::patch::PutRetn0(int address, unsigned short BytesToPop, bool vp) { + + int GlobalAddress = GetGlobalAddress(address); + injector::WriteMemory(GlobalAddress, 0x33, vp); // xor eax, eax + injector::WriteMemory(GlobalAddress + 1, 0xC0, vp); + injector::MakeRET(GlobalAddress + 2, BytesToPop, vp); +} + +void plugin::patch::PutRetn1(int address, unsigned short BytesToPop, bool vp) { + + int GlobalAddress = GetGlobalAddress(address); + injector::WriteMemory(GlobalAddress, 0xB1, vp); // xor eax, eax + injector::WriteMemory(GlobalAddress + 1, 0x01, vp); + injector::MakeRET(GlobalAddress + 2, BytesToPop, vp); +} + diff --git a/third-party/plugin-sdk/shared/Patch.h b/third-party/plugin-sdk/shared/Patch.h new file mode 100644 index 00000000..cf35a8b2 --- /dev/null +++ b/third-party/plugin-sdk/shared/Patch.h @@ -0,0 +1,77 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#pragma once + +#include "../injector/injector.hpp" +#include "DynAddress.h" + +namespace plugin { + +class patch { +public: + static void Nop(int address, size_t size, bool vp = true); + static void RedirectCall(int address, void *func, bool vp = true); + static void RedirectJump(int address, void *func, bool vp = true); + static void SetChar(int address, char value, bool vp = true); + static void SetUChar(int address, unsigned char value, bool vp = true); + static void SetShort(int address, short value, bool vp = true); + static void SetUShort(int address, unsigned short value, bool vp = true); + static void SetInt(int address, int value, bool vp = true); + static void SetUInt(int address, unsigned int value, bool vp = true); + static void SetFloat(int address, float value, bool vp = true); + static void SetPointer(int address, void *value, bool vp = true); + static char GetChar(int address, bool vp = true); + static unsigned char GetUChar(int address, bool vp = true); + static short GetShort(int address, bool vp = true); + static unsigned short GetUShort(int address, bool vp = true); + static int GetInt(int address, bool vp = true); + static unsigned int GetUInt(int address, bool vp = true); + static float GetFloat(int address, bool vp = true); + static void *GetPointer(int address, bool vp = true); + static void SetRaw(int address, void* value, size_t size, bool vp = true); + static void GetRaw(int address, void* ret, size_t size, bool vp = true); + static void RedirectShortJump(int address, void* dest = nullptr, bool vp = true); + static void PutRetn(int address, unsigned short BytesToPop = 0, bool vp = true); + static void PutRetn0(int address, unsigned short BytesToPop = 0, bool vp = true); + static void PutRetn1(int address, unsigned short BytesToPop = 0, bool vp = true); + + template + static void Set(int address, T value, bool vp = true) { + injector::WriteMemory(GetGlobalAddress(address), value, vp); + } + + template + static T Get(int address, bool vp = true) { + return injector::ReadMemory(GetGlobalAddress(address), vp); + } + + template + static T TranslateCallOffset(int address) { + if (GetUChar(address) == 0xE8) { + auto offset = GetInt(address + 1); + offset += (GetGlobalAddress(address) + 5); + return reinterpret_cast(offset); + } + return nullptr; + } + + template + static T TranslateJumpOffset(int address) { + if (GetUChar(address) == 0xE9) { + auto offset = GetInt(address + 1); + offset += (GetGlobalAddress(address) + 5); + return reinterpret_cast(offset); + } + return nullptr; + } + + static void ReplaceFunction(int address, void *func, bool vp = true); + static void ReplaceFunctionCall(int address, void *func, bool vp = true); +}; + +} diff --git a/third-party/plugin-sdk/shared/PluginBase.cpp b/third-party/plugin-sdk/shared/PluginBase.cpp new file mode 100644 index 00000000..b1fead55 --- /dev/null +++ b/third-party/plugin-sdk/shared/PluginBase.cpp @@ -0,0 +1,13 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginBase.h" + +#define _PLUGIN_VERSION 0x00000010 + +unsigned int plugin::Core::GetVersion() { + return _PLUGIN_VERSION; +} diff --git a/third-party/plugin-sdk/shared/PluginBase.h b/third-party/plugin-sdk/shared/PluginBase.h new file mode 100644 index 00000000..2eb44e5d --- /dev/null +++ b/third-party/plugin-sdk/shared/PluginBase.h @@ -0,0 +1,388 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include +#include +#include +#include +#include "Base.h" +#include "VersionsMacro.h" +#include "GameVersion.h" +#include "EventList.h" // TODO: decide if we need it here +#include "DynAddress.h" + +namespace plugin { + +namespace Core { + +// Gets the SDK version +PLUGIN_API unsigned int GetVersion(); + +} + +// helpers for constructor overloading (deprecated) + +struct dummy_func_t { }; // Dummy func tag type +static const dummy_func_t dummy; // Dummy func tag object + +// meta template for functions +#if (defined(__GNUC__) || defined(__GNUG__) || defined(__clang__)) +template +struct meta; +#elif (defined(_MSC_VER)) +template +struct meta; +#else + +#endif + +// meta templates for constructors, destructors and new/delete operators + +template +struct ctor_meta; + +template +struct dtor_meta; + +template +struct del_dtor_meta; + +template +struct op_new_meta; + +template +struct op_new_array_meta; + +template +struct op_delete_meta; + +template +struct op_delete_array_meta; + +// vtable description +template +struct vtable_meta; + +// stack_object + +template +struct stack_object { +private: + T object; +public: + template + stack_object(ArgTypes... args) : object(args...) {} + T *operator->() { return &object; } + T &get_object() { return object; } +}; + +template +struct stack_object_no_default { + stack_object_no_default() {} + stack_object_no_default(stack_object_no_default &&) = delete; + stack_object_no_default &operator=(stack_object_no_default &&) = delete; +protected: + char objBuff[sizeof(T)]; +public: + T *operator->() { return reinterpret_cast(objBuff); } + T &get_object() { return *reinterpret_cast(objBuff); } +}; + +// custom new/delete + +template +ClassType *operator_new(ArgTypes... args) { + return new ClassType(args...); +} + +template +ClassType *operator_new_array(size_t size) { + return new ClassType[size]; +} + +template +void operator_delete(ClassType *data) { + delete data; +} + +template +void operator_delete_array(ClassType *data) { + delete[] data; +} + +// helpers for event creating + +template +using event_t = std::conditional_t::value, + ThiscallEvent, + CdeclEvent +>; + +template +using custom_event_t = std::conditional_t::value, + ThiscallEvent, + CdeclEvent +>; + +// multi-version address list +template +struct MvAddresses {}; + +// Gets the virtual method table from the object @self +inline void** GetVMT(const void* self) { + return *(void***)(self); +} + +// Gets the virtual method from @self in the table index @index +inline void* GetVMT(const void* self, size_t index) { + return GetVMT(self)[index]; +} + +template +void Call(Args... args) { + reinterpret_cast(address)(args...); +} + +template +void CallStd(Args... args) { + reinterpret_cast(address)(args...); +} + +template +Ret CallAndReturn(Args... args) { + return reinterpret_cast(address)(args...); +} + +template +Ret CallStdAndReturn(Args... args) { + return reinterpret_cast(address)(args...); +} + +template +void CallMethod(C _this, Args... args) { + reinterpret_cast(address)(_this, args...); +} + +template +Ret CallMethodAndReturn(C _this, Args... args) { + return reinterpret_cast(address)(_this, args...); +} + +template +void CallVirtualMethod(C _this, Args... args) { + reinterpret_cast((*reinterpret_cast(_this))[tableIndex])(_this, args...); +} + +template +Ret CallVirtualMethodAndReturn(C _this, Args... args) { + return reinterpret_cast((*reinterpret_cast(_this))[tableIndex])(_this, args...); +} + +template +void CallDyn(unsigned int address, Args... args) { + reinterpret_cast(GetGlobalAddress(address))(args...); +} + +template +Ret CallAndReturnDyn(unsigned int address, Args... args) { + return reinterpret_cast(GetGlobalAddress(address))(args...); +} + +template +void CallMethodDyn(unsigned int address, C _this, Args... args) { + reinterpret_cast(GetGlobalAddress(address))(_this, args...); +} + +template +Ret CallMethodAndReturnDyn(unsigned int address, C _this, Args... args) { + return reinterpret_cast(GetGlobalAddress(address))(_this, args...); +} + +template +void CallDynGlobal(unsigned int address, Args... args) { + reinterpret_cast(address)(args...); +} + +template +Ret CallAndReturnDynGlobal(unsigned int address, Args... args) { + return reinterpret_cast(address)(args...); +} + +template +void CallMethodDynGlobal(unsigned int address, C _this, Args... args) { + reinterpret_cast(address)(_this, args...); +} + +template +Ret CallMethodAndReturnDynGlobal(unsigned int address, C _this, Args... args) { + return reinterpret_cast(address)(_this, args...); +} + +} + +// meta access +#if (defined(__GNUC__) || defined(__GNUG__) || defined(__clang__)) +#define metaof(func) plugin::meta<&func > +#define metaof_o(func, decl) plugin::meta(&func)> +#define META_BEGIN(func) template<> struct meta<&func > { +#define META_BEGIN_OVERLOADED(func, decl) template<> struct meta(&func)> { +#elif (defined(_MSC_VER)) +#define metaof(func) plugin::meta +#define metaof_o(func, decl) plugin::meta +#define META_BEGIN(func) template<> struct meta { +#define META_BEGIN_OVERLOADED(func, decl) template<> struct meta { +#else + +#endif + +#define CTOR_META_BEGIN(classType) template<> struct ctor_meta { +#define CTOR_META_BEGIN_OVERLOADED(classType, decl) template<> struct ctor_meta { +#define DTOR_META_BEGIN(classType) template<> struct dtor_meta { +#define DEL_DTOR_META_BEGIN(classType) template<> struct del_dtor_meta { +#define OP_NEW_META_BEGIN(classType) template<> struct op_new_meta { +#define OP_NEW_META_BEGIN_OVERLOADED(classType, decl) template<> struct op_new_meta { +#define OP_NEW_ARRAY_META_BEGIN(classType) template<> struct op_new_array_meta { +#define OP_NEW_ARRAY_META_BEGIN_OVERLOADED(classType, decl) template<> struct op_new_array_meta { +#define OP_DELETE_META_BEGIN(classType) template<> struct op_delete_meta { +#define OP_DELETE_META_BEGIN_OVERLOADED(classType, decl) template<> struct op_delete_meta { +#define OP_DELETE_ARRAY_META_BEGIN(classType) template<> struct op_delete_array_meta { +#define OP_DELETE_ARRAY_META_BEGIN_OVERLOADED(classType, decl) template<> struct op_delete_array_meta { + +#define META_END }; + +#define ctor_metaof(classType) plugin::ctor_meta +#define ctor_metaof_o(classType, decl) plugin::ctor_meta +#define dtor_metaof(classType) plugin::dtor_meta +#define del_dtor_metaof(classType) plugin::del_dtor_meta +#define op_new_metaof(classType) plugin::op_new_meta +#define op_new_metaof_o(classType, decl) plugin::op_new_meta +#define op_new_array_metaof(classType) plugin::op_new_array_meta +#define op_new_array_metaof_o(classType, decl) plugin::op_new_array_meta +#define op_delete_metaof(classType) plugin::op_delete_meta +#define op_delete_metaof_o(classType, decl) plugin::op_delete_meta +#define op_delete_array_metaof(classType) plugin::op_delete_array_meta +#define op_delete_array_metaof_o(classType, decl) plugin::op_delete_array_meta + +#define addrof(func) metaof(func)::address +#define gaddrof(func) metaof(func)::global_address +#define argsof(func) metaof(func)::args_t +#define refsof(func) metaof(func)::refs_t +#define idof(func) metaof(func)::id +#define addrof_o(func, decl) metaof_o(func, decl)::address +#define gaddrof_o(func, decl) metaof_o(func, decl)::global_address +#define argsof_o(func, decl) metaof_o(func, decl)::args_t +#define refsof_o(func, decl) metaof_o(func, decl)::refs_t +#define idof_o(func, decl) metaof_o(func, decl)::id + +#define ctor_addr(classType) ctor_metaof(classType)::address +#define ctor_gaddr(classType) ctor_metaof(classType)::global_address +#define ctor_args(classType) ctor_metaof(classType)::args_t +#define ctor_refs(classType) ctor_metaof(classType)::refs_t +#define ctor_id(classType) ctor_metaof(classType)::id +#define ctor_addr_o(classType, decl) ctor_metaof_o(classType, decl)::address +#define ctor_gaddr_o(classType, decl) ctor_metaof_o(classType, decl)::global_address +#define ctor_args_o(classType, decl) ctor_metaof_o(classType, decl)::args_t +#define ctor_refs_o(classType, decl) ctor_metaof_o(classType, decl)::refs_t +#define ctor_id_o(classType, decl) ctor_metaof_o(classType, decl)::id + +#define dtor_addr(classType) dtor_metaof(classType)::address +#define dtor_gaddr(classType) dtor_metaof(classType)::global_address +#define dtor_args(classType) dtor_metaof(classType)::args_t +#define dtor_refs(classType) dtor_metaof(classType)::refs_t +#define dtor_id(classType) dtor_metaof(classType)::id + +#define del_dtor_addr(classType) del_dtor_metaof(classType)::address +#define del_dtor_gaddr(classType) del_dtor_metaof(classType)::global_address +#define del_dtor_args(classType) del_dtor_metaof(classType)::args_t +#define del_dtor_refs(classType) del_dtor_metaof(classType)::refs_t +#define del_dtor_id(classType) del_dtor_metaof(classType)::id + +#define op_new_addr(classType) op_new_metaof(classType)::address +#define op_new_gaddr(classType) op_new_metaof(classType)::global_address +#define op_new_args(classType) op_new_metaof(classType)::args_t +#define op_new_refs(classType) op_new_metaof(classType)::refs_t +#define op_new_id(classType) op_new_metaof(classType)::id +#define op_new_addr_o(classType, decl) op_new_metaof_o(classType, decl)::address +#define op_new_gaddr_o(classType, decl) op_new_metaof_o(classType, decl)::global_address +#define op_new_args_o(classType, decl) op_new_metaof_o(classType, decl)::args_t +#define op_new_refs_o(classType, decl) op_new_metaof_o(classType, decl)::refs_t +#define op_new_id_o(classType, decl) op_new_metaof_o(classType, decl)::id + +#define op_new_array_addr(classType) op_new_array_metaof(classType)::address +#define op_new_array_gaddr(classType) op_new_array_metaof(classType)::global_address +#define op_new_array_args(classType) op_new_array_metaof(classType)::args_t +#define op_new_array_refs(classType) op_new_array_metaof(classType)::refs_t +#define op_new_array_id(classType) op_new_array_metaof(classType)::id +#define op_new_array_addr_o(classType, decl) op_new_array_metaof_o(classType, decl)::address +#define op_new_array_gaddr_o(classType, decl) op_new_array_metaof_o(classType, decl)::global_address +#define op_new_array_args_o(classType, decl) op_new_array_metaof_o(classType, decl)::args_t +#define op_new_array_refs_o(classType, decl) op_new_array_metaof_o(classType, decl)::refs_t +#define op_new_array_id_o(classType, decl) op_new_array_metaof_o(classType, decl)::id + +#define op_delete_addr(classType) op_delete_metaof(classType)::address +#define op_delete_gaddr(classType) op_delete_metaof(classType)::global_address +#define op_delete_args(classType) op_delete_metaof(classType)::args_t +#define op_delete_refs(classType) op_delete_metaof(classType)::refs_t +#define op_delete_id(classType) op_delete_metaof(classType)::id +#define op_delete_addr_o(classType, decl) op_delete_metaof_o(classType, decl)::address +#define op_delete_gaddr_o(classType, decl) op_delete_metaof_o(classType, decl)::global_address +#define op_delete_args_o(classType, decl) op_delete_metaof_o(classType, decl)::args_t +#define op_delete_refs_o(classType, decl) op_delete_metaof_o(classType, decl)::refs_t +#define op_delete_id_o(classType, decl) op_delete_metaof_o(classType, decl)::id + +#define op_delete_array_addr(classType) op_delete_array_metaof(classType)::address +#define op_delete_array_gaddr(classType) op_delete_array_metaof(classType)::global_address +#define op_delete_array_args(classType) op_delete_array_metaof(classType)::args_t +#define op_delete_array_refs(classType) op_delete_array_metaof(classType)::refs_t +#define op_delete_array_id(classType) op_delete_array_metaof(classType)::id +#define op_delete_array_addr_o(classType, decl) op_delete_array_metaof_o(classType, decl)::address +#define op_delete_array_gaddr_o(classType, decl) op_delete_array_metaof_o(classType, decl)::global_address +#define op_delete_array_args_o(classType, decl) op_delete_array_metaof_o(classType, decl)::args_t +#define op_delete_array_refs_o(classType, decl) op_delete_array_metaof_o(classType, decl)::refs_t +#define op_delete_array_id_o(classType, decl) op_delete_array_metaof_o(classType, decl)::id + +// vtable description - macro + +#define VTABLE_DESC(className, vtAddr, vtSize)\ +namespace plugin {\ +template<> struct vtable_meta {\ + static const unsigned int address = vtAddr;\ + static const unsigned int size = vtSize;\ +};\ +} + +#define metaof_vtable(className) plugin::vtable_meta + +#define vtableid(className) plugin::vtable_meta::address + +// custom object construction + +#define PLUGIN_NO_DEFAULT_CONSTRUCTION(className) \ + className() = delete;\ + className(className const &) = delete;\ + className(className &&) = delete;\ + ~className() = delete;\ + className &operator=(className &&) = delete; + +#define PLUGIN_NO_DEFAULT_CONSTRUCTION_VIRTUALBASE(className) \ + className() = delete;\ + className(className const &) = delete;\ + className(className &&) = delete;\ + virtual ~className() = delete;\ + className &operator=(className &&) = delete; + +// get global address for current exe version +#ifdef GTASA +#define GLOBAL_ADDRESS_BY_VERSION(a,b,c,d,e,f) (plugin::GetGlobalAddress(plugin::by_version_dyn(a,b,c,d,e,f))) +#define ADDRESS_BY_VERSION(a,b,c,d,e,f) (plugin::by_version_dyn(a,b,c,d,e,f)) +#else +#define GLOBAL_ADDRESS_BY_VERSION(a,b,c) (plugin::GetGlobalAddress(plugin::by_version_dyn(a,b,c))) +#define ADDRESS_BY_VERSION(a,b,c) (plugin::by_version_dyn(a,b,c)) +#endif + +#define LAMBDA(Ret, Conv, Func, ...) (Ret(Conv*)(__VA_ARGS__))Func diff --git a/third-party/plugin-sdk/shared/RefList.h b/third-party/plugin-sdk/shared/RefList.h new file mode 100644 index 00000000..8abb6b00 --- /dev/null +++ b/third-party/plugin-sdk/shared/RefList.h @@ -0,0 +1,134 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +namespace plugin { + +template +struct RefList { +private: + template + struct FilterList {}; + + template + struct CompareFn; + + template + struct CompareFn { + constexpr static bool value = !CompareType; + }; + + template + struct CompareFn { + constexpr static bool value = (V == A) ? CompareType : CompareFn::value; + }; + + template + struct filter_iterator; + + template + struct filter_iterator, FilterList> { + using type = RefList; + }; + + template + struct filter_iterator, FilterList, RefAddr, GameVersion, RefType, RefObjectId, RefIndexInObject, values...> { + static constexpr int compValue[4] = { GameVersion, RefType, RefObjectId, RefIndexInObject }; + + using type = typename filter_iterator::value, + RefList, + RefList>, + FilterList, values...>::type; + }; + + template + struct filter : filter_iterator, FilterList, Values...> {}; +public: + template + using only_from = typename filter<2, true, filters...>::type; + + template + using only_gameversion = typename filter<0, true, filters...>::type; + + template + using only_reftype = typename filter<1, true, filters...>::type; + + template + using only_index = typename filter<3, true, filters...>::type; + + template + using except_from = typename filter<2, false, filters...>::type; + + template + using except_gameversion = typename filter<0, false, filters...>::type; + + template + using except_reftype = typename filter<1, false, filters...>::type; + + template + using except_index = typename filter<3, false, filters...>::type; + + using only_first = only_index<1>; + + using only_second = only_index<2>; + + using only_third = only_index<3>; + + using except_first = except_index<1>; + + using except_second = except_index<2>; + + using except_third = except_index<3>; +}; + +template +struct MakeRefListFromAddressList; + +template +struct MakeRefListFromAddressList> { + using type = RefList; +}; + +#ifdef GTASA +template +struct MakeRefListFromAddressList, Addr, HookType, Values...> { + using type = typename MakeRefListFromAddressList, Values...>::type; +}; +#elif GTA2 +template +struct MakeRefListFromAddressList, Addr, HookType, Values...> { + using type = typename MakeRefListFromAddressList, Values...>::type; +}; +#else +template +struct MakeRefListFromAddressList, Addr, HookType, Values...> { + using type = typename MakeRefListFromAddressList, Values...>::type; +}; +#endif + +template +using AddressList = typename MakeRefListFromAddressList, Values...>::type; + +template +struct MakeRefListFromAddressListMulti; + +template +struct MakeRefListFromAddressListMulti> { + using type = RefList; +}; + +template +struct MakeRefListFromAddressListMulti, Addr, GameVersion, HookType, Values...> { + using type = typename MakeRefListFromAddressListMulti, Values...>::type; +}; + +template +using AddressListMulti = typename MakeRefListFromAddressListMulti, Values...>::type; + +} diff --git a/third-party/plugin-sdk/shared/RefListUtils.h b/third-party/plugin-sdk/shared/RefListUtils.h new file mode 100644 index 00000000..0da4246f --- /dev/null +++ b/third-party/plugin-sdk/shared/RefListUtils.h @@ -0,0 +1,95 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "RefList.h" +#include +#include "GameVersion.h" + +namespace plugin { + +template +struct RefListUtils; + +template<> +struct RefListUtils> { + static std::string GetName() { + return "(0)"; + } + + constexpr static bool IsEmpty() { + return true; + } +}; + +template +struct RefListUtils> { + static std::string GetName(std::string sep = " ") { + size_t size = sizeof...(Values); + int values[size] = { Values... }; + int refscount = size / 5; + std::string result = "(" + std::to_string(refscount) + ")"; + if (refscount > 0) { + result += ":" + sep; + for (int i = 0; i < refscount; i++) { + if (i != 0) + result += sep; + result += "["; + result += std::to_string(values[i * 5 + 0]) + ", "; + int gameid = values[i * 5 + 1]; +#ifdef GTASA + if (gameid == GAME_10US_COMPACT) + result += "GAME_10US_COMPACT"; + else if (gameid == GAME_10US_HOODLUM) + result += "GAME_10US_HOODLUM"; + else if (gameid == GAME_10EU) + result += "GAME_10EU"; + else if (gameid == GAME_11US) + result += "GAME_11US"; + else if (gameid == GAME_11EU) + result += "GAME_11EU"; + else if (gameid == GAME_STEAM) + result += "GAME_STEAM"; + else if (gameid == GAME_STEAM_LV) + result += "GAME_STEAM_LV"; +#elif GTA2 + if (gameid == GAME_9600EN) + result += "GAME_9600EN"; +#else + if (gameid == GAME_10EN) + result += "GAME_10EN"; + else if (gameid == GAME_11EN) + result += "GAME_11EN"; + else if (gameid == GAME_STEAM) + result += "GAME_STEAM"; +#endif + else + result += std::to_string(gameid); + result += ", "; + int hooktype = values[i * 5 + 2]; + if (hooktype == H_CALL) + result += "H_CALL"; + else if (hooktype == H_JUMP) + result += "H_JUMP"; + else if (gameid == H_CALLBACK) + result += "H_CALLBACK"; + else + result += std::to_string(hooktype); + result += ", "; + result += std::to_string(values[i * 5 + 3]) + ", "; + result += std::to_string(values[i * 5 + 4]); + result += "]"; + } + } + return result; + } + + constexpr static bool IsEmpty() { + return false; + } +}; + +} diff --git a/third-party/plugin-sdk/shared/StringUtils.cpp b/third-party/plugin-sdk/shared/StringUtils.cpp new file mode 100644 index 00000000..1c53e644 --- /dev/null +++ b/third-party/plugin-sdk/shared/StringUtils.cpp @@ -0,0 +1,7 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "StringUtils.h" diff --git a/third-party/plugin-sdk/shared/StringUtils.h b/third-party/plugin-sdk/shared/StringUtils.h new file mode 100644 index 00000000..cb5c8ab7 --- /dev/null +++ b/third-party/plugin-sdk/shared/StringUtils.h @@ -0,0 +1,27 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include + +namespace StringUtils { + +template +void atow_static(wchar_t (&wt)[S], char const *at) { + if (S > 0) { + size_t len = strlen(at); + size_t i = 0; + for (; i < len; i++) { + if (i >= (S - 1)) + break; + wt[i] = static_cast(at[i]); + } + wt[i] = L'\0'; + } +} + +} diff --git a/third-party/plugin-sdk/shared/Timer.cpp b/third-party/plugin-sdk/shared/Timer.cpp new file mode 100644 index 00000000..0eb37b97 --- /dev/null +++ b/third-party/plugin-sdk/shared/Timer.cpp @@ -0,0 +1,32 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "plugin.h" +#include "Timer.h" + +using namespace plugin; + +bool Timer::timerInit = false; +std::chrono::time_point Timer::startTime; + +Timer::Timer() { + if (!timerInit) { + startTime = std::chrono::steady_clock::now(); + timerInit = true; + } +} + +Timer::~Timer() { + +} + +float Timer::GetTimeInMilliseconds() { + return static_cast(std::chrono::duration_cast(std::chrono::steady_clock::now() - startTime).count()); +} + +float Timer::GetTimeInSeconds() { + return GetTimeInMilliseconds() / 1000.0f; +} diff --git a/third-party/plugin-sdk/shared/Timer.h b/third-party/plugin-sdk/shared/Timer.h new file mode 100644 index 00000000..02eea6fc --- /dev/null +++ b/third-party/plugin-sdk/shared/Timer.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "PluginBase.h" +#include + +namespace plugin { + class Timer { + public: + static bool timerInit; + static std::chrono::time_point startTime; + + public: + Timer(); + ~Timer(); + + public: + static float GetTimeInMilliseconds(); + static float GetTimeInSeconds(); + }; +}; diff --git a/third-party/plugin-sdk/shared/VersionsMacro.h b/third-party/plugin-sdk/shared/VersionsMacro.h new file mode 100644 index 00000000..35a3baac --- /dev/null +++ b/third-party/plugin-sdk/shared/VersionsMacro.h @@ -0,0 +1,4245 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/GTAmodding/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#ifdef GTASA +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US +#define SUPPORTED_10EU +#define SUPPORTED_10US_10EU +#define SUPPORTED_11US +#define SUPPORTED_10US_11US +#define SUPPORTED_10EU_11US +#define SUPPORTED_10US_10EU_11US +#define SUPPORTED_11EU +#define SUPPORTED_10US_11EU +#define SUPPORTED_10EU_11EU +#define SUPPORTED_10US_10EU_11EU +#define SUPPORTED_11US_11EU +#define SUPPORTED_10US_11US_11EU +#define SUPPORTED_10EU_11US_11EU +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 +#define SUPPORTED_10US_SR2 +#define SUPPORTED_10EU_SR2 +#define SUPPORTED_10US_10EU_SR2 +#define SUPPORTED_11US_SR2 +#define SUPPORTED_10US_11US_SR2 +#define SUPPORTED_10EU_11US_SR2 +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 +#define SUPPORTED_10US_11EU_SR2 +#define SUPPORTED_10EU_11EU_SR2 +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV +#define SUPPORTED_10US_SR2LV +#define SUPPORTED_10EU_SR2LV +#define SUPPORTED_10US_10EU_SR2LV +#define SUPPORTED_11US_SR2LV +#define SUPPORTED_10US_11US_SR2LV +#define SUPPORTED_10EU_11US_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV +#define SUPPORTED_10US_11EU_SR2LV +#define SUPPORTED_10EU_11EU_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV +#define SUPPORTED_10US_SR2_SR2LV +#define SUPPORTED_10EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_SR2 +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_SR2LV +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU +#define SUPPORTED_10US_10EU +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US +#define SUPPORTED_10US_10EU_11US +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU +#define SUPPORTED_10US_10EU_11EU +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 +#define SUPPORTED_10US_10EU_SR2 +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV +#define SUPPORTED_10US_10EU_SR2LV +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US +#define SUPPORTED_10US_11US +#define SUPPORTED_10EU_11US +#define SUPPORTED_10US_10EU_11US +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU +#define SUPPORTED_10US_11US_11EU +#define SUPPORTED_10EU_11US_11EU +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2 +#define SUPPORTED_10US_11US_SR2 +#define SUPPORTED_10EU_11US_SR2 +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2LV +#define SUPPORTED_10US_11US_SR2LV +#define SUPPORTED_10EU_11US_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US +#define SUPPORTED_10US_10EU_11US +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU +#define SUPPORTED_10US_11EU +#define SUPPORTED_10EU_11EU +#define SUPPORTED_10US_10EU_11EU +#define SUPPORTED_11US_11EU +#define SUPPORTED_10US_11US_11EU +#define SUPPORTED_10EU_11US_11EU +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 +#define SUPPORTED_10US_11EU_SR2 +#define SUPPORTED_10EU_11EU_SR2 +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV +#define SUPPORTED_10US_11EU_SR2LV +#define SUPPORTED_10EU_11EU_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU +#define SUPPORTED_10US_10EU_11EU +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU +#define SUPPORTED_10US_11US_11EU +#define SUPPORTED_10EU_11US_11EU +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 +#define SUPPORTED_10US_SR2 +#define SUPPORTED_10EU_SR2 +#define SUPPORTED_10US_10EU_SR2 +#define SUPPORTED_11US_SR2 +#define SUPPORTED_10US_11US_SR2 +#define SUPPORTED_10EU_11US_SR2 +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 +#define SUPPORTED_10US_11EU_SR2 +#define SUPPORTED_10EU_11EU_SR2 +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV +#define SUPPORTED_10US_SR2_SR2LV +#define SUPPORTED_10EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_SR2 +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 +#define SUPPORTED_10US_10EU_SR2 +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2 +#define SUPPORTED_10US_11US_SR2 +#define SUPPORTED_10EU_11US_SR2 +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 +#define SUPPORTED_10US_11EU_SR2 +#define SUPPORTED_10EU_11EU_SR2 +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && !defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV +#define SUPPORTED_10US_SR2LV +#define SUPPORTED_10EU_SR2LV +#define SUPPORTED_10US_10EU_SR2LV +#define SUPPORTED_11US_SR2LV +#define SUPPORTED_10US_11US_SR2LV +#define SUPPORTED_10EU_11US_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV +#define SUPPORTED_10US_11EU_SR2LV +#define SUPPORTED_10EU_11EU_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV +#define SUPPORTED_10US_SR2_SR2LV +#define SUPPORTED_10EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_SR2LV +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV +#define SUPPORTED_10US_10EU_SR2LV +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2LV +#define SUPPORTED_10US_11US_SR2LV +#define SUPPORTED_10EU_11US_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV +#define SUPPORTED_10US_11EU_SR2LV +#define SUPPORTED_10EU_11EU_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && !defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV +#define SUPPORTED_10US_SR2_SR2LV +#define SUPPORTED_10EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && !defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && !defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && !defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if !defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#if defined(PLUGIN_SGV_10US) && defined(PLUGIN_SGV_10EU) && defined(PLUGIN_SGV_11US) && defined(PLUGIN_SGV_11EU) && defined(PLUGIN_SGV_SR2) && defined(PLUGIN_SGV_SR2LV) +#define SUPPORTED_10US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2 [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2-LV' exe is not supported")]] +#define SUPPORTED_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 'NewSteam R2' exe is not supported")]] +#define SUPPORTED_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.1 EU exe is not supported")]] +#define SUPPORTED_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.01 US exe is not supported")]] +#define SUPPORTED_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10US_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 EU exe is not supported")]] +#define SUPPORTED_10EU_11US_11EU_SR2_SR2LV [[deprecated("not all .exe versions are supported:\n usage for 1.0 US exe is not supported")]] +#define SUPPORTED_10US_10EU_11US_11EU_SR2_SR2LV +#endif +#elif GTA2 +#define SUPPORTED_9600EN +#else +#if !defined(PLUGIN_SGV_10EN) && !defined(PLUGIN_SGV_11EN) && !defined(PLUGIN_SGV_STEAM) +#define SUPPORTED_10EN +#define SUPPORTED_11EN +#define SUPPORTED_10EN_11EN +#define SUPPORTED_STEAM +#define SUPPORTED_10EN_STEAM +#define SUPPORTED_11EN_STEAM +#define SUPPORTED_10EN_11EN_STEAM +#endif +#if defined(PLUGIN_SGV_10EN) && !defined(PLUGIN_SGV_11EN) && !defined(PLUGIN_SGV_STEAM) +#define SUPPORTED_10EN +#define SUPPORTED_11EN [[deprecated("not all .exe versions are supported:\n usage for 1.0 EN exe is not supported")]] +#define SUPPORTED_10EN_11EN +#define SUPPORTED_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.0 EN exe is not supported")]] +#define SUPPORTED_10EN_STEAM +#define SUPPORTED_11EN_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.0 EN exe is not supported")]] +#define SUPPORTED_10EN_11EN_STEAM +#endif +#if !defined(PLUGIN_SGV_10EN) && defined(PLUGIN_SGV_11EN) && !defined(PLUGIN_SGV_STEAM) +#define SUPPORTED_10EN [[deprecated("not all .exe versions are supported:\n usage for 1.1 EN exe is not supported")]] +#define SUPPORTED_11EN +#define SUPPORTED_10EN_11EN +#define SUPPORTED_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.1 EN exe is not supported")]] +#define SUPPORTED_10EN_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.1 EN exe is not supported")]] +#define SUPPORTED_11EN_STEAM +#define SUPPORTED_10EN_11EN_STEAM +#endif +#if defined(PLUGIN_SGV_10EN) && defined(PLUGIN_SGV_11EN) && !defined(PLUGIN_SGV_STEAM) +#define SUPPORTED_10EN [[deprecated("not all .exe versions are supported:\n usage for 1.1 EN exe is not supported")]] +#define SUPPORTED_11EN [[deprecated("not all .exe versions are supported:\n usage for 1.0 EN exe is not supported")]] +#define SUPPORTED_10EN_11EN +#define SUPPORTED_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.0 EN exe is not supported\n usage for 1.1 EN exe is not supported")]] +#define SUPPORTED_10EN_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.1 EN exe is not supported")]] +#define SUPPORTED_11EN_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.0 EN exe is not supported")]] +#define SUPPORTED_10EN_11EN_STEAM +#endif +#if !defined(PLUGIN_SGV_10EN) && !defined(PLUGIN_SGV_11EN) && defined(PLUGIN_SGV_STEAM) +#define SUPPORTED_10EN [[deprecated("not all .exe versions are supported:\n usage for Steam exe is not supported")]] +#define SUPPORTED_11EN [[deprecated("not all .exe versions are supported:\n usage for Steam exe is not supported")]] +#define SUPPORTED_10EN_11EN [[deprecated("not all .exe versions are supported:\n usage for Steam exe is not supported")]] +#define SUPPORTED_STEAM +#define SUPPORTED_10EN_STEAM +#define SUPPORTED_11EN_STEAM +#define SUPPORTED_10EN_11EN_STEAM +#endif +#if defined(PLUGIN_SGV_10EN) && !defined(PLUGIN_SGV_11EN) && defined(PLUGIN_SGV_STEAM) +#define SUPPORTED_10EN [[deprecated("not all .exe versions are supported:\n usage for Steam exe is not supported")]] +#define SUPPORTED_11EN [[deprecated("not all .exe versions are supported:\n usage for 1.0 EN exe is not supported\n usage for Steam exe is not supported")]] +#define SUPPORTED_10EN_11EN [[deprecated("not all .exe versions are supported:\n usage for Steam exe is not supported")]] +#define SUPPORTED_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.0 EN exe is not supported")]] +#define SUPPORTED_10EN_STEAM +#define SUPPORTED_11EN_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.0 EN exe is not supported")]] +#define SUPPORTED_10EN_11EN_STEAM +#endif +#if !defined(PLUGIN_SGV_10EN) && defined(PLUGIN_SGV_11EN) && defined(PLUGIN_SGV_STEAM) +#define SUPPORTED_10EN [[deprecated("not all .exe versions are supported:\n usage for 1.1 EN exe is not supported\n usage for Steam exe is not supported")]] +#define SUPPORTED_11EN [[deprecated("not all .exe versions are supported:\n usage for Steam exe is not supported")]] +#define SUPPORTED_10EN_11EN [[deprecated("not all .exe versions are supported:\n usage for Steam exe is not supported")]] +#define SUPPORTED_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.1 EN exe is not supported")]] +#define SUPPORTED_10EN_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.1 EN exe is not supported")]] +#define SUPPORTED_11EN_STEAM +#define SUPPORTED_10EN_11EN_STEAM +#endif +#if defined(PLUGIN_SGV_10EN) && defined(PLUGIN_SGV_11EN) && defined(PLUGIN_SGV_STEAM) +#define SUPPORTED_10EN [[deprecated("not all .exe versions are supported:\n usage for 1.1 EN exe is not supported\n usage for Steam exe is not supported")]] +#define SUPPORTED_11EN [[deprecated("not all .exe versions are supported:\n usage for 1.0 EN exe is not supported\n usage for Steam exe is not supported")]] +#define SUPPORTED_10EN_11EN [[deprecated("not all .exe versions are supported:\n usage for Steam exe is not supported")]] +#define SUPPORTED_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.0 EN exe is not supported\n usage for 1.1 EN exe is not supported")]] +#define SUPPORTED_10EN_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.1 EN exe is not supported")]] +#define SUPPORTED_11EN_STEAM [[deprecated("not all .exe versions are supported:\n usage for 1.0 EN exe is not supported")]] +#define SUPPORTED_10EN_11EN_STEAM +#endif +#endif diff --git a/third-party/plugin-sdk/shared/bass/bass.h b/third-party/plugin-sdk/shared/bass/bass.h new file mode 100644 index 00000000..b6268108 --- /dev/null +++ b/third-party/plugin-sdk/shared/bass/bass.h @@ -0,0 +1,1131 @@ +/* + BASS 2.4 C/C++ header file + Copyright (c) 1999-2021 Un4seen Developments Ltd. + + See the BASS.CHM file for more detailed documentation +*/ + +#ifndef BASS_H +#define BASS_H + +#ifdef _WIN32 +#ifdef WINAPI_FAMILY +#include +#endif +#include +typedef unsigned __int64 QWORD; +#else +#include +#define WINAPI +#define CALLBACK +typedef uint8_t BYTE; +typedef uint16_t WORD; +typedef uint32_t DWORD; +typedef uint64_t QWORD; +#ifdef __OBJC__ +typedef int BOOL32; +#define BOOL BOOL32 // override objc's BOOL +#else +typedef int BOOL; +#endif +#ifndef TRUE +#define TRUE 1 +#define FALSE 0 +#endif +#define LOBYTE(a) (BYTE)(a) +#define HIBYTE(a) (BYTE)((a)>>8) +#define LOWORD(a) (WORD)(a) +#define HIWORD(a) (WORD)((a)>>16) +#define MAKEWORD(a,b) (WORD)(((a)&0xff)|((b)<<8)) +#define MAKELONG(a,b) (DWORD)(((a)&0xffff)|((b)<<16)) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define BASSVERSION 0x204 // API version +#define BASSVERSIONTEXT "2.4" + +#ifndef BASSDEF +#define BASSDEF(f) WINAPI f +#else +#define NOBASSOVERLOADS +#endif + +typedef DWORD HMUSIC; // MOD music handle +typedef DWORD HSAMPLE; // sample handle +typedef DWORD HCHANNEL; // sample playback handle +typedef DWORD HSTREAM; // sample stream handle +typedef DWORD HRECORD; // recording handle +typedef DWORD HSYNC; // synchronizer handle +typedef DWORD HDSP; // DSP handle +typedef DWORD HFX; // effect handle +typedef DWORD HPLUGIN; // plugin handle + +// Error codes returned by BASS_ErrorGetCode +#define BASS_OK 0 // all is OK +#define BASS_ERROR_MEM 1 // memory error +#define BASS_ERROR_FILEOPEN 2 // can't open the file +#define BASS_ERROR_DRIVER 3 // can't find a free/valid driver +#define BASS_ERROR_BUFLOST 4 // the sample buffer was lost +#define BASS_ERROR_HANDLE 5 // invalid handle +#define BASS_ERROR_FORMAT 6 // unsupported sample format +#define BASS_ERROR_POSITION 7 // invalid position +#define BASS_ERROR_INIT 8 // BASS_Init has not been successfully called +#define BASS_ERROR_START 9 // BASS_Start has not been successfully called +#define BASS_ERROR_SSL 10 // SSL/HTTPS support isn't available +#define BASS_ERROR_REINIT 11 // device needs to be reinitialized +#define BASS_ERROR_ALREADY 14 // already initialized/paused/whatever +#define BASS_ERROR_NOTAUDIO 17 // file does not contain audio +#define BASS_ERROR_NOCHAN 18 // can't get a free channel +#define BASS_ERROR_ILLTYPE 19 // an illegal type was specified +#define BASS_ERROR_ILLPARAM 20 // an illegal parameter was specified +#define BASS_ERROR_NO3D 21 // no 3D support +#define BASS_ERROR_NOEAX 22 // no EAX support +#define BASS_ERROR_DEVICE 23 // illegal device number +#define BASS_ERROR_NOPLAY 24 // not playing +#define BASS_ERROR_FREQ 25 // illegal sample rate +#define BASS_ERROR_NOTFILE 27 // the stream is not a file stream +#define BASS_ERROR_NOHW 29 // no hardware voices available +#define BASS_ERROR_EMPTY 31 // the MOD music has no sequence data +#define BASS_ERROR_NONET 32 // no internet connection could be opened +#define BASS_ERROR_CREATE 33 // couldn't create the file +#define BASS_ERROR_NOFX 34 // effects are not available +#define BASS_ERROR_NOTAVAIL 37 // requested data/action is not available +#define BASS_ERROR_DECODE 38 // the channel is/isn't a "decoding channel" +#define BASS_ERROR_DX 39 // a sufficient DirectX version is not installed +#define BASS_ERROR_TIMEOUT 40 // connection timedout +#define BASS_ERROR_FILEFORM 41 // unsupported file format +#define BASS_ERROR_SPEAKER 42 // unavailable speaker +#define BASS_ERROR_VERSION 43 // invalid BASS version (used by add-ons) +#define BASS_ERROR_CODEC 44 // codec is not available/supported +#define BASS_ERROR_ENDED 45 // the channel/file has ended +#define BASS_ERROR_BUSY 46 // the device is busy +#define BASS_ERROR_UNSTREAMABLE 47 // unstreamable file +#define BASS_ERROR_PROTOCOL 48 // unsupported protocol +#define BASS_ERROR_UNKNOWN -1 // some other mystery problem + +// BASS_SetConfig options +#define BASS_CONFIG_BUFFER 0 +#define BASS_CONFIG_UPDATEPERIOD 1 +#define BASS_CONFIG_GVOL_SAMPLE 4 +#define BASS_CONFIG_GVOL_STREAM 5 +#define BASS_CONFIG_GVOL_MUSIC 6 +#define BASS_CONFIG_CURVE_VOL 7 +#define BASS_CONFIG_CURVE_PAN 8 +#define BASS_CONFIG_FLOATDSP 9 +#define BASS_CONFIG_3DALGORITHM 10 +#define BASS_CONFIG_NET_TIMEOUT 11 +#define BASS_CONFIG_NET_BUFFER 12 +#define BASS_CONFIG_PAUSE_NOPLAY 13 +#define BASS_CONFIG_NET_PREBUF 15 +#define BASS_CONFIG_NET_PASSIVE 18 +#define BASS_CONFIG_REC_BUFFER 19 +#define BASS_CONFIG_NET_PLAYLIST 21 +#define BASS_CONFIG_MUSIC_VIRTUAL 22 +#define BASS_CONFIG_VERIFY 23 +#define BASS_CONFIG_UPDATETHREADS 24 +#define BASS_CONFIG_DEV_BUFFER 27 +#define BASS_CONFIG_REC_LOOPBACK 28 +#define BASS_CONFIG_VISTA_TRUEPOS 30 +#define BASS_CONFIG_IOS_SESSION 34 +#define BASS_CONFIG_IOS_MIXAUDIO 34 +#define BASS_CONFIG_DEV_DEFAULT 36 +#define BASS_CONFIG_NET_READTIMEOUT 37 +#define BASS_CONFIG_VISTA_SPEAKERS 38 +#define BASS_CONFIG_IOS_SPEAKER 39 +#define BASS_CONFIG_MF_DISABLE 40 +#define BASS_CONFIG_HANDLES 41 +#define BASS_CONFIG_UNICODE 42 +#define BASS_CONFIG_SRC 43 +#define BASS_CONFIG_SRC_SAMPLE 44 +#define BASS_CONFIG_ASYNCFILE_BUFFER 45 +#define BASS_CONFIG_OGG_PRESCAN 47 +#define BASS_CONFIG_MF_VIDEO 48 +#define BASS_CONFIG_AIRPLAY 49 +#define BASS_CONFIG_DEV_NONSTOP 50 +#define BASS_CONFIG_IOS_NOCATEGORY 51 +#define BASS_CONFIG_VERIFY_NET 52 +#define BASS_CONFIG_DEV_PERIOD 53 +#define BASS_CONFIG_FLOAT 54 +#define BASS_CONFIG_NET_SEEK 56 +#define BASS_CONFIG_AM_DISABLE 58 +#define BASS_CONFIG_NET_PLAYLIST_DEPTH 59 +#define BASS_CONFIG_NET_PREBUF_WAIT 60 +#define BASS_CONFIG_ANDROID_SESSIONID 62 +#define BASS_CONFIG_WASAPI_PERSIST 65 +#define BASS_CONFIG_REC_WASAPI 66 +#define BASS_CONFIG_ANDROID_AAUDIO 67 +#define BASS_CONFIG_SAMPLE_ONEHANDLE 69 +#define BASS_CONFIG_DEV_TIMEOUT 70 +#define BASS_CONFIG_NET_META 71 +#define BASS_CONFIG_NET_RESTRATE 72 + +// BASS_SetConfigPtr options +#define BASS_CONFIG_NET_AGENT 16 +#define BASS_CONFIG_NET_PROXY 17 +#define BASS_CONFIG_IOS_NOTIFY 46 +#define BASS_CONFIG_LIBSSL 64 + +#define BASS_CONFIG_THREAD 0x40000000 // flag: thread-specific setting + +// BASS_CONFIG_IOS_SESSION flags +#define BASS_IOS_SESSION_MIX 1 +#define BASS_IOS_SESSION_DUCK 2 +#define BASS_IOS_SESSION_AMBIENT 4 +#define BASS_IOS_SESSION_SPEAKER 8 +#define BASS_IOS_SESSION_DISABLE 16 + +// BASS_Init flags +#define BASS_DEVICE_8BITS 1 // unused +#define BASS_DEVICE_MONO 2 // mono +#define BASS_DEVICE_3D 4 // unused +#define BASS_DEVICE_16BITS 8 // limit output to 16-bit +#define BASS_DEVICE_REINIT 128 // reinitialize +#define BASS_DEVICE_LATENCY 0x100 // unused +#define BASS_DEVICE_CPSPEAKERS 0x400 // unused +#define BASS_DEVICE_SPEAKERS 0x800 // force enabling of speaker assignment +#define BASS_DEVICE_NOSPEAKER 0x1000 // ignore speaker arrangement +#define BASS_DEVICE_DMIX 0x2000 // use ALSA "dmix" plugin +#define BASS_DEVICE_FREQ 0x4000 // set device sample rate +#define BASS_DEVICE_STEREO 0x8000 // limit output to stereo +#define BASS_DEVICE_HOG 0x10000 // hog/exclusive mode +#define BASS_DEVICE_AUDIOTRACK 0x20000 // use AudioTrack output +#define BASS_DEVICE_DSOUND 0x40000 // use DirectSound output +#define BASS_DEVICE_SOFTWARE 0x80000 // disable hardware/fastpath output + +// DirectSound interfaces (for use with BASS_GetDSoundObject) +#define BASS_OBJECT_DS 1 // IDirectSound +#define BASS_OBJECT_DS3DL 2 // IDirectSound3DListener + +// Device info structure +typedef struct { +#if defined(_WIN32_WCE) || (defined(WINAPI_FAMILY) && WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) + const wchar_t *name; // description + const wchar_t *driver; // driver +#else + const char *name; // description + const char *driver; // driver +#endif + DWORD flags; +} BASS_DEVICEINFO; + +// BASS_DEVICEINFO flags +#define BASS_DEVICE_ENABLED 1 +#define BASS_DEVICE_DEFAULT 2 +#define BASS_DEVICE_INIT 4 +#define BASS_DEVICE_LOOPBACK 8 +#define BASS_DEVICE_DEFAULTCOM 128 + +#define BASS_DEVICE_TYPE_MASK 0xff000000 +#define BASS_DEVICE_TYPE_NETWORK 0x01000000 +#define BASS_DEVICE_TYPE_SPEAKERS 0x02000000 +#define BASS_DEVICE_TYPE_LINE 0x03000000 +#define BASS_DEVICE_TYPE_HEADPHONES 0x04000000 +#define BASS_DEVICE_TYPE_MICROPHONE 0x05000000 +#define BASS_DEVICE_TYPE_HEADSET 0x06000000 +#define BASS_DEVICE_TYPE_HANDSET 0x07000000 +#define BASS_DEVICE_TYPE_DIGITAL 0x08000000 +#define BASS_DEVICE_TYPE_SPDIF 0x09000000 +#define BASS_DEVICE_TYPE_HDMI 0x0a000000 +#define BASS_DEVICE_TYPE_DISPLAYPORT 0x40000000 + +// BASS_GetDeviceInfo flags +#define BASS_DEVICES_AIRPLAY 0x1000000 + +typedef struct { + DWORD flags; // device capabilities (DSCAPS_xxx flags) + DWORD hwsize; // unused + DWORD hwfree; // unused + DWORD freesam; // unused + DWORD free3d; // unused + DWORD minrate; // unused + DWORD maxrate; // unused + BOOL eax; // unused + DWORD minbuf; // recommended minimum buffer length in ms + DWORD dsver; // DirectSound version + DWORD latency; // average delay (in ms) before start of playback + DWORD initflags; // BASS_Init "flags" parameter + DWORD speakers; // number of speakers available + DWORD freq; // current output rate +} BASS_INFO; + +// BASS_INFO flags (from DSOUND.H) +#define DSCAPS_EMULDRIVER 0x00000020 // device does not have hardware DirectSound support +#define DSCAPS_CERTIFIED 0x00000040 // device driver has been certified by Microsoft + +#define DSCAPS_HARDWARE 0x80000000 // hardware mixed + +// Recording device info structure +typedef struct { + DWORD flags; // device capabilities (DSCCAPS_xxx flags) + DWORD formats; // supported standard formats (WAVE_FORMAT_xxx flags) + DWORD inputs; // number of inputs + BOOL singlein; // TRUE = only 1 input can be set at a time + DWORD freq; // current input rate +} BASS_RECORDINFO; + +// BASS_RECORDINFO flags (from DSOUND.H) +#define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER // device does not have hardware DirectSound recording support +#define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED // device driver has been certified by Microsoft + +// defines for formats field of BASS_RECORDINFO (from MMSYSTEM.H) +#ifndef WAVE_FORMAT_1M08 +#define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */ +#define WAVE_FORMAT_1S08 0x00000002 /* 11.025 kHz, Stereo, 8-bit */ +#define WAVE_FORMAT_1M16 0x00000004 /* 11.025 kHz, Mono, 16-bit */ +#define WAVE_FORMAT_1S16 0x00000008 /* 11.025 kHz, Stereo, 16-bit */ +#define WAVE_FORMAT_2M08 0x00000010 /* 22.05 kHz, Mono, 8-bit */ +#define WAVE_FORMAT_2S08 0x00000020 /* 22.05 kHz, Stereo, 8-bit */ +#define WAVE_FORMAT_2M16 0x00000040 /* 22.05 kHz, Mono, 16-bit */ +#define WAVE_FORMAT_2S16 0x00000080 /* 22.05 kHz, Stereo, 16-bit */ +#define WAVE_FORMAT_4M08 0x00000100 /* 44.1 kHz, Mono, 8-bit */ +#define WAVE_FORMAT_4S08 0x00000200 /* 44.1 kHz, Stereo, 8-bit */ +#define WAVE_FORMAT_4M16 0x00000400 /* 44.1 kHz, Mono, 16-bit */ +#define WAVE_FORMAT_4S16 0x00000800 /* 44.1 kHz, Stereo, 16-bit */ +#endif + +// Sample info structure +typedef struct { + DWORD freq; // default playback rate + float volume; // default volume (0-1) + float pan; // default pan (-1=left, 0=middle, 1=right) + DWORD flags; // BASS_SAMPLE_xxx flags + DWORD length; // length (in bytes) + DWORD max; // maximum simultaneous playbacks + DWORD origres; // original resolution + DWORD chans; // number of channels + DWORD mingap; // minimum gap (ms) between creating channels + DWORD mode3d; // BASS_3DMODE_xxx mode + float mindist; // minimum distance + float maxdist; // maximum distance + DWORD iangle; // angle of inside projection cone + DWORD oangle; // angle of outside projection cone + float outvol; // delta-volume outside the projection cone + DWORD vam; // unused + DWORD priority; // unused +} BASS_SAMPLE; + +#define BASS_SAMPLE_8BITS 1 // 8 bit +#define BASS_SAMPLE_FLOAT 256 // 32 bit floating-point +#define BASS_SAMPLE_MONO 2 // mono +#define BASS_SAMPLE_LOOP 4 // looped +#define BASS_SAMPLE_3D 8 // 3D functionality +#define BASS_SAMPLE_SOFTWARE 16 // unused +#define BASS_SAMPLE_MUTEMAX 32 // mute at max distance (3D only) +#define BASS_SAMPLE_VAM 64 // unused +#define BASS_SAMPLE_FX 128 // unused +#define BASS_SAMPLE_OVER_VOL 0x10000 // override lowest volume +#define BASS_SAMPLE_OVER_POS 0x20000 // override longest playing +#define BASS_SAMPLE_OVER_DIST 0x30000 // override furthest from listener (3D only) + +#define BASS_STREAM_PRESCAN 0x20000 // scan file for accurate seeking and length +#define BASS_STREAM_AUTOFREE 0x40000 // automatically free the stream when it stops/ends +#define BASS_STREAM_RESTRATE 0x80000 // restrict the download rate of internet file stream +#define BASS_STREAM_BLOCK 0x100000 // download internet file stream in small blocks +#define BASS_STREAM_DECODE 0x200000 // don't play the stream, only decode +#define BASS_STREAM_STATUS 0x800000 // give server status info (HTTP/ICY tags) in DOWNLOADPROC + +#define BASS_MP3_IGNOREDELAY 0x200 // ignore LAME/Xing/VBRI/iTunes delay & padding info +#define BASS_MP3_SETPOS BASS_STREAM_PRESCAN + +#define BASS_MUSIC_FLOAT BASS_SAMPLE_FLOAT +#define BASS_MUSIC_MONO BASS_SAMPLE_MONO +#define BASS_MUSIC_LOOP BASS_SAMPLE_LOOP +#define BASS_MUSIC_3D BASS_SAMPLE_3D +#define BASS_MUSIC_FX BASS_SAMPLE_FX +#define BASS_MUSIC_AUTOFREE BASS_STREAM_AUTOFREE +#define BASS_MUSIC_DECODE BASS_STREAM_DECODE +#define BASS_MUSIC_PRESCAN BASS_STREAM_PRESCAN // calculate playback length +#define BASS_MUSIC_CALCLEN BASS_MUSIC_PRESCAN +#define BASS_MUSIC_RAMP 0x200 // normal ramping +#define BASS_MUSIC_RAMPS 0x400 // sensitive ramping +#define BASS_MUSIC_SURROUND 0x800 // surround sound +#define BASS_MUSIC_SURROUND2 0x1000 // surround sound (mode 2) +#define BASS_MUSIC_FT2PAN 0x2000 // apply FastTracker 2 panning to XM files +#define BASS_MUSIC_FT2MOD 0x2000 // play .MOD as FastTracker 2 does +#define BASS_MUSIC_PT1MOD 0x4000 // play .MOD as ProTracker 1 does +#define BASS_MUSIC_NONINTER 0x10000 // non-interpolated sample mixing +#define BASS_MUSIC_SINCINTER 0x800000 // sinc interpolated sample mixing +#define BASS_MUSIC_POSRESET 0x8000 // stop all notes when moving position +#define BASS_MUSIC_POSRESETEX 0x400000 // stop all notes and reset bmp/etc when moving position +#define BASS_MUSIC_STOPBACK 0x80000 // stop the music on a backwards jump effect +#define BASS_MUSIC_NOSAMPLE 0x100000 // don't load the samples + +// Speaker assignment flags +#define BASS_SPEAKER_FRONT 0x1000000 // front speakers +#define BASS_SPEAKER_REAR 0x2000000 // rear/side speakers +#define BASS_SPEAKER_CENLFE 0x3000000 // center & LFE speakers (5.1) +#define BASS_SPEAKER_REAR2 0x4000000 // rear center speakers (7.1) +#define BASS_SPEAKER_N(n) ((n)<<24) // n'th pair of speakers (max 15) +#define BASS_SPEAKER_LEFT 0x10000000 // modifier: left +#define BASS_SPEAKER_RIGHT 0x20000000 // modifier: right +#define BASS_SPEAKER_FRONTLEFT BASS_SPEAKER_FRONT|BASS_SPEAKER_LEFT +#define BASS_SPEAKER_FRONTRIGHT BASS_SPEAKER_FRONT|BASS_SPEAKER_RIGHT +#define BASS_SPEAKER_REARLEFT BASS_SPEAKER_REAR|BASS_SPEAKER_LEFT +#define BASS_SPEAKER_REARRIGHT BASS_SPEAKER_REAR|BASS_SPEAKER_RIGHT +#define BASS_SPEAKER_CENTER BASS_SPEAKER_CENLFE|BASS_SPEAKER_LEFT +#define BASS_SPEAKER_LFE BASS_SPEAKER_CENLFE|BASS_SPEAKER_RIGHT +#define BASS_SPEAKER_REAR2LEFT BASS_SPEAKER_REAR2|BASS_SPEAKER_LEFT +#define BASS_SPEAKER_REAR2RIGHT BASS_SPEAKER_REAR2|BASS_SPEAKER_RIGHT + +#define BASS_ASYNCFILE 0x40000000 // read file asynchronously +#define BASS_UNICODE 0x80000000 // UTF-16 + +#define BASS_RECORD_PAUSE 0x8000 // start recording paused +#define BASS_RECORD_ECHOCANCEL 0x2000 +#define BASS_RECORD_AGC 0x4000 + +// DX7 voice allocation & management flags +#define BASS_VAM_HARDWARE 1 +#define BASS_VAM_SOFTWARE 2 +#define BASS_VAM_TERM_TIME 4 +#define BASS_VAM_TERM_DIST 8 +#define BASS_VAM_TERM_PRIO 16 + +// Channel info structure +typedef struct { + DWORD freq; // default playback rate + DWORD chans; // channels + DWORD flags; + DWORD ctype; // type of channel + DWORD origres; // original resolution + HPLUGIN plugin; + HSAMPLE sample; + const char *filename; +} BASS_CHANNELINFO; + +#define BASS_ORIGRES_FLOAT 0x10000 + +// BASS_CHANNELINFO types +#define BASS_CTYPE_SAMPLE 1 +#define BASS_CTYPE_RECORD 2 +#define BASS_CTYPE_STREAM 0x10000 +#define BASS_CTYPE_STREAM_VORBIS 0x10002 +#define BASS_CTYPE_STREAM_OGG 0x10002 +#define BASS_CTYPE_STREAM_MP1 0x10003 +#define BASS_CTYPE_STREAM_MP2 0x10004 +#define BASS_CTYPE_STREAM_MP3 0x10005 +#define BASS_CTYPE_STREAM_AIFF 0x10006 +#define BASS_CTYPE_STREAM_CA 0x10007 +#define BASS_CTYPE_STREAM_MF 0x10008 +#define BASS_CTYPE_STREAM_AM 0x10009 +#define BASS_CTYPE_STREAM_SAMPLE 0x1000a +#define BASS_CTYPE_STREAM_DUMMY 0x18000 +#define BASS_CTYPE_STREAM_DEVICE 0x18001 +#define BASS_CTYPE_STREAM_WAV 0x40000 // WAVE flag (LOWORD=codec) +#define BASS_CTYPE_STREAM_WAV_PCM 0x50001 +#define BASS_CTYPE_STREAM_WAV_FLOAT 0x50003 +#define BASS_CTYPE_MUSIC_MOD 0x20000 +#define BASS_CTYPE_MUSIC_MTM 0x20001 +#define BASS_CTYPE_MUSIC_S3M 0x20002 +#define BASS_CTYPE_MUSIC_XM 0x20003 +#define BASS_CTYPE_MUSIC_IT 0x20004 +#define BASS_CTYPE_MUSIC_MO3 0x00100 // MO3 flag + +typedef struct { + DWORD ctype; // channel type +#if defined(_WIN32_WCE) || (defined(WINAPI_FAMILY) && WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) + const wchar_t *name; // format description + const wchar_t *exts; // file extension filter (*.ext1;*.ext2;etc...) +#else + const char *name; // format description + const char *exts; // file extension filter (*.ext1;*.ext2;etc...) +#endif +} BASS_PLUGINFORM; + +typedef struct { + DWORD version; // version (same form as BASS_GetVersion) + DWORD formatc; // number of formats + const BASS_PLUGINFORM *formats; // the array of formats +} BASS_PLUGININFO; + +// 3D vector (for 3D positions/velocities/orientations) +typedef struct BASS_3DVECTOR { +#ifdef __cplusplus + BASS_3DVECTOR() {}; + BASS_3DVECTOR(float _x, float _y, float _z) : x(_x), y(_y), z(_z) {}; +#endif + float x; // +=right, -=left + float y; // +=up, -=down + float z; // +=front, -=behind +} BASS_3DVECTOR; + +// 3D channel modes +#define BASS_3DMODE_NORMAL 0 // normal 3D processing +#define BASS_3DMODE_RELATIVE 1 // position is relative to the listener +#define BASS_3DMODE_OFF 2 // no 3D processing + +// software 3D mixing algorithms (used with BASS_CONFIG_3DALGORITHM) +#define BASS_3DALG_DEFAULT 0 +#define BASS_3DALG_OFF 1 +#define BASS_3DALG_FULL 2 +#define BASS_3DALG_LIGHT 3 + +// BASS_SampleGetChannel flags +#define BASS_SAMCHAN_NEW 1 // get a new playback channel +#define BASS_SAMCHAN_STREAM 2 // create a stream + +typedef DWORD (CALLBACK STREAMPROC)(HSTREAM handle, void *buffer, DWORD length, void *user); +/* User stream callback function. +handle : The stream that needs writing +buffer : Buffer to write the samples in +length : Number of bytes to write +user : The 'user' parameter value given when calling BASS_StreamCreate +RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end the stream. */ + +#define BASS_STREAMPROC_END 0x80000000 // end of user stream flag + +// Special STREAMPROCs +#define STREAMPROC_DUMMY (STREAMPROC*)0 // "dummy" stream +#define STREAMPROC_PUSH (STREAMPROC*)-1 // push stream +#define STREAMPROC_DEVICE (STREAMPROC*)-2 // device mix stream +#define STREAMPROC_DEVICE_3D (STREAMPROC*)-3 // device 3D mix stream + +// BASS_StreamCreateFileUser file systems +#define STREAMFILE_NOBUFFER 0 +#define STREAMFILE_BUFFER 1 +#define STREAMFILE_BUFFERPUSH 2 + +// User file stream callback functions +typedef void (CALLBACK FILECLOSEPROC)(void *user); +typedef QWORD (CALLBACK FILELENPROC)(void *user); +typedef DWORD (CALLBACK FILEREADPROC)(void *buffer, DWORD length, void *user); +typedef BOOL (CALLBACK FILESEEKPROC)(QWORD offset, void *user); + +typedef struct { + FILECLOSEPROC *close; + FILELENPROC *length; + FILEREADPROC *read; + FILESEEKPROC *seek; +} BASS_FILEPROCS; + +// BASS_StreamPutFileData options +#define BASS_FILEDATA_END 0 // end & close the file + +// BASS_StreamGetFilePosition modes +#define BASS_FILEPOS_CURRENT 0 +#define BASS_FILEPOS_DECODE BASS_FILEPOS_CURRENT +#define BASS_FILEPOS_DOWNLOAD 1 +#define BASS_FILEPOS_END 2 +#define BASS_FILEPOS_START 3 +#define BASS_FILEPOS_CONNECTED 4 +#define BASS_FILEPOS_BUFFER 5 +#define BASS_FILEPOS_SOCKET 6 +#define BASS_FILEPOS_ASYNCBUF 7 +#define BASS_FILEPOS_SIZE 8 +#define BASS_FILEPOS_BUFFERING 9 +#define BASS_FILEPOS_AVAILABLE 10 + +typedef void (CALLBACK DOWNLOADPROC)(const void *buffer, DWORD length, void *user); +/* Internet stream download callback function. +buffer : Buffer containing the downloaded data... NULL=end of download +length : Number of bytes in the buffer +user : The 'user' parameter value given when calling BASS_StreamCreateURL */ + +// BASS_ChannelSetSync types +#define BASS_SYNC_POS 0 +#define BASS_SYNC_END 2 +#define BASS_SYNC_META 4 +#define BASS_SYNC_SLIDE 5 +#define BASS_SYNC_STALL 6 +#define BASS_SYNC_DOWNLOAD 7 +#define BASS_SYNC_FREE 8 +#define BASS_SYNC_SETPOS 11 +#define BASS_SYNC_MUSICPOS 10 +#define BASS_SYNC_MUSICINST 1 +#define BASS_SYNC_MUSICFX 3 +#define BASS_SYNC_OGG_CHANGE 12 +#define BASS_SYNC_DEV_FAIL 14 +#define BASS_SYNC_DEV_FORMAT 15 +#define BASS_SYNC_THREAD 0x20000000 // flag: call sync in other thread +#define BASS_SYNC_MIXTIME 0x40000000 // flag: sync at mixtime, else at playtime +#define BASS_SYNC_ONETIME 0x80000000 // flag: sync only once, else continuously + +typedef void (CALLBACK SYNCPROC)(HSYNC handle, DWORD channel, DWORD data, void *user); +/* Sync callback function. +handle : The sync that has occured +channel: Channel that the sync occured in +data : Additional data associated with the sync's occurance +user : The 'user' parameter given when calling BASS_ChannelSetSync */ + +typedef void (CALLBACK DSPPROC)(HDSP handle, DWORD channel, void *buffer, DWORD length, void *user); +/* DSP callback function. +handle : The DSP handle +channel: Channel that the DSP is being applied to +buffer : Buffer to apply the DSP to +length : Number of bytes in the buffer +user : The 'user' parameter given when calling BASS_ChannelSetDSP */ + +typedef BOOL (CALLBACK RECORDPROC)(HRECORD handle, const void *buffer, DWORD length, void *user); +/* Recording callback function. +handle : The recording handle +buffer : Buffer containing the recorded sample data +length : Number of bytes +user : The 'user' parameter value given when calling BASS_RecordStart +RETURN : TRUE = continue recording, FALSE = stop */ + +// BASS_ChannelIsActive return values +#define BASS_ACTIVE_STOPPED 0 +#define BASS_ACTIVE_PLAYING 1 +#define BASS_ACTIVE_STALLED 2 +#define BASS_ACTIVE_PAUSED 3 +#define BASS_ACTIVE_PAUSED_DEVICE 4 + +// Channel attributes +#define BASS_ATTRIB_FREQ 1 +#define BASS_ATTRIB_VOL 2 +#define BASS_ATTRIB_PAN 3 +#define BASS_ATTRIB_EAXMIX 4 +#define BASS_ATTRIB_NOBUFFER 5 +#define BASS_ATTRIB_VBR 6 +#define BASS_ATTRIB_CPU 7 +#define BASS_ATTRIB_SRC 8 +#define BASS_ATTRIB_NET_RESUME 9 +#define BASS_ATTRIB_SCANINFO 10 +#define BASS_ATTRIB_NORAMP 11 +#define BASS_ATTRIB_BITRATE 12 +#define BASS_ATTRIB_BUFFER 13 +#define BASS_ATTRIB_GRANULE 14 +#define BASS_ATTRIB_USER 15 +#define BASS_ATTRIB_TAIL 16 +#define BASS_ATTRIB_PUSH_LIMIT 17 +#define BASS_ATTRIB_MUSIC_AMPLIFY 0x100 +#define BASS_ATTRIB_MUSIC_PANSEP 0x101 +#define BASS_ATTRIB_MUSIC_PSCALER 0x102 +#define BASS_ATTRIB_MUSIC_BPM 0x103 +#define BASS_ATTRIB_MUSIC_SPEED 0x104 +#define BASS_ATTRIB_MUSIC_VOL_GLOBAL 0x105 +#define BASS_ATTRIB_MUSIC_ACTIVE 0x106 +#define BASS_ATTRIB_MUSIC_VOL_CHAN 0x200 // + channel # +#define BASS_ATTRIB_MUSIC_VOL_INST 0x300 // + instrument # + +// BASS_ChannelSlideAttribute flags +#define BASS_SLIDE_LOG 0x1000000 + +// BASS_ChannelGetData flags +#define BASS_DATA_AVAILABLE 0 // query how much data is buffered +#define BASS_DATA_NOREMOVE 0x10000000 // flag: don't remove data from recording buffer +#define BASS_DATA_FIXED 0x20000000 // flag: return 8.24 fixed-point data +#define BASS_DATA_FLOAT 0x40000000 // flag: return floating-point sample data +#define BASS_DATA_FFT256 0x80000000 // 256 sample FFT +#define BASS_DATA_FFT512 0x80000001 // 512 FFT +#define BASS_DATA_FFT1024 0x80000002 // 1024 FFT +#define BASS_DATA_FFT2048 0x80000003 // 2048 FFT +#define BASS_DATA_FFT4096 0x80000004 // 4096 FFT +#define BASS_DATA_FFT8192 0x80000005 // 8192 FFT +#define BASS_DATA_FFT16384 0x80000006 // 16384 FFT +#define BASS_DATA_FFT32768 0x80000007 // 32768 FFT +#define BASS_DATA_FFT_INDIVIDUAL 0x10 // FFT flag: FFT for each channel, else all combined +#define BASS_DATA_FFT_NOWINDOW 0x20 // FFT flag: no Hanning window +#define BASS_DATA_FFT_REMOVEDC 0x40 // FFT flag: pre-remove DC bias +#define BASS_DATA_FFT_COMPLEX 0x80 // FFT flag: return complex data +#define BASS_DATA_FFT_NYQUIST 0x100 // FFT flag: return extra Nyquist value + +// BASS_ChannelGetLevelEx flags +#define BASS_LEVEL_MONO 1 // get mono level +#define BASS_LEVEL_STEREO 2 // get stereo level +#define BASS_LEVEL_RMS 4 // get RMS levels +#define BASS_LEVEL_VOLPAN 8 // apply VOL/PAN attributes to the levels +#define BASS_LEVEL_NOREMOVE 16 // don't remove data from recording buffer + +// BASS_ChannelGetTags types : what's returned +#define BASS_TAG_ID3 0 // ID3v1 tags : TAG_ID3 structure +#define BASS_TAG_ID3V2 1 // ID3v2 tags : variable length block +#define BASS_TAG_OGG 2 // OGG comments : series of null-terminated UTF-8 strings +#define BASS_TAG_HTTP 3 // HTTP headers : series of null-terminated ASCII strings +#define BASS_TAG_ICY 4 // ICY headers : series of null-terminated ANSI strings +#define BASS_TAG_META 5 // ICY metadata : ANSI string +#define BASS_TAG_APE 6 // APE tags : series of null-terminated UTF-8 strings +#define BASS_TAG_MP4 7 // MP4/iTunes metadata : series of null-terminated UTF-8 strings +#define BASS_TAG_WMA 8 // WMA tags : series of null-terminated UTF-8 strings +#define BASS_TAG_VENDOR 9 // OGG encoder : UTF-8 string +#define BASS_TAG_LYRICS3 10 // Lyric3v2 tag : ASCII string +#define BASS_TAG_CA_CODEC 11 // CoreAudio codec info : TAG_CA_CODEC structure +#define BASS_TAG_MF 13 // Media Foundation tags : series of null-terminated UTF-8 strings +#define BASS_TAG_WAVEFORMAT 14 // WAVE format : WAVEFORMATEEX structure +#define BASS_TAG_AM_NAME 16 // Android Media codec name : ASCII string +#define BASS_TAG_ID3V2_2 17 // ID3v2 tags (2nd block) : variable length block +#define BASS_TAG_AM_MIME 18 // Android Media MIME type : ASCII string +#define BASS_TAG_LOCATION 19 // redirected URL : ASCII string +#define BASS_TAG_RIFF_INFO 0x100 // RIFF "INFO" tags : series of null-terminated ANSI strings +#define BASS_TAG_RIFF_BEXT 0x101 // RIFF/BWF "bext" tags : TAG_BEXT structure +#define BASS_TAG_RIFF_CART 0x102 // RIFF/BWF "cart" tags : TAG_CART structure +#define BASS_TAG_RIFF_DISP 0x103 // RIFF "DISP" text tag : ANSI string +#define BASS_TAG_RIFF_CUE 0x104 // RIFF "cue " chunk : TAG_CUE structure +#define BASS_TAG_RIFF_SMPL 0x105 // RIFF "smpl" chunk : TAG_SMPL structure +#define BASS_TAG_APE_BINARY 0x1000 // + index #, binary APE tag : TAG_APE_BINARY structure +#define BASS_TAG_MUSIC_NAME 0x10000 // MOD music name : ANSI string +#define BASS_TAG_MUSIC_MESSAGE 0x10001 // MOD message : ANSI string +#define BASS_TAG_MUSIC_ORDERS 0x10002 // MOD order list : BYTE array of pattern numbers +#define BASS_TAG_MUSIC_AUTH 0x10003 // MOD author : UTF-8 string +#define BASS_TAG_MUSIC_INST 0x10100 // + instrument #, MOD instrument name : ANSI string +#define BASS_TAG_MUSIC_CHAN 0x10200 // + channel #, MOD channel name : ANSI string +#define BASS_TAG_MUSIC_SAMPLE 0x10300 // + sample #, MOD sample name : ANSI string + +// ID3v1 tag structure +typedef struct { + char id[3]; + char title[30]; + char artist[30]; + char album[30]; + char year[4]; + char comment[30]; + BYTE genre; +} TAG_ID3; + +// Binary APE tag structure +typedef struct { + const char *key; + const void *data; + DWORD length; +} TAG_APE_BINARY; + +// BWF "bext" tag structure +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:4200) +#endif +#pragma pack(push,1) +typedef struct { + char Description[256]; // description + char Originator[32]; // name of the originator + char OriginatorReference[32]; // reference of the originator + char OriginationDate[10]; // date of creation (yyyy-mm-dd) + char OriginationTime[8]; // time of creation (hh-mm-ss) + QWORD TimeReference; // first sample count since midnight (little-endian) + WORD Version; // BWF version (little-endian) + BYTE UMID[64]; // SMPTE UMID + BYTE Reserved[190]; +#if defined(__GNUC__) && __GNUC__<3 + char CodingHistory[0]; // history +#elif 1 // change to 0 if compiler fails the following line + char CodingHistory[]; // history +#else + char CodingHistory[1]; // history +#endif +} TAG_BEXT; +#pragma pack(pop) + +// BWF "cart" tag structures +typedef struct +{ + DWORD dwUsage; // FOURCC timer usage ID + DWORD dwValue; // timer value in samples from head +} TAG_CART_TIMER; + +typedef struct +{ + char Version[4]; // version of the data structure + char Title[64]; // title of cart audio sequence + char Artist[64]; // artist or creator name + char CutID[64]; // cut number identification + char ClientID[64]; // client identification + char Category[64]; // category ID, PSA, NEWS, etc + char Classification[64]; // classification or auxiliary key + char OutCue[64]; // out cue text + char StartDate[10]; // yyyy-mm-dd + char StartTime[8]; // hh:mm:ss + char EndDate[10]; // yyyy-mm-dd + char EndTime[8]; // hh:mm:ss + char ProducerAppID[64]; // name of vendor or application + char ProducerAppVersion[64]; // version of producer application + char UserDef[64]; // user defined text + DWORD dwLevelReference; // sample value for 0 dB reference + TAG_CART_TIMER PostTimer[8]; // 8 time markers after head + char Reserved[276]; + char URL[1024]; // uniform resource locator +#if defined(__GNUC__) && __GNUC__<3 + char TagText[0]; // free form text for scripts or tags +#elif 1 // change to 0 if compiler fails the following line + char TagText[]; // free form text for scripts or tags +#else + char TagText[1]; // free form text for scripts or tags +#endif +} TAG_CART; + +// RIFF "cue " tag structures +typedef struct +{ + DWORD dwName; + DWORD dwPosition; + DWORD fccChunk; + DWORD dwChunkStart; + DWORD dwBlockStart; + DWORD dwSampleOffset; +} TAG_CUE_POINT; + +typedef struct +{ + DWORD dwCuePoints; +#if defined(__GNUC__) && __GNUC__<3 + TAG_CUE_POINT CuePoints[0]; +#elif 1 // change to 0 if compiler fails the following line + TAG_CUE_POINT CuePoints[]; +#else + TAG_CUE_POINT CuePoints[1]; +#endif +} TAG_CUE; + +// RIFF "smpl" tag structures +typedef struct +{ + DWORD dwIdentifier; + DWORD dwType; + DWORD dwStart; + DWORD dwEnd; + DWORD dwFraction; + DWORD dwPlayCount; +} TAG_SMPL_LOOP; + +typedef struct +{ + DWORD dwManufacturer; + DWORD dwProduct; + DWORD dwSamplePeriod; + DWORD dwMIDIUnityNote; + DWORD dwMIDIPitchFraction; + DWORD dwSMPTEFormat; + DWORD dwSMPTEOffset; + DWORD cSampleLoops; + DWORD cbSamplerData; +#if defined(__GNUC__) && __GNUC__<3 + TAG_SMPL_LOOP SampleLoops[0]; +#elif 1 // change to 0 if compiler fails the following line + TAG_SMPL_LOOP SampleLoops[]; +#else + TAG_SMPL_LOOP SampleLoops[1]; +#endif +} TAG_SMPL; +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +// CoreAudio codec info structure +typedef struct { + DWORD ftype; // file format + DWORD atype; // audio format + const char *name; // description +} TAG_CA_CODEC; + +#ifndef _WAVEFORMATEX_ +#define _WAVEFORMATEX_ +#pragma pack(push,1) +typedef struct tWAVEFORMATEX +{ + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wBitsPerSample; + WORD cbSize; +} WAVEFORMATEX, *PWAVEFORMATEX, *LPWAVEFORMATEX; +typedef const WAVEFORMATEX *LPCWAVEFORMATEX; +#pragma pack(pop) +#endif + +// BASS_ChannelGetLength/GetPosition/SetPosition modes +#define BASS_POS_BYTE 0 // byte position +#define BASS_POS_MUSIC_ORDER 1 // order.row position, MAKELONG(order,row) +#define BASS_POS_OGG 3 // OGG bitstream number +#define BASS_POS_END 0x10 // trimmed end position +#define BASS_POS_LOOP 0x11 // loop start positiom +#define BASS_POS_FLUSH 0x1000000 // flag: flush decoder/FX buffers +#define BASS_POS_RESET 0x2000000 // flag: reset user file buffers +#define BASS_POS_RELATIVE 0x4000000 // flag: seek relative to the current position +#define BASS_POS_INEXACT 0x8000000 // flag: allow seeking to inexact position +#define BASS_POS_DECODE 0x10000000 // flag: get the decoding (not playing) position +#define BASS_POS_DECODETO 0x20000000 // flag: decode to the position instead of seeking +#define BASS_POS_SCAN 0x40000000 // flag: scan to the position + +// BASS_ChannelSetDevice/GetDevice option +#define BASS_NODEVICE 0x20000 + +// BASS_RecordSetInput flags +#define BASS_INPUT_OFF 0x10000 +#define BASS_INPUT_ON 0x20000 + +#define BASS_INPUT_TYPE_MASK 0xff000000 +#define BASS_INPUT_TYPE_UNDEF 0x00000000 +#define BASS_INPUT_TYPE_DIGITAL 0x01000000 +#define BASS_INPUT_TYPE_LINE 0x02000000 +#define BASS_INPUT_TYPE_MIC 0x03000000 +#define BASS_INPUT_TYPE_SYNTH 0x04000000 +#define BASS_INPUT_TYPE_CD 0x05000000 +#define BASS_INPUT_TYPE_PHONE 0x06000000 +#define BASS_INPUT_TYPE_SPEAKER 0x07000000 +#define BASS_INPUT_TYPE_WAVE 0x08000000 +#define BASS_INPUT_TYPE_AUX 0x09000000 +#define BASS_INPUT_TYPE_ANALOG 0x0a000000 + +// BASS_ChannelSetFX effect types +#define BASS_FX_DX8_CHORUS 0 +#define BASS_FX_DX8_COMPRESSOR 1 +#define BASS_FX_DX8_DISTORTION 2 +#define BASS_FX_DX8_ECHO 3 +#define BASS_FX_DX8_FLANGER 4 +#define BASS_FX_DX8_GARGLE 5 +#define BASS_FX_DX8_I3DL2REVERB 6 +#define BASS_FX_DX8_PARAMEQ 7 +#define BASS_FX_DX8_REVERB 8 +#define BASS_FX_VOLUME 9 + +typedef struct { + float fWetDryMix; + float fDepth; + float fFeedback; + float fFrequency; + DWORD lWaveform; // 0=triangle, 1=sine + float fDelay; + DWORD lPhase; // BASS_DX8_PHASE_xxx +} BASS_DX8_CHORUS; + +typedef struct { + float fGain; + float fAttack; + float fRelease; + float fThreshold; + float fRatio; + float fPredelay; +} BASS_DX8_COMPRESSOR; + +typedef struct { + float fGain; + float fEdge; + float fPostEQCenterFrequency; + float fPostEQBandwidth; + float fPreLowpassCutoff; +} BASS_DX8_DISTORTION; + +typedef struct { + float fWetDryMix; + float fFeedback; + float fLeftDelay; + float fRightDelay; + BOOL lPanDelay; +} BASS_DX8_ECHO; + +typedef struct { + float fWetDryMix; + float fDepth; + float fFeedback; + float fFrequency; + DWORD lWaveform; // 0=triangle, 1=sine + float fDelay; + DWORD lPhase; // BASS_DX8_PHASE_xxx +} BASS_DX8_FLANGER; + +typedef struct { + DWORD dwRateHz; // Rate of modulation in hz + DWORD dwWaveShape; // 0=triangle, 1=square +} BASS_DX8_GARGLE; + +typedef struct { + int lRoom; // [-10000, 0] default: -1000 mB + int lRoomHF; // [-10000, 0] default: 0 mB + float flRoomRolloffFactor; // [0.0, 10.0] default: 0.0 + float flDecayTime; // [0.1, 20.0] default: 1.49s + float flDecayHFRatio; // [0.1, 2.0] default: 0.83 + int lReflections; // [-10000, 1000] default: -2602 mB + float flReflectionsDelay; // [0.0, 0.3] default: 0.007 s + int lReverb; // [-10000, 2000] default: 200 mB + float flReverbDelay; // [0.0, 0.1] default: 0.011 s + float flDiffusion; // [0.0, 100.0] default: 100.0 % + float flDensity; // [0.0, 100.0] default: 100.0 % + float flHFReference; // [20.0, 20000.0] default: 5000.0 Hz +} BASS_DX8_I3DL2REVERB; + +typedef struct { + float fCenter; + float fBandwidth; + float fGain; +} BASS_DX8_PARAMEQ; + +typedef struct { + float fInGain; // [-96.0,0.0] default: 0.0 dB + float fReverbMix; // [-96.0,0.0] default: 0.0 db + float fReverbTime; // [0.001,3000.0] default: 1000.0 ms + float fHighFreqRTRatio; // [0.001,0.999] default: 0.001 +} BASS_DX8_REVERB; + +#define BASS_DX8_PHASE_NEG_180 0 +#define BASS_DX8_PHASE_NEG_90 1 +#define BASS_DX8_PHASE_ZERO 2 +#define BASS_DX8_PHASE_90 3 +#define BASS_DX8_PHASE_180 4 + +typedef struct { + float fTarget; + float fCurrent; + float fTime; + DWORD lCurve; +} BASS_FX_VOLUME_PARAM; + +typedef void (CALLBACK IOSNOTIFYPROC)(DWORD status); +/* iOS notification callback function. +status : The notification (BASS_IOSNOTIFY_xxx) */ + +#define BASS_IOSNOTIFY_INTERRUPT 1 // interruption started +#define BASS_IOSNOTIFY_INTERRUPT_END 2 // interruption ended + +BOOL BASSDEF(BASS_SetConfig)(DWORD option, DWORD value); +DWORD BASSDEF(BASS_GetConfig)(DWORD option); +BOOL BASSDEF(BASS_SetConfigPtr)(DWORD option, const void *value); +const void *BASSDEF(BASS_GetConfigPtr)(DWORD option); +DWORD BASSDEF(BASS_GetVersion)(void); +int BASSDEF(BASS_ErrorGetCode)(void); + +BOOL BASSDEF(BASS_GetDeviceInfo)(DWORD device, BASS_DEVICEINFO *info); +#if defined(_WIN32) && !defined(_WIN32_WCE) && !(defined(WINAPI_FAMILY) && WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) +BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, HWND win, const void *dsguid); +#else +BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, void *win, const void *dsguid); +#endif +BOOL BASSDEF(BASS_Free)(void); +BOOL BASSDEF(BASS_SetDevice)(DWORD device); +DWORD BASSDEF(BASS_GetDevice)(void); +BOOL BASSDEF(BASS_GetInfo)(BASS_INFO *info); +BOOL BASSDEF(BASS_Start)(void); +BOOL BASSDEF(BASS_Stop)(void); +BOOL BASSDEF(BASS_Pause)(void); +DWORD BASSDEF(BASS_IsStarted)(void); +BOOL BASSDEF(BASS_Update)(DWORD length); +float BASSDEF(BASS_GetCPU)(void); +BOOL BASSDEF(BASS_SetVolume)(float volume); +float BASSDEF(BASS_GetVolume)(void); +#if defined(_WIN32) && !defined(_WIN32_WCE) && !(defined(WINAPI_FAMILY) && WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) +void *BASSDEF(BASS_GetDSoundObject)(DWORD object); +#endif + +BOOL BASSDEF(BASS_Set3DFactors)(float distf, float rollf, float doppf); +BOOL BASSDEF(BASS_Get3DFactors)(float *distf, float *rollf, float *doppf); +BOOL BASSDEF(BASS_Set3DPosition)(const BASS_3DVECTOR *pos, const BASS_3DVECTOR *vel, const BASS_3DVECTOR *front, const BASS_3DVECTOR *top); +BOOL BASSDEF(BASS_Get3DPosition)(BASS_3DVECTOR *pos, BASS_3DVECTOR *vel, BASS_3DVECTOR *front, BASS_3DVECTOR *top); +void BASSDEF(BASS_Apply3D)(void); + +HPLUGIN BASSDEF(BASS_PluginLoad)(const char *file, DWORD flags); +BOOL BASSDEF(BASS_PluginFree)(HPLUGIN handle); +BOOL BASSDEF(BASS_PluginEnable)(HPLUGIN handle, BOOL enable); +const BASS_PLUGININFO *BASSDEF(BASS_PluginGetInfo)(HPLUGIN handle); + +HSAMPLE BASSDEF(BASS_SampleLoad)(BOOL mem, const void *file, QWORD offset, DWORD length, DWORD max, DWORD flags); +HSAMPLE BASSDEF(BASS_SampleCreate)(DWORD length, DWORD freq, DWORD chans, DWORD max, DWORD flags); +BOOL BASSDEF(BASS_SampleFree)(HSAMPLE handle); +BOOL BASSDEF(BASS_SampleSetData)(HSAMPLE handle, const void *buffer); +BOOL BASSDEF(BASS_SampleGetData)(HSAMPLE handle, void *buffer); +BOOL BASSDEF(BASS_SampleGetInfo)(HSAMPLE handle, BASS_SAMPLE *info); +BOOL BASSDEF(BASS_SampleSetInfo)(HSAMPLE handle, const BASS_SAMPLE *info); +DWORD BASSDEF(BASS_SampleGetChannel)(HSAMPLE handle, DWORD flags); +DWORD BASSDEF(BASS_SampleGetChannels)(HSAMPLE handle, HCHANNEL *channels); +BOOL BASSDEF(BASS_SampleStop)(HSAMPLE handle); + +HSTREAM BASSDEF(BASS_StreamCreate)(DWORD freq, DWORD chans, DWORD flags, STREAMPROC *proc, void *user); +HSTREAM BASSDEF(BASS_StreamCreateFile)(BOOL mem, const void *file, QWORD offset, QWORD length, DWORD flags); +HSTREAM BASSDEF(BASS_StreamCreateURL)(const char *url, DWORD offset, DWORD flags, DOWNLOADPROC *proc, void *user); +HSTREAM BASSDEF(BASS_StreamCreateFileUser)(DWORD system, DWORD flags, const BASS_FILEPROCS *proc, void *user); +BOOL BASSDEF(BASS_StreamFree)(HSTREAM handle); +QWORD BASSDEF(BASS_StreamGetFilePosition)(HSTREAM handle, DWORD mode); +DWORD BASSDEF(BASS_StreamPutData)(HSTREAM handle, const void *buffer, DWORD length); +DWORD BASSDEF(BASS_StreamPutFileData)(HSTREAM handle, const void *buffer, DWORD length); + +HMUSIC BASSDEF(BASS_MusicLoad)(BOOL mem, const void *file, QWORD offset, DWORD length, DWORD flags, DWORD freq); +BOOL BASSDEF(BASS_MusicFree)(HMUSIC handle); + +BOOL BASSDEF(BASS_RecordGetDeviceInfo)(DWORD device, BASS_DEVICEINFO *info); +BOOL BASSDEF(BASS_RecordInit)(int device); +BOOL BASSDEF(BASS_RecordFree)(void); +BOOL BASSDEF(BASS_RecordSetDevice)(DWORD device); +DWORD BASSDEF(BASS_RecordGetDevice)(void); +BOOL BASSDEF(BASS_RecordGetInfo)(BASS_RECORDINFO *info); +const char *BASSDEF(BASS_RecordGetInputName)(int input); +BOOL BASSDEF(BASS_RecordSetInput)(int input, DWORD flags, float volume); +DWORD BASSDEF(BASS_RecordGetInput)(int input, float *volume); +HRECORD BASSDEF(BASS_RecordStart)(DWORD freq, DWORD chans, DWORD flags, RECORDPROC *proc, void *user); + +double BASSDEF(BASS_ChannelBytes2Seconds)(DWORD handle, QWORD pos); +QWORD BASSDEF(BASS_ChannelSeconds2Bytes)(DWORD handle, double pos); +DWORD BASSDEF(BASS_ChannelGetDevice)(DWORD handle); +BOOL BASSDEF(BASS_ChannelSetDevice)(DWORD handle, DWORD device); +DWORD BASSDEF(BASS_ChannelIsActive)(DWORD handle); +BOOL BASSDEF(BASS_ChannelGetInfo)(DWORD handle, BASS_CHANNELINFO *info); +const char *BASSDEF(BASS_ChannelGetTags)(DWORD handle, DWORD tags); +DWORD BASSDEF(BASS_ChannelFlags)(DWORD handle, DWORD flags, DWORD mask); +BOOL BASSDEF(BASS_ChannelLock)(DWORD handle, BOOL lock); +BOOL BASSDEF(BASS_ChannelFree)(DWORD handle); +BOOL BASSDEF(BASS_ChannelPlay)(DWORD handle, BOOL restart); +BOOL BASSDEF(BASS_ChannelStop)(DWORD handle); +BOOL BASSDEF(BASS_ChannelPause)(DWORD handle); +BOOL BASSDEF(BASS_ChannelUpdate)(DWORD handle, DWORD length); +BOOL BASSDEF(BASS_ChannelSetAttribute)(DWORD handle, DWORD attrib, float value); +BOOL BASSDEF(BASS_ChannelGetAttribute)(DWORD handle, DWORD attrib, float *value); +BOOL BASSDEF(BASS_ChannelSlideAttribute)(DWORD handle, DWORD attrib, float value, DWORD time); +BOOL BASSDEF(BASS_ChannelIsSliding)(DWORD handle, DWORD attrib); +BOOL BASSDEF(BASS_ChannelSetAttributeEx)(DWORD handle, DWORD attrib, void *value, DWORD size); +DWORD BASSDEF(BASS_ChannelGetAttributeEx)(DWORD handle, DWORD attrib, void *value, DWORD size); +BOOL BASSDEF(BASS_ChannelSet3DAttributes)(DWORD handle, int mode, float min, float max, int iangle, int oangle, float outvol); +BOOL BASSDEF(BASS_ChannelGet3DAttributes)(DWORD handle, DWORD *mode, float *min, float *max, DWORD *iangle, DWORD *oangle, float *outvol); +BOOL BASSDEF(BASS_ChannelSet3DPosition)(DWORD handle, const BASS_3DVECTOR *pos, const BASS_3DVECTOR *orient, const BASS_3DVECTOR *vel); +BOOL BASSDEF(BASS_ChannelGet3DPosition)(DWORD handle, BASS_3DVECTOR *pos, BASS_3DVECTOR *orient, BASS_3DVECTOR *vel); +QWORD BASSDEF(BASS_ChannelGetLength)(DWORD handle, DWORD mode); +BOOL BASSDEF(BASS_ChannelSetPosition)(DWORD handle, QWORD pos, DWORD mode); +QWORD BASSDEF(BASS_ChannelGetPosition)(DWORD handle, DWORD mode); +DWORD BASSDEF(BASS_ChannelGetLevel)(DWORD handle); +BOOL BASSDEF(BASS_ChannelGetLevelEx)(DWORD handle, float *levels, float length, DWORD flags); +DWORD BASSDEF(BASS_ChannelGetData)(DWORD handle, void *buffer, DWORD length); +HSYNC BASSDEF(BASS_ChannelSetSync)(DWORD handle, DWORD type, QWORD param, SYNCPROC *proc, void *user); +BOOL BASSDEF(BASS_ChannelRemoveSync)(DWORD handle, HSYNC sync); +BOOL BASSDEF(BASS_ChannelSetLink)(DWORD handle, DWORD chan); +BOOL BASSDEF(BASS_ChannelRemoveLink)(DWORD handle, DWORD chan); +HDSP BASSDEF(BASS_ChannelSetDSP)(DWORD handle, DSPPROC *proc, void *user, int priority); +BOOL BASSDEF(BASS_ChannelRemoveDSP)(DWORD handle, HDSP dsp); +HFX BASSDEF(BASS_ChannelSetFX)(DWORD handle, DWORD type, int priority); +BOOL BASSDEF(BASS_ChannelRemoveFX)(DWORD handle, HFX fx); + +BOOL BASSDEF(BASS_FXSetParameters)(HFX handle, const void *params); +BOOL BASSDEF(BASS_FXGetParameters)(HFX handle, void *params); +BOOL BASSDEF(BASS_FXSetPriority)(HFX handle, int priority); +BOOL BASSDEF(BASS_FXReset)(DWORD handle); + +#ifdef __cplusplus +} + +#if defined(_WIN32) && !defined(NOBASSOVERLOADS) +static inline HPLUGIN BASS_PluginLoad(const WCHAR *file, DWORD flags) +{ + return BASS_PluginLoad((const char*)file, flags | BASS_UNICODE); +} + +static inline HMUSIC BASS_MusicLoad(BOOL mem, const WCHAR *file, QWORD offset, DWORD length, DWORD flags, DWORD freq) +{ + return BASS_MusicLoad(mem, (const void*)file, offset, length, flags | BASS_UNICODE, freq); +} + +static inline HSAMPLE BASS_SampleLoad(BOOL mem, const WCHAR *file, QWORD offset, DWORD length, DWORD max, DWORD flags) +{ + return BASS_SampleLoad(mem, (const void*)file, offset, length, max, flags | BASS_UNICODE); +} + +static inline HSTREAM BASS_StreamCreateFile(BOOL mem, const WCHAR *file, QWORD offset, QWORD length, DWORD flags) +{ + return BASS_StreamCreateFile(mem, (const void*)file, offset, length, flags | BASS_UNICODE); +} + +static inline HSTREAM BASS_StreamCreateURL(const WCHAR *url, DWORD offset, DWORD flags, DOWNLOADPROC *proc, void *user) +{ + return BASS_StreamCreateURL((const char*)url, offset, flags | BASS_UNICODE, proc, user); +} + +static inline BOOL BASS_SetConfigPtr(DWORD option, const WCHAR *value) +{ + return BASS_SetConfigPtr(option | BASS_UNICODE, (const void*)value); +} +#endif +#endif + +#ifdef __OBJC__ +#undef BOOL +#endif + +#endif diff --git a/third-party/plugin-sdk/shared/bass/bass.lib b/third-party/plugin-sdk/shared/bass/bass.lib new file mode 100644 index 00000000..085afce5 Binary files /dev/null and b/third-party/plugin-sdk/shared/bass/bass.lib differ diff --git a/third-party/plugin-sdk/shared/common_sdk.cpp b/third-party/plugin-sdk/shared/common_sdk.cpp new file mode 100644 index 00000000..065e8534 --- /dev/null +++ b/third-party/plugin-sdk/shared/common_sdk.cpp @@ -0,0 +1,56 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "common_sdk.h" + +#ifdef GTA2 +void plugin::SetRenderState(unsigned int state, unsigned int value) { + RenderStateSet(state, reinterpret_cast(value)); +} + +void plugin::GetRenderState(unsigned int state, unsigned int& outValue) { + RenderStateGet(state, reinterpret_cast(&outValue)); +} + +unsigned int plugin::GetRenderState(unsigned int state) { + unsigned int outValue; + RenderStateGet(state, reinterpret_cast(&outValue)); + return outValue; +} + +#else +RwFrame *plugin::GetObjectParent(RwObject *obj) { + return reinterpret_cast(rwObjectGetParent(obj)); +} + +void plugin::SetRenderState(RwRenderState state, unsigned int value) { + RwRenderStateSet(state, reinterpret_cast(value)); +} + +void plugin::SetRenderRaster(RwRaster *raster) { + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, raster); +} + +void plugin::GetRenderState(RwRenderState state, unsigned int &outValue) { + RwRenderStateGet(state, reinterpret_cast(&outValue)); +} + +void plugin::GetRenderRaster(RwRaster *&outRaster) { + RwRenderStateGet(rwRENDERSTATETEXTURERASTER, &outRaster); +} + +unsigned int plugin::GetRenderState(RwRenderState state) { + unsigned int outValue; + RwRenderStateGet(state, reinterpret_cast(&outValue)); + return outValue; +} + +RwRaster *plugin::GetRenderRaster(RwRenderState state) { + RwRaster *outRaster; + RwRenderStateGet(state, &outRaster); + return outRaster; +} +#endif diff --git a/third-party/plugin-sdk/shared/common_sdk.h b/third-party/plugin-sdk/shared/common_sdk.h new file mode 100644 index 00000000..ae883c1f --- /dev/null +++ b/third-party/plugin-sdk/shared/common_sdk.h @@ -0,0 +1,32 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "common.h" + +#ifdef GTA2 +#include "GBH.h" + +namespace plugin { + void SetRenderState(unsigned int state, unsigned int value); + void GetRenderState(unsigned int state, unsigned int& outValue); + unsigned int GetRenderState(unsigned int state); +} +#else +#include "RenderWare.h" + +namespace plugin { + RwFrame *GetObjectParent(RwObject *obj); + void SetRenderState(RwRenderState state, unsigned int value); + void SetRenderRaster(RwRaster *raster); + void GetRenderState(RwRenderState state, unsigned int &outValue); + void GetRenderRaster(RwRaster *&outRaster); + unsigned int GetRenderState(RwRenderState state); + RwRaster *GetRenderRaster(RwRenderState state); +} +#endif diff --git a/third-party/plugin-sdk/shared/comp/PluginSupport.cpp b/third-party/plugin-sdk/shared/comp/PluginSupport.cpp new file mode 100644 index 00000000..2237ff37 --- /dev/null +++ b/third-party/plugin-sdk/shared/comp/PluginSupport.cpp @@ -0,0 +1,19 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginSupport.h" + +bool PluginSupport::Install() { + if (!installed) { + installed = true; + return true; + } + return false; +} + +bool PluginSupport::Installed() { + return installed; +} diff --git a/third-party/plugin-sdk/shared/comp/PluginSupport.h b/third-party/plugin-sdk/shared/comp/PluginSupport.h new file mode 100644 index 00000000..a15d29d9 --- /dev/null +++ b/third-party/plugin-sdk/shared/comp/PluginSupport.h @@ -0,0 +1,15 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +class PluginSupport { +protected: + bool installed; + + virtual bool Install(); + bool Installed(); +}; diff --git a/third-party/plugin-sdk/shared/comp/PluginsCompatibility.cpp b/third-party/plugin-sdk/shared/comp/PluginsCompatibility.cpp new file mode 100644 index 00000000..361070be --- /dev/null +++ b/third-party/plugin-sdk/shared/comp/PluginsCompatibility.cpp @@ -0,0 +1,13 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "PluginsCompatibility.h" + +#ifdef _FLA_SUPPORT + +Fastman92LimitAdjusterSupport flaSupport; + +#endif diff --git a/third-party/plugin-sdk/shared/comp/PluginsCompatibility.h b/third-party/plugin-sdk/shared/comp/PluginsCompatibility.h new file mode 100644 index 00000000..d74174b1 --- /dev/null +++ b/third-party/plugin-sdk/shared/comp/PluginsCompatibility.h @@ -0,0 +1,15 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#ifdef _FLA_SUPPORT + +#include "plugins/LimitAdjusterSupport.h" + +extern Fastman92LimitAdjusterSupport flaSupport; + +#endif diff --git a/third-party/plugin-sdk/shared/comp/plugins/LimitAdjusterSupport.cpp b/third-party/plugin-sdk/shared/comp/plugins/LimitAdjusterSupport.cpp new file mode 100644 index 00000000..76a515e7 --- /dev/null +++ b/third-party/plugin-sdk/shared/comp/plugins/LimitAdjusterSupport.cpp @@ -0,0 +1,44 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#include "plugin.h" +#include "LimitAdjusterSupport.h" +//#include "CCoronas.h" +//#include "CShadows.h" +//#include "CModelInfo.h" +//#include "CStreaming.h" +//#include "CRadar.h" + +using namespace plugin; + +bool Fastman92LimitAdjusterSupport::Install() {/* + if (PluginSupport::Install()) { + + // CoronasLimitSupport + MAX_CORONAS = patch::GetUInt(0x6FAF46 + 4); + CCoronas::aCoronas = reinterpret_cast(patch::GetPointer(0x6FAE9F + 1)); + + // ShadowsLimitSupport + if (patch::GetUChar(0x707398) == 0xE9) + MAX_STORED_SHADOWS = patch::GetUShort(injector::GetBranchDestination(0x707398).as_int() + 3); + CShadows::asShadowsStored = reinterpret_cast(patch::GetPointer(0x7073B0 + 1)); + + // ModelInfoLimitSupport + CModelInfo::ms_modelInfoPtrs = reinterpret_cast(patch::GetPointer(0x403DA7)); + CStreaming::ms_aInfoForModel = reinterpret_cast(patch::GetPointer(0x408ADA + 3)); + + // RadarBlipsLimitSupport + CRadar::RadarBlipSprites = reinterpret_cast(patch::GetPointer(0x5827EA + 1)); + MAX_RADAR_SPRITES = (patch::GetUInt(0x585950 + 2) - reinterpret_cast(CRadar::RadarBlipSprites)) / 4; + CRadar::ms_RadarTrace = reinterpret_cast(patch::GetPointer(0x5838B0 + 2)); + MAX_RADAR_TRACES = patch::GetUInt(0x58384C + 2); + CRadar::MapLegendList = reinterpret_cast(patch::GetPointer(0x585A52 + 1)); + + return true; + }*/ + return false; +} diff --git a/third-party/plugin-sdk/shared/comp/plugins/LimitAdjusterSupport.h b/third-party/plugin-sdk/shared/comp/plugins/LimitAdjusterSupport.h new file mode 100644 index 00000000..9e1c4131 --- /dev/null +++ b/third-party/plugin-sdk/shared/comp/plugins/LimitAdjusterSupport.h @@ -0,0 +1,14 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "comp/PluginSupport.h" + +class Fastman92LimitAdjusterSupport : public PluginSupport { +public: + bool Install(); +}; diff --git a/third-party/plugin-sdk/shared/extender/ObjectExtender.h b/third-party/plugin-sdk/shared/extender/ObjectExtender.h new file mode 100644 index 00000000..5f4874ca --- /dev/null +++ b/third-party/plugin-sdk/shared/extender/ObjectExtender.h @@ -0,0 +1,68 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#ifndef GTA2 +#include "CPools.h" +#include "Extender.h" +#include "Events.h" +#include + +class CObject; + +namespace plugin { + class ObjectExtendersHandler : public ExtendersHandler { + public: + static void Add(ExtenderInterface *extender) { + static_data& data = get_data(); + data.extenders.push_back(extender); + if (!data.injected) { + plugin::Events::initPoolsEvent.after += Allocate; + plugin::Events::objectCtorEvent.before += Constructor; + plugin::Events::objectDtorEvent.after += Destructor; + data.injected = true; + } + } + }; + + template class ObjectExtendedData : public ExtenderInterface { + T **blocks; + unsigned int numBlocks; + + void AllocateBlocks() { + numBlocks = CPools::ms_pObjectPool->m_nSize; + blocks = new T*[numBlocks]; + for (unsigned int i = 0; i < numBlocks; i++) + blocks[i] = 0; + } + + void OnConstructor(CObject *object) { + blocks[CPools::ms_pObjectPool->GetIndex(object)] = new T(object); + } + + void OnDestructor(CObject *object) { + delete blocks[CPools::ms_pObjectPool->GetIndex(object)]; + blocks[CPools::ms_pObjectPool->GetIndex(object)] = 0; + } + public: + ObjectExtendedData() { + blocks = 0; + ObjectExtendersHandler::Add(this); + } + + ~ObjectExtendedData() { + for (unsigned int i = 0; i < numBlocks; i++) + delete blocks[i]; + delete[] blocks; + } + + T &Get(CObject *object) { + return *blocks[CPools::ms_pObjectPool->GetIndex(object)]; + } + }; +} +#endif diff --git a/third-party/plugin-sdk/shared/extender/PedExtender.h b/third-party/plugin-sdk/shared/extender/PedExtender.h new file mode 100644 index 00000000..97f683d1 --- /dev/null +++ b/third-party/plugin-sdk/shared/extender/PedExtender.h @@ -0,0 +1,68 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#ifndef GTA2 +#include "CPools.h" +#include "Extender.h" +#include "Events.h" +#include + +class CPed; + +namespace plugin { + class PedExtendersHandler : public ExtendersHandler { + public: + static void Add(ExtenderInterface *extender) { + static_data& data = get_data(); + data.extenders.push_back(extender); + if (!data.injected) { + plugin::Events::initPoolsEvent.after += Allocate; + plugin::Events::pedCtorEvent.before += Constructor; + plugin::Events::pedDtorEvent.after += Destructor; + data.injected = true; + } + } + }; + + template class PedExtendedData : public ExtenderInterface { + T **blocks; + unsigned int numBlocks; + + void AllocateBlocks() { + numBlocks = CPools::ms_pPedPool->m_nSize; + blocks = new T*[numBlocks]; + for (unsigned int i = 0; i < numBlocks; i++) + blocks[i] = 0; + } + + void OnConstructor(CPed *ped) { + blocks[CPools::ms_pPedPool->GetIndex(ped)] = new T(ped); + } + + void OnDestructor(CPed *ped) { + delete blocks[CPools::ms_pPedPool->GetIndex(ped)]; + blocks[CPools::ms_pPedPool->GetIndex(ped)] = 0; + } + public: + PedExtendedData() { + blocks = 0; + PedExtendersHandler::Add(this); + } + + ~PedExtendedData() { + for (unsigned int i = 0; i < numBlocks; i++) + delete blocks[i]; + delete[] blocks; + } + + T &Get(CPed *ped) { + return *blocks[CPools::ms_pPedPool->GetIndex(ped)]; + } + }; +} +#endif diff --git a/third-party/plugin-sdk/shared/extender/VehicleExtender.h b/third-party/plugin-sdk/shared/extender/VehicleExtender.h new file mode 100644 index 00000000..1651af5d --- /dev/null +++ b/third-party/plugin-sdk/shared/extender/VehicleExtender.h @@ -0,0 +1,68 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#ifndef GTA2 +#include "CPools.h" +#include "Extender.h" +#include "Events.h" +#include + +class CVehicle; + +namespace plugin { + class VehicleExtendersHandler : public ExtendersHandler { + public: + static void Add(ExtenderInterface *extender) { + static_data& data = get_data(); + data.extenders.push_back(extender); + if (!data.injected) { + plugin::Events::initPoolsEvent.after += Allocate; + plugin::Events::vehicleCtorEvent.before += Constructor; + plugin::Events::vehicleDtorEvent.after += Destructor; + data.injected = true; + } + } + }; + + template class VehicleExtendedData : public ExtenderInterface { + T **blocks; + unsigned int numBlocks; + + void AllocateBlocks() { + numBlocks = CPools::ms_pVehiclePool->m_nSize; + blocks = new T*[numBlocks]; + for (unsigned int i = 0; i < numBlocks; i++) + blocks[i] = 0; + } + + void OnConstructor(CVehicle *vehicle) { + blocks[CPools::ms_pVehiclePool->GetIndex(vehicle)] = new T(vehicle); + } + + void OnDestructor(CVehicle *vehicle) { + delete blocks[CPools::ms_pVehiclePool->GetIndex(vehicle)]; + blocks[CPools::ms_pVehiclePool->GetIndex(vehicle)] = 0; + } + public: + VehicleExtendedData() { + blocks = 0; + VehicleExtendersHandler::Add(this); + } + + ~VehicleExtendedData() { + for (unsigned int i = 0; i < numBlocks; i++) + delete blocks[i]; + delete[] blocks; + } + + T &Get(CVehicle *vehicle) { + return *blocks[CPools::ms_pVehiclePool->GetIndex(vehicle)]; + } + }; +} +#endif diff --git a/third-party/plugin-sdk/shared/extensions/Config.cpp b/third-party/plugin-sdk/shared/extensions/Config.cpp new file mode 100644 index 00000000..fd111759 --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/Config.cpp @@ -0,0 +1,460 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "Config.h" + +using namespace plugin; + +bool config_helper::config_extract_one_value(std::string const &strinput, bool &value) { + if (!strinput.empty()) { + if (!strinput.compare("0") || !strinput.compare("false") || !strinput.compare("FALSE") || !strinput.compare("no") || !strinput.compare("NO")) + value = false; + else + value = true; + return true; + } + return false; +} + +int config_helper::config_extract_values_array(std::string const &strinput, std::vector &arr) { + std::istringstream iss(strinput); + std::string strval; + while (config_extract_one_value(iss, strval)) { + bool bval; + if (!config_extract_one_value(strval, bval)) + break; + arr.push_back(bval); + } + return arr.size(); +} + +config_parameter::config_parameter() { + _notInitialised = true; + _quotes = true; +} + +config_parameter::config_parameter(std::string value, bool quotes) { + _value = value; + _notInitialised = false; + _quotes = quotes; +} + +bool config_parameter::isEmpty() { + return _notInitialised; +} + +float config_parameter::asFloat(float defaultVal) { + float fval; + if (_notInitialised || !config_helper::config_extract_one_value(_value, fval)) + return defaultVal; + return fval; +} + +float config_parameter::asFloat() { return asFloat(0.0f); } + +unsigned int config_parameter::asInt(int defaultVal) { + int ival; + if (_notInitialised || !config_helper::config_extract_one_value(_value, ival)) + return defaultVal; + return ival; +} + +unsigned int config_parameter::asInt() { return asInt(0); } + +std::string config_parameter::asString(std::string defaultVal) { + if (_notInitialised) + return defaultVal; + if (_quotes) + return _value.substr(1, _value.size() - 2); + return _value; +} + +std::string config_parameter::asString() { return asString(std::string()); } + +bool config_parameter::asBool(bool defaultVal) { + bool bval; + if (_notInitialised || !config_helper::config_extract_one_value(_value, bval)) + return defaultVal; + return bval; +} + +bool config_parameter::asBool() { return asBool(false); } + +std::vector config_parameter::asIntArray() { + std::vector result; + config_helper::config_extract_values_array(_value, result); + return result; +} + +std::vector config_parameter::asFloatArray() { + std::vector result; + config_helper::config_extract_values_array(_value, result); + return result; +} + +std::vector config_parameter::asBoolArray() { + std::vector result; + config_helper::config_extract_values_array(_value, result); + return result; +} + +CRect config_parameter::asRect(CRect defaultVal) { + std::vector valArr = asFloatArray(); + CRect rect = defaultVal; + unsigned int arrSize = valArr.size(); + if (arrSize > 0) { + rect.left = valArr[0]; + if (arrSize > 1) { + rect.top = valArr[1]; + if (arrSize > 2) { + rect.right = valArr[2]; + if (arrSize > 3) + rect.bottom = valArr[3]; + } + } + } + return rect; +} + +CRect config_parameter::asRect() { return asRect(CRect(0.0f, 0.0f, 0.0f, 0.0f)); } + +CVector2D config_parameter::asVec2d(CVector2D defaultVal) { + std::vector valArr = asFloatArray(); + CVector2D vec = defaultVal; + unsigned int arrSize = valArr.size(); + if (arrSize > 0) { + vec.x = valArr[0]; + if (arrSize > 1) + vec.y = valArr[1]; + } + return vec; +} + +CVector2D config_parameter::asVec2d() { return asVec2d(CVector2D(0.0f, 0.0f)); } + +CVector config_parameter::asVec3d(CVector defaultVal) { + std::vector valArr = asFloatArray(); + CVector vec = defaultVal; + unsigned int arrSize = valArr.size(); + if (arrSize > 0) { + vec.x = valArr[0]; + if (arrSize > 1) { + vec.y = valArr[1]; + if (arrSize > 2) + vec.z = valArr[2]; + } + } + return vec; +} + +CVector config_parameter::asVec3d() { return asVec3d(CVector(0.0f, 0.0f, 0.0f)); } + +CRGBA config_parameter::asRGBA(CRGBA defaultVal) { + std::vector valArr = asIntArray(); + CRGBA rgba = defaultVal; + unsigned int arrSize = valArr.size(); + if (arrSize > 0) { + rgba.r = valArr[0]; + if (arrSize > 1) { + rgba.g = valArr[1]; + if (arrSize > 2) { + rgba.b = valArr[2]; + if (arrSize > 3) + rgba.a = valArr[3]; + } + } + } + return rgba; +} + +CRGBA config_parameter::asRGBA() { return asRGBA(CRGBA(0, 0, 0, 255)); } + +config_parameter &config_parameter::operator=(float n) { + _value = std::to_string(n); + _quotes = false; + _notInitialised = false; + return *this; +} + +config_parameter &config_parameter::operator=(int n) { + _value = std::to_string(n); + _quotes = false; + _notInitialised = false; + return *this; +} + +config_parameter &config_parameter::operator=(std::string s) { + _value = s; + _quotes = true; + _notInitialised = false; + return *this; +} + +config_parameter &config_parameter::operator=(const char *s) { + _value = '"'; + _value.append(s); + _value.push_back('"'); + _quotes = true; + _notInitialised = false; + return *this; +} + +config_parameter &config_parameter::operator=(bool v) { + if (v) + _value = "TRUE"; + else + _value = "FALSE"; + _quotes = false; + _notInitialised = false; + return *this; +} + +config_param_line::config_param_line::config_param_line(std::string paramName) { + name = paramName; + commentOffset = 0; +} + +config_param_line::config_param_line(std::string paramName, std::string value, bool useQuotes) { + _value = value; + _notInitialised = false; + _quotes = useQuotes; + name = paramName; + commentOffset = 0; +} + +bool config_file::pathEmpty() { +#ifdef _MSC_VER + if (_bWidePath) + return _widePath.empty(); + else +#endif + return _path.empty(); +} + +void config_file::prepareData() { + if (_dataRead || pathEmpty()) + return; + std::ifstream in; +#ifdef _MSC_VER + if (_bWidePath) + in.open(_widePath); + else +#endif + in.open(_path); + if (in.is_open()) { + unsigned int lineId = 0; + for (std::string line; getline(in, line); ) { + if (line.empty()) { + emptyLines.push_back(lineId++); + continue; + } + bool usesQuotes = false; + std::string name; + std::string value; + std::string comment; + unsigned int commentOffset = 0; + + bool scanBeforeName = true; + bool scanName = false; + bool scanAfterName = false; + bool scanValue = false; + bool scanAfterValue = false; + bool isCommentLine = false; + + for (unsigned int i = 0; i < line.size(); i++) { + if (scanBeforeName) { + if (line[i] == '#' || line[i] == ';') { + isCommentLine = true; + break; + } + if (line[i] == '=') { + // incorrect line + continue; + } + if (line[i] != ' ' && line[i] != '\t') { + name.push_back(line[i]); + scanBeforeName = false; + scanName = true; + } + } + else if (scanName) { + if (line[i] == '#' || line[i] == ';') { + commentOffset = i; + comment = line.substr(i); + break; + } + if (line[i] == ' ' || line[i] == '\t' || line[i] == '=') { + scanName = false; + scanAfterName = true; + } + else + name.push_back(line[i]); + } + else if (scanAfterName) { + if (line[i] == '#' || line[i] == ';') { + commentOffset = i; + comment = line.substr(i); + break; + } + if (line[i] == '=') { + _useEqualitySign = true; + continue; + } + else if (line[i] != ' ' && line[i] != '\t') { + scanAfterName = false; + scanValue = true; + value.push_back(line[i]); + } + } + else if (scanValue) { + if (line[i] == '#' || line[i] == ';') { + commentOffset = i; + comment = line.substr(i); + break; + } + value.push_back(line[i]); + } + } + + if (isCommentLine) { + comments.push_back(std::make_pair(lineId, line)); + continue; + } + + if (value.size() > 0) { + size_t l = value.find_last_not_of(" \t"); + if (l != std::string::npos) { + value = value.substr(0, l + 1); + size_t valSize = value.size(); + if (valSize > 1 && value[0] == '"' && value[valSize - 1] == '"') + usesQuotes = true; + } + else + value.clear(); + } + + paramLines.emplace_back(name, value, usesQuotes); + config_param_line ¶m = paramLines.back(); + param.comment = comment; + param.commentOffset = commentOffset; + + //printf("%s \"%s\"\n", param.name.c_str(), param._value.c_str()); + + lineId++; + } + } + _dataRead = true; +} + +void config_file::writeData() { + if (pathEmpty()) + return; + std::ofstream out; +#ifdef _MSC_VER + if (_bWidePath) + out.open(_widePath); + else +#endif + out.open(_path); + if (out.is_open()) { + unsigned int maxStrLen = 0; + for (config_param_line ¶m : paramLines) { + if (!param.isEmpty() && !param.name.empty()) { + unsigned int strSz = param.name.size(); + if (strSz > maxStrLen) + maxStrLen = strSz; + } + } + unsigned int numCommentsLeft = comments.size(); + for (config_param_line ¶m : paramLines) { + if (!param.isEmpty() && !param.name.empty()) { + out << param.name; + unsigned int numSpaces = maxStrLen - param.name.size() + 1; + for (unsigned int i = 0; i < numSpaces; i++) + out << ' '; + if (_useEqualitySign) + out << "= "; + out << param._value; + out << '\n'; + } + } + } +} + +config_file::config_file() { +#ifdef _MSC_VER + _bWidePath = false; +#endif + _dataRead = false; + _useAlignment = true; + _useEqualitySign = false; +} + +void config_file::open(std::string fileName) { + _path = fileName; +#ifdef _MSC_VER + _bWidePath = false; +#endif + prepareData(); +} + +void config_file::open(std::string fileName, bool readOnly, bool equalitySign, bool alignment) { + _path = fileName; +#ifdef _MSC_VER + _bWidePath = false; +#endif + prepareData(); +} + +config_file::config_file(std::string fileName) { + _dataRead = false; + _useAlignment = true; + _useEqualitySign = false; + open(fileName); +} + +#ifdef _MSC_VER +void config_file::open(std::wstring fileName) { + _widePath = fileName; + _bWidePath = true; + prepareData(); +} + +void config_file::open(std::wstring fileName, bool readOnly, bool equalitySign, bool alignment) { + _widePath = fileName; + _bWidePath = true; + prepareData(); +} + +config_file::config_file(std::wstring fileName) { + _dataRead = false; + _useAlignment = true; + _useEqualitySign = false; + open(fileName); +} +#endif + +void config_file::save() { + if (_dataRead) + writeData(); +} + +config_parameter &config_file::operator[](std::string name) { + for (config_param_line ¶m : paramLines) { + if (!param.name.compare(name)) + return param; + } + paramLines.emplace_back(name); + return paramLines.back(); +} + +void config_file::setUseEqualitySign(bool enable) { + _useEqualitySign = enable; +} + +void config_file::setUseAlignment(bool enable) { + _useAlignment = enable; +} diff --git a/third-party/plugin-sdk/shared/extensions/Config.h b/third-party/plugin-sdk/shared/extensions/Config.h new file mode 100644 index 00000000..b928199a --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/Config.h @@ -0,0 +1,127 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include +#include +#include +#include +#include "CVector.h" +#ifndef GTA2 +#include "CVector2D.h" +#endif +#include "CRect.h" +#include "CRGBA.h" + +namespace plugin { + + class config_helper { + friend class config_parameter; + protected: + static bool config_extract_one_value(std::string const &strinput, bool &value); + static int config_extract_values_array(std::string const &strinput, std::vector &arr); + + template static bool config_extract_one_value(std::istringstream &iss, T &value) { + iss >> value; + return !iss.fail(); + } + + template static bool config_extract_one_value(std::string const &strinput, T &value) { + std::istringstream iss(strinput); + return config_extract_one_value(iss, value); + } + + template static int config_extract_values_array(std::string const &strinput, std::vector &arr) { + std::istringstream iss(strinput); + T val; + while (config_extract_one_value(iss, val)) + arr.push_back(val); + return arr.size(); + } + }; + + class config_parameter { + public: + std::string _value; + bool _quotes; + bool _notInitialised; + + config_parameter(); + config_parameter(std::string value, bool quotes = true); + bool isEmpty(); + float asFloat(float defaultVal); + float asFloat(); + unsigned int asInt(int defaultVal); + unsigned int asInt(); + std::string asString(std::string defaultVal); + std::string asString(); + bool asBool(bool defaultVal); + bool asBool(); + std::vector asIntArray(); + std::vector asFloatArray(); + std::vector asBoolArray(); + CRect asRect(CRect defaultVal); + CRect asRect(); + CVector2D asVec2d(CVector2D defaultVal); + CVector2D asVec2d(); + CVector asVec3d(CVector defaultVal); + CVector asVec3d(); + CRGBA asRGBA(CRGBA defaultVal); + CRGBA asRGBA(); + config_parameter &operator=(float n); + config_parameter &operator=(int n); + config_parameter &operator=(std::string s); + config_parameter &operator=(const char *s); + config_parameter &operator=(bool v); + }; + + class config_param_line : public config_parameter { + public: + std::string name; + std::string comment; + unsigned int commentOffset; + + config_param_line(std::string paramName); + config_param_line(std::string paramName, std::string value, bool useQuotes); + }; + + class config_file { + public: + std::string _path; +#ifdef _MSC_VER + std::wstring _widePath; + bool _bWidePath; +#endif + bool _useEqualitySign; + bool _useAlignment; + bool _dataRead; + + config_parameter _emptyParameter; + + std::vector paramLines; + std::vector> comments; + std::vector emptyLines; + + bool pathEmpty(); + void prepareData(); + void writeData(); + public: + config_file(); + void open(std::string fileName); + void open(std::string fileName, bool readOnly, bool equalitySign, bool alignment); + config_file(std::string fileName); +#ifdef _MSC_VER + void open(std::wstring fileName); + void open(std::wstring fileName, bool readOnly, bool equalitySign, bool alignment); + config_file(std::wstring fileName); +#endif + void save(); + config_parameter &operator[](std::string name); + void setUseEqualitySign(bool enable); + void setUseAlignment(bool enable); + }; +} diff --git a/third-party/plugin-sdk/shared/extensions/DynamicResource.cpp b/third-party/plugin-sdk/shared/extensions/DynamicResource.cpp new file mode 100644 index 00000000..fbded3af --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/DynamicResource.cpp @@ -0,0 +1,34 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "DynamicResource.h" +#include "plugin.h" + +using namespace plugin; + +std::vector DynamicResource::resourcesList; +bool DynamicResource::resourceSystemInitialized = false; + +DynamicResource::DynamicResource() { + if (!resourceSystemInitialized) { + plugin::Events::d3dLostEvent += ReleaseAllDynamicResources; + plugin::Events::d3dResetEvent += RecreateAllDynamicResources; + resourceSystemInitialized = true; + } + resourcesList.push_back(this); +} + +DynamicResource::~DynamicResource() { + resourcesList.erase(std::remove(resourcesList.begin(), resourcesList.end(), this), resourcesList.end()); +} + +void DynamicResource::ReleaseAllDynamicResources() { + for (auto res : resourcesList) { res->Unload(); } +} + +void DynamicResource::RecreateAllDynamicResources() { + for (auto res : resourcesList) { res->Load(); } +} diff --git a/third-party/plugin-sdk/shared/extensions/DynamicResource.h b/third-party/plugin-sdk/shared/extensions/DynamicResource.h new file mode 100644 index 00000000..42d408c1 --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/DynamicResource.h @@ -0,0 +1,24 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include +#include + +namespace plugin { + class DynamicResource { + static std::vector resourcesList; + static bool resourceSystemInitialized; + + static void ReleaseAllDynamicResources(); + static void RecreateAllDynamicResources(); + public: + DynamicResource(); + virtual ~DynamicResource(); + virtual void Load() = 0; + virtual void Unload() = 0; + }; +} diff --git a/third-party/plugin-sdk/shared/extensions/FontPrint.cpp b/third-party/plugin-sdk/shared/extensions/FontPrint.cpp new file mode 100644 index 00000000..b0b81f8a --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/FontPrint.cpp @@ -0,0 +1,230 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#ifndef GTA2 +#include "FontPrint.h" + +#include "CFont.h" +#include "Other.h" +#include "CSprite.h" + +#define SCALEW 0.8f +#define SCALEH 1.6f +#define SPACING 15.0f + +float ScreenInteger(float value) { + return static_cast(static_cast(value)); +} + +void plugin::gamefont::PrintUnscaled(const std::string &line, float x, float y, unsigned char style, float w, float h, + CRGBA const &color, Alignment alignment, unsigned char dropPosition, CRGBA const &dropColor, bool shadow, float lineSize, + bool proportional, bool justify) +{ + CFont::SetFontStyle(style); + CFont::SetScale(w * SCALEW, h * SCALEH); + CFont::SetColor(color); + CFont::SetAlphaFade(255.0f); + CFont::SetSlant(0.0f); + CFont::SetDropColor(dropColor); + switch (alignment) { + case AlignCenter: + #ifdef GTASA + CFont::SetOrientation(ALIGN_CENTER); + #else + CFont::SetRightJustifyOff(); + CFont::SetJustifyOff(); + CFont::SetCentreOn(); + #endif + CFont::SetCentreSize(ScreenInteger(lineSize)); + break; + case AlignLeft: + #ifdef GTASA + CFont::SetOrientation(ALIGN_LEFT); + #else + CFont::SetCentreOff(); + CFont::SetRightJustifyOff(); + CFont::SetJustifyOn(); + #endif + CFont::SetWrapx(ScreenInteger(x + lineSize)); + break; + case AlignRight: + #ifdef GTASA + CFont::SetOrientation(ALIGN_RIGHT); + #else + CFont::SetCentreOff(); + CFont::SetJustifyOff(); + CFont::SetRightJustifyOn(); + #endif + CFont::SetRightJustifyWrap(ScreenInteger(x - lineSize)); + break; + } +#ifdef GTASA + CFont::SetProportional(proportional); + CFont::SetBackground(false, false); + CFont::SetJustify(justify); + if (shadow) + CFont::SetDropShadowPosition(dropPosition); + else + CFont::SetEdge(dropPosition); +#else + if (proportional) + CFont::SetPropOn(); + else + CFont::SetPropOff(); + CFont::SetBackgroundOff(); + CFont::SetBackGroundOnlyTextOff(); + CFont::SetDropShadowPosition(dropPosition); +#endif + CFont::PrintString(ScreenInteger(x), ScreenInteger(y), const_cast(line.c_str())); +} + +void plugin::gamefont::Print(const std::string &line, float x, float y, unsigned char style, float w, float h, + CRGBA const &color, Alignment alignment, unsigned char dropPosition, CRGBA const &dropColor, bool shadow, float lineSize, + bool proportional, bool justify, ScreenSide screenSide) +{ + switch (screenSide) { + case LeftBottom: + x = screen::GetCoord(x, screen::SIDE_LEFT); + y = screen::GetCoord(y, screen::SIDE_BOTTOM); + break; + case RightTop: + x = screen::GetCoord(x, screen::SIDE_RIGHT); + y = screen::GetCoord(y, screen::SIDE_TOP); + break; + case RightBottom: + x = screen::GetCoord(x, screen::SIDE_RIGHT); + y = screen::GetCoord(y, screen::SIDE_BOTTOM); + break; + default: + x = screen::GetCoord(x, screen::SIDE_LEFT); + y = screen::GetCoord(y, screen::SIDE_TOP); + break; + } + PrintUnscaled(line, + x, + y, + style, + screen::GetMultiplier(w), + screen::GetMultiplier(h), + color, alignment, dropPosition, dropColor, shadow, + screen::GetCoord(lineSize), + proportional, justify); +} + +void plugin::gamefont::Print(ScreenSide screenSide, Alignment alignment, + const std::string &line, float x, float y, unsigned char style, float w, float h, + CRGBA const &color, unsigned char dropPosition, CRGBA const &dropColor, bool shadow, float lineSize, + bool proportional, bool justify) +{ + Print(line, x, y, style, w, h, color, alignment, dropPosition, dropColor, shadow, lineSize, proportional, justify, screenSide); +} + +void plugin::gamefont::Print(std::vector const &lines, float x, float y, float spacing, unsigned char style, + float w, float h, CRGBA const &color, Alignment alignment, unsigned char dropPosition, CRGBA const &dropColor, + bool shadow, float lineSize, bool proportional, bool justify, ScreenSide screenSide) +{ + spacing *= h * SCALEH * SPACING; + for (size_t i = 0; i < lines.size(); i++) { + Print(lines[i], x, y + spacing * i, style, w, h, color, alignment, dropPosition, + dropColor, shadow, lineSize, proportional, justify, screenSide); + } +} + +void plugin::gamefont::Print(ScreenSide screenSide, Alignment alignment, + std::vector const &lines, float x, float y, float spacing, unsigned char style, float w, float h, + CRGBA const &color, unsigned char dropPosition, CRGBA const &dropColor, bool shadow, float lineSize, + bool proportional, bool justify) +{ + spacing *= h * SCALEH * SPACING; + for (size_t i = 0; i < lines.size(); i++) { + Print(screenSide, alignment, lines[i], x, y + spacing * i, style, w, h, color, + dropPosition, dropColor, shadow, lineSize, proportional, justify); + } +} + +bool Get3dTo2d(CVector const &posn, CVector &out) { + RwV3d rwvec; float outw, outh; + bool result = +#ifdef GTASA + CSprite::CalcScreenCoors(posn.ToRwV3d(), &rwvec, &outw, &outh, false, false); +#else + CSprite::CalcScreenCoors(posn.ToRwV3d(), &rwvec, &outw, &outh, false); +#endif + out.FromRwV3d(rwvec); + return result; +} + +float CalcScaling(float z) { + float scale = 1.0f / z * 5.0f; + if (scale > 1.0f) + scale = 1.0f; + else if (scale < 0.01f) + scale = 0.0f; + else if (scale < 0.25f) + scale = 0.25f; + return scale; +} + +void PrintOneAt3d(std::string const &line, CVector const &posn2d, float offset_x, float offset_y, float w, float h, + CRGBA const &color, unsigned char style, plugin::gamefont::Alignment alignment, unsigned char dropPosition, + CRGBA const &dropColor, bool shadow, float lineSize, bool proportional, bool justify) +{ + plugin::gamefont::PrintUnscaled(line, + posn2d.x + plugin::screen::GetCoord(offset_x), + posn2d.y + plugin::screen::GetCoord(offset_y), + style, + plugin::screen::GetMultiplier(w), + plugin::screen::GetMultiplier(h), + color, alignment, dropPosition, dropColor, shadow, + plugin::screen::GetCoord(lineSize), + proportional, justify); +} + +bool plugin::gamefont::PrintAt3d(CVector const &posn, const std::string &line, float offset_x, float offset_y, + unsigned char style, float w, float h, CRGBA const &color, bool scaleOnDistance, Alignment alignment, + unsigned char dropPosition, CRGBA const &dropColor, bool shadow, float lineSize, bool proportional, bool justify) +{ + CVector out; + if (Get3dTo2d(posn, out)) { + float s = 1.0f; + if (scaleOnDistance) + s = CalcScaling(out.z); + if (s != 0.0f) { + PrintOneAt3d(line, out, offset_x * s, offset_y * s, w * s, h * s, color, style, + alignment, dropPosition, dropColor, shadow, lineSize, proportional, justify); + } + return true; + } + return false; +} + +bool plugin::gamefont::PrintAt3d(CVector const &posn, std::vector const &lines, float spacing, float offset_x, + float offset_y, unsigned char style, float w, float h, CRGBA const &color, bool scaleOnDistance, Alignment alignment, + unsigned char dropPosition, CRGBA const &dropColor, bool shadow, float lineSize, bool proportional, bool justify) +{ + CVector out; + if (Get3dTo2d(posn, out)) { + if (scaleOnDistance) { + float s = CalcScaling(out.z); + if (s == 0.0f) + return false; + w *= s; + h *= s; + offset_x *= s; + offset_y *= s; + } + spacing *= h * SCALEH * SPACING; + for (size_t i = 0; i < lines.size(); i++) { + PrintOneAt3d(lines[i], out, offset_x, offset_y + spacing * i, w, h, color, style, + alignment, dropPosition, dropColor, shadow, lineSize, proportional, justify); + } + return true; + } + return false; +} + +#endif diff --git a/third-party/plugin-sdk/shared/extensions/FontPrint.h b/third-party/plugin-sdk/shared/extensions/FontPrint.h new file mode 100644 index 00000000..e9d3156e --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/FontPrint.h @@ -0,0 +1,74 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#ifndef GTA2 +#include +#include +#include "CRGBA.h" +#include "CVector.h" +#include "Screen.h" + +#ifdef GTA3 +#define FONT_DEFAULT 0 +#else +#define FONT_DEFAULT 1 +#endif + +namespace plugin { + +class gamefont { +public: + enum Alignment { + AlignCenter, AlignLeft, AlignRight + }; + + enum ScreenSide { + LeftTop, + LeftBottom, + RightTop, + RightBottom + }; + + static void PrintUnscaled(const std::string &line, float x, float y, unsigned char style = FONT_DEFAULT, + float w = 1.0f, float h = 1.0f, CRGBA const &color = CRGBA(255, 255, 255, 255), Alignment alignment = AlignLeft, + unsigned char dropPosition = 1, CRGBA const &dropColor = CRGBA(0, 0, 0, 255), bool shadow = false, + float lineSize = 9999.0f, bool proportional = true, bool justify = false); + static void Print(const std::string &line, float x, float y, unsigned char style = FONT_DEFAULT, float w = 1.0f, float h = 1.0f, + CRGBA const &color = CRGBA(255, 255, 255, 255), Alignment alignment = AlignLeft, unsigned char dropPosition = 1, + CRGBA const &dropColor = CRGBA(0, 0, 0, 255), bool shadow = false, float lineSize = 9999.0f, + bool proportional = true, bool justify = false, ScreenSide screenSide = LeftTop); + static void Print(ScreenSide screenSide, Alignment alignment, + const std::string &line, float x, float y, unsigned char style = FONT_DEFAULT, float w = 1.0f, float h = 1.0f, + CRGBA const &color = CRGBA(255, 255, 255, 255), unsigned char dropPosition = 1, + CRGBA const &dropColor = CRGBA(0, 0, 0, 255), bool shadow = false, float lineSize = 9999.0f, + bool proportional = true, bool justify = false); + static void Print(std::vector const &lines, float x, float y, float spacing = 1.0f, unsigned char style = FONT_DEFAULT, + float w = 1.0f, float h = 1.0f, + CRGBA const &color = CRGBA(255, 255, 255, 255), Alignment alignment = AlignLeft, unsigned char dropPosition = 1, + CRGBA const &dropColor = CRGBA(0, 0, 0, 255), bool shadow = false, float lineSize = 9999.0f, + bool proportional = true, bool justify = false, ScreenSide screenSide = LeftTop); + static void Print(ScreenSide screenSide, Alignment alignment, + std::vector const &lines, float x, float y, float spacing = 1.0f, unsigned char style = FONT_DEFAULT, + float w = 1.0f, float h = 1.0f, + CRGBA const &color = CRGBA(255, 255, 255, 255), unsigned char dropPosition = 1, + CRGBA const &dropColor = CRGBA(0, 0, 0, 255), bool shadow = false, float lineSize = 9999.0f, + bool proportional = true, bool justify = false); + static bool PrintAt3d(CVector const &posn, const std::string &line, float offset_x = 0.0f, float offset_y = 0.0f, + unsigned char style = FONT_DEFAULT, float w = 1.0f, float h = 1.0f, CRGBA const &color = CRGBA(255, 255, 255, 255), + bool scaleOnDistance = true, Alignment alignment = AlignLeft, unsigned char dropPosition = 1, + CRGBA const &dropColor = CRGBA(0, 0, 0, 255), bool shadow = false, float lineSize = 9999.0f, + bool proportional = true, bool justify = false); + static bool PrintAt3d(CVector const &posn, std::vector const &lines, float spacing = 1.0f, + float offset_x = 0.0f, float offset_y = 0.0f, + unsigned char style = FONT_DEFAULT, float w = 1.0f, float h = 1.0f, CRGBA const &color = CRGBA(255, 255, 255, 255), + bool scaleOnDistance = true, Alignment alignment = AlignLeft, unsigned char dropPosition = 1, + CRGBA const &dropColor = CRGBA(0, 0, 0, 255), bool shadow = false, float lineSize = 9999.0f, + bool proportional = true, bool justify = false); +}; + +} +#endif diff --git a/third-party/plugin-sdk/shared/extensions/KeyCheck.cpp b/third-party/plugin-sdk/shared/extensions/KeyCheck.cpp new file mode 100644 index 00000000..cbdd9160 --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/KeyCheck.cpp @@ -0,0 +1,41 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "KeyCheck.h" +#include "plugin.h" + +unsigned char KeyCheck::currStates[256] = {}; +unsigned char KeyCheck::prevStates[256] = {}; +unsigned int KeyCheck::timeDelayPressed[256] = {}; + +void KeyCheck::Update() { + memcpy(prevStates, currStates, 256); + GetKeyboardState(currStates); +} + +bool KeyCheck::Check(unsigned int key) { + return key < 256 && (currStates[key] & 0x80); +} + +bool KeyCheck::CheckJustDown(unsigned int key) { + return key < 256 && (currStates[key] & 0x80) && !(prevStates[key] & 0x80); +} + +bool KeyCheck::CheckJustUp(unsigned int key) { + return key < 256 && !(currStates[key] & 0x80) && (prevStates[key] & 0x80); +} + +#ifndef GTA2 +bool KeyCheck::CheckWithDelay(unsigned int key, unsigned int time) { + if (key < 256 && (currStates[key] & 0x80)) { + if (!(prevStates[key] & 0x80) || CTimer::m_snTimeInMilliseconds > static_cast((timeDelayPressed[key] + time))) { + timeDelayPressed[key] = CTimer::m_snTimeInMilliseconds; + return true; + } + } + return false; +} +#endif \ No newline at end of file diff --git a/third-party/plugin-sdk/shared/extensions/KeyCheck.h b/third-party/plugin-sdk/shared/extensions/KeyCheck.h new file mode 100644 index 00000000..5298fb3a --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/KeyCheck.h @@ -0,0 +1,26 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#ifndef GTA2 +#include "CTimer.h" +#endif + +class KeyCheck { + static unsigned char currStates[256]; + static unsigned char prevStates[256]; + static unsigned int timeDelayPressed[256]; +public: + static void Update(); + static bool Check(unsigned int key); + static bool CheckJustDown(unsigned int key); + static bool CheckJustUp(unsigned int key); + +#ifndef GTA2 + static bool CheckWithDelay(unsigned int key, unsigned int time); +#endif +}; diff --git a/third-party/plugin-sdk/shared/extensions/Paths.cpp b/third-party/plugin-sdk/shared/extensions/Paths.cpp new file mode 100644 index 00000000..888d2c8f --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/Paths.cpp @@ -0,0 +1,243 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "Paths.h" +#include +#include "Error.h" + +#define MAX_VALUE(a,b) (((a) > (b)) ? (a) : (b)) + +struct PluginPathA { + char _path[MAX_PATH + 1]; + char _filename[MAX_PATH + 1]; + char _temp_path[MAX_PATH + 1]; + + static void func() {} + + PluginPathA() { + _path[0] = '\0'; + _filename[0] = '\0'; + HMODULE h = NULL; + if (!GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, + (LPCSTR)&func, &h)) + { + plugin::InternalError("FILESYSTEM\nFailed to retrieve plugin dir path"); + } + GetModuleFileNameA(h, _path, MAX_PATH); + char *bslp = strrchr(_path, '\\'); + char *fslp = strrchr(_path, '/'); + char *slp = MAX_VALUE(bslp, fslp); + if (slp) { + strcpy(_filename, slp + 1); + slp[1] = '\0'; + } + } +}; + +struct GamePathA { + char _path[MAX_PATH + 1]; + char _temp_path[MAX_PATH + 1]; + + GamePathA() { + _path[0] = '\0'; + HMODULE h = NULL; + h = GetModuleHandleA(NULL); + if (h == NULL) + plugin::InternalError("FILESYSTEM\nFailed to retrieve game dir path"); + GetModuleFileNameA(h, _path, MAX_PATH); + char *bslp = strrchr(_path, '\\'); + char *fslp = strrchr(_path, '/'); + char *slp = MAX_VALUE(bslp, fslp); + if (slp) + slp[1] = '\0'; + } +}; + +struct PluginPathW { + wchar_t _path[MAX_PATH + 1]; + wchar_t _filename[MAX_PATH + 1]; + wchar_t _temp_path[MAX_PATH + 1]; + + static void func() {} + + PluginPathW() { + _path[0] = '\0'; + _filename[0] = '\0'; + HMODULE h = NULL; + if (!GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, + (LPWSTR)&func, &h)) + { + plugin::InternalError("FILESYSTEM\nFailed to retrieve plugin dir path"); + } + GetModuleFileNameW(h, _path, MAX_PATH); + wchar_t *bslp = wcsrchr(_path, '\\'); + wchar_t *fslp = wcsrchr(_path, '/'); + wchar_t *slp = MAX_VALUE(bslp, fslp); + if (slp) { + wcscpy(_filename, slp + 1); + slp[1] = '\0'; + } + } +}; + +struct GamePathW { + wchar_t _path[MAX_PATH + 1]; + wchar_t _temp_path[MAX_PATH + 1]; + + GamePathW() { + _path[0] = '\0'; + HMODULE h = NULL; + h = GetModuleHandleW(NULL); + if (h == NULL) + plugin::InternalError("FILESYSTEM\nFailed to retrieve game dir path"); + GetModuleFileNameW(h, _path, MAX_PATH); + wchar_t *bslp = wcsrchr(_path, '\\'); + wchar_t *fslp = wcsrchr(_path, '/'); + wchar_t *slp = MAX_VALUE(bslp, fslp); + if (slp) + slp[1] = '\0'; + } +}; + + + +PluginPathA &PluginPathAInstance() { + static PluginPathA pluginPath; + return pluginPath; +} + +GamePathA &GamePathAInstance() { + static GamePathA gamePath; + return gamePath; +} + +PluginPathW &PluginPathWInstance() { + static PluginPathW pluginPath; + return pluginPath; +} + +GamePathW &GamePathWInstance() { + static GamePathW gamePath; + return gamePath; +} + +void plugin::paths::GetGameDirPathA(char *out) { + strcpy(out, GamePathAInstance()._path); +} + +char *plugin::paths::GetGameDirPathA() { + strcpy(GamePathAInstance()._temp_path, GamePathAInstance()._path); + return GamePathAInstance()._temp_path; +} + +void plugin::paths::GetPluginDirPathA(char *out) { + strcpy(out, PluginPathAInstance()._path); +} + +char *plugin::paths::GetPluginDirPathA() { + strcpy(PluginPathAInstance()._temp_path, PluginPathAInstance()._path); + return PluginPathAInstance()._temp_path; +} + +void plugin::paths::GetGameDirPathW(wchar_t *out) { + wcscpy(out, GamePathWInstance()._path); +} + +wchar_t *plugin::paths::GetGameDirPathW() { + wcscpy(GamePathWInstance()._temp_path, GamePathWInstance()._path); + return GamePathWInstance()._temp_path; +} + +void plugin::paths::GetPluginDirPathW(wchar_t *out) { + wcscpy(out, PluginPathWInstance()._path); +} + +wchar_t *plugin::paths::GetPluginDirPathW() { + wcscpy(PluginPathWInstance()._temp_path, PluginPathWInstance()._path); + return PluginPathWInstance()._temp_path; +} + +void plugin::paths::GetGameDirRelativePathA(char *out, char *subpath) { + strcpy(out, GamePathAInstance()._path); + strcat(out, subpath); +} + +char *plugin::paths::GetGameDirRelativePathA(char *subpath) { + strcpy(GamePathAInstance()._temp_path, GamePathAInstance()._path); + strcat(GamePathAInstance()._temp_path, subpath); + return GamePathAInstance()._temp_path; +} + +void plugin::paths::GetPluginDirRelativePathA(char *out, char *subpath) { + strcpy(out, PluginPathAInstance()._path); + strcat(out, subpath); +} + +char *plugin::paths::GetPluginDirRelativePathA(char *subpath) { + strcpy(PluginPathAInstance()._temp_path, PluginPathAInstance()._path); + strcat(PluginPathAInstance()._temp_path, subpath); + return PluginPathAInstance()._temp_path; +} + + +void plugin::paths::GetGameDirRelativePathW(wchar_t *out, wchar_t *subpath) { + wcscpy(out, GamePathWInstance()._path); + wcscat(out, subpath); +} + +wchar_t *plugin::paths::GetGameDirRelativePathW(wchar_t *subpath) { + wcscpy(GamePathWInstance()._temp_path, GamePathWInstance()._path); + wcscat(GamePathWInstance()._temp_path, subpath); + return GamePathWInstance()._temp_path; +} + +void plugin::paths::GetPluginDirRelativePathW(wchar_t *out, wchar_t *subpath) { + wcscpy(out, PluginPathWInstance()._path); + wcscat(out, subpath); +} + +wchar_t *plugin::paths::GetPluginDirRelativePathW(wchar_t *subpath) { + wcscpy(PluginPathWInstance()._temp_path, PluginPathWInstance()._path); + wcscat(PluginPathWInstance()._temp_path, subpath); + return PluginPathWInstance()._temp_path; +} + +char *plugin::paths::GetDirPath(char *substring, ePathDir dir) { + if (dir == DirGame) + return GetGameDirRelativePathA(substring); + else if (dir == DirPlugin) + return GetPluginDirRelativePathA(substring); + strcpy(PluginPathAInstance()._temp_path, substring); + return PluginPathAInstance()._temp_path; + +} + +wchar_t *plugin::paths::GetDirPath(wchar_t *substring, ePathDir dir) { + if (dir == DirGame) + return GetGameDirRelativePathW(substring); + else if (dir == DirPlugin) + return GetPluginDirRelativePathW(substring); + wcscpy(PluginPathWInstance()._temp_path, substring); + return PluginPathWInstance()._temp_path; +} + +char *plugin::paths::GetPluginFileName(char *out) { + return strcpy(out, PluginPathAInstance()._filename); +} + +wchar_t *plugin::paths::GetPluginFileName(wchar_t *out) { + return wcscpy(out, PluginPathWInstance()._filename); +} + +char *plugin::paths::GetPluginFileNameA() { + strcpy(PluginPathAInstance()._temp_path, PluginPathAInstance()._filename); + return PluginPathAInstance()._temp_path; +} + +wchar_t *plugin::paths::GetPluginFileNameW() { + wcscpy(PluginPathWInstance()._temp_path, PluginPathWInstance()._filename); + return PluginPathWInstance()._temp_path; +} diff --git a/third-party/plugin-sdk/shared/extensions/Paths.h b/third-party/plugin-sdk/shared/extensions/Paths.h new file mode 100644 index 00000000..0116f833 --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/Paths.h @@ -0,0 +1,58 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#define PLUGIN_PATH_MAX 260 + +namespace plugin { + class paths { + public: + enum ePathDir { + DirAbsolute, + DirGame, + DirPlugin + }; + + static void GetGameDirPathA(char *out); + static char *GetGameDirPathA(); + static void GetPluginDirPathA(char *out); + static char *GetPluginDirPathA(); + + static void GetGameDirPathW(wchar_t *out); + static wchar_t *GetGameDirPathW(); + static void GetPluginDirPathW(wchar_t *out); + static wchar_t *GetPluginDirPathW(); + + static void GetGameDirRelativePathA(char *out, char *substring); + static char *GetGameDirRelativePathA(char *substring); + static void GetPluginDirRelativePathA(char *out, char *substring); + static char *GetPluginDirRelativePathA(char *substring); + + static void GetGameDirRelativePathW(wchar_t *out, wchar_t *subpath); + static wchar_t *GetGameDirRelativePathW(wchar_t *subpath); + static void GetPluginDirRelativePathW(wchar_t *out, wchar_t *subpath); + static wchar_t *GetPluginDirRelativePathW(wchar_t *subpath); + + static char *GetDirPath(char *substring, ePathDir dir); + static wchar_t *GetDirPath(wchar_t *substring, ePathDir dir); + + static char *GetPluginFileName(char *out); + static wchar_t *GetPluginFileName(wchar_t *out); + static char *GetPluginFileNameA(); + static wchar_t *GetPluginFileNameW(); + }; +} + +#ifdef UNICODE +#define GAME_PATH(a) (plugin::paths::GetGameDirRelativePathW(a)) +#define PLUGIN_PATH(a) (plugin::paths::GetPluginDirRelativePathW(a)) +#define PLUGIN_FILENAME (plugin::paths::GetPluginFileNameW()) +#else +#define GAME_PATH(a) (plugin::paths::GetGameDirRelativePathA(a)) +#define PLUGIN_PATH(a) (plugin::paths::GetPluginDirRelativePathA(a)) +#define PLUGIN_FILENAME (plugin::paths::GetPluginFileNameA()) +#endif diff --git a/third-party/plugin-sdk/shared/extensions/PoolIterator.h b/third-party/plugin-sdk/shared/extensions/PoolIterator.h new file mode 100644 index 00000000..d213c5e1 --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/PoolIterator.h @@ -0,0 +1,68 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#ifndef GTA2 +#include "CPool.h" + +namespace plugin { + +template +class PoolIterator { + CPool *pool; + int poolSlotIndex; +public: + static int FindNextActiveSlotInPool(CPool *_Pool, int _CurrentSlot) { + for (int i = _CurrentSlot; i < _Pool->m_nSize; ++i) { + if (!_Pool->IsFreeSlotAtIndex(i)) { + return i; + } + } + return -1; + } + + PoolIterator(CPool *_Pool, int _Index) { + pool = _Pool; + poolSlotIndex = _Index; + } + + PoolIterator operator++() { + poolSlotIndex = FindNextActiveSlotInPool(pool, poolSlotIndex + 1); + return *this; + } + + bool operator!=(const PoolIterator &other) { + return poolSlotIndex != other.poolSlotIndex; + } + + T1* operator*() const { + return reinterpret_cast(&pool->m_pObjects[poolSlotIndex]); + } +}; + +} + +template +plugin::PoolIterator begin(CPool &pool) { + return plugin::PoolIterator(&pool, plugin::PoolIterator::FindNextActiveSlotInPool(&pool, 0)); +} + +template +plugin::PoolIterator end(CPool &pool) { + return plugin::PoolIterator(&pool, -1); +} + +template +plugin::PoolIterator begin(CPool *pool) { + return plugin::PoolIterator(pool, plugin::PoolIterator::FindNextActiveSlotInPool(pool, 0)); +} + +template +plugin::PoolIterator end(CPool *pool) { + return plugin::PoolIterator(pool, -1); +} +#endif diff --git a/third-party/plugin-sdk/shared/extensions/Screen.cpp b/third-party/plugin-sdk/shared/extensions/Screen.cpp new file mode 100644 index 00000000..bf497c9b --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/Screen.cpp @@ -0,0 +1,123 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "Screen.h" + +#ifdef GTA2 +#include "GBH.h" +#else +#include "RenderWare.h" +#endif + +#define PLUGIN_SCREEN_RESOLUTION_DEFAULT 1080.0f + +float gScreenResolution = PLUGIN_SCREEN_RESOLUTION_DEFAULT; + +float plugin::screen::GetCoord(float a) { + float base = GetScreenWidth() > GetScreenHeight() ? static_cast(GetScreenHeight()) : static_cast(GetScreenWidth()); + return static_cast(static_cast(a * base / gScreenResolution)); +} + +float plugin::screen::GetCoord(float a, eScreenCoordTranslationSide side) { + switch (side) { + case SIDE_ANY: + return GetCoord(a); + case SIDE_LEFT: + return GetCoordLeft(a); + case SIDE_RIGHT: + return GetCoordRight(a); + case SIDE_TOP: + return GetCoordTop(a); + case SIDE_BOTTOM: + return GetCoordBottom(a); + case SIDE_CENTER_LEFT: + return GetCoordCenterLeft(a); + case SIDE_CENTER_RIGHT: + return GetCoordCenterRight(a); + case SIDE_CENTER_UP: + return GetCoordCenterUp(a); + case SIDE_CENTER_DOWN: + return GetCoordCenterDown(a); + } + return 0.0f; +} + +float plugin::screen::GetCoordLeft(float a) { + return GetCoord(a); +} + +float plugin::screen::GetCoordRight(float a) { + return GetScreenWidth() - GetCoord(a); +} + +float plugin::screen::GetCoordTop(float a) { + return GetCoord(a); +} + +float plugin::screen::GetCoordBottom(float a) { + return GetScreenHeight() - GetCoord(a); +} + +float plugin::screen::GetCoordCenterLeft(float a) { + return GetScreenCenterX() - GetCoord(a); +} + +float plugin::screen::GetCoordCenterRight(float a) { + return GetScreenCenterX() + GetCoord(a); +} + +float plugin::screen::GetCoordCenterUp(float a) { + return GetScreenCenterY() - GetCoord(a); +} + +float plugin::screen::GetCoordCenterDown(float a) { + return GetScreenCenterY() + GetCoord(a); +} + +float plugin::screen::GetMultiplier(float a) { + float base = GetScreenWidth() > GetScreenHeight() ? static_cast(GetScreenHeight()) : static_cast(GetScreenWidth()); + return a * base / gScreenResolution; +} + +void plugin::screen::SetBaseResolution(float res) { + gScreenResolution = res; +} + +float plugin::screen::GetBaseResolution() { + return gScreenResolution; +} + +float plugin::screen::GetScreenHeight() { +#ifdef GTA2 + return static_cast(window_height); +#else + return static_cast(RsGlobal.maximumHeight); +#endif +} + +float plugin::screen::GetScreenWidth() { +#ifdef GTA2 + return static_cast(window_width); +#else + return static_cast(RsGlobal.maximumWidth); +#endif +} + +float plugin::screen::GetScreenCenterX() { + return GetScreenWidth() / 2.0f; +} + +float plugin::screen::GetScreenCenterY() { + return GetScreenHeight() / 2.0f; +} + +float plugin::screen::GetScreenMaxX() { + return GetScreenWidth(); +} + +float plugin::screen::GetScreenMaxY() { + return GetScreenHeight(); +} diff --git a/third-party/plugin-sdk/shared/extensions/Screen.h b/third-party/plugin-sdk/shared/extensions/Screen.h new file mode 100644 index 00000000..911be50d --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/Screen.h @@ -0,0 +1,66 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "CRect.h" + +namespace plugin { + class screen { + public: + enum eScreenCoordTranslationSide { + SIDE_ANY, + SIDE_LEFT, + SIDE_RIGHT, + SIDE_TOP, + SIDE_BOTTOM, + SIDE_CENTER_LEFT, + SIDE_CENTER_RIGHT, + SIDE_CENTER_UP, + SIDE_CENTER_DOWN + }; + + static float GetCoord(float a, eScreenCoordTranslationSide side); + static float GetCoord(float a); + static float GetCoordLeft(float a); + static float GetCoordRight(float a); + static float GetCoordTop(float a); + static float GetCoordBottom(float a); + static float GetCoordCenterLeft(float a); + static float GetCoordCenterRight(float a); + static float GetCoordCenterUp(float a); + static float GetCoordCenterDown(float a); + static float GetMultiplier(float a); + static void SetBaseResolution(float res); + static float GetBaseResolution(); + static float GetScreenHeight(); + static float GetScreenWidth(); + static float GetScreenCenterX(); + static float GetScreenCenterY(); + static float GetScreenMaxX(); + static float GetScreenMaxY(); + }; +} + +#define SCREEN_COORD(a) (plugin::screen::GetCoord(a)) +#define SCREEN_COORD_LEFT(a) (plugin::screen::GetCoordLeft(a)) +#define SCREEN_COORD_RIGHT(a) (plugin::screen::GetCoordRight(a)) +#define SCREEN_COORD_TOP(a) (plugin::screen::GetCoordTop(a)) +#define SCREEN_COORD_BOTTOM(a) (plugin::screen::GetCoordBottom(a)) +#define SCREEN_COORD_CENTER_X (plugin::screen::GetScreenCenterX()) +#define SCREEN_COORD_CENTER_Y (plugin::screen::GetScreenCenterY()) +#define SCREEN_COORD_CENTER_LEFT(a) (plugin::screen::GetCoordCenterLeft(a)) +#define SCREEN_COORD_CENTER_RIGHT(a) (plugin::screen::GetCoordCenterRight(a)) +#define SCREEN_COORD_CENTER_UP(a) (plugin::screen::GetCoordCenterUp(a)) +#define SCREEN_COORD_CENTER_DOWN(a) (plugin::screen::GetCoordCenterDown(a)) +#define SCREEN_COORD_MAX_X (plugin::screen::GetScreenMaxX()) +#define SCREEN_COORD_MAX_Y (plugin::screen::GetScreenMaxY()) +#define SCREEN_WIDTH (plugin::screen::GetScreenWidth()) +#define SCREEN_HEIGHT (plugin::screen::GetScreenHeight()) +#define SCREEN_MULTIPLIER(a) (plugin::screen::GetMultiplier(a)) +#define SCREEN_RECT(left, top, right, bottom) (CRect(SCREEN_COORD(left), SCREEN_COORD(top), SCREEN_COORD(right), SCREEN_COORD(bottom))) +#define SCREEN_RECT_RIGHT(left, top, right, bottom) (CRect(SCREEN_COORD_RIGHT(left), SCREEN_COORD(top), SCREEN_COORD_RIGHT(right), SCREEN_COORD(bottom))) +#define SCREEN_RECT_BOTTOM(left, top, right, bottom) (CRect(SCREEN_COORD(left), SCREEN_COORD_BOTTOM(top), SCREEN_COORD(right), SCREEN_COORD_BOTTOM(bottom))) +#define SCREEN_RECT_BOTTOM_RIGHT(left, top, right, bottom) (CRect(SCREEN_COORD_RIGHT(left), SCREEN_COORD_BOTTOM(top), SCREEN_COORD_RIGHT(right), SCREEN_COORD_BOTTOM(bottom))) diff --git a/third-party/plugin-sdk/shared/extensions/ScriptCommands.cpp b/third-party/plugin-sdk/shared/extensions/ScriptCommands.cpp new file mode 100644 index 00000000..757b0548 --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/ScriptCommands.cpp @@ -0,0 +1,230 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ + +#ifndef GTA2 +#include "ScriptCommands.h" +#include "Error.h" +#include "CPools.h" + +using namespace plugin; + +#ifdef GTASA +#define SCRIPT_COMMANDS_LVAR_MAX_INDEX 31 +#else +#define SCRIPT_COMMANDS_LVAR_MAX_INDEX 15 +#endif + +scripting::ScriptCode::VarToSet::VarToSet(unsigned int _varIndex, void *_pVar, ScriptResultVarType _varType) { + varIndex = _varIndex; + pVar = _pVar; + varType = _varType; +} + +scripting::ScriptCode::ScriptCode(short commandId) { + capacity = 32; + data = new unsigned char[32]; + size = 0; + varIndexCounter = 0; + if (commandId != -1) { + AddBytes(reinterpret_cast(&commandId), 2); + } +} + +scripting::ScriptCode::~ScriptCode() { + delete[] data; +} + +void scripting::ScriptCode::AddParameterDescription(unsigned char paramType) { + AddBytes(¶mType, 1); +} + +void scripting::ScriptCode::AddBytes(unsigned char *bytes, unsigned int count) { + unsigned int newSize = size + count; + if (newSize > capacity) { + while (newSize > capacity) + capacity += 32; + unsigned char *newData = new unsigned char[capacity]; + memcpy(newData, data, size); + delete[] data; + data = newData; + } + memcpy(&data[size], bytes, count); + size = newSize; +} + +unsigned char *scripting::ScriptCode::GetData() { return data; }; + +void scripting::ScriptCode::SaveResultVariables(CRunningScript *script) { + for (auto &varToSet : varsToSet) { + if (varToSet.varType == SCRIPT_RESULT_VAR_NUMBER) { + *reinterpret_cast(varToSet.pVar) = script->m_aLocalVars[varToSet.varIndex].uParam; + } + else if (varToSet.varType == SCRIPT_RESULT_VAR_STRING) { + char *pStr = reinterpret_cast(varToSet.pVar); + strncpy(pStr, reinterpret_cast(&script->m_aLocalVars[varToSet.varIndex].iParam), 15); + pStr[15] = '\0'; + } + else if (varToSet.varType == SCRIPT_RESULT_VAR_PED) { + CPed *result = nullptr; + if (script->m_aLocalVars[varToSet.varIndex].iParam != -1) + result = CPools::GetPed(script->m_aLocalVars[varToSet.varIndex].iParam); + *reinterpret_cast(varToSet.pVar) = result; + } + else if (varToSet.varType == SCRIPT_RESULT_VAR_VEHICLE) { + CVehicle *result = nullptr; + if (script->m_aLocalVars[varToSet.varIndex].iParam != -1) + result = CPools::GetVehicle(script->m_aLocalVars[varToSet.varIndex].iParam); + *reinterpret_cast(varToSet.pVar) = result; + } + else if (varToSet.varType == SCRIPT_RESULT_VAR_OBJECT) { + CObject *result = nullptr; + if (script->m_aLocalVars[varToSet.varIndex].iParam != -1) + result = CPools::GetObject(script->m_aLocalVars[varToSet.varIndex].iParam); + *reinterpret_cast(varToSet.pVar) = result; + } + } +} + +void scripting::ScriptCode::operator<<(char n) { AddParameterDescription(SCRIPTPARAM_STATIC_INT_8BITS); AddBytes(reinterpret_cast(&n), 1); } +void scripting::ScriptCode::operator<<(unsigned char n) { AddParameterDescription(SCRIPTPARAM_STATIC_INT_8BITS); AddBytes(reinterpret_cast(&n), 1); } +void scripting::ScriptCode::operator<<(short n) { AddParameterDescription(SCRIPTPARAM_STATIC_INT_16BITS); AddBytes(reinterpret_cast(&n), 2); } +void scripting::ScriptCode::operator<<(unsigned short n) { AddParameterDescription(SCRIPTPARAM_STATIC_INT_16BITS); AddBytes(reinterpret_cast(&n), 2); } +void scripting::ScriptCode::operator<<(int n) { AddParameterDescription(SCRIPTPARAM_STATIC_INT_32BITS); AddBytes(reinterpret_cast(&n), 4); } +void scripting::ScriptCode::operator<<(unsigned int n) { AddParameterDescription(SCRIPTPARAM_STATIC_INT_32BITS); AddBytes(reinterpret_cast(&n), 4); } +#ifdef GTA3 +void scripting::ScriptCode::operator<<(float n) { + AddParameterDescription(SCRIPTPARAM_STATIC_FLOAT); + short s = static_cast(n * 16); + AddBytes(reinterpret_cast(&s), 2); +} + +void scripting::ScriptCode::operator<<(double n) { + AddParameterDescription(SCRIPTPARAM_STATIC_FLOAT); + short s = static_cast(static_cast(n) * 16); + AddBytes(reinterpret_cast(&s), 2); +} +#else +void scripting::ScriptCode::operator<<(float n) { AddParameterDescription(SCRIPTPARAM_STATIC_FLOAT); AddBytes(reinterpret_cast(&n), 4); } +void scripting::ScriptCode::operator<<(double n) { AddParameterDescription(SCRIPTPARAM_STATIC_FLOAT); float f = static_cast(n); AddBytes(reinterpret_cast(&f), 4); } +#endif +void scripting::ScriptCode::operator<<(ScriptCommandEndParameter) { AddParameterDescription(SCRIPTPARAM_END_OF_ARGUMENTS); } + +#ifdef GTASA +void scripting::ScriptCode::operator<<(char *str) { + AddParameterDescription(SCRIPTPARAM_STATIC_PASCAL_STRING); + unsigned int length = strlen(str); + AddParameterDescription(length); + AddBytes(reinterpret_cast(str), length); +} + +void scripting::ScriptCode::operator<<(const char *str) { + AddParameterDescription(SCRIPTPARAM_STATIC_PASCAL_STRING); + unsigned int length = strlen(str); + AddParameterDescription(length); + AddBytes(reinterpret_cast(const_cast(str)), length); +} + +void scripting::ScriptCode::operator<<(char(*p)[16]) { + AddParameterDescription(SCRIPTPARAM_LOCAL_LONG_STRING_VARIABLE); + if (varIndexCounter >= 28) + Error("ScriptCode::operator<<(char **p): reached local var limit"); + varsToSet.emplace_back(varIndexCounter, reinterpret_cast(*p), SCRIPT_RESULT_VAR_STRING); + AddBytes(reinterpret_cast(&varIndexCounter), 2); + varIndexCounter += 4; +} +#else +void scripting::ScriptCode::operator<<(char *str) { + static char tmpString[8]; + strncpy(tmpString, str, 7); + tmpString[7] = '\0'; + AddBytes(reinterpret_cast(tmpString), 8); +} + +void scripting::ScriptCode::operator<<(const char *str) { + static char tmpString[8]; + strncpy(tmpString, str, 7); + tmpString[7] = '\0'; + AddBytes(reinterpret_cast(const_cast(tmpString)), 8); +} +#endif + +void scripting::ScriptCode::operator<<(float *p) { + AddParameterDescription(SCRIPTPARAM_LOCAL_NUMBER_VARIABLE); + if (varIndexCounter >= SCRIPT_COMMANDS_LVAR_MAX_INDEX) + Error("ScriptCode::operator<<(float *p): reached local var limit"); + varsToSet.emplace_back(varIndexCounter, reinterpret_cast(p), SCRIPT_RESULT_VAR_NUMBER); + AddBytes(reinterpret_cast(&varIndexCounter), 2); + ++varIndexCounter; +} + +void scripting::ScriptCode::operator<<(int *p) { + AddParameterDescription(SCRIPTPARAM_LOCAL_NUMBER_VARIABLE); + if (varIndexCounter >= SCRIPT_COMMANDS_LVAR_MAX_INDEX) + Error("ScriptCode::operator<<(int *p): reached local var limit"); + varsToSet.emplace_back(varIndexCounter, reinterpret_cast(p), SCRIPT_RESULT_VAR_NUMBER); + AddBytes(reinterpret_cast(&varIndexCounter), 2); + ++varIndexCounter; +} + +void scripting::ScriptCode::operator<<(unsigned int *p) { + AddParameterDescription(SCRIPTPARAM_LOCAL_NUMBER_VARIABLE); + if (varIndexCounter >= SCRIPT_COMMANDS_LVAR_MAX_INDEX) + Error("ScriptCode::operator<<(unsigned int *p): reached local var limit"); + varsToSet.emplace_back(varIndexCounter, reinterpret_cast(p), SCRIPT_RESULT_VAR_NUMBER); + AddBytes(reinterpret_cast(&varIndexCounter), 2); + ++varIndexCounter; +} + +void scripting::ScriptCode::operator<<(CPed *n) { + if (!n) + operator<<(-1); + else + operator<<(CPools::GetPedRef(n)); +} + +void scripting::ScriptCode::operator<<(CVehicle *n) { + if (!n) + operator<<(-1); + else + operator<<(CPools::GetVehicleRef(n)); +} + +void scripting::ScriptCode::operator<<(CObject *n) { + if (!n) + operator<<(-1); + else + operator<<(CPools::GetObjectRef(n)); +} + +void scripting::ScriptCode::operator<<(CPed **p) { + AddParameterDescription(SCRIPTPARAM_LOCAL_NUMBER_VARIABLE); + if (varIndexCounter >= SCRIPT_COMMANDS_LVAR_MAX_INDEX) + Error("ScriptCode::operator<<(CPed **p): reached local var limit"); + varsToSet.emplace_back(varIndexCounter, reinterpret_cast(p), SCRIPT_RESULT_VAR_PED); + AddBytes(reinterpret_cast(&varIndexCounter), 2); + ++varIndexCounter; +} + +void scripting::ScriptCode::operator<<(CVehicle **p) { + AddParameterDescription(SCRIPTPARAM_LOCAL_NUMBER_VARIABLE); + if (varIndexCounter >= SCRIPT_COMMANDS_LVAR_MAX_INDEX) + Error("ScriptCode::operator<<(CVehicle **p): reached local var limit"); + varsToSet.emplace_back(varIndexCounter, reinterpret_cast(p), SCRIPT_RESULT_VAR_VEHICLE); + AddBytes(reinterpret_cast(&varIndexCounter), 2); + ++varIndexCounter; +} + +void scripting::ScriptCode::operator<<(CObject **p) { + AddParameterDescription(SCRIPTPARAM_LOCAL_NUMBER_VARIABLE); + if (varIndexCounter >= SCRIPT_COMMANDS_LVAR_MAX_INDEX) + Error("ScriptCode::operator<<(CObject **p): reached local var limit"); + varsToSet.emplace_back(varIndexCounter, reinterpret_cast(p), SCRIPT_RESULT_VAR_OBJECT); + AddBytes(reinterpret_cast(&varIndexCounter), 2); + ++varIndexCounter; +} + +#endif diff --git a/third-party/plugin-sdk/shared/extensions/ScriptCommands.h b/third-party/plugin-sdk/shared/extensions/ScriptCommands.h new file mode 100644 index 00000000..d11ad2d3 --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/ScriptCommands.h @@ -0,0 +1,149 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#ifndef GTA2 +#include "CRunningScript.h" +#include "scripting/ScriptCommandNames.h" +#include +#include + +class CPed; +class CVehicle; +class CObject; + +namespace plugin { + +class scripting { + +public: + +enum ScriptCommandEndParameter { + END_PARAMETER +}; + +private: + +enum ScriptResultVarType { + SCRIPT_RESULT_VAR_NUMBER, + SCRIPT_RESULT_VAR_STRING, + SCRIPT_RESULT_VAR_PED, + SCRIPT_RESULT_VAR_VEHICLE, + SCRIPT_RESULT_VAR_OBJECT +}; + +class ScriptCode { + unsigned char *data; + unsigned int capacity; + unsigned int size; + + struct VarToSet { + unsigned int varIndex; + void *pVar; + ScriptResultVarType varType; + + VarToSet(unsigned int _varIndex, void *_pVar, ScriptResultVarType _varType); + }; + + std::vector varsToSet; + unsigned short varIndexCounter; + +public: + ScriptCode(short commandId = -1); + ~ScriptCode(); + void AddParameterDescription(unsigned char paramType); + void AddBytes(unsigned char *bytes, unsigned int count); + unsigned char *GetData(); + void SaveResultVariables(CRunningScript *script); + void operator<<(char n); + void operator<<(unsigned char n); + void operator<<(short n); + void operator<<(unsigned short n); + void operator<<(int n); + void operator<<(unsigned int n); + void operator<<(float n); + void operator<<(double n); + void operator<<(ScriptCommandEndParameter); + void operator<<(char *str); + void operator<<(const char *str); + void operator<<(float *p); + void operator<<(int *p); + void operator<<(unsigned int *p); +#ifdef GTASA + void operator<<(char(*p)[16]); +#endif + void operator<<(CPed *n); + void operator<<(CVehicle *n); + void operator<<(CObject *n); + void operator<<(CPed **p); + void operator<<(CVehicle **p); + void operator<<(CObject **p); + + template + void Pack(T value) { + operator<<(value); + } + + template + void Pack(First firstValue, Rest... rest) { + Pack(firstValue); + Pack(rest...); + } + + void Pack() {} +}; + +public: + +template +static bool CallCommandById(unsigned int commandId, ArgTypes... arguments) { + // create our 'script' object + static CRunningScript script; + memset(&script, 0, sizeof(CRunningScript)); +#ifdef GTASA + script.Init(); +#else + script.m_bWastedBustedCheck = true; +#endif + strcpy(script.m_szName, "plg-sdk"); + script.m_bIsMission = false; + script.m_bUseMissionCleanup = false; + script.m_bNotFlag = (commandId >> 15) & 1; + // our script code + ScriptCode code(commandId); + // for all arguments: add them to script code + code.Pack(arguments...); +#ifdef GTASA + script.m_pBaseIP = script.m_pCurrentIP = code.GetData(); +#else + script.m_nIp = reinterpret_cast(code.GetData()) - reinterpret_cast(CRunningScript::GetScriptSpaceBase()); +#endif + script.ProcessOneCommand(); + code.SaveResultVariables(&script); + return script.m_bCondResult ? true : false; +} + +template +static bool CallCommandById(plugin::Commands commandId, ArgTypes... arguments) { + return CallCommandById(static_cast(commandId) - 0x10000, arguments...); +} + +}; + +template +bool Command(ArgTypes... arguments) { + return scripting::CallCommandById(static_cast(CommandId) - 0x10000, arguments...); +} + +template +bool Command(ArgTypes... arguments) { + return scripting::CallCommandById(CommandId, arguments...); +} + +}; + +#endif diff --git a/third-party/plugin-sdk/shared/extensions/Shader.cpp b/third-party/plugin-sdk/shared/extensions/Shader.cpp new file mode 100644 index 00000000..62f3807f --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/Shader.cpp @@ -0,0 +1,410 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "Shader.h" +#include "plugin.h" + +#ifdef _DX9_SDK_INSTALLED +#ifdef GTASA + +#define PLUGIN_SDK_SHADER_MODULE_VERSION 0x00000001 + +using namespace plugin; + +void Shader::Enable() { + _rwD3D9SetVertexShader(vertexShader); + _rwD3D9SetPixelShader(pixelShader); +} + +void Shader::EnablePSForRwImRender() { + plugin::patch::Nop(0x7FB81D, 5); + plugin::patch::Nop(0x7FB824, 5); + _rwD3D9SetPixelShader(pixelShader); +} + +void Shader::Disable() { + _rwD3D9SetVertexShader(0); + _rwD3D9SetPixelShader(0); +} + +void Shader::DisablePSForRwImRender() { + plugin::patch::SetUChar(0x7FB81D, 0xE8); + plugin::patch::SetUInt(0x7FB81E, 0xFFFFE78E); + plugin::patch::SetUChar(0x7FB824, 0xE8); + plugin::patch::SetUInt(0x7FB825, 0xFFFFE7C7); + _rwD3D9SetPixelShader(0); +} + +void Shader::PackTexture(RxD3D9InstanceData *mesh, unsigned int idx) { + if (mesh && mesh->material && mesh->material->texture) + RwD3D9SetTexture(mesh->material->texture, idx); + else + RwD3D9SetTexture(0, idx); +} + +void Shader::PackTexture(RpMaterial *material, unsigned int idx) { + if (material && material->texture) + RwD3D9SetTexture(material->texture, idx); + else + RwD3D9SetTexture(0, idx); +} + +void Shader::PackTexture(RwTexture *texture, unsigned int idx) { + RwD3D9SetTexture(texture, idx); +} + +char *Shader::CompileShaderFromString(char const *str, char const *Entrypoint, char const *Version, bool bDebug) { + ID3DXBuffer* shader = nullptr; + ID3DXBuffer* errorBuffer = nullptr; + HRESULT hr = D3DXCompileShader(str, strlen(str), NULL, NULL, Entrypoint, Version, bDebug? D3DXSHADER_DEBUG : 0, &shader, &errorBuffer, NULL); + if (errorBuffer) { + plugin::InternalError((char*)errorBuffer->GetBufferPointer()); + errorBuffer->Release(); + } + if (FAILED(hr)) { + plugin::InternalError("Failed to compile shader from text file!"); + return NULL; + } + char *data = new char[shader->GetBufferSize()]; + memcpy(data, shader->GetBufferPointer(), shader->GetBufferSize()); + shader->Release(); + return data; +} + +#ifdef _MSC_VER +Shader::Shader(std::wstring const &Filename, bool bDebug) { + pixelShader = nullptr; + vertexShader = nullptr; + filename_w = Filename; + if (filename_w.size() >= 4 && !filename_w.compare(filename_w.size() - 4, 4, L".fxc")) + filename_w.resize(filename_w.size() - 4); + else if (filename_w.size() >= 3 && !filename_w.compare(filename_w.size() - 3, 3, L".fx")) + filename_w.resize(filename_w.size() - 3); + isWidePath = true; + bDebugCompilation = bDebug; + Load(); +} +#endif + +Shader::Shader(std::string const &Filename, bool bDebug) { + pixelShader = nullptr; + vertexShader = nullptr; + filename = Filename; + if (filename.size() >= 4 && !filename.compare(filename.size() - 4, 4, ".fxc")) + filename.resize(filename.size() - 4); + else if (filename.size() >= 3 && !filename.compare(filename.size() - 3, 3, ".fx")) + filename.resize(filename.size() - 3); +#ifdef _MSC_VER + isWidePath = false; +#endif + bDebugCompilation = bDebug; + Load(); +} + +Shader::~Shader() { + Unload(); +} + +void Shader::Unload() { + if (vertexShader) { + vertexShader->Release(); + vertexShader = nullptr; + } + if (pixelShader) { + pixelShader->Release(); + pixelShader = nullptr; + } +} + +bool Shader::LoadFromSource(std::ifstream &file, bool bDebug) { + if (file.is_open()) { + std::vector lines; + std::string line; + while (std::getline(file, line)) + lines.push_back(line); + // close file + file.close(); + // Find shader info + char entryPoint[128]; + char version[16]; + + // Find fx name + for (auto & line : lines) { + if (!line.compare(0, 3, "#FX")) { + std::string fxLine = line; + size_t strBegin = fxLine.find_first_of('"'); + if (strBegin != std::string::npos) { + size_t strEnd = fxLine.find_first_of('"', strBegin + 1); + if (strEnd != std::string::npos) + name = fxLine.substr(strBegin + 1, strEnd - strBegin - 1); + } + break; + } + } + // Load vertex shader + for (unsigned int i = 0; i < lines.size(); i++) { + if (!lines[i].compare(0, 13, "#VertexShader")) { + if (sscanf(lines[i].c_str(), "%*s %s %s", entryPoint, version) == 2) { + entryPoint[strlen(entryPoint) - 1] = '\0'; + version[strlen(version) - 1] = '\0'; + std::string shaderCode; + for (unsigned int j = i + 1; j < lines.size(); j++) { + if (!lines[j].empty() && lines[j].at(0) == '#') + break; + else { + shaderCode.append(lines[j]); + shaderCode.append("\n"); + } + } + char *vShaderCode = CompileShaderFromString(shaderCode.c_str(), &entryPoint[1], &version[1], bDebug); + if (vShaderCode) { + GetD3DDevice()->CreateVertexShader((DWORD *)vShaderCode, &vertexShader); + delete[] vShaderCode; + } + } + break; + } + } + // Load pixel shader + for (unsigned int i = 0; i < lines.size(); i++) { + if (!lines[i].compare(0, 12, "#PixelShader")) { + if (sscanf(lines[i].c_str(), "%*s %s %s", entryPoint, version) == 2) { + entryPoint[strlen(entryPoint) - 1] = '\0'; + version[strlen(version) - 1] = '\0'; + std::string shaderCode; + for (unsigned int j = i + 1; j < lines.size(); j++) { + if (!lines[j].empty() && lines[j].at(0) == '#') + break; + else { + shaderCode.append(lines[j]); + shaderCode.append("\n"); + } + } + char *pShaderCode = CompileShaderFromString(shaderCode.c_str(), &entryPoint[1], &version[1], bDebug); + if (pShaderCode) { + GetD3DDevice()->CreatePixelShader((DWORD *)pShaderCode, &pixelShader); + delete[] pShaderCode; + } + } + break; + } + } + return true; + } + return false; +} + +bool Shader::LoadFromBinary(std::ifstream &file) { + if (file.is_open()) { + BinaryFileHeader header; + if (file.read(reinterpret_cast(&header), sizeof(BinaryFileHeader))) { + if (!strcmp(header.fxcSignature, "FXC")) { + name = header.name; + if (header.vsSize) { + char *vShaderCode = new char[header.vsSize]; + file.seekg(header.vsOffset); + file.read(vShaderCode, header.vsSize); + GetD3DDevice()->CreateVertexShader((DWORD *)vShaderCode, &vertexShader); + delete[] vShaderCode; + } + if (header.psSize) { + char *pShaderCode = new char[header.psSize]; + file.seekg(header.psOffset); + file.read(pShaderCode, header.psSize); + GetD3DDevice()->CreatePixelShader((DWORD *)pShaderCode, &pixelShader); + delete[] pShaderCode; + } + return true; + } + } + } + return false; +} + +void Shader::Load() { + if (vertexShader) { + vertexShader->Release(); + vertexShader = nullptr; + } + if (pixelShader) { + pixelShader->Release(); + pixelShader = nullptr; + } + // Load file + std::ifstream file; +#ifdef _MSC_VER + if (isWidePath) + file.open(filename_w + std::wstring(L".fx")); + else +#endif + file.open(filename + std::string(".fx")); + if (!LoadFromSource(file, bDebugCompilation)) { +#ifdef _MSC_VER + if (isWidePath) + file.open(filename_w + std::wstring(L".fxc")); + else +#endif + file.open(filename + std::string(".fxc")); + if (!LoadFromBinary(file)) { +#ifdef _MSC_VER + if (isWidePath) + plugin::InternalError(L"Failed to open shader file (\"%s\")", filename_w.c_str()); + else +#endif + plugin::InternalError("Failed to open shader file (\"%s\")", filename.c_str()); + } + } +} + +bool Shader::WriteToBinaryFile(std::ofstream &file) { + if (file.is_open()) { + BinaryFileHeader header; + strcpy(header.fxcSignature, "FXC"); + header.fxcSignature[3] = '\0'; + strcpy(header.pluginSdkSignature, "plugin-sdk"); + header.pluginSdkSignature[10] = header.pluginSdkSignature[11] = '\0'; + header.versionId = PLUGIN_SDK_SHADER_MODULE_VERSION; + memset(header.name, 0, 128); + strcpy(header.name, name.c_str()); + header.vsOffset = header.vsSize = header.psOffset = header.psSize = 0; + if (vertexShader) { + unsigned int functionSize = 0; + vertexShader->GetFunction(NULL, &functionSize); + if (functionSize > 0) { + header.vsOffset = sizeof(BinaryFileHeader); + header.vsSize = functionSize; + } + } + if (pixelShader) { + unsigned int functionSize = 0; + pixelShader->GetFunction(NULL, &functionSize); + if (functionSize > 0) { + if (header.vsOffset != 0) + header.psOffset = header.vsOffset + header.vsSize; + else + header.psOffset = sizeof(BinaryFileHeader); + header.psSize = functionSize; + } + } + file.write(reinterpret_cast(&header), sizeof(BinaryFileHeader)); + if (header.vsSize > 0) { + unsigned int functionSize = 0; + char *data = new char[header.vsSize]; + vertexShader->GetFunction(data, &functionSize); + file.write(data, header.vsSize); + delete[] data; + } + if (header.psSize > 0) { + unsigned int functionSize = 0; + char *data = new char[header.psSize]; + pixelShader->GetFunction(data, &functionSize); + file.write(data, header.psSize); + delete[] data; + } + file.close(); + return true; + } + return false; +} + +bool Shader::SaveToBinary() { +#ifdef _MSC_VER + if (isWidePath) + return SaveToBinary(filename_w + std::wstring(L".fxc")); + else +#endif + return SaveToBinary(filename + std::string(".fxc")); +} + +#ifdef _MSC_VER +bool Shader::SaveToBinary(std::wstring const &Filename) { + std::ofstream file; + file.open(Filename); + return WriteToBinaryFile(file); +} +#endif + +bool Shader::SaveToBinary(std::string const &Filename) { + std::ofstream file; + file.open(Filename); + return WriteToBinaryFile(file); +} + +void Shader::GetWorldViewProj(RpAtomic *atomic, D3DMATRIX *world, D3DMATRIX *view, D3DMATRIX *proj, D3DMATRIX *wvp) { + if (atomic && (world || wvp)) { + RwMatrix *ltm = RwFrameGetLTM(static_cast(atomic->object.object.parent)); + memcpy(world, ltm, sizeof(RwMatrix)); + world->_14 = world->_24 = world->_34 = 0.0f; + world->_44 = 1.0f; + } + if (wvp) { + D3DXMATRIX D3D9ViewProjTransform; + view = GetD3DViewTransform(); + proj = GetD3DProjTransform(); + D3DXMatrixMultiply(&D3D9ViewProjTransform, (D3DXMATRIX*)view, (D3DXMATRIX*)proj); + if (atomic) { + D3DXMATRIX D3D9WorldViewProjTransform; + D3DXMatrixMultiplyTranspose((D3DXMATRIX *)&D3D9WorldViewProjTransform, (D3DXMATRIX *)world, &D3D9ViewProjTransform); + D3DXMatrixTranspose((D3DXMATRIX *)wvp, &D3D9WorldViewProjTransform); + } + else + D3DXMatrixTranspose((D3DXMATRIX *)wvp, &D3D9ViewProjTransform); + } +} + +void Shader::DrawRect(float left, float top, float right, float bottom) { + D3DVIEWPORT9 oldViewport, viewport; + GetD3DDevice()->GetViewport(&oldViewport); + viewport.X = static_cast(left); + viewport.Y = static_cast(top); + viewport.Width = static_cast(right - left); + viewport.Height = static_cast(bottom - top); + viewport.MinZ = 0.0f; + viewport.MaxZ = 1.0f; + GetD3DDevice()->SetViewport(&viewport); + IDirect3DVertexDeclaration9* VertDecl = NULL, *oldVertDecl = NULL; + struct Vertex { + D3DXVECTOR2 pos; + D3DXVECTOR2 tex_coord; + } quad[4]; + quad[0].pos = D3DXVECTOR2(-1, -1); quad[0].tex_coord = D3DXVECTOR2(0, 1); + quad[1].pos = D3DXVECTOR2(-1, 1); quad[1].tex_coord = D3DXVECTOR2(0, 0); + quad[2].pos = D3DXVECTOR2(1, -1); quad[2].tex_coord = D3DXVECTOR2(1, 1); + quad[3].pos = D3DXVECTOR2(1, 1); quad[3].tex_coord = D3DXVECTOR2(1, 0); + const D3DVERTEXELEMENT9 Decl[] = { + { 0, 0, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 }, + { 0, 8, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 }, + D3DDECL_END() + }; + GetD3DDevice()->CreateVertexDeclaration(Decl, &VertDecl); + GetD3DDevice()->GetVertexDeclaration(&oldVertDecl); + GetD3DDevice()->SetVertexDeclaration(VertDecl); + _rwD3D9DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, quad, sizeof(Vertex)); + VertDecl->Release(); + GetD3DDevice()->SetVertexDeclaration(oldVertDecl); + GetD3DDevice()->SetViewport(&oldViewport); +} + +void plugin::Shader::SetMeshTexture(RxD3D9InstanceData* mesh, unsigned int idx) { + if (mesh && mesh->material && mesh->material->texture) + RwD3D9SetTexture(mesh->material->texture, idx); + else + RwD3D9SetTexture(0, idx); +} + +void plugin::Shader::SetMaterialTexture(RpMaterial* material, unsigned int idx) { + if (material && material->texture) + RwD3D9SetTexture(material->texture, idx); + else + RwD3D9SetTexture(0, idx); +} + +void plugin::Shader::SetTexture(RwTexture* texture, unsigned int idx) { + RwD3D9SetTexture(texture, idx); +} + +#endif +#endif diff --git a/third-party/plugin-sdk/shared/extensions/Shader.h b/third-party/plugin-sdk/shared/extensions/Shader.h new file mode 100644 index 00000000..b6ad1755 --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/Shader.h @@ -0,0 +1,110 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#ifdef _DX9_SDK_INSTALLED +#ifdef GTASA +#include +#include "d3dx9.h" +#include +#include +#include +#include +#include "RenderWare.h" +#include "DynamicResource.h" + +namespace plugin { + class Shader : public DynamicResource { + IDirect3DPixelShader9 *pixelShader = nullptr; + IDirect3DVertexShader9 *vertexShader = nullptr; + std::string filename; + #ifdef _MSC_VER + std::wstring filename_w; + bool isWidePath = false; + #endif + bool bDebugCompilation = false; + std::string name; + + public: + struct BinaryFileHeader { + char fxcSignature[4]; // "FXC" 00 + char pluginSdkSignature[12]; // "plugin-sdk" 00 00 + unsigned int versionId; // 0x00000001 + char name[128]; + unsigned int vsOffset; + unsigned int vsSize; + unsigned int psOffset; + unsigned int psSize; + }; + + void Enable(); + void EnablePSForRwImRender(); + void Disable(); + void DisablePSForRwImRender(); + void PackTexture(RxD3D9InstanceData *mesh, unsigned int idx); + void PackTexture(RpMaterial *material, unsigned int idx); + void PackTexture(RwTexture *texture, unsigned int idx); + static char *CompileShaderFromString(char const *str, char const *Entrypoint, char const *Version, bool bDebug); +#ifdef _MSC_VER + Shader(std::wstring const &Filename, bool bDebug = false); +#endif + Shader(std::string const &Filename, bool bDebug = false); + ~Shader(); + void Unload(); + bool LoadFromSource(std::ifstream &file, bool bDebug); + bool LoadFromBinary(std::ifstream &file); + void Load(); + bool WriteToBinaryFile(std::ofstream &file); + bool SaveToBinary(); + +#ifdef _MSC_VER + bool SaveToBinary(std::wstring const &Filename); +#endif + bool SaveToBinary(std::string const &Filename); + static void GetWorldViewProj(RpAtomic *atomic, D3DMATRIX *world, D3DMATRIX *view, D3DMATRIX *proj, D3DMATRIX *wvp); + static void DrawRect(float left, float top, float right, float bottom); + void SetMeshTexture(RxD3D9InstanceData* mesh, unsigned int idx); + void SetMaterialTexture(RpMaterial* material, unsigned int idx); + void SetTexture(RwTexture* texture, unsigned int idx); + + Shader(Shader const &) = delete; + Shader &operator=(Shader const &) = delete; + + template bool PackPSParameters(T& parameters, unsigned int offset = 0) { + unsigned int fsize = sizeof(parameters); + if (fsize % 16) { + unsigned int newSize = fsize + 16 - (fsize % 16); + char *newData = new char[newSize]; + memset(newData, 0, newSize); + memcpy(newData, ¶meters, fsize); + GetD3DDevice()->SetPixelShaderConstantF(offset, (float *)newData, newSize / 16); + delete[] newData; + } + else + GetD3DDevice()->SetPixelShaderConstantF(offset, (float *)¶meters, fsize / 16); + return true; + } + + template bool PackVSParameters(T& parameters, unsigned int offset = 0) { + unsigned int fsize = sizeof(parameters); + if (fsize % 16) { + unsigned int newSize = fsize + 16 - (fsize % 16); + char *newData = new char[newSize]; + memset(newData, 0, newSize); + memcpy(newData, ¶meters, fsize); + GetD3DDevice()->SetVertexShaderConstantF(offset, (float *)newData, newSize / 16); + delete[] newData; + } + else + GetD3DDevice()->SetVertexShaderConstantF(offset, (float *)¶meters, fsize / 16); + return true; + } + }; +} + +#endif +#endif diff --git a/third-party/plugin-sdk/shared/extensions/scripting/ScriptCommandNames.h b/third-party/plugin-sdk/shared/extensions/scripting/ScriptCommandNames.h new file mode 100644 index 00000000..e85c83f7 --- /dev/null +++ b/third-party/plugin-sdk/shared/extensions/scripting/ScriptCommandNames.h @@ -0,0 +1,4133 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +namespace plugin { + +enum class Commands { +#ifdef GTASA + NOP = 0x10000, + WAIT = 0x10001, + GOTO = 0x10002, + SHAKE_CAM = 0x10003, + SET_VAR_INT = 0x10004, + SET_VAR_FLOAT = 0x10005, + SET_LVAR_INT = 0x10006, + SET_LVAR_FLOAT = 0x10007, + ADD_VAL_TO_INT_VAR = 0x10008, + ADD_VAL_TO_FLOAT_VAR = 0x10009, + ADD_VAL_TO_INT_LVAR = 0x1000A, + ADD_VAL_TO_FLOAT_LVAR = 0x1000B, + SUB_VAL_FROM_INT_VAR = 0x1000C, + SUB_VAL_FROM_FLOAT_VAR = 0x1000D, + SUB_VAL_FROM_INT_LVAR = 0x1000E, + SUB_VAL_FROM_FLOAT_LVAR = 0x1000F, + MULT_INT_VAR_BY_VAL = 0x10010, + MULT_FLOAT_VAR_BY_VAL = 0x10011, + MULT_INT_LVAR_BY_VAL = 0x10012, + MULT_FLOAT_LVAR_BY_VAL = 0x10013, + DIV_INT_VAR_BY_VAL = 0x10014, + DIV_FLOAT_VAR_BY_VAL = 0x10015, + DIV_INT_LVAR_BY_VAL = 0x10016, + DIV_FLOAT_LVAR_BY_VAL = 0x10017, + IS_INT_VAR_GREATER_THAN_NUMBER = 0x10018, + IS_INT_LVAR_GREATER_THAN_NUMBER = 0x10019, + IS_NUMBER_GREATER_THAN_INT_VAR = 0x1001A, + IS_NUMBER_GREATER_THAN_INT_LVAR = 0x1001B, + IS_INT_VAR_GREATER_THAN_INT_VAR = 0x1001C, + IS_INT_LVAR_GREATER_THAN_INT_LVAR = 0x1001D, + IS_INT_VAR_GREATER_THAN_INT_LVAR = 0x1001E, + IS_INT_LVAR_GREATER_THAN_INT_VAR = 0x1001F, + IS_FLOAT_VAR_GREATER_THAN_NUMBER = 0x10020, + IS_FLOAT_LVAR_GREATER_THAN_NUMBER = 0x10021, + IS_NUMBER_GREATER_THAN_FLOAT_VAR = 0x10022, + IS_NUMBER_GREATER_THAN_FLOAT_LVAR = 0x10023, + IS_FLOAT_VAR_GREATER_THAN_FLOAT_VAR = 0x10024, + IS_FLOAT_LVAR_GREATER_THAN_FLOAT_LVAR = 0x10025, + IS_FLOAT_VAR_GREATER_THAN_FLOAT_LVAR = 0x10026, + IS_FLOAT_LVAR_GREATER_THAN_FLOAT_VAR = 0x10027, + IS_INT_VAR_GREATER_OR_EQUAL_TO_NUMBER = 0x10028, + IS_INT_LVAR_GREATER_OR_EQUAL_TO_NUMBER = 0x10029, + IS_NUMBER_GREATER_OR_EQUAL_TO_INT_VAR = 0x1002A, + IS_NUMBER_GREATER_OR_EQUAL_TO_INT_LVAR = 0x1002B, + IS_INT_VAR_GREATER_OR_EQUAL_TO_INT_VAR = 0x1002C, + IS_INT_LVAR_GREATER_OR_EQUAL_TO_INT_LVAR = 0x1002D, + IS_INT_VAR_GREATER_OR_EQUAL_TO_INT_LVAR = 0x1002E, + IS_INT_LVAR_GREATER_OR_EQUAL_TO_INT_VAR = 0x1002F, + IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_NUMBER = 0x10030, + IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_NUMBER = 0x10031, + IS_NUMBER_GREATER_OR_EQUAL_TO_FLOAT_VAR = 0x10032, + IS_NUMBER_GREATER_OR_EQUAL_TO_FLOAT_LVAR = 0x10033, + IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_FLOAT_VAR = 0x10034, + IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_FLOAT_LVAR = 0x10035, + IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_FLOAT_LVAR = 0x10036, + IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_FLOAT_VAR = 0x10037, + IS_INT_VAR_EQUAL_TO_NUMBER = 0x10038, + IS_INT_LVAR_EQUAL_TO_NUMBER = 0x10039, + IS_INT_VAR_EQUAL_TO_INT_VAR = 0x1003A, + IS_INT_LVAR_EQUAL_TO_INT_LVAR = 0x1003B, + IS_INT_VAR_EQUAL_TO_INT_LVAR = 0x1003C, + IS_INT_VAR_NOT_EQUAL_TO_NUMBER = 0x1003D, + IS_INT_LVAR_NOT_EQUAL_TO_NUMBER = 0x1003E, + IS_INT_VAR_NOT_EQUAL_TO_INT_VAR = 0x1003F, + IS_INT_LVAR_NOT_EQUAL_TO_INT_LVAR = 0x10040, + IS_INT_VAR_NOT_EQUAL_TO_INT_LVAR = 0x10041, + IS_FLOAT_VAR_EQUAL_TO_NUMBER = 0x10042, + IS_FLOAT_LVAR_EQUAL_TO_NUMBER = 0x10043, + IS_FLOAT_VAR_EQUAL_TO_FLOAT_VAR = 0x10044, + IS_FLOAT_LVAR_EQUAL_TO_FLOAT_LVAR = 0x10045, + IS_FLOAT_VAR_EQUAL_TO_FLOAT_LVAR = 0x10046, + IS_FLOAT_VAR_NOT_EQUAL_TO_NUMBER = 0x10047, + IS_FLOAT_LVAR_NOT_EQUAL_TO_NUMBER = 0x10048, + IS_FLOAT_VAR_NOT_EQUAL_TO_FLOAT_VAR = 0x10049, + IS_FLOAT_LVAR_NOT_EQUAL_TO_FLOAT_LVAR = 0x1004A, + IS_FLOAT_VAR_NOT_EQUAL_TO_FLOAT_LVAR = 0x1004B, + GOTO_IF_TRUE = 0x1004C, + GOTO_IF_FALSE = 0x1004D, + TERMINATE_THIS_SCRIPT = 0x1004E, + START_NEW_SCRIPT = 0x1004F, + GOSUB = 0x10050, + RETURN = 0x10051, + LINE = 0x10052, + CREATE_PLAYER = 0x10053, + GET_PLAYER_COORDINATES = 0x10054, + SET_PLAYER_COORDINATES = 0x10055, + IS_PLAYER_IN_AREA_2D = 0x10056, + IS_PLAYER_IN_AREA_3D = 0x10057, + ADD_INT_VAR_TO_INT_VAR = 0x10058, + ADD_FLOAT_VAR_TO_FLOAT_VAR = 0x10059, + ADD_INT_LVAR_TO_INT_LVAR = 0x1005A, + ADD_FLOAT_LVAR_TO_FLOAT_LVAR = 0x1005B, + ADD_INT_VAR_TO_INT_LVAR = 0x1005C, + ADD_FLOAT_VAR_TO_FLOAT_LVAR = 0x1005D, + ADD_INT_LVAR_TO_INT_VAR = 0x1005E, + ADD_FLOAT_LVAR_TO_FLOAT_VAR = 0x1005F, + SUB_INT_VAR_FROM_INT_VAR = 0x10060, + SUB_FLOAT_VAR_FROM_FLOAT_VAR = 0x10061, + SUB_INT_LVAR_FROM_INT_LVAR = 0x10062, + SUB_FLOAT_LVAR_FROM_FLOAT_LVAR = 0x10063, + SUB_INT_VAR_FROM_INT_LVAR = 0x10064, + SUB_FLOAT_VAR_FROM_FLOAT_LVAR = 0x10065, + SUB_INT_LVAR_FROM_INT_VAR = 0x10066, + SUB_FLOAT_LVAR_FROM_FLOAT_VAR = 0x10067, + MULT_INT_VAR_BY_INT_VAR = 0x10068, + MULT_FLOAT_VAR_BY_FLOAT_VAR = 0x10069, + MULT_INT_LVAR_BY_INT_LVAR = 0x1006A, + MULT_FLOAT_LVAR_BY_FLOAT_LVAR = 0x1006B, + MULT_INT_VAR_BY_INT_LVAR = 0x1006C, + MULT_FLOAT_VAR_BY_FLOAT_LVAR = 0x1006D, + MULT_INT_LVAR_BY_INT_VAR = 0x1006E, + MULT_FLOAT_LVAR_BY_FLOAT_VAR = 0x1006F, + DIV_INT_VAR_BY_INT_VAR = 0x10070, + DIV_FLOAT_VAR_BY_FLOAT_VAR = 0x10071, + DIV_INT_LVAR_BY_INT_LVAR = 0x10072, + DIV_FLOAT_LVAR_BY_FLOAT_LVAR = 0x10073, + DIV_INT_VAR_BY_INT_LVAR = 0x10074, + DIV_FLOAT_VAR_BY_FLOAT_LVAR = 0x10075, + DIV_INT_LVAR_BY_INT_VAR = 0x10076, + DIV_FLOAT_LVAR_BY_FLOAT_VAR = 0x10077, + ADD_TIMED_VAL_TO_FLOAT_VAR = 0x10078, + ADD_TIMED_VAL_TO_FLOAT_LVAR = 0x10079, + ADD_TIMED_FLOAT_VAR_TO_FLOAT_VAR = 0x1007A, + ADD_TIMED_FLOAT_LVAR_TO_FLOAT_LVAR = 0x1007B, + ADD_TIMED_FLOAT_VAR_TO_FLOAT_LVAR = 0x1007C, + ADD_TIMED_FLOAT_LVAR_TO_FLOAT_VAR = 0x1007D, + SUB_TIMED_VAL_FROM_FLOAT_VAR = 0x1007E, + SUB_TIMED_VAL_FROM_FLOAT_LVAR = 0x1007F, + SUB_TIMED_FLOAT_VAR_FROM_FLOAT_VAR = 0x10080, + SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_LVAR = 0x10081, + SUB_TIMED_FLOAT_VAR_FROM_FLOAT_LVAR = 0x10082, + SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_VAR = 0x10083, + SET_VAR_INT_TO_VAR_INT = 0x10084, + SET_LVAR_INT_TO_LVAR_INT = 0x10085, + SET_VAR_FLOAT_TO_VAR_FLOAT = 0x10086, + SET_LVAR_FLOAT_TO_LVAR_FLOAT = 0x10087, + SET_VAR_FLOAT_TO_LVAR_FLOAT = 0x10088, + SET_LVAR_FLOAT_TO_VAR_FLOAT = 0x10089, + SET_VAR_INT_TO_LVAR_INT = 0x1008A, + SET_LVAR_INT_TO_VAR_INT = 0x1008B, + CSET_VAR_INT_TO_VAR_FLOAT = 0x1008C, + CSET_VAR_FLOAT_TO_VAR_INT = 0x1008D, + CSET_LVAR_INT_TO_VAR_FLOAT = 0x1008E, + CSET_LVAR_FLOAT_TO_VAR_INT = 0x1008F, + CSET_VAR_INT_TO_LVAR_FLOAT = 0x10090, + CSET_VAR_FLOAT_TO_LVAR_INT = 0x10091, + CSET_LVAR_INT_TO_LVAR_FLOAT = 0x10092, + CSET_LVAR_FLOAT_TO_LVAR_INT = 0x10093, + ABS_VAR_INT = 0x10094, + ABS_LVAR_INT = 0x10095, + ABS_VAR_FLOAT = 0x10096, + ABS_LVAR_FLOAT = 0x10097, + GENERATE_RANDOM_FLOAT = 0x10098, + GENERATE_RANDOM_INT = 0x10099, + CREATE_CHAR = 0x1009A, + DELETE_CHAR = 0x1009B, + CHAR_WANDER_DIR = 0x1009C, + CHAR_WANDER_RANGE = 0x1009D, + CHAR_FOLLOW_PATH = 0x1009E, + CHAR_SET_IDLE = 0x1009F, + GET_CHAR_COORDINATES = 0x100A0, + SET_CHAR_COORDINATES = 0x100A1, + IS_CHAR_STILL_ALIVE = 0x100A2, + IS_CHAR_IN_AREA_2D = 0x100A3, + IS_CHAR_IN_AREA_3D = 0x100A4, + CREATE_CAR = 0x100A5, + DELETE_CAR = 0x100A6, + CAR_GOTO_COORDINATES = 0x100A7, + CAR_WANDER_RANDOMLY = 0x100A8, + CAR_SET_IDLE = 0x100A9, + GET_CAR_COORDINATES = 0x100AA, + SET_CAR_COORDINATES = 0x100AB, + IS_CAR_STILL_ALIVE = 0x100AC, + SET_CAR_CRUISE_SPEED = 0x100AD, + SET_CAR_DRIVING_STYLE = 0x100AE, + SET_CAR_MISSION = 0x100AF, + IS_CAR_IN_AREA_2D = 0x100B0, + IS_CAR_IN_AREA_3D = 0x100B1, + SPECIAL_0 = 0x100B2, + SPECIAL_1 = 0x100B3, + SPECIAL_2 = 0x100B4, + SPECIAL_3 = 0x100B5, + SPECIAL_4 = 0x100B6, + SPECIAL_5 = 0x100B7, + SPECIAL_6 = 0x100B8, + SPECIAL_7 = 0x100B9, + PRINT_BIG = 0x100BA, + PRINT = 0x100BB, + PRINT_NOW = 0x100BC, + PRINT_SOON = 0x100BD, + CLEAR_PRINTS = 0x100BE, + GET_TIME_OF_DAY = 0x100BF, + SET_TIME_OF_DAY = 0x100C0, + GET_MINUTES_TO_TIME_OF_DAY = 0x100C1, + IS_POINT_ON_SCREEN = 0x100C2, + DEBUG_ON = 0x100C3, + DEBUG_OFF = 0x100C4, + RETURN_TRUE = 0x100C5, + RETURN_FALSE = 0x100C6, + VAR_INT = 0x100C7, + VAR_FLOAT = 0x100C8, + LVAR_INT = 0x100C9, + LVAR_FLOAT = 0x100CA, + START_SCOPE = 0x100CB, + END_SCOPE = 0x100CC, + REPEAT = 0x100CD, + ENDREPEAT = 0x100CE, + IF = 0x100CF, + IFNOT = 0x100D0, + ELSE = 0x100D1, + ENDIF = 0x100D2, + WHILE = 0x100D3, + WHILENOT = 0x100D4, + ENDWHILE = 0x100D5, + ANDOR = 0x100D6, + LAUNCH_MISSION = 0x100D7, + MISSION_HAS_FINISHED = 0x100D8, + STORE_CAR_CHAR_IS_IN = 0x100D9, + STORE_CAR_PLAYER_IS_IN = 0x100DA, + IS_CHAR_IN_CAR = 0x100DB, + IS_PLAYER_IN_CAR = 0x100DC, + IS_CHAR_IN_MODEL = 0x100DD, + IS_PLAYER_IN_MODEL = 0x100DE, + IS_CHAR_IN_ANY_CAR = 0x100DF, + IS_PLAYER_IN_ANY_CAR = 0x100E0, + IS_BUTTON_PRESSED = 0x100E1, + GET_PAD_STATE = 0x100E2, + LOCATE_PLAYER_ANY_MEANS_2D = 0x100E3, + LOCATE_PLAYER_ON_FOOT_2D = 0x100E4, + LOCATE_PLAYER_IN_CAR_2D = 0x100E5, + LOCATE_STOPPED_PLAYER_ANY_MEANS_2D = 0x100E6, + LOCATE_STOPPED_PLAYER_ON_FOOT_2D = 0x100E7, + LOCATE_STOPPED_PLAYER_IN_CAR_2D = 0x100E8, + LOCATE_PLAYER_ANY_MEANS_CHAR_2D = 0x100E9, + LOCATE_PLAYER_ON_FOOT_CHAR_2D = 0x100EA, + LOCATE_PLAYER_IN_CAR_CHAR_2D = 0x100EB, + LOCATE_CHAR_ANY_MEANS_2D = 0x100EC, + LOCATE_CHAR_ON_FOOT_2D = 0x100ED, + LOCATE_CHAR_IN_CAR_2D = 0x100EE, + LOCATE_STOPPED_CHAR_ANY_MEANS_2D = 0x100EF, + LOCATE_STOPPED_CHAR_ON_FOOT_2D = 0x100F0, + LOCATE_STOPPED_CHAR_IN_CAR_2D = 0x100F1, + LOCATE_CHAR_ANY_MEANS_CHAR_2D = 0x100F2, + LOCATE_CHAR_ON_FOOT_CHAR_2D = 0x100F3, + LOCATE_CHAR_IN_CAR_CHAR_2D = 0x100F4, + LOCATE_PLAYER_ANY_MEANS_3D = 0x100F5, + LOCATE_PLAYER_ON_FOOT_3D = 0x100F6, + LOCATE_PLAYER_IN_CAR_3D = 0x100F7, + LOCATE_STOPPED_PLAYER_ANY_MEANS_3D = 0x100F8, + LOCATE_STOPPED_PLAYER_ON_FOOT_3D = 0x100F9, + LOCATE_STOPPED_PLAYER_IN_CAR_3D = 0x100FA, + LOCATE_PLAYER_ANY_MEANS_CHAR_3D = 0x100FB, + LOCATE_PLAYER_ON_FOOT_CHAR_3D = 0x100FC, + LOCATE_PLAYER_IN_CAR_CHAR_3D = 0x100FD, + LOCATE_CHAR_ANY_MEANS_3D = 0x100FE, + LOCATE_CHAR_ON_FOOT_3D = 0x100FF, + LOCATE_CHAR_IN_CAR_3D = 0x10100, + LOCATE_STOPPED_CHAR_ANY_MEANS_3D = 0x10101, + LOCATE_STOPPED_CHAR_ON_FOOT_3D = 0x10102, + LOCATE_STOPPED_CHAR_IN_CAR_3D = 0x10103, + LOCATE_CHAR_ANY_MEANS_CHAR_3D = 0x10104, + LOCATE_CHAR_ON_FOOT_CHAR_3D = 0x10105, + LOCATE_CHAR_IN_CAR_CHAR_3D = 0x10106, + CREATE_OBJECT = 0x10107, + DELETE_OBJECT = 0x10108, + ADD_SCORE = 0x10109, + IS_SCORE_GREATER = 0x1010A, + STORE_SCORE = 0x1010B, + GIVE_REMOTE_CONTROLLED_CAR_TO_PLAYER = 0x1010C, + ALTER_WANTED_LEVEL = 0x1010D, + ALTER_WANTED_LEVEL_NO_DROP = 0x1010E, + IS_WANTED_LEVEL_GREATER = 0x1010F, + CLEAR_WANTED_LEVEL = 0x10110, + SET_DEATHARREST_STATE = 0x10111, + HAS_DEATHARREST_BEEN_EXECUTED = 0x10112, + ADD_AMMO_TO_PLAYER = 0x10113, + ADD_AMMO_TO_CHAR = 0x10114, + ADD_AMMO_TO_CAR = 0x10115, + IS_PLAYER_STILL_ALIVE = 0x10116, + IS_PLAYER_DEAD = 0x10117, + IS_CHAR_DEAD = 0x10118, + IS_CAR_DEAD = 0x10119, + SET_CHAR_THREAT_SEARCH = 0x1011A, + SET_CHAR_THREAT_REACTION = 0x1011B, + SET_CHAR_OBJ_NO_OBJ = 0x1011C, + ORDER_DRIVER_OUT_OF_CAR = 0x1011D, + ORDER_CHAR_TO_DRIVE_CAR = 0x1011E, + ADD_PATROL_POINT = 0x1011F, + IS_PLAYER_IN_GANGZONE = 0x10120, + IS_PLAYER_IN_ZONE = 0x10121, + IS_PLAYER_PRESSING_HORN = 0x10122, + HAS_CHAR_SPOTTED_PLAYER = 0x10123, + ORDER_CHAR_TO_BACKDOOR = 0x10124, + ADD_CHAR_TO_GANG = 0x10125, + IS_CHAR_OBJECTIVE_PASSED = 0x10126, + SET_CHAR_DRIVE_AGGRESSION = 0x10127, + SET_CHAR_MAX_DRIVESPEED = 0x10128, + CREATE_CHAR_INSIDE_CAR = 0x10129, + WARP_PLAYER_FROM_CAR_TO_COORD = 0x1012A, + MAKE_CHAR_DO_NOTHING = 0x1012B, + SET_CHAR_INVINCIBLE = 0x1012C, + SET_PLAYER_INVINCIBLE = 0x1012D, + SET_CHAR_GRAPHIC_TYPE = 0x1012E, + SET_PLAYER_GRAPHIC_TYPE = 0x1012F, + HAS_PLAYER_BEEN_ARRESTED = 0x10130, + STOP_CHAR_DRIVING = 0x10131, + KILL_CHAR = 0x10132, + SET_FAVOURITE_CAR_MODEL_FOR_CHAR = 0x10133, + SET_CHAR_OCCUPATION = 0x10134, + CHANGE_CAR_LOCK = 0x10135, + SHAKE_CAM_WITH_POINT = 0x10136, + IS_CAR_MODEL = 0x10137, + IS_CAR_REMAP = 0x10138, + HAS_CAR_JUST_SUNK = 0x10139, + SET_CAR_NO_COLLIDE = 0x1013A, + IS_CAR_DEAD_IN_AREA_2D = 0x1013B, + IS_CAR_DEAD_IN_AREA_3D = 0x1013C, + IS_TRAILER_ATTACHED = 0x1013D, + IS_CAR_ON_TRAILER = 0x1013E, + HAS_CAR_GOT_WEAPON = 0x1013F, + PARK = 0x10140, + HAS_PARK_FINISHED = 0x10141, + KILL_ALL_PASSENGERS = 0x10142, + SET_CAR_BULLETPROOF = 0x10143, + SET_CAR_FLAMEPROOF = 0x10144, + SET_CAR_ROCKETPROOF = 0x10145, + IS_CARBOMB_ACTIVE = 0x10146, + GIVE_CAR_ALARM = 0x10147, + PUT_CAR_ON_TRAILER = 0x10148, + IS_CAR_CRUSHED = 0x10149, + CREATE_GANG_CAR = 0x1014A, + CREATE_CAR_GENERATOR = 0x1014B, + SWITCH_CAR_GENERATOR = 0x1014C, + ADD_PAGER_MESSAGE = 0x1014D, + DISPLAY_ONSCREEN_TIMER = 0x1014E, + CLEAR_ONSCREEN_TIMER = 0x1014F, + DISPLAY_ONSCREEN_COUNTER = 0x10150, + CLEAR_ONSCREEN_COUNTER = 0x10151, + SET_ZONE_CAR_INFO = 0x10152, + IS_CHAR_IN_GANG_ZONE = 0x10153, + IS_CHAR_IN_ZONE = 0x10154, + SET_CAR_DENSITY = 0x10155, + SET_PED_DENSITY = 0x10156, + POINT_CAMERA_AT_PLAYER = 0x10157, + POINT_CAMERA_AT_CAR = 0x10158, + POINT_CAMERA_AT_CHAR = 0x10159, + RESTORE_CAMERA = 0x1015A, + SHAKE_PAD = 0x1015B, + SET_ZONE_PED_INFO = 0x1015C, + SET_TIME_SCALE = 0x1015D, + IS_CAR_IN_AIR = 0x1015E, + SET_FIXED_CAMERA_POSITION = 0x1015F, + POINT_CAMERA_AT_POINT = 0x10160, + ADD_BLIP_FOR_CAR_OLD = 0x10161, + ADD_BLIP_FOR_CHAR_OLD = 0x10162, + ADD_BLIP_FOR_OBJECT_OLD = 0x10163, + REMOVE_BLIP = 0x10164, + CHANGE_BLIP_COLOUR = 0x10165, + DIM_BLIP = 0x10166, + ADD_BLIP_FOR_COORD_OLD = 0x10167, + CHANGE_BLIP_SCALE = 0x10168, + SET_FADING_COLOUR = 0x10169, + DO_FADE = 0x1016A, + GET_FADING_STATUS = 0x1016B, + ADD_HOSPITAL_RESTART = 0x1016C, + ADD_POLICE_RESTART = 0x1016D, + OVERRIDE_NEXT_RESTART = 0x1016E, + DRAW_SHADOW = 0x1016F, + GET_PLAYER_HEADING = 0x10170, + SET_PLAYER_HEADING = 0x10171, + GET_CHAR_HEADING = 0x10172, + SET_CHAR_HEADING = 0x10173, + GET_CAR_HEADING = 0x10174, + SET_CAR_HEADING = 0x10175, + GET_OBJECT_HEADING = 0x10176, + SET_OBJECT_HEADING = 0x10177, + IS_PLAYER_TOUCHING_OBJECT = 0x10178, + IS_CHAR_TOUCHING_OBJECT = 0x10179, + SET_PLAYER_AMMO = 0x1017A, + SET_CHAR_AMMO = 0x1017B, + SET_CAR_AMMO = 0x1017C, + LOAD_CAMERA_SPLINE = 0x1017D, + MOVE_CAMERA_ALONG_SPLINE = 0x1017E, + GET_CAMERA_POSITION_ALONG_SPLINE = 0x1017F, + DECLARE_MISSION_FLAG = 0x10180, + DECLARE_MISSION_FLAG_FOR_CONTACT = 0x10181, + DECLARE_BASE_BRIEF_ID_FOR_CONTACT = 0x10182, + IS_PLAYER_HEALTH_GREATER = 0x10183, + IS_CHAR_HEALTH_GREATER = 0x10184, + IS_CAR_HEALTH_GREATER = 0x10185, + ADD_BLIP_FOR_CAR = 0x10186, + ADD_BLIP_FOR_CHAR = 0x10187, + ADD_BLIP_FOR_OBJECT = 0x10188, + ADD_BLIP_FOR_CONTACT_POINT = 0x10189, + ADD_BLIP_FOR_COORD = 0x1018A, + CHANGE_BLIP_DISPLAY = 0x1018B, + ADD_ONE_OFF_SOUND = 0x1018C, + ADD_CONTINUOUS_SOUND = 0x1018D, + REMOVE_SOUND = 0x1018E, + IS_CAR_STUCK_ON_ROOF = 0x1018F, + ADD_UPSIDEDOWN_CAR_CHECK = 0x10190, + REMOVE_UPSIDEDOWN_CAR_CHECK = 0x10191, + SET_CHAR_OBJ_WAIT_ON_FOOT = 0x10192, + SET_CHAR_OBJ_FLEE_ON_FOOT_TILL_SAFE = 0x10193, + SET_CHAR_OBJ_GUARD_SPOT = 0x10194, + SET_CHAR_OBJ_GUARD_AREA = 0x10195, + SET_CHAR_OBJ_WAIT_IN_CAR = 0x10196, + IS_PLAYER_IN_AREA_ON_FOOT_2D = 0x10197, + IS_PLAYER_IN_AREA_IN_CAR_2D = 0x10198, + IS_PLAYER_STOPPED_IN_AREA_2D = 0x10199, + IS_PLAYER_STOPPED_IN_AREA_ON_FOOT_2D = 0x1019A, + IS_PLAYER_STOPPED_IN_AREA_IN_CAR_2D = 0x1019B, + IS_PLAYER_IN_AREA_ON_FOOT_3D = 0x1019C, + IS_PLAYER_IN_AREA_IN_CAR_3D = 0x1019D, + IS_PLAYER_STOPPED_IN_AREA_3D = 0x1019E, + IS_PLAYER_STOPPED_IN_AREA_ON_FOOT_3D = 0x1019F, + IS_PLAYER_STOPPED_IN_AREA_IN_CAR_3D = 0x101A0, + IS_CHAR_IN_AREA_ON_FOOT_2D = 0x101A1, + IS_CHAR_IN_AREA_IN_CAR_2D = 0x101A2, + IS_CHAR_STOPPED_IN_AREA_2D = 0x101A3, + IS_CHAR_STOPPED_IN_AREA_ON_FOOT_2D = 0x101A4, + IS_CHAR_STOPPED_IN_AREA_IN_CAR_2D = 0x101A5, + IS_CHAR_IN_AREA_ON_FOOT_3D = 0x101A6, + IS_CHAR_IN_AREA_IN_CAR_3D = 0x101A7, + IS_CHAR_STOPPED_IN_AREA_3D = 0x101A8, + IS_CHAR_STOPPED_IN_AREA_ON_FOOT_3D = 0x101A9, + IS_CHAR_STOPPED_IN_AREA_IN_CAR_3D = 0x101AA, + IS_CAR_STOPPED_IN_AREA_2D = 0x101AB, + IS_CAR_STOPPED_IN_AREA_3D = 0x101AC, + LOCATE_CAR_2D = 0x101AD, + LOCATE_STOPPED_CAR_2D = 0x101AE, + LOCATE_CAR_3D = 0x101AF, + LOCATE_STOPPED_CAR_3D = 0x101B0, + GIVE_WEAPON_TO_PLAYER = 0x101B1, + GIVE_WEAPON_TO_CHAR = 0x101B2, + GIVE_WEAPON_TO_CAR = 0x101B3, + SET_PLAYER_CONTROL = 0x101B4, + FORCE_WEATHER = 0x101B5, + FORCE_WEATHER_NOW = 0x101B6, + RELEASE_WEATHER = 0x101B7, + SET_CURRENT_PLAYER_WEAPON = 0x101B8, + SET_CURRENT_CHAR_WEAPON = 0x101B9, + SET_CURRENT_CAR_WEAPON = 0x101BA, + GET_OBJECT_COORDINATES = 0x101BB, + SET_OBJECT_COORDINATES = 0x101BC, + GET_GAME_TIMER = 0x101BD, + TURN_CHAR_TO_FACE_COORD = 0x101BE, + TURN_PLAYER_TO_FACE_COORD = 0x101BF, + STORE_WANTED_LEVEL = 0x101C0, + IS_CAR_STOPPED = 0x101C1, + MARK_CHAR_AS_NO_LONGER_NEEDED = 0x101C2, + MARK_CAR_AS_NO_LONGER_NEEDED = 0x101C3, + MARK_OBJECT_AS_NO_LONGER_NEEDED = 0x101C4, + DONT_REMOVE_CHAR = 0x101C5, + DONT_REMOVE_CAR = 0x101C6, + DONT_REMOVE_OBJECT = 0x101C7, + CREATE_CHAR_AS_PASSENGER = 0x101C8, + SET_CHAR_OBJ_KILL_CHAR_ON_FOOT = 0x101C9, + SET_CHAR_OBJ_KILL_PLAYER_ON_FOOT = 0x101CA, + SET_CHAR_OBJ_KILL_CHAR_ANY_MEANS = 0x101CB, + SET_CHAR_OBJ_KILL_PLAYER_ANY_MEANS = 0x101CC, + SET_CHAR_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE = 0x101CD, + SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE = 0x101CE, + SET_CHAR_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS = 0x101CF, + SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS = 0x101D0, + SET_CHAR_OBJ_GOTO_CHAR_ON_FOOT = 0x101D1, + SET_CHAR_OBJ_GOTO_PLAYER_ON_FOOT = 0x101D2, + SET_CHAR_OBJ_LEAVE_CAR = 0x101D3, + SET_CHAR_OBJ_ENTER_CAR_AS_PASSENGER = 0x101D4, + SET_CHAR_OBJ_ENTER_CAR_AS_DRIVER = 0x101D5, + SET_CHAR_OBJ_FOLLOW_CAR_IN_CAR = 0x101D6, + SET_CHAR_OBJ_FIRE_AT_OBJECT_FROM_VEHICLE = 0x101D7, + SET_CHAR_OBJ_DESTROY_OBJECT = 0x101D8, + SET_CHAR_OBJ_DESTROY_CAR = 0x101D9, + SET_CHAR_OBJ_GOTO_AREA_ON_FOOT = 0x101DA, + SET_CHAR_OBJ_GOTO_AREA_IN_CAR = 0x101DB, + SET_CHAR_OBJ_FOLLOW_CAR_ON_FOOT_WITH_OFFSET = 0x101DC, + SET_CHAR_OBJ_GUARD_ATTACK = 0x101DD, + SET_CHAR_AS_LEADER = 0x101DE, + SET_PLAYER_AS_LEADER = 0x101DF, + LEAVE_GROUP = 0x101E0, + SET_CHAR_OBJ_FOLLOW_ROUTE = 0x101E1, + ADD_ROUTE_POINT = 0x101E2, + PRINT_WITH_NUMBER_BIG = 0x101E3, + PRINT_WITH_NUMBER = 0x101E4, + PRINT_WITH_NUMBER_NOW = 0x101E5, + PRINT_WITH_NUMBER_SOON = 0x101E6, + SWITCH_ROADS_ON = 0x101E7, + SWITCH_ROADS_OFF = 0x101E8, + GET_NUMBER_OF_PASSENGERS = 0x101E9, + GET_MAXIMUM_NUMBER_OF_PASSENGERS = 0x101EA, + SET_CAR_DENSITY_MULTIPLIER = 0x101EB, + SET_CAR_HEAVY = 0x101EC, + CLEAR_CHAR_THREAT_SEARCH = 0x101ED, + ACTIVATE_CRANE = 0x101EE, + DEACTIVATE_CRANE = 0x101EF, + SET_MAX_WANTED_LEVEL = 0x101F0, + SAVE_VAR_INT = 0x101F1, + SAVE_VAR_FLOAT = 0x101F2, + IS_CAR_IN_AIR_PROPER = 0x101F3, + IS_CAR_UPSIDEDOWN = 0x101F4, + GET_PLAYER_CHAR = 0x101F5, + CANCEL_OVERRIDE_RESTART = 0x101F6, + SET_POLICE_IGNORE_PLAYER = 0x101F7, + ADD_PAGER_MESSAGE_WITH_NUMBER = 0x101F8, + START_KILL_FRENZY = 0x101F9, + READ_KILL_FRENZY_STATUS = 0x101FA, + SQRT = 0x101FB, + LOCATE_PLAYER_ANY_MEANS_CAR_2D = 0x101FC, + LOCATE_PLAYER_ON_FOOT_CAR_2D = 0x101FD, + LOCATE_PLAYER_IN_CAR_CAR_2D = 0x101FE, + LOCATE_PLAYER_ANY_MEANS_CAR_3D = 0x101FF, + LOCATE_PLAYER_ON_FOOT_CAR_3D = 0x10200, + LOCATE_PLAYER_IN_CAR_CAR_3D = 0x10201, + LOCATE_CHAR_ANY_MEANS_CAR_2D = 0x10202, + LOCATE_CHAR_ON_FOOT_CAR_2D = 0x10203, + LOCATE_CHAR_IN_CAR_CAR_2D = 0x10204, + LOCATE_CHAR_ANY_MEANS_CAR_3D = 0x10205, + LOCATE_CHAR_ON_FOOT_CAR_3D = 0x10206, + LOCATE_CHAR_IN_CAR_CAR_3D = 0x10207, + GENERATE_RANDOM_FLOAT_IN_RANGE = 0x10208, + GENERATE_RANDOM_INT_IN_RANGE = 0x10209, + LOCK_CAR_DOORS = 0x1020A, + EXPLODE_CAR = 0x1020B, + ADD_EXPLOSION = 0x1020C, + IS_CAR_UPRIGHT = 0x1020D, + TURN_CHAR_TO_FACE_CHAR = 0x1020E, + TURN_CHAR_TO_FACE_PLAYER = 0x1020F, + TURN_PLAYER_TO_FACE_CHAR = 0x10210, + SET_CHAR_OBJ_GOTO_COORD_ON_FOOT = 0x10211, + SET_CHAR_OBJ_GOTO_COORD_IN_CAR = 0x10212, + CREATE_PICKUP = 0x10213, + HAS_PICKUP_BEEN_COLLECTED = 0x10214, + REMOVE_PICKUP = 0x10215, + SET_TAXI_LIGHTS = 0x10216, + PRINT_BIG_Q = 0x10217, + PRINT_WITH_NUMBER_BIG_Q = 0x10218, + SET_GARAGE = 0x10219, + SET_GARAGE_WITH_CAR_MODEL = 0x1021A, + SET_TARGET_CAR_FOR_MISSION_GARAGE = 0x1021B, + IS_CAR_IN_MISSION_GARAGE = 0x1021C, + SET_FREE_BOMBS = 0x1021D, + SET_POWERPOINT = 0x1021E, + SET_ALL_TAXI_LIGHTS = 0x1021F, + IS_CAR_ARMED_WITH_ANY_BOMB = 0x10220, + APPLY_BRAKES_TO_PLAYERS_CAR = 0x10221, + SET_PLAYER_HEALTH = 0x10222, + SET_CHAR_HEALTH = 0x10223, + SET_CAR_HEALTH = 0x10224, + GET_PLAYER_HEALTH = 0x10225, + GET_CHAR_HEALTH = 0x10226, + GET_CAR_HEALTH = 0x10227, + IS_CAR_ARMED_WITH_BOMB = 0x10228, + CHANGE_CAR_COLOUR = 0x10229, + SWITCH_PED_ROADS_ON = 0x1022A, + SWITCH_PED_ROADS_OFF = 0x1022B, + CHAR_LOOK_AT_CHAR_ALWAYS = 0x1022C, + CHAR_LOOK_AT_PLAYER_ALWAYS = 0x1022D, + PLAYER_LOOK_AT_CHAR_ALWAYS = 0x1022E, + STOP_CHAR_LOOKING = 0x1022F, + STOP_PLAYER_LOOKING = 0x10230, + SET_SCRIPT_POLICE_HELI_TO_CHASE_CHAR = 0x10231, + SET_GANG_ATTITUDE = 0x10232, + SET_GANG_GANG_ATTITUDE = 0x10233, + SET_GANG_PLAYER_ATTITUDE = 0x10234, + SET_GANG_PED_MODELS = 0x10235, + SET_GANG_CAR_MODEL = 0x10236, + SET_GANG_WEAPONS = 0x10237, + SET_CHAR_OBJ_RUN_TO_AREA = 0x10238, + SET_CHAR_OBJ_RUN_TO_COORD = 0x10239, + IS_PLAYER_TOUCHING_OBJECT_ON_FOOT = 0x1023A, + IS_CHAR_TOUCHING_OBJECT_ON_FOOT = 0x1023B, + LOAD_SPECIAL_CHARACTER = 0x1023C, + HAS_SPECIAL_CHARACTER_LOADED = 0x1023D, + FLASH_CAR = 0x1023E, + FLASH_CHAR = 0x1023F, + FLASH_OBJECT = 0x10240, + IS_PLAYER_IN_REMOTE_MODE = 0x10241, + ARM_CAR_WITH_BOMB = 0x10242, + SET_CHAR_PERSONALITY = 0x10243, + SET_CUTSCENE_OFFSET = 0x10244, + SET_ANIM_GROUP_FOR_CHAR = 0x10245, + SET_ANIM_GROUP_FOR_PLAYER = 0x10246, + REQUEST_MODEL = 0x10247, + HAS_MODEL_LOADED = 0x10248, + MARK_MODEL_AS_NO_LONGER_NEEDED = 0x10249, + GRAB_PHONE = 0x1024A, + SET_REPEATED_PHONE_MESSAGE = 0x1024B, + SET_PHONE_MESSAGE = 0x1024C, + HAS_PHONE_DISPLAYED_MESSAGE = 0x1024D, + TURN_PHONE_OFF = 0x1024E, + DRAW_CORONA = 0x1024F, + DRAW_LIGHT = 0x10250, + STORE_WEATHER = 0x10251, + RESTORE_WEATHER = 0x10252, + STORE_CLOCK = 0x10253, + RESTORE_CLOCK = 0x10254, + RESTART_CRITICAL_MISSION = 0x10255, + IS_PLAYER_PLAYING = 0x10256, + SET_COLL_OBJ_NO_OBJ = 0x10257, + SET_COLL_OBJ_WAIT_ON_FOOT = 0x10258, + SET_COLL_OBJ_FLEE_ON_FOOT_TILL_SAFE = 0x10259, + SET_COLL_OBJ_GUARD_SPOT = 0x1025A, + SET_COLL_OBJ_GUARD_AREA = 0x1025B, + SET_COLL_OBJ_WAIT_IN_CAR = 0x1025C, + SET_COLL_OBJ_KILL_CHAR_ON_FOOT = 0x1025D, + SET_COLL_OBJ_KILL_PLAYER_ON_FOOT = 0x1025E, + SET_COLL_OBJ_KILL_CHAR_ANY_MEANS = 0x1025F, + SET_COLL_OBJ_KILL_PLAYER_ANY_MEANS = 0x10260, + SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE = 0x10261, + SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE = 0x10262, + SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS = 0x10263, + SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS = 0x10264, + SET_COLL_OBJ_GOTO_CHAR_ON_FOOT = 0x10265, + SET_COLL_OBJ_GOTO_PLAYER_ON_FOOT = 0x10266, + SET_COLL_OBJ_LEAVE_CAR = 0x10267, + SET_COLL_OBJ_ENTER_CAR_AS_PASSENGER = 0x10268, + SET_COLL_OBJ_ENTER_CAR_AS_DRIVER = 0x10269, + SET_COLL_OBJ_FOLLOW_CAR_IN_CAR = 0x1026A, + SET_COLL_OBJ_FIRE_AT_OBJECT_FROM_VEHICLE = 0x1026B, + SET_COLL_OBJ_DESTROY_OBJECT = 0x1026C, + SET_COLL_OBJ_DESTROY_CAR = 0x1026D, + SET_COLL_OBJ_GOTO_AREA_ON_FOOT = 0x1026E, + SET_COLL_OBJ_GOTO_AREA_IN_CAR = 0x1026F, + SET_COLL_OBJ_FOLLOW_CAR_ON_FOOT_WITH_OFFSET = 0x10270, + SET_COLL_OBJ_GUARD_ATTACK = 0x10271, + SET_COLL_OBJ_FOLLOW_ROUTE = 0x10272, + SET_COLL_OBJ_GOTO_COORD_ON_FOOT = 0x10273, + SET_COLL_OBJ_GOTO_COORD_IN_CAR = 0x10274, + SET_COLL_OBJ_RUN_TO_AREA = 0x10275, + SET_COLL_OBJ_RUN_TO_COORD = 0x10276, + ADD_PEDS_IN_AREA_TO_COLL = 0x10277, + ADD_PEDS_IN_VEHICLE_TO_COLL = 0x10278, + CLEAR_COLL = 0x10279, + IS_COLL_IN_CARS = 0x1027A, + LOCATE_COLL_ANY_MEANS_2D = 0x1027B, + LOCATE_COLL_ON_FOOT_2D = 0x1027C, + LOCATE_COLL_IN_CAR_2D = 0x1027D, + LOCATE_STOPPED_COLL_ANY_MEANS_2D = 0x1027E, + LOCATE_STOPPED_COLL_ON_FOOT_2D = 0x1027F, + LOCATE_STOPPED_COLL_IN_CAR_2D = 0x10280, + LOCATE_COLL_ANY_MEANS_CHAR_2D = 0x10281, + LOCATE_COLL_ON_FOOT_CHAR_2D = 0x10282, + LOCATE_COLL_IN_CAR_CHAR_2D = 0x10283, + LOCATE_COLL_ANY_MEANS_CAR_2D = 0x10284, + LOCATE_COLL_ON_FOOT_CAR_2D = 0x10285, + LOCATE_COLL_IN_CAR_CAR_2D = 0x10286, + LOCATE_COLL_ANY_MEANS_PLAYER_2D = 0x10287, + LOCATE_COLL_ON_FOOT_PLAYER_2D = 0x10288, + LOCATE_COLL_IN_CAR_PLAYER_2D = 0x10289, + IS_COLL_IN_AREA_2D = 0x1028A, + IS_COLL_IN_AREA_ON_FOOT_2D = 0x1028B, + IS_COLL_IN_AREA_IN_CAR_2D = 0x1028C, + IS_COLL_STOPPED_IN_AREA_2D = 0x1028D, + IS_COLL_STOPPED_IN_AREA_ON_FOOT_2D = 0x1028E, + IS_COLL_STOPPED_IN_AREA_IN_CAR_2D = 0x1028F, + GET_NUMBER_OF_PEDS_IN_COLL = 0x10290, + SET_CHAR_HEED_THREATS = 0x10291, + SET_PLAYER_HEED_THREATS = 0x10292, + GET_CONTROLLER_MODE = 0x10293, + SET_CAN_RESPRAY_CAR = 0x10294, + IS_TAXI = 0x10295, + UNLOAD_SPECIAL_CHARACTER = 0x10296, + RESET_NUM_OF_MODELS_KILLED_BY_PLAYER = 0x10297, + GET_NUM_OF_MODELS_KILLED_BY_PLAYER = 0x10298, + ACTIVATE_GARAGE = 0x10299, + SWITCH_TAXI_TIMER = 0x1029A, + CREATE_OBJECT_NO_OFFSET = 0x1029B, + IS_BOAT = 0x1029C, + SET_CHAR_OBJ_GOTO_AREA_ANY_MEANS = 0x1029D, + SET_COLL_OBJ_GOTO_AREA_ANY_MEANS = 0x1029E, + IS_PLAYER_STOPPED = 0x1029F, + IS_CHAR_STOPPED = 0x102A0, + MESSAGE_WAIT = 0x102A1, + ADD_PARTICLE_EFFECT = 0x102A2, + SWITCH_WIDESCREEN = 0x102A3, + ADD_SPRITE_BLIP_FOR_CAR = 0x102A4, + ADD_SPRITE_BLIP_FOR_CHAR = 0x102A5, + ADD_SPRITE_BLIP_FOR_OBJECT = 0x102A6, + ADD_SPRITE_BLIP_FOR_CONTACT_POINT = 0x102A7, + ADD_SPRITE_BLIP_FOR_COORD = 0x102A8, + SET_CHAR_ONLY_DAMAGED_BY_PLAYER = 0x102A9, + SET_CAR_ONLY_DAMAGED_BY_PLAYER = 0x102AA, + SET_CHAR_PROOFS = 0x102AB, + SET_CAR_PROOFS = 0x102AC, + IS_PLAYER_IN_ANGLED_AREA_2D = 0x102AD, + IS_PLAYER_IN_ANGLED_AREA_ON_FOOT_2D = 0x102AE, + IS_PLAYER_IN_ANGLED_AREA_IN_CAR_2D = 0x102AF, + IS_PLAYER_STOPPED_IN_ANGLED_AREA_2D = 0x102B0, + IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_2D = 0x102B1, + IS_PLAYER_STOPPED_IN_ANGLED_AREA_IN_CAR_2D = 0x102B2, + IS_PLAYER_IN_ANGLED_AREA_3D = 0x102B3, + IS_PLAYER_IN_ANGLED_AREA_ON_FOOT_3D = 0x102B4, + IS_PLAYER_IN_ANGLED_AREA_IN_CAR_3D = 0x102B5, + IS_PLAYER_STOPPED_IN_ANGLED_AREA_3D = 0x102B6, + IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_3D = 0x102B7, + IS_PLAYER_STOPPED_IN_ANGLED_AREA_IN_CAR_3D = 0x102B8, + DEACTIVATE_GARAGE = 0x102B9, + GET_NUMBER_OF_CARS_COLLECTED_BY_GARAGE = 0x102BA, + HAS_CAR_BEEN_TAKEN_TO_GARAGE = 0x102BB, + SET_SWAT_REQUIRED = 0x102BC, + SET_FBI_REQUIRED = 0x102BD, + SET_ARMY_REQUIRED = 0x102BE, + IS_CAR_IN_WATER = 0x102BF, + GET_CLOSEST_CHAR_NODE = 0x102C0, + GET_CLOSEST_CAR_NODE = 0x102C1, + CAR_GOTO_COORDINATES_ACCURATE = 0x102C2, + START_PACMAN_RACE = 0x102C3, + START_PACMAN_RECORD = 0x102C4, + GET_NUMBER_OF_POWER_PILLS_EATEN = 0x102C5, + CLEAR_PACMAN = 0x102C6, + START_PACMAN_SCRAMBLE = 0x102C7, + GET_NUMBER_OF_POWER_PILLS_CARRIED = 0x102C8, + CLEAR_NUMBER_OF_POWER_PILLS_CARRIED = 0x102C9, + IS_CAR_ON_SCREEN = 0x102CA, + IS_CHAR_ON_SCREEN = 0x102CB, + IS_OBJECT_ON_SCREEN = 0x102CC, + GOSUB_FILE = 0x102CD, + GET_GROUND_Z_FOR_3D_COORD = 0x102CE, + START_SCRIPT_FIRE = 0x102CF, + IS_SCRIPT_FIRE_EXTINGUISHED = 0x102D0, + REMOVE_SCRIPT_FIRE = 0x102D1, + SET_COMEDY_CONTROLS = 0x102D2, + BOAT_GOTO_COORDS = 0x102D3, + BOAT_STOP = 0x102D4, + IS_PLAYER_SHOOTING_IN_AREA = 0x102D5, + IS_CHAR_SHOOTING_IN_AREA = 0x102D6, + IS_CURRENT_PLAYER_WEAPON = 0x102D7, + IS_CURRENT_CHAR_WEAPON = 0x102D8, + CLEAR_NUMBER_OF_POWER_PILLS_EATEN = 0x102D9, + ADD_POWER_PILL = 0x102DA, + SET_BOAT_CRUISE_SPEED = 0x102DB, + GET_RANDOM_CHAR_IN_AREA = 0x102DC, + GET_RANDOM_CHAR_IN_ZONE = 0x102DD, + IS_PLAYER_IN_TAXI = 0x102DE, + IS_PLAYER_SHOOTING = 0x102DF, + IS_CHAR_SHOOTING = 0x102E0, + CREATE_MONEY_PICKUP = 0x102E1, + SET_CHAR_ACCURACY = 0x102E2, + GET_CAR_SPEED = 0x102E3, + LOAD_CUTSCENE = 0x102E4, + CREATE_CUTSCENE_OBJECT = 0x102E5, + SET_CUTSCENE_ANIM = 0x102E6, + START_CUTSCENE = 0x102E7, + GET_CUTSCENE_TIME = 0x102E8, + HAS_CUTSCENE_FINISHED = 0x102E9, + CLEAR_CUTSCENE = 0x102EA, + RESTORE_CAMERA_JUMPCUT = 0x102EB, + CREATE_COLLECTABLE1 = 0x102EC, + SET_COLLECTABLE1_TOTAL = 0x102ED, + IS_PROJECTILE_IN_AREA = 0x102EE, + DESTROY_PROJECTILES_IN_AREA = 0x102EF, + DROP_MINE = 0x102F0, + DROP_NAUTICAL_MINE = 0x102F1, + IS_CHAR_MODEL = 0x102F2, + LOAD_SPECIAL_MODEL = 0x102F3, + CREATE_CUTSCENE_HEAD = 0x102F4, + SET_CUTSCENE_HEAD_ANIM = 0x102F5, + SIN = 0x102F6, + COS = 0x102F7, + GET_CAR_FORWARD_X = 0x102F8, + GET_CAR_FORWARD_Y = 0x102F9, + CHANGE_GARAGE_TYPE = 0x102FA, + ACTIVATE_CRUSHER_CRANE = 0x102FB, + PRINT_WITH_2_NUMBERS = 0x102FC, + PRINT_WITH_2_NUMBERS_NOW = 0x102FD, + PRINT_WITH_2_NUMBERS_SOON = 0x102FE, + PRINT_WITH_3_NUMBERS = 0x102FF, + PRINT_WITH_3_NUMBERS_NOW = 0x10300, + PRINT_WITH_3_NUMBERS_SOON = 0x10301, + PRINT_WITH_4_NUMBERS = 0x10302, + PRINT_WITH_4_NUMBERS_NOW = 0x10303, + PRINT_WITH_4_NUMBERS_SOON = 0x10304, + PRINT_WITH_5_NUMBERS = 0x10305, + PRINT_WITH_5_NUMBERS_NOW = 0x10306, + PRINT_WITH_5_NUMBERS_SOON = 0x10307, + PRINT_WITH_6_NUMBERS = 0x10308, + PRINT_WITH_6_NUMBERS_NOW = 0x10309, + PRINT_WITH_6_NUMBERS_SOON = 0x1030A, + SET_CHAR_OBJ_FOLLOW_CHAR_IN_FORMATION = 0x1030B, + PLAYER_MADE_PROGRESS = 0x1030C, + SET_PROGRESS_TOTAL = 0x1030D, + REGISTER_JUMP_DISTANCE = 0x1030E, + REGISTER_JUMP_HEIGHT = 0x1030F, + REGISTER_JUMP_FLIPS = 0x10310, + REGISTER_JUMP_SPINS = 0x10311, + REGISTER_JUMP_STUNT = 0x10312, + REGISTER_UNIQUE_JUMP_FOUND = 0x10313, + SET_UNIQUE_JUMPS_TOTAL = 0x10314, + REGISTER_PASSENGER_DROPPED_OFF_TAXI = 0x10315, + REGISTER_MONEY_MADE_TAXI = 0x10316, + REGISTER_MISSION_GIVEN = 0x10317, + REGISTER_MISSION_PASSED = 0x10318, + SET_CHAR_RUNNING = 0x10319, + REMOVE_ALL_SCRIPT_FIRES = 0x1031A, + IS_FIRST_CAR_COLOUR = 0x1031B, + IS_SECOND_CAR_COLOUR = 0x1031C, + HAS_CHAR_BEEN_DAMAGED_BY_WEAPON = 0x1031D, + HAS_CAR_BEEN_DAMAGED_BY_WEAPON = 0x1031E, + IS_CHAR_IN_CHARS_GROUP = 0x1031F, + IS_CHAR_IN_PLAYERS_GROUP = 0x10320, + EXPLODE_CHAR_HEAD = 0x10321, + EXPLODE_PLAYER_HEAD = 0x10322, + ANCHOR_BOAT = 0x10323, + SET_ZONE_GROUP = 0x10324, + START_CAR_FIRE = 0x10325, + START_CHAR_FIRE = 0x10326, + GET_RANDOM_CAR_OF_TYPE_IN_AREA = 0x10327, + GET_RANDOM_CAR_OF_TYPE_IN_ZONE = 0x10328, + HAS_RESPRAY_HAPPENED = 0x10329, + SET_CAMERA_ZOOM = 0x1032A, + CREATE_PICKUP_WITH_AMMO = 0x1032B, + SET_CAR_RAM_CAR = 0x1032C, + SET_CAR_BLOCK_CAR = 0x1032D, + SET_CHAR_OBJ_CATCH_TRAIN = 0x1032E, + SET_COLL_OBJ_CATCH_TRAIN = 0x1032F, + SET_PLAYER_NEVER_GETS_TIRED = 0x10330, + SET_PLAYER_FAST_RELOAD = 0x10331, + SET_CHAR_BLEEDING = 0x10332, + SET_CAR_FUNNY_SUSPENSION = 0x10333, + SET_CAR_BIG_WHEELS = 0x10334, + SET_FREE_RESPRAYS = 0x10335, + SET_PLAYER_VISIBLE = 0x10336, + SET_CHAR_VISIBLE = 0x10337, + SET_CAR_VISIBLE = 0x10338, + IS_AREA_OCCUPIED = 0x10339, + START_DRUG_RUN = 0x1033A, + HAS_DRUG_RUN_BEEN_COMPLETED = 0x1033B, + HAS_DRUG_PLANE_BEEN_SHOT_DOWN = 0x1033C, + SAVE_PLAYER_FROM_FIRES = 0x1033D, + DISPLAY_TEXT = 0x1033E, + SET_TEXT_SCALE = 0x1033F, + SET_TEXT_COLOUR = 0x10340, + SET_TEXT_JUSTIFY = 0x10341, + SET_TEXT_CENTRE = 0x10342, + SET_TEXT_WRAPX = 0x10343, + SET_TEXT_CENTRE_SIZE = 0x10344, + SET_TEXT_BACKGROUND = 0x10345, + SET_TEXT_BACKGROUND_COLOUR = 0x10346, + SET_TEXT_BACKGROUND_ONLY_TEXT = 0x10347, + SET_TEXT_PROPORTIONAL = 0x10348, + SET_TEXT_FONT = 0x10349, + INDUSTRIAL_PASSED = 0x1034A, + COMMERCIAL_PASSED = 0x1034B, + SUBURBAN_PASSED = 0x1034C, + ROTATE_OBJECT = 0x1034D, + SLIDE_OBJECT = 0x1034E, + REMOVE_CHAR_ELEGANTLY = 0x1034F, + SET_CHAR_STAY_IN_SAME_PLACE = 0x10350, + IS_NASTY_GAME = 0x10351, + UNDRESS_CHAR = 0x10352, + DRESS_CHAR = 0x10353, + START_CHASE_SCENE = 0x10354, + STOP_CHASE_SCENE = 0x10355, + IS_EXPLOSION_IN_AREA = 0x10356, + IS_EXPLOSION_IN_ZONE = 0x10357, + START_DRUG_DROP_OFF = 0x10358, + HAS_DROP_OFF_PLANE_BEEN_SHOT_DOWN = 0x10359, + FIND_DROP_OFF_PLANE_COORDINATES = 0x1035A, + CREATE_FLOATING_PACKAGE = 0x1035B, + PLACE_OBJECT_RELATIVE_TO_CAR = 0x1035C, + MAKE_OBJECT_TARGETTABLE = 0x1035D, + ADD_ARMOUR_TO_PLAYER = 0x1035E, + ADD_ARMOUR_TO_CHAR = 0x1035F, + OPEN_GARAGE = 0x10360, + CLOSE_GARAGE = 0x10361, + WARP_CHAR_FROM_CAR_TO_COORD = 0x10362, + SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE = 0x10363, + HAS_CHAR_SPOTTED_CHAR = 0x10364, + SET_CHAR_OBJ_HAIL_TAXI = 0x10365, + HAS_OBJECT_BEEN_DAMAGED = 0x10366, + START_KILL_FRENZY_HEADSHOT = 0x10367, + ACTIVATE_MILITARY_CRANE = 0x10368, + WARP_PLAYER_INTO_CAR = 0x10369, + WARP_CHAR_INTO_CAR = 0x1036A, + SWITCH_CAR_RADIO = 0x1036B, + SET_AUDIO_STREAM = 0x1036C, + PRINT_WITH_2_NUMBERS_BIG = 0x1036D, + PRINT_WITH_3_NUMBERS_BIG = 0x1036E, + PRINT_WITH_4_NUMBERS_BIG = 0x1036F, + PRINT_WITH_5_NUMBERS_BIG = 0x10370, + PRINT_WITH_6_NUMBERS_BIG = 0x10371, + SET_CHAR_WAIT_STATE = 0x10372, + SET_CAMERA_BEHIND_PLAYER = 0x10373, + SET_MOTION_BLUR = 0x10374, + PRINT_STRING_IN_STRING = 0x10375, + CREATE_RANDOM_CHAR = 0x10376, + SET_CHAR_OBJ_STEAL_ANY_CAR = 0x10377, + SET_2_REPEATED_PHONE_MESSAGES = 0x10378, + SET_2_PHONE_MESSAGES = 0x10379, + SET_3_REPEATED_PHONE_MESSAGES = 0x1037A, + SET_3_PHONE_MESSAGES = 0x1037B, + SET_4_REPEATED_PHONE_MESSAGES = 0x1037C, + SET_4_PHONE_MESSAGES = 0x1037D, + IS_SNIPER_BULLET_IN_AREA = 0x1037E, + GIVE_PLAYER_DETONATOR = 0x1037F, + SET_COLL_OBJ_STEAL_ANY_CAR = 0x10380, + SET_OBJECT_VELOCITY = 0x10381, + SET_OBJECT_COLLISION = 0x10382, + IS_ICECREAM_JINGLE_ON = 0x10383, + PRINT_STRING_IN_STRING_NOW = 0x10384, + PRINT_STRING_IN_STRING_SOON = 0x10385, + SET_5_REPEATED_PHONE_MESSAGES = 0x10386, + SET_5_PHONE_MESSAGES = 0x10387, + SET_6_REPEATED_PHONE_MESSAGES = 0x10388, + SET_6_PHONE_MESSAGES = 0x10389, + IS_POINT_OBSCURED_BY_A_MISSION_ENTITY = 0x1038A, + LOAD_ALL_MODELS_NOW = 0x1038B, + ADD_TO_OBJECT_VELOCITY = 0x1038C, + DRAW_SPRITE = 0x1038D, + DRAW_RECT = 0x1038E, + LOAD_SPRITE = 0x1038F, + LOAD_TEXTURE_DICTIONARY = 0x10390, + REMOVE_TEXTURE_DICTIONARY = 0x10391, + SET_OBJECT_DYNAMIC = 0x10392, + SET_CHAR_ANIM_SPEED = 0x10393, + PLAY_MISSION_PASSED_TUNE = 0x10394, + CLEAR_AREA = 0x10395, + FREEZE_ONSCREEN_TIMER = 0x10396, + SWITCH_CAR_SIREN = 0x10397, + SWITCH_PED_ROADS_ON_ANGLED = 0x10398, + SWITCH_PED_ROADS_OFF_ANGLED = 0x10399, + SWITCH_ROADS_ON_ANGLED = 0x1039A, + SWITCH_ROADS_OFF_ANGLED = 0x1039B, + SET_CAR_WATERTIGHT = 0x1039C, + ADD_MOVING_PARTICLE_EFFECT = 0x1039D, + SET_CHAR_CANT_BE_DRAGGED_OUT = 0x1039E, + TURN_CAR_TO_FACE_COORD = 0x1039F, + IS_CRANE_LIFTING_CAR = 0x103A0, + DRAW_SPHERE = 0x103A1, + SET_CAR_STATUS = 0x103A2, + IS_CHAR_MALE = 0x103A3, + SCRIPT_NAME = 0x103A4, + CHANGE_GARAGE_TYPE_WITH_CAR_MODEL = 0x103A5, + FIND_DRUG_PLANE_COORDINATES = 0x103A6, + SAVE_INT_TO_DEBUG_FILE = 0x103A7, + SAVE_FLOAT_TO_DEBUG_FILE = 0x103A8, + SAVE_NEWLINE_TO_DEBUG_FILE = 0x103A9, + POLICE_RADIO_MESSAGE = 0x103AA, + SET_CAR_STRONG = 0x103AB, + REMOVE_ROUTE = 0x103AC, + SWITCH_RUBBISH = 0x103AD, + REMOVE_PARTICLE_EFFECTS_IN_AREA = 0x103AE, + SWITCH_STREAMING = 0x103AF, + IS_GARAGE_OPEN = 0x103B0, + IS_GARAGE_CLOSED = 0x103B1, + START_CATALINA_HELI = 0x103B2, + CATALINA_HELI_TAKE_OFF = 0x103B3, + REMOVE_CATALINA_HELI = 0x103B4, + HAS_CATALINA_HELI_BEEN_SHOT_DOWN = 0x103B5, + SWAP_NEAREST_BUILDING_MODEL = 0x103B6, + SWITCH_WORLD_PROCESSING = 0x103B7, + REMOVE_ALL_PLAYER_WEAPONS = 0x103B8, + GRAB_CATALINA_HELI = 0x103B9, + CLEAR_AREA_OF_CARS = 0x103BA, + SET_ROTATING_GARAGE_DOOR = 0x103BB, + ADD_SPHERE = 0x103BC, + REMOVE_SPHERE = 0x103BD, + CATALINA_HELI_FLY_AWAY = 0x103BE, + SET_EVERYONE_IGNORE_PLAYER = 0x103BF, + STORE_CAR_CHAR_IS_IN_NO_SAVE = 0x103C0, + STORE_CAR_PLAYER_IS_IN_NO_SAVE = 0x103C1, + IS_PHONE_DISPLAYING_MESSAGE = 0x103C2, + DISPLAY_ONSCREEN_TIMER_WITH_STRING = 0x103C3, + DISPLAY_ONSCREEN_COUNTER_WITH_STRING = 0x103C4, + CREATE_RANDOM_CAR_FOR_CAR_PARK = 0x103C5, + IS_COLLISION_IN_MEMORY = 0x103C6, + SET_WANTED_MULTIPLIER = 0x103C7, + SET_CAMERA_IN_FRONT_OF_PLAYER = 0x103C8, + IS_CAR_VISIBLY_DAMAGED = 0x103C9, + DOES_OBJECT_EXIST = 0x103CA, + LOAD_SCENE = 0x103CB, + ADD_STUCK_CAR_CHECK = 0x103CC, + REMOVE_STUCK_CAR_CHECK = 0x103CD, + IS_CAR_STUCK = 0x103CE, + LOAD_MISSION_AUDIO = 0x103CF, + HAS_MISSION_AUDIO_LOADED = 0x103D0, + PLAY_MISSION_AUDIO = 0x103D1, + HAS_MISSION_AUDIO_FINISHED = 0x103D2, + GET_CLOSEST_CAR_NODE_WITH_HEADING = 0x103D3, + HAS_IMPORT_GARAGE_SLOT_BEEN_FILLED = 0x103D4, + CLEAR_THIS_PRINT = 0x103D5, + CLEAR_THIS_BIG_PRINT = 0x103D6, + SET_MISSION_AUDIO_POSITION = 0x103D7, + ACTIVATE_SAVE_MENU = 0x103D8, + HAS_SAVE_GAME_FINISHED = 0x103D9, + NO_SPECIAL_CAMERA_FOR_THIS_GARAGE = 0x103DA, + ADD_BLIP_FOR_PICKUP_OLD = 0x103DB, + ADD_BLIP_FOR_PICKUP = 0x103DC, + ADD_SPRITE_BLIP_FOR_PICKUP = 0x103DD, + SET_PED_DENSITY_MULTIPLIER = 0x103DE, + FORCE_RANDOM_PED_TYPE = 0x103DF, + SET_TEXT_DRAW_BEFORE_FADE = 0x103E0, + GET_COLLECTABLE1S_COLLECTED = 0x103E1, + SET_CHAR_OBJ_LEAVE_ANY_CAR = 0x103E2, + SET_SPRITES_DRAW_BEFORE_FADE = 0x103E3, + SET_TEXT_RIGHT_JUSTIFY = 0x103E4, + PRINT_HELP = 0x103E5, + CLEAR_HELP = 0x103E6, + FLASH_HUD_OBJECT = 0x103E7, + FLASH_RADAR_BLIP = 0x103E8, + IS_CHAR_IN_CONTROL = 0x103E9, + SET_GENERATE_CARS_AROUND_CAMERA = 0x103EA, + CLEAR_SMALL_PRINTS = 0x103EB, + HAS_MILITARY_CRANE_COLLECTED_ALL_CARS = 0x103EC, + SET_UPSIDEDOWN_CAR_NOT_DAMAGED = 0x103ED, + CAN_PLAYER_START_MISSION = 0x103EE, + MAKE_PLAYER_SAFE_FOR_CUTSCENE = 0x103EF, + USE_TEXT_COMMANDS = 0x103F0, + SET_THREAT_FOR_PED_TYPE = 0x103F1, + CLEAR_THREAT_FOR_PED_TYPE = 0x103F2, + GET_CAR_COLOURS = 0x103F3, + SET_ALL_CARS_CAN_BE_DAMAGED = 0x103F4, + SET_CAR_CAN_BE_DAMAGED = 0x103F5, + MAKE_PLAYER_UNSAFE = 0x103F6, + LOAD_COLLISION = 0x103F7, + GET_BODY_CAST_HEALTH = 0x103F8, + SET_CHARS_CHATTING = 0x103F9, + MAKE_PLAYER_SAFE = 0x103FA, + SET_CAR_STAYS_IN_CURRENT_LEVEL = 0x103FB, + SET_CHAR_STAYS_IN_CURRENT_LEVEL = 0x103FC, + SET_DRUNK_INPUT_DELAY = 0x103FD, + SET_CHAR_MONEY = 0x103FE, + INCREASE_CHAR_MONEY = 0x103FF, + GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS = 0x10400, + REGISTER_LIFE_SAVED = 0x10401, + REGISTER_CRIMINAL_CAUGHT = 0x10402, + REGISTER_AMBULANCE_LEVEL = 0x10403, + REGISTER_FIRE_EXTINGUISHED = 0x10404, + TURN_PHONE_ON = 0x10405, + REGISTER_LONGEST_DODO_FLIGHT = 0x10406, + GET_OFFSET_FROM_CAR_IN_WORLD_COORDS = 0x10407, + SET_TOTAL_NUMBER_OF_KILL_FRENZIES = 0x10408, + BLOW_UP_RC_BUGGY = 0x10409, + REMOVE_CAR_FROM_CHASE = 0x1040A, + IS_FRENCH_GAME = 0x1040B, + IS_GERMAN_GAME = 0x1040C, + CLEAR_MISSION_AUDIO = 0x1040D, + SET_FADE_IN_AFTER_NEXT_ARREST = 0x1040E, + SET_FADE_IN_AFTER_NEXT_DEATH = 0x1040F, + SET_GANG_PED_MODEL_PREFERENCE = 0x10410, + SET_CHAR_USE_PEDNODE_SEEK = 0x10411, + SWITCH_VEHICLE_WEAPONS = 0x10412, + SET_GET_OUT_OF_JAIL_FREE = 0x10413, + SET_FREE_HEALTH_CARE = 0x10414, + IS_CAR_DOOR_CLOSED = 0x10415, + LOAD_AND_LAUNCH_MISSION = 0x10416, + LOAD_AND_LAUNCH_MISSION_INTERNAL = 0x10417, + SET_OBJECT_DRAW_LAST = 0x10418, + GET_AMMO_IN_PLAYER_WEAPON = 0x10419, + GET_AMMO_IN_CHAR_WEAPON = 0x1041A, + REGISTER_KILL_FRENZY_PASSED = 0x1041B, + SET_CHAR_SAY = 0x1041C, + SET_NEAR_CLIP = 0x1041D, + SET_RADIO_CHANNEL = 0x1041E, + OVERRIDE_HOSPITAL_LEVEL = 0x1041F, + OVERRIDE_POLICE_STATION_LEVEL = 0x10420, + FORCE_RAIN = 0x10421, + DOES_GARAGE_CONTAIN_CAR = 0x10422, + SET_CAR_TRACTION = 0x10423, + ARE_MEASUREMENTS_IN_METRES = 0x10424, + CONVERT_METRES_TO_FEET = 0x10425, + MARK_ROADS_BETWEEN_LEVELS = 0x10426, + MARK_PED_ROADS_BETWEEN_LEVELS = 0x10427, + SET_CAR_AVOID_LEVEL_TRANSITIONS = 0x10428, + SET_CHAR_AVOID_LEVEL_TRANSITIONS = 0x10429, + IS_THREAT_FOR_PED_TYPE = 0x1042A, + CLEAR_AREA_OF_CHARS = 0x1042B, + SET_TOTAL_NUMBER_OF_MISSIONS = 0x1042C, + CONVERT_METRES_TO_FEET_INT = 0x1042D, + REGISTER_FASTEST_TIME = 0x1042E, + REGISTER_HIGHEST_SCORE = 0x1042F, + WARP_CHAR_INTO_CAR_AS_PASSENGER = 0x10430, + IS_CAR_PASSENGER_SEAT_FREE = 0x10431, + GET_CHAR_IN_CAR_PASSENGER_SEAT = 0x10432, + SET_CHAR_IS_CHRIS_CRIMINAL = 0x10433, + START_CREDITS = 0x10434, + STOP_CREDITS = 0x10435, + ARE_CREDITS_FINISHED = 0x10436, + CREATE_SINGLE_PARTICLE = 0x10437, + SET_CHAR_IGNORE_LEVEL_TRANSITIONS = 0x10438, + GET_CHASE_CAR = 0x10439, + START_BOAT_FOAM_ANIMATION = 0x1043A, + UPDATE_BOAT_FOAM_ANIMATION = 0x1043B, + SET_MUSIC_DOES_FADE = 0x1043C, + SET_INTRO_IS_PLAYING = 0x1043D, + SET_PLAYER_HOOKER = 0x1043E, + PLAY_END_OF_GAME_TUNE = 0x1043F, + STOP_END_OF_GAME_TUNE = 0x10440, + GET_CAR_MODEL = 0x10441, + IS_PLAYER_SITTING_IN_CAR = 0x10442, + IS_PLAYER_SITTING_IN_ANY_CAR = 0x10443, + SET_SCRIPT_FIRE_AUDIO = 0x10444, + ARE_ANY_CAR_CHEATS_ACTIVATED = 0x10445, + SET_CHAR_SUFFERS_CRITICAL_HITS = 0x10446, + IS_PLAYER_LIFTING_A_PHONE = 0x10447, + IS_CHAR_SITTING_IN_CAR = 0x10448, + IS_CHAR_SITTING_IN_ANY_CAR = 0x10449, + IS_PLAYER_ON_FOOT = 0x1044A, + IS_CHAR_ON_FOOT = 0x1044B, + LOAD_COLLISION_WITH_SCREEN = 0x1044C, + LOAD_SPLASH_SCREEN = 0x1044D, + SET_CAR_IGNORE_LEVEL_TRANSITIONS = 0x1044E, + MAKE_CRAIGS_CAR_A_BIT_STRONGER = 0x1044F, + SET_JAMES_CAR_ON_PATH_TO_PLAYER = 0x10450, + LOAD_END_OF_GAME_TUNE = 0x10451, + ENABLE_PLAYER_CONTROL_CAMERA = 0x10452, + SET_OBJECT_ROTATION = 0x10453, + GET_DEBUG_CAMERA_COORDINATES = 0x10454, + GET_DEBUG_CAMERA_FRONT_VECTOR = 0x10455, + IS_PLAYER_TARGETTING_ANY_CHAR = 0x10456, + IS_PLAYER_TARGETTING_CHAR = 0x10457, + IS_PLAYER_TARGETTING_OBJECT = 0x10458, + TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME = 0x10459, + DISPLAY_TEXT_WITH_NUMBER = 0x1045A, + DISPLAY_TEXT_WITH_2_NUMBERS = 0x1045B, + FAIL_CURRENT_MISSION = 0x1045C, + GET_CLOSEST_OBJECT_OF_TYPE = 0x1045D, + PLACE_OBJECT_RELATIVE_TO_OBJECT = 0x1045E, + SET_ALL_OCCUPANTS_OF_CAR_LEAVE_CAR = 0x1045F, + SET_INTERPOLATION_PARAMETERS = 0x10460, + GET_CLOSEST_CAR_NODE_WITH_HEADING_TOWARDS_POINT = 0x10461, + GET_CLOSEST_CAR_NODE_WITH_HEADING_AWAY_POINT = 0x10462, + GET_DEBUG_CAMERA_POINT_AT = 0x10463, + ATTACH_CHAR_TO_CAR = 0x10464, + DETACH_CHAR_FROM_CAR = 0x10465, + SET_CAR_STAY_IN_FAST_LANE = 0x10466, + CLEAR_CHAR_LAST_WEAPON_DAMAGE = 0x10467, + CLEAR_CAR_LAST_WEAPON_DAMAGE = 0x10468, + GET_RANDOM_COP_IN_AREA = 0x10469, + GET_RANDOM_COP_IN_ZONE = 0x1046A, + SET_CHAR_OBJ_FLEE_CAR = 0x1046B, + GET_DRIVER_OF_CAR = 0x1046C, + GET_NUMBER_OF_FOLLOWERS = 0x1046D, + GIVE_REMOTE_CONTROLLED_MODEL_TO_PLAYER = 0x1046E, + GET_CURRENT_PLAYER_WEAPON = 0x1046F, + GET_CURRENT_CHAR_WEAPON = 0x10470, + LOCATE_CHAR_ANY_MEANS_OBJECT_2D = 0x10471, + LOCATE_CHAR_ON_FOOT_OBJECT_2D = 0x10472, + LOCATE_CHAR_IN_CAR_OBJECT_2D = 0x10473, + LOCATE_CHAR_ANY_MEANS_OBJECT_3D = 0x10474, + LOCATE_CHAR_ON_FOOT_OBJECT_3D = 0x10475, + LOCATE_CHAR_IN_CAR_OBJECT_3D = 0x10476, + SET_CAR_TEMP_ACTION = 0x10477, + SET_CAR_HANDBRAKE_TURN_RIGHT = 0x10478, + SET_CAR_HANDBRAKE_STOP = 0x10479, + IS_CHAR_ON_ANY_BIKE = 0x1047A, + LOCATE_SNIPER_BULLET_2D = 0x1047B, + LOCATE_SNIPER_BULLET_3D = 0x1047C, + GET_NUMBER_OF_SEATS_IN_MODEL = 0x1047D, + IS_PLAYER_ON_ANY_BIKE = 0x1047E, + IS_CHAR_LYING_DOWN = 0x1047F, + CAN_CHAR_SEE_DEAD_CHAR = 0x10480, + SET_ENTER_CAR_RANGE_MULTIPLIER = 0x10481, + SET_THREAT_REACTION_RANGE_MULTIPLIER = 0x10482, + SET_CHAR_CEASE_ATTACK_TIMER = 0x10483, + GET_REMOTE_CONTROLLED_CAR = 0x10484, + IS_PC_VERSION = 0x10485, + REPLAY = 0x10486, + IS_REPLAY_PLAYING = 0x10487, + IS_MODEL_AVAILABLE = 0x10488, + SHUT_CHAR_UP = 0x10489, + SET_ENABLE_RC_DETONATE = 0x1048A, + SET_CAR_RANDOM_ROUTE_SEED = 0x1048B, + IS_ANY_PICKUP_AT_COORDS = 0x1048C, + GET_FIRST_PICKUP_COORDS = 0x1048D, + GET_NEXT_PICKUP_COORDS = 0x1048E, + REMOVE_ALL_CHAR_WEAPONS = 0x1048F, + HAS_PLAYER_GOT_WEAPON = 0x10490, + HAS_CHAR_GOT_WEAPON = 0x10491, + IS_PLAYER_FACING_CHAR = 0x10492, + SET_TANK_DETONATE_CARS = 0x10493, + GET_POSITION_OF_ANALOGUE_STICKS = 0x10494, + IS_CAR_ON_FIRE = 0x10495, + IS_CAR_TYRE_BURST = 0x10496, + SET_CAR_DRIVE_STRAIGHT_AHEAD = 0x10497, + SET_CAR_WAIT = 0x10498, + IS_PLAYER_STANDING_ON_A_VEHICLE = 0x10499, + IS_PLAYER_FOOT_DOWN = 0x1049A, + IS_CHAR_FOOT_DOWN = 0x1049B, + INITIALISE_OBJECT_PATH = 0x1049C, + START_OBJECT_ON_PATH = 0x1049D, + SET_OBJECT_PATH_SPEED = 0x1049E, + SET_OBJECT_PATH_POSITION = 0x1049F, + GET_OBJECT_DISTANCE_ALONG_PATH = 0x104A0, + CLEAR_OBJECT_PATH = 0x104A1, + HELI_GOTO_COORDS = 0x104A2, + IS_INT_VAR_EQUAL_TO_CONSTANT = 0x104A3, + IS_INT_LVAR_EQUAL_TO_CONSTANT = 0x104A4, + GET_DEAD_CHAR_PICKUP_COORDS = 0x104A5, + CREATE_PROTECTION_PICKUP = 0x104A6, + IS_CHAR_IN_ANY_BOAT = 0x104A7, + IS_PLAYER_IN_ANY_BOAT = 0x104A8, + IS_CHAR_IN_ANY_HELI = 0x104A9, + IS_PLAYER_IN_ANY_HELI = 0x104AA, + IS_CHAR_IN_ANY_PLANE = 0x104AB, + IS_PLAYER_IN_ANY_PLANE = 0x104AC, + IS_CHAR_IN_WATER = 0x104AD, + SET_VAR_INT_TO_CONSTANT = 0x104AE, + SET_LVAR_INT_TO_CONSTANT = 0x104AF, + IS_INT_VAR_GREATER_THAN_CONSTANT = 0x104B0, + IS_INT_LVAR_GREATER_THAN_CONSTANT = 0x104B1, + IS_CONSTANT_GREATER_THAN_INT_VAR = 0x104B2, + IS_CONSTANT_GREATER_THAN_INT_LVAR = 0x104B3, + IS_INT_VAR_GREATER_OR_EQUAL_TO_CONSTANT = 0x104B4, + IS_INT_LVAR_GREATER_OR_EQUAL_TO_CONSTANT = 0x104B5, + IS_CONSTANT_GREATER_OR_EQUAL_TO_INT_VAR = 0x104B6, + IS_CONSTANT_GREATER_OR_EQUAL_TO_INT_LVAR = 0x104B7, + GET_CHAR_WEAPON_IN_SLOT = 0x104B8, + GET_CLOSEST_STRAIGHT_ROAD = 0x104B9, + SET_CAR_FORWARD_SPEED = 0x104BA, + SET_AREA_VISIBLE = 0x104BB, + SET_CUTSCENE_ANIM_TO_LOOP = 0x104BC, + MARK_CAR_AS_CONVOY_CAR = 0x104BD, + RESET_HAVOC_CAUSED_BY_PLAYER = 0x104BE, + GET_HAVOC_CAUSED_BY_PLAYER = 0x104BF, + CREATE_SCRIPT_ROADBLOCK = 0x104C0, + CLEAR_ALL_SCRIPT_ROADBLOCKS = 0x104C1, + SET_CHAR_OBJ_WALK_TO_CHAR = 0x104C2, + IS_PICKUP_IN_ZONE = 0x104C3, + GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS = 0x104C4, + HAS_CHAR_BEEN_PHOTOGRAPHED = 0x104C5, + SET_CHAR_OBJ_AIM_GUN_AT_CHAR = 0x104C6, + SWITCH_SECURITY_CAMERA = 0x104C7, + IS_CHAR_IN_FLYING_VEHICLE = 0x104C8, + IS_PLAYER_IN_FLYING_VEHICLE = 0x104C9, + HAS_SONY_CD_BEEN_READ = 0x104CA, + GET_NUMBER_OF_SONY_CDS_READ = 0x104CB, + ADD_SHORT_RANGE_BLIP_FOR_COORD_OLD = 0x104CC, + ADD_SHORT_RANGE_BLIP_FOR_COORD = 0x104CD, + ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD = 0x104CE, + ADD_MONEY_SPENT_ON_CLOTHES = 0x104CF, + SET_HELI_ORIENTATION = 0x104D0, + CLEAR_HELI_ORIENTATION = 0x104D1, + PLANE_GOTO_COORDS = 0x104D2, + GET_NTH_CLOSEST_CAR_NODE = 0x104D3, + GET_NTH_CLOSEST_CHAR_NODE = 0x104D4, + DRAW_WEAPONSHOP_CORONA = 0x104D5, + SET_ENABLE_RC_DETONATE_ON_CONTACT = 0x104D6, + FREEZE_CHAR_POSITION = 0x104D7, + SET_CHAR_DROWNS_IN_WATER = 0x104D8, + SET_OBJECT_RECORDS_COLLISIONS = 0x104D9, + HAS_OBJECT_COLLIDED_WITH_ANYTHING = 0x104DA, + REMOVE_RC_BUGGY = 0x104DB, + HAS_PHOTOGRAPH_BEEN_TAKEN = 0x104DC, + GET_CHAR_ARMOUR = 0x104DD, + SET_CHAR_ARMOUR = 0x104DE, + SET_HELI_STABILISER = 0x104DF, + SET_CAR_STRAIGHT_LINE_DISTANCE = 0x104E0, + POP_CAR_BOOT = 0x104E1, + SHUT_PLAYER_UP = 0x104E2, + SET_PLAYER_MOOD = 0x104E3, + REQUEST_COLLISION = 0x104E4, + LOCATE_OBJECT_2D = 0x104E5, + LOCATE_OBJECT_3D = 0x104E6, + IS_OBJECT_IN_WATER = 0x104E7, + SET_CHAR_OBJ_STEAL_ANY_CAR_EVEN_MISSION_CAR = 0x104E8, + IS_OBJECT_IN_AREA_2D = 0x104E9, + IS_OBJECT_IN_AREA_3D = 0x104EA, + TASK_TOGGLE_DUCK = 0x104EB, + SET_ZONE_CIVILIAN_CAR_INFO = 0x104EC, + REQUEST_ANIMATION = 0x104ED, + HAS_ANIMATION_LOADED = 0x104EE, + REMOVE_ANIMATION = 0x104EF, + IS_CHAR_WAITING_FOR_WORLD_COLLISION = 0x104F0, + IS_CAR_WAITING_FOR_WORLD_COLLISION = 0x104F1, + IS_OBJECT_WAITING_FOR_WORLD_COLLISION = 0x104F2, + SET_CHAR_SHUFFLE_INTO_DRIVERS_SEAT = 0x104F3, + ATTACH_CHAR_TO_OBJECT = 0x104F4, + SET_CHAR_AS_PLAYER_FRIEND = 0x104F5, + DISPLAY_NTH_ONSCREEN_COUNTER = 0x104F6, + DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING = 0x104F7, + ADD_SET_PIECE = 0x104F8, + SET_EXTRA_COLOURS = 0x104F9, + CLEAR_EXTRA_COLOURS = 0x104FA, + CLOSE_CAR_BOOT = 0x104FB, + GET_WHEELIE_STATS = 0x104FC, + DISARM_CHAR = 0x104FD, + BURST_CAR_TYRE = 0x104FE, + IS_CHAR_OBJ_NO_OBJ = 0x104FF, + IS_PLAYER_WEARING = 0x10500, + SET_PLAYER_CAN_DO_DRIVE_BY = 0x10501, + SET_CHAR_OBJ_SPRINT_TO_COORD = 0x10502, + CREATE_SWAT_ROPE = 0x10503, + SET_FIRST_PERSON_CONTROL_CAMERA = 0x10504, + GET_NEAREST_TYRE_TO_POINT = 0x10505, + SET_CAR_MODEL_COMPONENTS = 0x10506, + SWITCH_LIFT_CAMERA = 0x10507, + CLOSE_ALL_CAR_DOORS = 0x10508, + GET_DISTANCE_BETWEEN_COORDS_2D = 0x10509, + GET_DISTANCE_BETWEEN_COORDS_3D = 0x1050A, + POP_CAR_BOOT_USING_PHYSICS = 0x1050B, + SET_FIRST_PERSON_WEAPON_CAMERA = 0x1050C, + IS_CHAR_LEAVING_VEHICLE_TO_DIE = 0x1050D, + SORT_OUT_OBJECT_COLLISION_WITH_CAR = 0x1050E, + GET_MAX_WANTED_LEVEL = 0x1050F, + IS_CHAR_WANDER_PATH_CLEAR = 0x10510, + PRINT_HELP_WITH_NUMBER = 0x10511, + PRINT_HELP_FOREVER = 0x10512, + PRINT_HELP_FOREVER_WITH_NUMBER = 0x10513, + SET_CHAR_CAN_BE_DAMAGED_BY_MEMBERS_OF_GANG = 0x10514, + LOAD_AND_LAUNCH_MISSION_EXCLUSIVE = 0x10515, + IS_MISSION_AUDIO_PLAYING = 0x10516, + CREATE_LOCKED_PROPERTY_PICKUP = 0x10517, + CREATE_FORSALE_PROPERTY_PICKUP = 0x10518, + FREEZE_CAR_POSITION = 0x10519, + HAS_CHAR_BEEN_DAMAGED_BY_CHAR = 0x1051A, + HAS_CHAR_BEEN_DAMAGED_BY_CAR = 0x1051B, + HAS_CAR_BEEN_DAMAGED_BY_CHAR = 0x1051C, + HAS_CAR_BEEN_DAMAGED_BY_CAR = 0x1051D, + GET_RADIO_CHANNEL = 0x1051E, + DISPLAY_TEXT_WITH_3_NUMBERS = 0x1051F, + IS_CAR_DROWNING_IN_WATER = 0x10520, + IS_CHAR_DROWNING_IN_WATER = 0x10521, + DISABLE_CUTSCENE_SHADOWS = 0x10522, + HAS_GLASS_BEEN_SHATTERED_NEARBY = 0x10523, + ATTACH_CUTSCENE_OBJECT_TO_BONE = 0x10524, + ATTACH_CUTSCENE_OBJECT_TO_COMPONENT = 0x10525, + SET_CHAR_STAY_IN_CAR_WHEN_JACKED = 0x10526, + IS_MISSION_AUDIO_LOADING = 0x10527, + ADD_MONEY_SPENT_ON_WEAPONS = 0x10528, + ADD_MONEY_SPENT_ON_PROPERTY = 0x10529, + ADD_MONEY_SPENT_ON_AUTO_PAINTING = 0x1052A, + SET_CHAR_ANSWERING_MOBILE = 0x1052B, + SET_PLAYER_DRUNKENNESS = 0x1052C, + GET_PLAYER_DRUNKENNESS = 0x1052D, + SET_PLAYER_DRUG_LEVEL = 0x1052E, + GET_PLAYER_DRUG_LEVEL = 0x1052F, + ADD_LOAN_SHARK_VISITS = 0x10530, + ADD_STORES_KNOCKED_OFF = 0x10531, + ADD_MOVIE_STUNTS = 0x10532, + ADD_NUMBER_OF_ASSASSINATIONS = 0x10533, + ADD_PIZZAS_DELIVERED = 0x10534, + ADD_GARBAGE_PICKUPS = 0x10535, + ADD_ICE_CREAMS_SOLD = 0x10536, + SET_TOP_SHOOTING_RANGE_SCORE = 0x10537, + ADD_SHOOTING_RANGE_RANK = 0x10538, + ADD_MONEY_SPENT_ON_GAMBLING = 0x10539, + ADD_MONEY_WON_ON_GAMBLING = 0x1053A, + SET_LARGEST_GAMBLING_WIN = 0x1053B, + SET_CHAR_IN_PLAYERS_GROUP_CAN_FIGHT = 0x1053C, + CLEAR_CHAR_WAIT_STATE = 0x1053D, + GET_RANDOM_CAR_OF_TYPE_IN_AREA_NO_SAVE = 0x1053E, + SET_CAN_BURST_CAR_TYRES = 0x1053F, + SET_PLAYER_AUTO_AIM = 0x10540, + FIRE_HUNTER_GUN = 0x10541, + SET_PROPERTY_AS_OWNED = 0x10542, + ADD_BLOOD_RING_KILLS = 0x10543, + SET_LONGEST_TIME_IN_BLOOD_RING = 0x10544, + REMOVE_EVERYTHING_FOR_HUGE_CUTSCENE = 0x10545, + IS_PLAYER_TOUCHING_VEHICLE = 0x10546, + IS_CHAR_TOUCHING_VEHICLE = 0x10547, + CHECK_FOR_PED_MODEL_AROUND_PLAYER = 0x10548, + CLEAR_CHAR_FOLLOW_PATH = 0x10549, + SET_CHAR_CAN_BE_SHOT_IN_VEHICLE = 0x1054A, + ATTACH_CUTSCENE_OBJECT_TO_VEHICLE = 0x1054B, + LOAD_MISSION_TEXT = 0x1054C, + SET_TONIGHTS_EVENT = 0x1054D, + CLEAR_CHAR_LAST_DAMAGE_ENTITY = 0x1054E, + CLEAR_CAR_LAST_DAMAGE_ENTITY = 0x1054F, + FREEZE_OBJECT_POSITION = 0x10550, + SET_PLAYER_HAS_MET_DEBBIE_HARRY = 0x10551, + SET_RIOT_INTENSITY = 0x10552, + IS_CAR_IN_ANGLED_AREA_2D = 0x10553, + IS_CAR_IN_ANGLED_AREA_3D = 0x10554, + REMOVE_WEAPON_FROM_CHAR = 0x10555, + SET_UP_TAXI_SHORTCUT = 0x10556, + CLEAR_TAXI_SHORTCUT = 0x10557, + SET_CHAR_OBJ_GOTO_CAR_ON_FOOT = 0x10558, + GET_CLOSEST_WATER_NODE = 0x10559, + ADD_PORN_LEAFLET_TO_RUBBISH = 0x1055A, + CREATE_CLOTHES_PICKUP = 0x1055B, + CHANGE_BLIP_THRESHOLD = 0x1055C, + MAKE_PLAYER_FIRE_PROOF = 0x1055D, + INCREASE_PLAYER_MAX_HEALTH = 0x1055E, + INCREASE_PLAYER_MAX_ARMOUR = 0x1055F, + CREATE_RANDOM_CHAR_AS_DRIVER = 0x10560, + CREATE_RANDOM_CHAR_AS_PASSENGER = 0x10561, + SET_CHAR_IGNORE_THREATS_BEHIND_OBJECTS = 0x10562, + ENSURE_PLAYER_HAS_DRIVE_BY_WEAPON = 0x10563, + MAKE_HELI_COME_CRASHING_DOWN = 0x10564, + ADD_EXPLOSION_NO_SOUND = 0x10565, + SET_OBJECT_AREA_VISIBLE = 0x10566, + WAS_VEHICLE_EVER_POLICE = 0x10567, + SET_CHAR_NEVER_TARGETTED = 0x10568, + LOAD_UNCOMPRESSED_ANIM = 0x10569, + WAS_CUTSCENE_SKIPPED = 0x1056A, + SET_CHAR_CROUCH_WHEN_THREATENED = 0x1056B, + IS_CHAR_IN_ANY_POLICE_VEHICLE = 0x1056C, + DOES_CHAR_EXIST = 0x1056D, + DOES_VEHICLE_EXIST = 0x1056E, + ADD_SHORT_RANGE_BLIP_FOR_CONTACT_POINT = 0x1056F, + ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT = 0x10570, + IS_CHAR_STUCK = 0x10571, + SET_ALL_TAXIS_HAVE_NITRO = 0x10572, + SET_CHAR_STOP_SHOOT_DONT_SEEK_ENTITY = 0x10573, + FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION = 0x10574, + FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION = 0x10575, + FREEZE_OBJECT_POSITION_AND_DONT_LOAD_COLLISION = 0x10576, + SET_FADE_AND_JUMPCUT_AFTER_RC_EXPLOSION = 0x10577, + REGISTER_VIGILANTE_LEVEL = 0x10578, + CLEAR_ALL_CHAR_ANIMS = 0x10579, + SET_MAXIMUM_NUMBER_OF_CARS_IN_GARAGE = 0x1057A, + WANTED_STARS_ARE_FLASHING = 0x1057B, + SET_ALLOW_HURRICANES = 0x1057C, + PLAY_ANNOUNCEMENT = 0x1057D, + SET_PLAYER_IS_IN_STADIUM = 0x1057E, + GET_BUS_FARES_COLLECTED_BY_PLAYER = 0x1057F, + SET_CHAR_OBJ_BUY_ICE_CREAM = 0x10580, + DISPLAY_RADAR = 0x10581, + REGISTER_BEST_POSITION = 0x10582, + IS_PLAYER_IN_INFO_ZONE = 0x10583, + CLEAR_CHAR_ICE_CREAM_PURCHASE = 0x10584, + IS_IN_CAR_FIRE_BUTTON_PRESSED = 0x10585, + HAS_CHAR_ATTEMPTED_ATTRACTOR = 0x10586, + SET_LOAD_COLLISION_FOR_CAR_FLAG = 0x10587, + SET_LOAD_COLLISION_FOR_CHAR_FLAG = 0x10588, + SET_LOAD_COLLISION_FOR_OBJECT_FLAG = 0x10589, + ADD_BIG_GUN_FLASH = 0x1058A, + HAS_CHAR_BOUGHT_ICE_CREAM = 0x1058B, + GET_PROGRESS_PERCENTAGE = 0x1058C, + SET_SHORTCUT_PICKUP_POINT = 0x1058D, + SET_SHORTCUT_DROPOFF_POINT_FOR_MISSION = 0x1058E, + GET_RANDOM_ICE_CREAM_CUSTOMER_IN_AREA = 0x1058F, + GET_RANDOM_ICE_CREAM_CUSTOMER_IN_ZONE = 0x10590, + UNLOCK_ALL_CAR_DOORS_IN_AREA = 0x10591, + SET_GANG_ATTACK_PLAYER_WITH_COPS = 0x10592, + SET_CHAR_FRIGHTENED_IN_JACKED_CAR = 0x10593, + SET_VEHICLE_TO_FADE_IN = 0x10594, + REGISTER_ODDJOB_MISSION_PASSED = 0x10595, + IS_PLAYER_IN_SHORTCUT_TAXI = 0x10596, + IS_CHAR_DUCKING = 0x10597, + CREATE_DUST_EFFECT_FOR_CUTSCENE_HELI = 0x10598, + REGISTER_FIRE_LEVEL = 0x10599, + IS_AUSTRALIAN_GAME = 0x1059A, + DISARM_CAR_BOMB = 0x1059B, + SET_ONSCREEN_COUNTER_FLASH_WHEN_FIRST_DISPLAYED = 0x1059C, + SHUFFLE_CARD_DECKS = 0x1059D, + FETCH_NEXT_CARD = 0x1059E, + GET_OBJECT_VELOCITY = 0x1059F, + IS_DEBUG_CAMERA_ON = 0x105A0, + ADD_TO_OBJECT_ROTATION_VELOCITY = 0x105A1, + SET_OBJECT_ROTATION_VELOCITY = 0x105A2, + IS_OBJECT_STATIC = 0x105A3, + GET_ANGLE_BETWEEN_2D_VECTORS = 0x105A4, + DO_2D_RECTANGLES_COLLIDE = 0x105A5, + GET_OBJECT_ROTATION_VELOCITY = 0x105A6, + ADD_VELOCITY_RELATIVE_TO_OBJECT_VELOCITY = 0x105A7, + GET_OBJECT_SPEED = 0x105A8, + SET_VAR_TEXT_LABEL = 0x105A9, + SET_LVAR_TEXT_LABEL = 0x105AA, + VAR_TEXT_LABEL = 0x105AB, + LVAR_TEXT_LABEL = 0x105AC, + IS_VAR_TEXT_LABEL_EQUAL_TO_TEXT_LABEL = 0x105AD, + IS_LVAR_TEXT_LABEL_EQUAL_TO_TEXT_LABEL = 0x105AE, + DO_2D_LINES_INTERSECT = 0x105AF, + GET_2D_LINES_INTERSECT_POINT = 0x105B0, + IS_2D_POINT_IN_TRIANGLE = 0x105B1, + IS_2D_POINT_IN_RECTANGLE_ON_LEFT_SIDE_OF_LINE = 0x105B2, + IS_2D_POINT_ON_LEFT_SIDE_OF_2D_LINE = 0x105B3, + CHAR_LOOK_AT_OBJECT_ALWAYS = 0x105B4, + APPLY_COLLISION_ON_OBJECT = 0x105B5, + SAVE_STRING_TO_DEBUG_FILE = 0x105B6, + TASK_PLAYER_ON_FOOT = 0x105B7, + TASK_PLAYER_IN_CAR = 0x105B8, + TASK_PAUSE = 0x105B9, + TASK_STAND_STILL = 0x105BA, + TASK_FALL_AND_GET_UP = 0x105BB, + TASK_JUMP = 0x105BC, + TASK_TIRED = 0x105BD, + TASK_DIE = 0x105BE, + TASK_LOOK_AT_CHAR = 0x105BF, + TASK_LOOK_AT_VEHICLE = 0x105C0, + TASK_SAY = 0x105C1, + TASK_SHAKE_FIST = 0x105C2, + TASK_COWER = 0x105C3, + TASK_HANDS_UP = 0x105C4, + TASK_DUCK = 0x105C5, + TASK_DETONATE = 0x105C6, + TASK_USE_ATM = 0x105C7, + TASK_SCRATCH_HEAD = 0x105C8, + TASK_LOOK_ABOUT = 0x105C9, + TASK_ENTER_CAR_AS_PASSENGER = 0x105CA, + TASK_ENTER_CAR_AS_DRIVER = 0x105CB, + TASK_STEAL_CAR = 0x105CC, + TASK_LEAVE_CAR = 0x105CD, + TASK_LEAVE_CAR_AND_DIE = 0x105CE, + TASK_LEAVE_CAR_AND_FLEE = 0x105CF, + TASK_CAR_DRIVE = 0x105D0, + TASK_CAR_DRIVE_TO_COORD = 0x105D1, + TASK_CAR_DRIVE_WANDER = 0x105D2, + TASK_GO_STRAIGHT_TO_COORD = 0x105D3, + TASK_ACHIEVE_HEADING = 0x105D4, + SET_CHAR_IN_DISGUISE = 0x105D5, + FLUSH_ROUTE = 0x105D6, + EXTEND_ROUTE = 0x105D7, + TASK_FOLLOW_POINT_ROUTE = 0x105D8, + TASK_GOTO_CHAR = 0x105D9, + TASK_FLEE_POINT = 0x105DA, + TASK_FLEE_CHAR = 0x105DB, + TASK_SMART_FLEE_POINT = 0x105DC, + TASK_SMART_FLEE_CHAR = 0x105DD, + TASK_WANDER_STANDARD = 0x105DE, + TASK_WANDER_COP = 0x105DF, + TASK_WANDER_CRIMINAL = 0x105E0, + TASK_FOLLOW_LEADER_IN_FORMATION = 0x105E1, + TASK_KILL_CHAR_ON_FOOT = 0x105E2, + START_ADDING_STUNT_POINTS = 0x105E3, + ADD_STUNT_POINT = 0x105E4, + START_PLAYING_STUNT = 0x105E5, + HAS_STUNT_ENDED = 0x105E6, + HAS_STUNT_FAILED = 0x105E7, + START_RECORDING_STUNT = 0x105E8, + START_RECORDING_CAR = 0x105E9, + STOP_RECORDING_CARS = 0x105EA, + START_PLAYBACK_RECORDED_CAR = 0x105EB, + STOP_PLAYBACK_RECORDED_CAR = 0x105EC, + PAUSE_PLAYBACK_RECORDED_CAR = 0x105ED, + UNPAUSE_PLAYBACK_RECORDED_CAR = 0x105EE, + SET_CAR_PROTECT_CAR_REAR = 0x105EF, + SET_CAR_PROTECT_CAR_FRONT = 0x105F0, + SET_CAR_ESCORT_CAR_LEFT = 0x105F1, + SET_CAR_ESCORT_CAR_RIGHT = 0x105F2, + SET_CAR_ESCORT_CAR_REAR = 0x105F3, + SET_CAR_ESCORT_CAR_FRONT = 0x105F4, + TASK_FOLLOW_PATH_NODES_TO_COORD = 0x105F5, + IS_CHAR_IN_ANGLED_AREA_2D = 0x105F6, + IS_CHAR_IN_ANGLED_AREA_ON_FOOT_2D = 0x105F7, + IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D = 0x105F8, + IS_CHAR_STOPPED_IN_ANGLED_AREA_2D = 0x105F9, + IS_CHAR_STOPPED_IN_ANGLED_AREA_ON_FOOT_2D = 0x105FA, + IS_CHAR_STOPPED_IN_ANGLED_AREA_IN_CAR_2D = 0x105FB, + IS_CHAR_IN_ANGLED_AREA_3D = 0x105FC, + IS_CHAR_IN_ANGLED_AREA_ON_FOOT_3D = 0x105FD, + IS_CHAR_IN_ANGLED_AREA_IN_CAR_3D = 0x105FE, + IS_CHAR_STOPPED_IN_ANGLED_AREA_3D = 0x105FF, + IS_CHAR_STOPPED_IN_ANGLED_AREA_ON_FOOT_3D = 0x10600, + IS_CHAR_STOPPED_IN_ANGLED_AREA_IN_CAR_3D = 0x10601, + IS_CHAR_IN_TAXI = 0x10602, + TASK_GO_TO_COORD_ANY_MEANS = 0x10603, + GET_HEADING_FROM_VECTOR_2D = 0x10604, + TASK_PLAY_ANIM = 0x10605, + LOAD_PATH_NODES_IN_AREA = 0x10606, + RELEASE_PATH_NODES = 0x10607, + HAVE_PATH_NODES_BEEN_LOADED = 0x10608, + LOAD_ALL_PATH_NODES_FOR_DEBUG = 0x10609, + LOAD_CHAR_DECISION_MAKER = 0x1060A, + SET_CHAR_DECISION_MAKER = 0x1060B, + CLEAR_ALL_DECISION_MAKERS = 0x1060C, + SET_TEXT_DROPSHADOW = 0x1060D, + IS_PLAYBACK_GOING_ON_FOR_CAR = 0x1060E, + SET_SENSE_RANGE = 0x1060F, + SET_HEARING_RANGE = 0x10610, + IS_CHAR_PLAYING_ANIM = 0x10611, + SET_CHAR_ANIM_PLAYING_FLAG = 0x10612, + GET_CHAR_ANIM_CURRENT_TIME = 0x10613, + SET_CHAR_ANIM_CURRENT_TIME = 0x10614, + OPEN_SEQUENCE_TASK = 0x10615, + CLOSE_SEQUENCE_TASK = 0x10616, + SCRIPT_EVENT = 0x10617, + PERFORM_SEQUENCE_TASK = 0x10618, + SET_CHAR_COLLISION = 0x10619, + GET_CHAR_ANIM_TOTAL_TIME = 0x1061A, + CLEAR_SEQUENCE_TASK = 0x1061B, + CLEAR_ALL_SEQUENCE_TASKS = 0x1061C, + ADD_ATTRACTOR = 0x1061D, + CLEAR_ATTRACTOR = 0x1061E, + CLEAR_ALL_ATTRACTORS = 0x1061F, + TASK_PLAY_ANIM_FOR_TIME = 0x10620, + CREATE_CHAR_AT_ATTRACTOR = 0x10621, + TASK_LEAVE_CAR_IMMEDIATELY = 0x10622, + INCREMENT_INT_STAT = 0x10623, + INCREMENT_FLOAT_STAT = 0x10624, + DECREMENT_INT_STAT = 0x10625, + DECREMENT_FLOAT_STAT = 0x10626, + REGISTER_INT_STAT = 0x10627, + REGISTER_FLOAT_STAT = 0x10628, + SET_INT_STAT = 0x10629, + SET_FLOAT_STAT = 0x1062A, + GET_ATTEMPTS_FOR_THIS_MISSION = 0x1062B, + REGISTER_THIS_MISSION_HAS_BEEN_ATTEMPTED = 0x1062C, + REGISTER_THIS_MISSION_HAS_BEEN_PASSED = 0x1062D, + GET_SCRIPT_TASK_STATUS = 0x1062E, + CREATE_GROUP = 0x1062F, + SET_GROUP_LEADER = 0x10630, + SET_GROUP_MEMBER = 0x10631, + REMOVE_GROUP = 0x10632, + TASK_LEAVE_ANY_CAR = 0x10633, + TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING = 0x10634, + TASK_AIM_GUN_AT_CHAR = 0x10635, + TASK_SIDE_STEP_AND_SHOOT = 0x10636, + TASK_GO_TO_COORD_WHILE_SHOOTING = 0x10637, + TASK_STAY_IN_SAME_PLACE = 0x10638, + TASK_TURN_CHAR_TO_FACE_CHAR = 0x10639, + OPEN_THREAT_LIST = 0x1063A, + CLOSE_THREAT_LIST = 0x1063B, + SET_PEDMODEL_AS_THREAT = 0x1063C, + SET_CHAR_THREAT_LIST = 0x1063D, + REMOVE_THREAT_LIST = 0x1063E, + PERFORM_SEQUENCE_TASK_REPEATEDLY = 0x1063F, + SET_PEDTYPE_AS_THREAT = 0x10640, + CLEAR_CHAR_THREATS = 0x10641, + IS_CHAR_AT_SCRIPTED_ATTRACTOR = 0x10642, + SET_SEQUENCE_TO_REPEAT = 0x10643, + CREATE_PED_GENERATOR = 0x10644, + SWITCH_PED_GENERATOR = 0x10645, + GET_SEQUENCE_PROGRESS = 0x10646, + CLEAR_LOOK_AT = 0x10647, + SET_FOLLOW_NODE_THRESHOLD_DISTANCE = 0x10648, + SET_CHAR_ZONE_DISTANCE = 0x10649, + ADD_PEDMODEL_AS_ATTRACTOR_USER = 0x1064A, + CREATE_FX_SYSTEM = 0x1064B, + PLAY_FX_SYSTEM = 0x1064C, + PAUSE_FX_SYSTEM = 0x1064D, + STOP_FX_SYSTEM = 0x1064E, + PLAY_AND_KILL_FX_SYSTEM = 0x1064F, + KILL_FX_SYSTEM = 0x10650, + CREATE_FX_SYSTEM_WITH_DIRECTION = 0x10651, + GET_INT_STAT = 0x10652, + GET_FLOAT_STAT = 0x10653, + SET_OBJECT_RENDER_SCORCHED = 0x10654, + TASK_LOOK_AT_OBJECT = 0x10655, + LIMIT_ANGLE = 0x10656, + OPEN_CAR_DOOR = 0x10657, + SET_GROUP_DEFAULT_LEADER_TASK = 0x10658, + SET_ATTRACTOR_PAIR = 0x10659, + PLACE_CHAR_AT_ATTRACTOR = 0x1065A, + GET_PICKUP_COORDINATES = 0x1065B, + REMOVE_DECISION_MAKER = 0x1065C, + VIEW_INTEGER_VARIABLE = 0x1065D, + VIEW_FLOAT_VARIABLE = 0x1065E, + WATCH_INTEGER_VARIABLE = 0x1065F, + WATCH_FLOAT_VARIABLE = 0x10660, + BREAKPOINT = 0x10661, + WRITE_DEBUG = 0x10662, + WRITE_DEBUG_WITH_INT = 0x10663, + WRITE_DEBUG_WITH_FLOAT = 0x10664, + GET_CHAR_MODEL = 0x10665, + IS_CHAR_TOUCHING_ANY_OBJECT = 0x10666, + TASK_AIM_GUN_AT_COORD = 0x10667, + TASK_SHOOT_AT_COORD = 0x10668, + CREATE_FX_SYSTEM_ON_CHAR = 0x10669, + CREATE_FX_SYSTEM_ON_CHAR_WITH_DIRECTION = 0x1066A, + CREATE_FX_SYSTEM_ON_CAR = 0x1066B, + CREATE_FX_SYSTEM_ON_CAR_WITH_DIRECTION = 0x1066C, + CREATE_FX_SYSTEM_ON_OBJECT = 0x1066D, + CREATE_FX_SYSTEM_ON_OBJECT_WITH_DIRECTION = 0x1066E, + ADD_QUEUED_DIALOGUE = 0x1066F, + IS_DIALOGUE_FINISHED = 0x10670, + IS_DIALOGUE_PLAYING = 0x10671, + TASK_DESTROY_CAR = 0x10672, + TASK_DIVE_AND_GET_UP = 0x10673, + CUSTOM_PLATE_FOR_NEXT_CAR = 0x10674, + CREATE_PED_GENERATOR_AT_ATTRACTOR = 0x10675, + TASK_SHUFFLE_TO_NEXT_CAR_SEAT = 0x10676, + TASK_CHAT_WITH_CHAR = 0x10677, + GET_CHAR_AT_SCRIPTED_ATTRACTOR = 0x10678, + ATTACH_CAMERA_TO_VEHICLE = 0x10679, + ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE = 0x1067A, + ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_CHAR = 0x1067B, + ATTACH_CAMERA_TO_CHAR = 0x1067C, + ATTACH_CAMERA_TO_CHAR_LOOK_AT_VEHICLE = 0x1067D, + ATTACH_CAMERA_TO_CHAR_LOOK_AT_CHAR = 0x1067E, + FORCE_CAR_LIGHTS = 0x1067F, + ADD_PEDTYPE_AS_ATTRACTOR_USER = 0x10680, + ATTACH_OBJECT_TO_CAR = 0x10681, + DETACH_OBJECT = 0x10682, + ATTACH_CAR_TO_CAR = 0x10683, + DETACH_CAR = 0x10684, + IS_OBJECT_ATTACHED = 0x10685, + IS_VEHICLE_ATTACHED = 0x10686, + CLEAR_CHAR_TASKS = 0x10687, + TASK_TOGGLE_PED_THREAT_SCANNER = 0x10688, + POP_CAR_DOOR = 0x10689, + FIX_CAR_DOOR = 0x1068A, + TASK_EVERYONE_LEAVE_CAR = 0x1068B, + IS_PLAYER_TARGETTING_ANYTHING = 0x1068C, + GET_ACTIVE_CAMERA_COORDINATES = 0x1068D, + GET_ACTIVE_CAMERA_POINT_AT = 0x1068E, + GET_CLOSEST_BUYABLE_OBJECT_TO_PLAYER = 0x1068F, + OPEN_FRIEND_LIST = 0x10690, + CLOSE_FRIEND_LIST = 0x10691, + REMOVE_FRIEND_LIST = 0x10692, + SET_PEDMODEL_AS_FRIEND = 0x10693, + SET_PEDTYPE_AS_FRIEND = 0x10694, + CLEAR_CHAR_FRIENDS = 0x10695, + SET_CHAR_FRIEND_LIST = 0x10696, + POP_CAR_PANEL = 0x10697, + FIX_CAR_PANEL = 0x10698, + FIX_CAR_TYRE = 0x10699, + ATTACH_OBJECT_TO_OBJECT = 0x1069A, + ATTACH_OBJECT_TO_CHAR = 0x1069B, + ATTACH_CAMERA_TO_OBJECT = 0x1069C, + ATTACH_CAMERA_TO_OBJECT_LOOK_AT_VEHICLE = 0x1069D, + ATTACH_CAMERA_TO_OBJECT_LOOK_AT_CHAR = 0x1069E, + ATTACH_CAMERA_TO_OBJECT_LOOK_AT_OBJECT = 0x1069F, + ATTACH_CAMERA_TO_CHAR_LOOK_AT_OBJECT = 0x106A0, + ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_OBJECT = 0x106A1, + GET_CAR_SPEED_VECTOR = 0x106A2, + GET_CAR_MASS = 0x106A3, + TASK_KILL_THREATS_ON_FOOT_WHILE_DUCKING = 0x106A4, + TASK_DIVE_FROM_ATTACHMENT_AND_GET_UP = 0x106A5, + TASK_PLAY_ANIM_WITH_VELOCITY_EXTRACTION = 0x106A6, + ATTACH_CHAR_TO_BIKE = 0x106A7, + TASK_GOTO_CHAR_OFFSET = 0x106A8, + TASK_LOOK_AT_COORD = 0x106A9, + IS_RECORDING_GOING_ON_FOR_CAR = 0x106AA, + HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE = 0x106AB, + GET_CHAR_SPEED = 0x106AC, + SET_GROUP_DECISION_MAKER = 0x106AD, + LOAD_GROUP_DECISION_MAKER = 0x106AE, + DISABLE_PLAYER_SPRINT = 0x106AF, + TASK_SIT_DOWN = 0x106B0, + CREATE_SEARCHLIGHT = 0x106B1, + DELETE_SEARCHLIGHT = 0x106B2, + DOES_SEARCHLIGHT_EXIST = 0x106B3, + MOVE_SEARCHLIGHT_BETWEEN_COORDS = 0x106B4, + POINT_SEARCHLIGHT_AT_COORD = 0x106B5, + POINT_SEARCHLIGHT_AT_CHAR = 0x106B6, + IS_CHAR_IN_SEARCHLIGHT = 0x106B7, + SET_GROUP_DEFAULT_TASK = 0x106B8, + HAS_CUTSCENE_LOADED = 0x106B9, + TASK_TURN_CHAR_TO_FACE_COORD = 0x106BA, + TASK_DRIVE_POINT_ROUTE = 0x106BB, + FIRE_SINGLE_BULLET = 0x106BC, + IS_LINE_OF_SIGHT_CLEAR = 0x106BD, + GET_CAR_ROLL = 0x106BE, + POINT_SEARCHLIGHT_AT_VEHICLE = 0x106BF, + IS_VEHICLE_IN_SEARCHLIGHT = 0x106C0, + CREATE_SEARCHLIGHT_ON_VEHICLE = 0x106C1, + TASK_GO_TO_COORD_WHILE_AIMING = 0x106C2, + GET_NUMBER_OF_FIRES_IN_RANGE = 0x106C3, + ADD_BLIP_FOR_SEARCHLIGHT = 0x106C4, + SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR = 0x106C5, + TASK_OPEN_DRIVER_DOOR = 0x106C6, + TASK_CAR_TEMP_ACTION = 0x106C7, + SET_LA_RIOTS = 0x106C8, + REMOVE_CHAR_FROM_GROUP = 0x106C9, + ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT = 0x106CA, + SET_VEHICLE_RECORDS_COLLISIONS = 0x106CB, + DRAW_CROSS_IN_FRONT_OF_DEBUG_CAMERA = 0x106CC, + DRAW_DEBUG_CUBE = 0x106CD, + GET_CAR_LAST_ROUTE_COORDS = 0x106CE, + DISPLAY_TIMER_BARS = 0x106CF, + SWITCH_EMERGENCY_SERVICES = 0x106D0, + SET_VAR_TEXT_LABEL16 = 0x106D1, + SET_LVAR_TEXT_LABEL16 = 0x106D2, + VAR_TEXT_LABEL16 = 0x106D3, + LVAR_TEXT_LABEL16 = 0x106D4, + CREATE_CHECKPOINT = 0x106D5, + DELETE_CHECKPOINT = 0x106D6, + SWITCH_RANDOM_TRAINS = 0x106D7, + CREATE_MISSION_TRAIN = 0x106D8, + DELETE_MISSION_TRAINS = 0x106D9, + MARK_MISSION_TRAINS_AS_NO_LONGER_NEEDED = 0x106DA, + DELETE_ALL_TRAINS = 0x106DB, + SET_TRAIN_SPEED = 0x106DC, + SET_TRAIN_CRUISE_SPEED = 0x106DD, + GET_TRAIN_CABOOSE = 0x106DE, + DELETE_PLAYER = 0x106DF, + SET_TWO_PLAYER_CAMERA_MODE = 0x106E0, + TASK_CAR_MISSION = 0x106E1, + TASK_GO_TO_OBJECT = 0x106E2, + TASK_WEAPON_ROLL = 0x106E3, + TASK_CHAR_ARREST_CHAR = 0x106E4, + GET_AVAILABLE_VEHICLE_MOD = 0x106E5, + GET_VEHICLE_MOD_TYPE = 0x106E6, + ADD_VEHICLE_MOD = 0x106E7, + REMOVE_VEHICLE_MOD = 0x106E8, + REQUEST_VEHICLE_MOD = 0x106E9, + HAS_VEHICLE_MOD_LOADED = 0x106EA, + MARK_VEHICLE_MOD_AS_NO_LONGER_NEEDED = 0x106EB, + GET_NUM_AVAILABLE_PAINTJOBS = 0x106EC, + GIVE_VEHICLE_PAINTJOB = 0x106ED, + IS_GROUP_MEMBER = 0x106EE, + IS_GROUP_LEADER = 0x106EF, + SET_GROUP_SEPARATION_RANGE = 0x106F0, + LIMIT_TWO_PLAYER_DISTANCE = 0x106F1, + RELEASE_TWO_PLAYER_DISTANCE = 0x106F2, + SET_PLAYER_PLAYER_TARGETTING = 0x106F3, + CREATE_SCRIPT_GANG_ROADBLOCK = 0x106F4, + GET_SCRIPT_FIRE_COORDS = 0x106F5, + CLEAR_TWO_PLAYER_CAMERA_MODE = 0x106F6, + SET_PLAYER_PASSENGER_CAN_SHOOT = 0x106F7, + GET_NTH_CLOSEST_CAR_NODE_WITH_HEADING = 0x106F8, + GET_HEIGHT_OF_CAR_WHEELS_FROM_GROUND = 0x106F9, + SET_PLAYERS_CAN_BE_IN_SEPARATE_CARS = 0x106FA, + SWITCH_PLAYER_CROSSHAIR = 0x106FB, + DOES_CAR_HAVE_STUCK_CAR_CHECK = 0x106FC, + SET_PLAYBACK_SPEED = 0x106FD, + GET_CAR_VALUE = 0x106FE, + ARE_ANY_CHARS_NEAR_CHAR = 0x106FF, + SKIP_CUTSCENE_START = 0x10700, + SKIP_CUTSCENE_END = 0x10701, + GET_PERCENTAGE_TAGGED_IN_AREA = 0x10702, + SET_TAG_STATUS_IN_AREA = 0x10703, + CAR_GOTO_COORDINATES_RACING = 0x10704, + START_PLAYBACK_RECORDED_CAR_USING_AI = 0x10705, + SKIP_IN_PLAYBACK_RECORDED_CAR = 0x10706, + SKIP_CUTSCENE_START_INTERNAL = 0x10707, + CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE = 0x10708, + ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE = 0x10709, + TASK_PICK_UP_OBJECT = 0x1070A, + DROP_OBJECT = 0x1070B, + EXPLODE_CAR_IN_CUTSCENE = 0x1070C, + BUILD_PLAYER_MODEL = 0x1070D, + PLANE_ATTACK_PLAYER = 0x1070E, + PLANE_FLY_IN_DIRECTION = 0x1070F, + PLANE_FOLLOW_ENTITY = 0x10710, + ALLOCATE_SCRIPT_TO_PED_GENERATOR = 0x10711, + ALLOCATE_SCRIPT_TO_RANDOM_PED = 0x10712, + TASK_DRIVE_BY = 0x10713, + SET_CAR_STAY_IN_SLOW_LANE = 0x10714, + TAKE_REMOTE_CONTROL_OF_CAR = 0x10715, + IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED = 0x10716, + START_SETTING_UP_CONVERSATION = 0x10717, + SET_UP_CONVERSATION_NODE = 0x10718, + FINISH_SETTING_UP_CONVERSATION = 0x10719, + IS_CONVERSATION_AT_NODE = 0x1071A, + CLEAR_ALL_CONVERSATIONS = 0x1071B, + GET_CHAR_LIGHTING = 0x1071C, + SET_CLOSEST_OBJECT_OF_TYPE_RENDER_SCORCHED = 0x1071D, + GET_OBJECT_HEALTH = 0x1071E, + SET_OBJECT_HEALTH = 0x1071F, + GET_VEHICLE_WHEEL_UPGRADE_CLASS = 0x10720, + GET_NUM_WHEELS_IN_UPGRADE_CLASS = 0x10721, + GET_WHEEL_IN_UPGRADE_CLASS = 0x10722, + BREAK_OBJECT = 0x10723, + HELI_ATTACK_PLAYER = 0x10724, + HELI_FLY_IN_DIRECTION = 0x10725, + HELI_FOLLOW_ENTITY = 0x10726, + POLICE_HELI_CHASE_ENTITY = 0x10727, + SET_UP_CONVERSATION_END_NODE = 0x10728, + TASK_USE_MOBILE_PHONE = 0x10729, + TASK_WARP_CHAR_INTO_CAR_AS_DRIVER = 0x1072A, + TASK_WARP_CHAR_INTO_CAR_AS_PASSENGER = 0x1072B, + SWITCH_COPS_ON_BIKES = 0x1072C, + IS_FLAME_IN_ANGLED_AREA_2D = 0x1072D, + IS_FLAME_IN_ANGLED_AREA_3D = 0x1072E, + ADD_STUCK_CAR_CHECK_WITH_WARP = 0x1072F, + DAMAGE_CAR_PANEL = 0x10730, + SET_CAR_ROLL = 0x10731, + SUPPRESS_CAR_MODEL = 0x10732, + DONT_SUPPRESS_CAR_MODEL = 0x10733, + DONT_SUPPRESS_ANY_CAR_MODELS = 0x10734, + IS_PS2_KEYBOARD_KEY_PRESSED = 0x10735, + IS_PS2_KEYBOARD_KEY_JUST_PRESSED = 0x10736, + IS_CHAR_HOLDING_OBJECT = 0x10737, + SET_ZONE_RADAR_COLOURS = 0x10738, + GIVE_LOWRIDER_SUSPENSION_TO_CAR = 0x10739, + DOES_CAR_HAVE_LOWRIDER_SUSPENSION = 0x1073A, + SET_CAR_CAN_GO_AGAINST_TRAFFIC = 0x1073B, + DAMAGE_CAR_DOOR = 0x1073C, + GET_RANDOM_CAR_IN_SPHERE = 0x1073D, + GET_RANDOM_CAR_IN_SPHERE_NO_SAVE = 0x1073E, + GET_RANDOM_CHAR_IN_SPHERE = 0x1073F, + GET_COORDS_OF_CLOSEST_COLLECTABLE1 = 0x10740, + HAS_CHAR_BEEN_ARRESTED = 0x10741, + SET_PLANE_THROTTLE = 0x10742, + HELI_LAND_AT_COORDS = 0x10743, + GET_STAT_CHANGE_AMOUNT = 0x10744, + PLANE_STARTS_IN_AIR = 0x10745, + SET_RELATIONSHIP = 0x10746, + CLEAR_RELATIONSHIP = 0x10747, + CLEAR_ALL_RELATIONSHIPS = 0x10748, + CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE = 0x10749, + ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE = 0x1074A, + DRAW_SPRITE_WITH_ROTATION = 0x1074B, + TASK_USE_ATTRACTOR = 0x1074C, + TASK_SHOOT_AT_CHAR = 0x1074D, + SET_INFORM_RESPECTED_FRIENDS = 0x1074E, + IS_CHAR_RESPONDING_TO_EVENT = 0x1074F, + SET_OBJECT_VISIBLE = 0x10750, + TASK_FLEE_CHAR_ANY_MEANS = 0x10751, + STOP_RECORDING_CAR = 0x10752, + SET_ALERTNESS = 0x10753, + FLUSH_PATROL_ROUTE = 0x10754, + EXTEND_PATROL_ROUTE = 0x10755, + TASK_GO_ON_PATROL = 0x10756, + GET_PATROL_ALERTNESS = 0x10757, + SET_CHAR_SPECIAL_EVENT = 0x10758, + SET_ATTRACTOR_AS_COVER_NODE = 0x10759, + PLAY_OBJECT_ANIM = 0x1075A, + SET_RADAR_ZOOM = 0x1075B, + DOES_BLIP_EXIST = 0x1075C, + LOAD_PRICES = 0x1075D, + LOAD_SHOP = 0x1075E, + GET_NUMBER_OF_ITEMS_IN_SHOP = 0x1075F, + GET_ITEM_IN_SHOP = 0x10760, + GET_PRICE_OF_ITEM = 0x10761, + TASK_DEAD = 0x10762, + SET_CAR_AS_MISSION_CAR = 0x10763, + IS_SEARCHLIGHT_IN_ANGLED_AREA_2D = 0x10764, + IS_SEARCHLIGHT_IN_ANGLED_AREA_3D = 0x10765, + SWITCH_SEARCHLIGHT_BULB = 0x10766, + SET_ZONE_POPULATION_TYPE = 0x10767, + SET_ZONE_GANG_CAP = 0x10768, + GET_ZONE_GANG_CAP = 0x10769, + SET_ZONE_DEALER_STRENGTH = 0x1076A, + GET_ZONE_DEALER_STRENGTH = 0x1076B, + SET_ZONE_GANG_STRENGTH = 0x1076C, + GET_ZONE_GANG_STRENGTH = 0x1076D, + SET_NO_POLICE_DURING_LA_RIOTS = 0x1076E, + IS_MESSAGE_BEING_DISPLAYED = 0x1076F, + SET_CHAR_IS_TARGET_PRIORITY = 0x10770, + CUSTOM_PLATE_DESIGN_FOR_NEXT_CAR = 0x10771, + TASK_GOTO_CAR = 0x10772, + CLEAR_HELP_WITH_THIS_LABEL = 0x10773, + IS_SEARCHLIGHT_BULB_ON = 0x10774, + CREATE_OIL_PUDDLE = 0x10775, + REQUEST_IPL = 0x10776, + REMOVE_IPL = 0x10777, + REMOVE_IPL_DISCREETLY = 0x10778, + TASK_OPEN_PASSENGER_DOOR = 0x10779, + SET_CHAR_RELATIONSHIP = 0x1077A, + CLEAR_CHAR_RELATIONSHIP = 0x1077B, + CLEAR_ALL_CHAR_RELATIONSHIPS = 0x1077C, + GET_CAR_PITCH = 0x1077D, + GET_AREA_VISIBLE = 0x1077E, + ADD_INT_TO_VAR_CONSOLE = 0x1077F, + HELI_KEEP_ENTITY_IN_VIEW = 0x10780, + GET_WEAPONTYPE_MODEL = 0x10781, + GET_WEAPONTYPE_SLOT = 0x10782, + GET_SHOPPING_EXTRA_INFO = 0x10783, + GIVE_PLAYER_CLOTHES = 0x10784, + GIVE_PLAYER_TATTOO = 0x10785, + GET_NUMBER_OF_FIRES_IN_AREA = 0x10786, + SET_CHAR_TYRES_CAN_BE_BURST = 0x10787, + ATTACH_WINCH_TO_HELI = 0x10788, + RELEASE_ENTITY_FROM_WINCH = 0x10789, + GET_TRAIN_CARRIAGE = 0x1078A, + GRAB_ENTITY_ON_WINCH = 0x1078B, + GET_NAME_OF_ITEM = 0x1078C, + ADD_FLOAT_TO_VAR_CONSOLE = 0x1078D, + TASK_DRAG_CHAR_FROM_CAR = 0x1078E, + TASK_CLIMB = 0x1078F, + BUY_ITEM = 0x10790, + BUY_TATTOO = 0x10791, + CLEAR_CHAR_TASKS_IMMEDIATELY = 0x10792, + STORE_CLOTHES_STATE = 0x10793, + RESTORE_CLOTHES_STATE = 0x10794, + DELETE_WINCH_FOR_HELI = 0x10795, + GET_ROPE_HEIGHT_FOR_OBJECT = 0x10796, + SET_ROPE_HEIGHT_FOR_OBJECT = 0x10797, + GRAB_ENTITY_ON_ROPE_FOR_OBJECT = 0x10798, + RELEASE_ENTITY_FROM_ROPE_FOR_OBJECT = 0x10799, + ATTACH_CAR_TO_ROPE_FOR_OBJECT = 0x1079A, + ATTACH_CHAR_TO_ROPE_FOR_OBJECT = 0x1079B, + ATTACH_OBJECT_TO_ROPE_FOR_OBJECT = 0x1079C, + PLAYER_ENTERED_DOCK_CRANE = 0x1079D, + PLAYER_ENTERED_BUILDINGSITE_CRANE = 0x1079E, + PLAYER_LEFT_CRANE = 0x1079F, + PERFORM_SEQUENCE_TASK_FROM_PROGRESS = 0x107A0, + SET_NEXT_DESIRED_MOVE_STATE = 0x107A1, + SET_NEXT_EVENT_RESPONSE_SEQUENCE = 0x107A2, + TASK_GOTO_CHAR_AIMING = 0x107A3, + GET_SEQUENCE_PROGRESS_RECURSIVE = 0x107A4, + TASK_KILL_CHAR_ON_FOOT_TIMED = 0x107A5, + GET_NEAREST_TAG_POSITION = 0x107A6, + TASK_JETPACK = 0x107A7, + SET_AREA51_SAM_SITE = 0x107A8, + IS_CHAR_IN_ANY_SEARCHLIGHT = 0x107A9, + GET_SEARCHLIGHT_COORDS = 0x107AA, + IS_TRAILER_ATTACHED_TO_CAB = 0x107AB, + DETACH_TRAILER_FROM_CAB = 0x107AC, + GET_TRAILER_ATTACHED_TO_CAB = 0x107AD, + GET_CAB_ATTACHED_TO_TRAILER = 0x107AE, + GET_PLAYER_GROUP = 0x107AF, + GET_LOADED_SHOP = 0x107B0, + GET_BEAT_PROXIMITY = 0x107B1, + SET_BEAT_ZONE_SIZE = 0x107B2, + SET_GROUP_DEFAULT_TASK_ALLOCATOR = 0x107B3, + SET_PLAYER_GROUP_RECRUITMENT = 0x107B4, + DISPLAY_TWO_ONSCREEN_COUNTERS = 0x107B5, + DISPLAY_TWO_ONSCREEN_COUNTERS_WITH_STRING = 0x107B6, + DISPLAY_NTH_TWO_ONSCREEN_COUNTERS = 0x107B7, + DISPLAY_NTH_TWO_ONSCREEN_COUNTERS_WITH_STRING = 0x107B8, + TASK_KILL_CHAR_ON_FOOT_PATROL = 0x107B9, + HELI_AIM_AHEAD_OF_TARGET_ENTITY = 0x107BA, + ACTIVATE_HELI_SPEED_CHEAT = 0x107BB, + TASK_SET_CHAR_DECISION_MAKER = 0x107BC, + DELETE_MISSION_TRAIN = 0x107BD, + MARK_MISSION_TRAIN_AS_NO_LONGER_NEEDED = 0x107BE, + SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR = 0x107BF, + REQUEST_CAR_RECORDING = 0x107C0, + HAS_CAR_RECORDING_BEEN_LOADED = 0x107C1, + DISPLAY_PLAYBACK_RECORDED_CAR = 0x107C2, + GET_OBJECT_QUATERNION = 0x107C3, + SET_OBJECT_QUATERNION = 0x107C4, + GET_VEHICLE_QUATERNION = 0x107C5, + SET_VEHICLE_QUATERNION = 0x107C6, + SET_MISSION_TRAIN_COORDINATES = 0x107C7, + DISPLAY_DEBUG_MESSAGE = 0x107C8, + TASK_COMPLEX_PICKUP_OBJECT = 0x107C9, + TASK_SIMPLE_PUTDOWN_OBJECT = 0x107CA, + LISTEN_TO_PLAYER_GROUP_COMMANDS = 0x107CB, + SET_PLAYER_ENTER_CAR_BUTTON = 0x107CC, + TASK_CHAR_SLIDE_TO_COORD = 0x107CD, + SET_BULLET_WHIZZ_BY_DISTANCE = 0x107CE, + SET_TWO_PLAYER_CAM_MODE_SEPARATE_CARS = 0x107CF, + GET_CURRENT_DAY_OF_WEEK = 0x107D0, + SET_CURRENT_DAY_OF_WEEK = 0x107D1, + ACTIVATE_INTERIORS = 0x107D2, + REGISTER_SCRIPT_BRAIN_FOR_CODE_USE = 0x107D3, + REGISTER_OBJECT_SCRIPT_BRAIN_FOR_CODE_USE = 0x107D4, + APPLY_FORCE_TO_CAR = 0x107D5, + IS_INT_LVAR_EQUAL_TO_INT_VAR = 0x107D6, + IS_FLOAT_LVAR_EQUAL_TO_FLOAT_VAR = 0x107D7, + IS_INT_LVAR_NOT_EQUAL_TO_INT_VAR = 0x107D8, + IS_FLOAT_LVAR_NOT_EQUAL_TO_FLOAT_VAR = 0x107D9, + ADD_TO_CAR_ROTATION_VELOCITY = 0x107DA, + SET_CAR_ROTATION_VELOCITY = 0x107DB, + GET_CAR_ROTATION_VELOCITY = 0x107DC, + SET_CHAR_SHOOT_RATE = 0x107DD, + IS_MODEL_IN_CDIMAGE = 0x107DE, + REMOVE_OIL_PUDDLES_IN_AREA = 0x107DF, + SET_BLIP_AS_FRIENDLY = 0x107E0, + TASK_SWIM_TO_COORD = 0x107E1, + TASK_GO_STRAIGHT_TO_COORD_WITHOUT_STOPPING = 0x107E2, + GET_BEAT_INFO_FOR_CURRENT_TRACK = 0x107E3, + GET_MODEL_DIMENSIONS = 0x107E4, + COPY_CHAR_DECISION_MAKER = 0x107E5, + COPY_GROUP_DECISION_MAKER = 0x107E6, + TASK_DRIVE_POINT_ROUTE_ADVANCED = 0x107E7, + IS_RELATIONSHIP_SET = 0x107E8, + HAS_CHAR_SPOTTED_CAR = 0x107E9, + SET_ROPE_HEIGHT_FOR_HELI = 0x107EA, + GET_ROPE_HEIGHT_FOR_HELI = 0x107EB, + IS_CAR_LOWRIDER = 0x107EC, + IS_PERFORMANCE_CAR = 0x107ED, + SET_CAR_ALWAYS_CREATE_SKIDS = 0x107EE, + GET_CITY_FROM_COORDS = 0x107EF, + HAS_OBJECT_OF_TYPE_BEEN_SMASHED = 0x107F0, + IS_PLAYER_PERFORMING_WHEELIE = 0x107F1, + IS_PLAYER_PERFORMING_STOPPIE = 0x107F2, + SET_CHECKPOINT_COORDS = 0x107F3, + SET_ONSCREEN_TIMER_DISPLAY = 0x107F4, + CONTROL_CAR_HYDRAULICS = 0x107F5, + GET_GROUP_SIZE = 0x107F6, + SET_OBJECT_COLLISION_DAMAGE_EFFECT = 0x107F7, + SET_CAR_FOLLOW_CAR = 0x107F8, + PLAYER_ENTERED_QUARRY_CRANE = 0x107F9, + PLAYER_ENTERED_LAS_VEGAS_CRANE = 0x107FA, + SWITCH_ENTRY_EXIT = 0x107FB, + DISPLAY_TEXT_WITH_FLOAT = 0x107FC, + DOES_GROUP_EXIST = 0x107FD, + GIVE_MELEE_ATTACK_TO_CHAR = 0x107FE, + SET_CAR_HYDRAULICS = 0x107FF, + IS_2PLAYER_GAME_GOING_ON = 0x10800, + GET_CAMERA_FOV = 0x10801, + SET_GLOBAL_PED_SEARCH_PARAMS = 0x10802, + DOES_CAR_HAVE_HYDRAULICS = 0x10803, + TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM = 0x10804, + ALLOCATE_SCRIPT_TO_OBJECT = 0x10805, + GET_TOTAL_NUMBER_OF_PEDS_KILLED_BY_PLAYER = 0x10806, + SET_TWO_PLAYER_CAM_MODE_SAME_CAR_SHOOTING = 0x10807, + SET_TWO_PLAYER_CAM_MODE_SAME_CAR_NO_SHOOTING = 0x10808, + SET_TWO_PLAYER_CAM_MODE_NOT_BOTH_IN_CAR = 0x10809, + GET_LEVEL_DESIGN_COORDS_FOR_OBJECT = 0x1080A, + SAVE_TEXT_LABEL_TO_DEBUG_FILE = 0x1080B, + GET_CHAR_BREATH = 0x1080C, + SET_CHAR_BREATH = 0x1080D, + GET_CHAR_HIGHEST_PRIORITY_EVENT = 0x1080E, + ARE_PATHS_LOADED_FOR_CAR = 0x1080F, + GET_PARKING_NODE_IN_AREA = 0x10810, + GET_CAR_CHAR_IS_USING = 0x10811, + TASK_PLAY_ANIM_NON_INTERRUPTABLE = 0x10812, + FORCE_NEXT_DIE_ANIM = 0x10813, + ADD_STUNT_JUMP = 0x10814, + SET_OBJECT_COORDINATES_AND_VELOCITY = 0x10815, + SET_CHAR_KINDA_STAY_IN_SAME_PLACE = 0x10816, + TASK_FOLLOW_PATROL_ROUTE = 0x10817, + IS_CHAR_IN_AIR = 0x10818, + GET_CHAR_HEIGHT_ABOVE_GROUND = 0x10819, + SET_CHAR_WEAPON_SKILL = 0x1081A, + ARE_PATHS_LOADED_IN_AREA = 0x1081B, + SET_TEXT_EDGE = 0x1081C, + SET_CAR_ENGINE_BROKEN = 0x1081D, + IS_THIS_MODEL_A_BOAT = 0x1081E, + IS_THIS_MODEL_A_PLANE = 0x1081F, + IS_THIS_MODEL_A_HELI = 0x10820, + IS_3D_COORD_IN_ZONE = 0x10821, + SET_FIRST_PERSON_IN_CAR_CAMERA_MODE = 0x10822, + TASK_GREET_PARTNER = 0x10823, + GET_CLOSEST_PICKUP_COORDS_TO_COORD = 0x10824, + SET_HELI_BLADES_FULL_SPEED = 0x10825, + DISPLAY_HUD = 0x10826, + CONNECT_LODS = 0x10827, + SET_MAX_FIRE_GENERATIONS = 0x10828, + TASK_DIE_NAMED_ANIM = 0x10829, + SET_PLAYER_DUCK_BUTTON = 0x1082A, + FIND_NEAREST_MULTIBUILDING = 0x1082B, + SET_MULTIBUILDING_MODEL = 0x1082C, + GET_NUMBER_MULTIBUILDING_MODELS = 0x1082D, + GET_MULTIBUILDING_MODEL_INDEX = 0x1082E, + SET_CURRENT_BUYABLE_PROPERTY = 0x1082F, + SET_POOL_TABLE_COORDS = 0x10830, + IS_AUDIO_BUILD = 0x10831, + CLEAR_QUEUED_DIALOGUE = 0x10832, + HAS_OBJECT_BEEN_PHOTOGRAPHED = 0x10833, + DO_CAMERA_BUMP = 0x10834, + GET_CURRENT_DATE = 0x10835, + SET_OBJECT_ANIM_SPEED = 0x10836, + IS_OBJECT_PLAYING_ANIM = 0x10837, + SET_OBJECT_ANIM_PLAYING_FLAG = 0x10838, + GET_OBJECT_ANIM_CURRENT_TIME = 0x10839, + SET_OBJECT_ANIM_CURRENT_TIME = 0x1083A, + GET_OBJECT_ANIM_TOTAL_TIME = 0x1083B, + SET_CHAR_VELOCITY = 0x1083C, + GET_CHAR_VELOCITY = 0x1083D, + SET_CHAR_ROTATION = 0x1083E, + GET_CAR_UPRIGHT_VALUE = 0x1083F, + SET_VEHICLE_AREA_VISIBLE = 0x10840, + SELECT_WEAPONS_FOR_VEHICLE = 0x10841, + GET_CITY_PLAYER_IS_IN = 0x10842, + GET_NAME_OF_ZONE = 0x10843, + IS_VAR_TEXT_LABEL_EMPTY = 0x10844, + IS_LVAR_TEXT_LABEL_EMPTY = 0x10845, + IS_VAR_TEXT_LABEL16_EMPTY = 0x10846, + IS_LVAR_TEXT_LABEL16_EMPTY = 0x10847, + SWITCH = 0x10848, + ENDSWITCH = 0x10849, + CASE = 0x1084A, + DEFAULT = 0x1084B, + BREAK = 0x1084C, + ACTIVATE_INTERIOR_PEDS = 0x1084D, + SET_VEHICLE_CAN_BE_TARGETTED = 0x1084E, + GET_GROUP_LEADER = 0x1084F, + TASK_FOLLOW_FOOTSTEPS = 0x10850, + DAMAGE_CHAR = 0x10851, + SET_CAR_CAN_BE_VISIBLY_DAMAGED = 0x10852, + SET_HELI_REACHED_TARGET_DISTANCE = 0x10853, + BLOCK_NODES_IN_AREA = 0x10854, + GET_SOUND_LEVEL_AT_COORDS = 0x10855, + SET_CHAR_ALLOWED_TO_DUCK = 0x10856, + SET_WATER_CONFIGURATION = 0x10857, + SET_HEADING_FOR_ATTACHED_PLAYER = 0x10858, + TASK_WALK_ALONGSIDE_CHAR = 0x10859, + CREATE_EMERGENCY_SERVICES_CAR = 0x1085A, + TASK_KINDA_STAY_IN_SAME_PLACE = 0x1085B, + TASK_USE_ATTRACTOR_ADVANCED = 0x1085C, + TASK_FOLLOW_PATH_NODES_TO_COORD_SHOOTING = 0x1085D, + START_PLAYBACK_RECORDED_CAR_LOOPED = 0x1085E, + START_PLAYBACK_RECORDED_CAR_USING_AI_LOOPED = 0x1085F, + SET_CHAR_AREA_VISIBLE = 0x10860, + IS_ATTACHED_PLAYER_HEADING_ACHIEVED = 0x10861, + GET_MODEL_NAME_FOR_DEBUG_ONLY = 0x10862, + TASK_USE_NEARBY_ENTRY_EXIT = 0x10863, + ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING = 0x10864, + FREEZE_STATE_OF_INTERIORS = 0x10865, + GET_CLOSEST_STEALABLE_OBJECT = 0x10866, + IS_PROCEDURAL_INTERIOR_ACTIVE = 0x10867, + CLEAR_THIS_VIEW_INTEGER_VARIABLE = 0x10868, + CLEAR_THIS_VIEW_FLOAT_VARIABLE = 0x10869, + CLEAR_ALL_VIEW_VARIABLES = 0x1086A, + CLEAR_THIS_INTEGER_WATCHPOINT = 0x1086B, + CLEAR_THIS_FLOAT_WATCHPOINT = 0x1086C, + CLEAR_ALL_BREAKPOINTS = 0x1086D, + CLEAR_ALL_WATCHPOINTS = 0x1086E, + IS_THIS_MODEL_A_TRAIN = 0x1086F, + GET_VEHICLE_CHAR_IS_STANDING_ON = 0x10870, + SWITCH_START = 0x10871, + SWITCH_CONTINUED = 0x10872, + REMOVE_CAR_RECORDING = 0x10873, + SET_ZONE_POPULATION_RACE = 0x10874, + SET_OBJECT_ONLY_DAMAGED_BY_PLAYER = 0x10875, + CREATE_BIRDS = 0x10876, + GET_VEHICLE_DIRT_LEVEL = 0x10877, + SET_VEHICLE_DIRT_LEVEL = 0x10878, + SET_GANG_WARS_ACTIVE = 0x10879, + IS_GANG_WAR_GOING_ON = 0x1087A, + GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP = 0x1087B, + CLEAR_LOADED_SHOP = 0x1087C, + SET_GROUP_SEQUENCE = 0x1087D, + SET_CHAR_DROPS_WEAPONS_WHEN_DEAD = 0x1087E, + SET_CHAR_NEVER_LEAVES_GROUP = 0x1087F, + DRAW_RECT_WITH_TITLE = 0x10880, + SET_PLAYER_FIRE_BUTTON = 0x10881, + SET_ATTRACTOR_RADIUS = 0x10882, + ATTACH_FX_SYSTEM_TO_CHAR_BONE = 0x10883, + REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE = 0x10884, + CONST_INT = 0x10885, + CONST_FLOAT = 0x10886, + SET_HEADING_LIMIT_FOR_ATTACHED_CHAR = 0x10887, + ADD_BLIP_FOR_DEAD_CHAR = 0x10888, + GET_DEAD_CHAR_COORDINATES = 0x10889, + TASK_PLAY_ANIM_WITH_FLAGS = 0x1088A, + SET_VEHICLE_AIR_RESISTANCE_MULTIPLIER = 0x1088B, + SET_CAR_COORDINATES_NO_OFFSET = 0x1088C, + SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE = 0x1088D, + SET_TIME_ONE_DAY_FORWARD = 0x1088E, + SET_TIME_ONE_DAY_BACK = 0x1088F, + SET_TIMER_BEEP_COUNTDOWN_TIME = 0x10890, + TASK_SIT_IN_RESTAURANT = 0x10891, + GET_RANDOM_ATTRACTOR_ON_CLOSEST_OBJECT_OF_TYPE = 0x10892, + ATTACH_TRAILER_TO_CAB = 0x10893, + ADD_INTERESTING_ENTITY_FOR_CHAR = 0x10894, + CLEAR_INTERESTING_ENTITIES_FOR_CHAR = 0x10895, + GET_CLOSEST_ATTRACTOR = 0x10896, + IS_VEHICLE_TOUCHING_OBJECT = 0x10897, + ENABLE_CRANE_CONTROLS = 0x10898, + ALLOCATE_SCRIPT_TO_ATTRACTOR = 0x10899, + GET_CLOSEST_ATTRACTOR_WITH_THIS_SCRIPT = 0x1089A, + IS_PLAYER_IN_POSITION_FOR_CONVERSATION = 0x1089B, + ENABLE_CONVERSATION = 0x1089C, + GET_CONVERSATION_STATUS = 0x1089D, + GET_RANDOM_CHAR_IN_SPHERE_ONLY_DRUGS_BUYERS = 0x1089E, + GET_PED_TYPE = 0x1089F, + TASK_USE_CLOSEST_MAP_ATTRACTOR = 0x108A0, + GET_CHAR_MAP_ATTRACTOR_STATUS = 0x108A1, + PLANE_ATTACK_PLAYER_USING_DOG_FIGHT = 0x108A2, + CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION = 0x108A3, + CONTROL_MOVABLE_VEHICLE_PART = 0x108A4, + WINCH_CAN_PICK_VEHICLE_UP = 0x108A5, + OPEN_CAR_DOOR_A_BIT = 0x108A6, + IS_CAR_DOOR_FULLY_OPEN = 0x108A7, + SET_ALWAYS_DRAW_3D_MARKERS = 0x108A8, + STREAM_SCRIPT = 0x108A9, + STREAM_SCRIPT_INTERNAL = 0x108AA, + HAS_STREAMED_SCRIPT_LOADED = 0x108AB, + SET_GANG_WARS_TRAINING_MISSION = 0x108AC, + SET_CHAR_HAS_USED_ENTRY_EXIT = 0x108AD, + DRAW_WINDOW_TEXT = 0x108AE, + SET_CHAR_MAX_HEALTH = 0x108AF, + SET_CAR_PITCH = 0x108B0, + SET_NIGHT_VISION = 0x108B1, + SET_INFRARED_VISION = 0x108B2, + SET_ZONE_FOR_GANG_WARS_TRAINING = 0x108B3, + IS_GLOBAL_VAR_BIT_SET_CONST = 0x108B4, + IS_GLOBAL_VAR_BIT_SET_VAR = 0x108B5, + IS_GLOBAL_VAR_BIT_SET_LVAR = 0x108B6, + IS_LOCAL_VAR_BIT_SET_CONST = 0x108B7, + IS_LOCAL_VAR_BIT_SET_VAR = 0x108B8, + IS_LOCAL_VAR_BIT_SET_LVAR = 0x108B9, + SET_GLOBAL_VAR_BIT_CONST = 0x108BA, + SET_GLOBAL_VAR_BIT_VAR = 0x108BB, + SET_GLOBAL_VAR_BIT_LVAR = 0x108BC, + SET_LOCAL_VAR_BIT_CONST = 0x108BD, + SET_LOCAL_VAR_BIT_VAR = 0x108BE, + SET_LOCAL_VAR_BIT_LVAR = 0x108BF, + CLEAR_GLOBAL_VAR_BIT_CONST = 0x108C0, + CLEAR_GLOBAL_VAR_BIT_VAR = 0x108C1, + CLEAR_GLOBAL_VAR_BIT_LVAR = 0x108C2, + CLEAR_LOCAL_VAR_BIT_CONST = 0x108C3, + CLEAR_LOCAL_VAR_BIT_VAR = 0x108C4, + CLEAR_LOCAL_VAR_BIT_LVAR = 0x108C5, + SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE = 0x108C6, + SET_CHAR_COORDINATES_DONT_WARP_GANG = 0x108C7, + ADD_PRICE_MODIFIER = 0x108C8, + REMOVE_PRICE_MODIFIER = 0x108C9, + INIT_ZONE_POPULATION_SETTINGS = 0x108CA, + EXPLODE_CAR_IN_CUTSCENE_SHAKE_AND_BITS = 0x108CB, + PICK_UP_OBJECT_WITH_WINCH = 0x108CC, + PICK_UP_VEHICLE_WITH_WINCH = 0x108CD, + PICK_UP_CHAR_WITH_WINCH = 0x108CE, + STORE_CAR_IN_NEAREST_IMPOUNDING_GARAGE = 0x108CF, + IS_SKIP_CUTSCENE_BUTTON_PRESSED = 0x108D0, + GET_CUTSCENE_OFFSET = 0x108D1, + SET_OBJECT_SCALE = 0x108D2, + GET_CURRENT_POPULATION_ZONE_TYPE = 0x108D3, + CREATE_MENU = 0x108D4, + CONSTANT_INT = 0x108D5, + SET_MENU_COLUMN_ORIENTATION = 0x108D6, + GET_MENU_ITEM_SELECTED = 0x108D7, + GET_MENU_ITEM_ACCEPTED = 0x108D8, + ACTIVATE_MENU_ITEM = 0x108D9, + DELETE_MENU = 0x108DA, + SET_MENU_COLUMN = 0x108DB, + SET_BLIP_ENTRY_EXIT = 0x108DC, + SWITCH_DEATH_PENALTIES = 0x108DD, + SWITCH_ARREST_PENALTIES = 0x108DE, + SET_EXTRA_HOSPITAL_RESTART_POINT = 0x108DF, + SET_EXTRA_POLICE_STATION_RESTART_POINT = 0x108E0, + FIND_NUMBER_TAGS_TAGGED = 0x108E1, + GET_TERRITORY_UNDER_CONTROL_PERCENTAGE = 0x108E2, + IS_OBJECT_IN_ANGLED_AREA_2D = 0x108E3, + IS_OBJECT_IN_ANGLED_AREA_3D = 0x108E4, + GET_RANDOM_CHAR_IN_SPHERE_NO_BRAIN = 0x108E5, + SET_PLANE_UNDERCARRIAGE_UP = 0x108E6, + DISABLE_ALL_ENTRY_EXITS = 0x108E7, + ATTACH_ANIMS_TO_MODEL = 0x108E8, + SET_OBJECT_AS_STEALABLE = 0x108E9, + SET_CREATE_RANDOM_GANG_MEMBERS = 0x108EA, + ADD_SPARKS = 0x108EB, + GET_VEHICLE_CLASS = 0x108EC, + CLEAR_CONVERSATION_FOR_CHAR = 0x108ED, + SET_MENU_ITEM_WITH_NUMBER = 0x108EE, + SET_MENU_ITEM_WITH_2_NUMBERS = 0x108EF, + APPEND_TO_NEXT_CUTSCENE = 0x108F0, + GET_NAME_OF_INFO_ZONE = 0x108F1, + VEHICLE_CAN_BE_TARGETTED_BY_HS_MISSILE = 0x108F2, + SET_FREEBIES_IN_VEHICLE = 0x108F3, + SET_SCRIPT_LIMIT_TO_GANG_SIZE = 0x108F4, + MAKE_PLAYER_GANG_DISAPPEAR = 0x108F5, + MAKE_PLAYER_GANG_REAPPEAR = 0x108F6, + GET_CLOTHES_ITEM = 0x108F7, + SHOW_UPDATE_STATS = 0x108F8, + IS_VAR_TEXT_LABEL16_EQUAL_TO_TEXT_LABEL = 0x108F9, + IS_LVAR_TEXT_LABEL16_EQUAL_TO_TEXT_LABEL = 0x108FA, + SET_COORD_BLIP_APPEARANCE = 0x108FB, + GET_MENU_POSITION = 0x108FC, + SET_HEATHAZE_EFFECT = 0x108FD, + IS_HELP_MESSAGE_BEING_DISPLAYED = 0x108FE, + HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON = 0x108FF, + CLEAR_OBJECT_LAST_WEAPON_DAMAGE = 0x10900, + SET_PLAYER_JUMP_BUTTON = 0x10901, + SET_OBJECT_BEEN_PHOTOGRAPHED_FLAG = 0x10902, + SET_CHAR_BEEN_PHOTOGRAPHED_FLAG = 0x10903, + GET_HUD_COLOUR = 0x10904, + LOCK_DOOR = 0x10905, + SET_OBJECT_MASS = 0x10906, + GET_OBJECT_MASS = 0x10907, + SET_OBJECT_TURN_MASS = 0x10908, + GET_OBJECT_TURN_MASS = 0x10909, + IS_PLAYBACK_FOR_CAR_PAUSED = 0x1090A, + TRIGGER_PED_BOUNCE = 0x1090B, + SET_SPECIFIC_ZONE_TO_TRIGGER_GANG_WAR = 0x1090C, + CLEAR_SPECIFIC_ZONES_TO_TRIGGER_GANG_WAR = 0x1090D, + SET_ACTIVE_MENU_ITEM = 0x1090E, + MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED = 0x1090F, + REMOVE_STREAMED_SCRIPT = 0x10910, + REGISTER_STREAMED_SCRIPT = 0x10911, + SET_MESSAGE_FORMATTING = 0x10912, + START_NEW_STREAMED_SCRIPT = 0x10913, + REGISTER_STREAMED_SCRIPT_INTERNAL = 0x10914, + SET_WEATHER_TO_APPROPRIATE_TYPE_NOW = 0x10915, + WINCH_CAN_PICK_OBJECT_UP = 0x10916, + SWITCH_AUDIO_ZONE = 0x10917, + SET_CAR_ENGINE_ON = 0x10918, + SET_CAR_LIGHTS_ON = 0x10919, + GET_LATEST_CONSOLE_COMMAND = 0x1091A, + RESET_LATEST_CONSOLE_COMMAND = 0x1091B, + GET_USER_OF_CLOSEST_MAP_ATTRACTOR = 0x1091C, + SWITCH_ROADS_BACK_TO_ORIGINAL = 0x1091D, + SWITCH_PED_ROADS_BACK_TO_ORIGINAL = 0x1091E, + GET_PLANE_UNDERCARRIAGE_POSITION = 0x1091F, + CAMERA_SET_VECTOR_TRACK = 0x10920, + CAMERA_SET_SHAKE_SIMULATION = 0x10921, + CAMERA_SET_LERP_FOV = 0x10922, + SWITCH_AMBIENT_PLANES = 0x10923, + SET_DARKNESS_EFFECT = 0x10924, + CAMERA_RESET_NEW_SCRIPTABLES = 0x10925, + GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT = 0x10926, + ALLOCATE_STREAMED_SCRIPT_TO_PED_GENERATOR = 0x10927, + ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED = 0x10928, + ALLOCATE_STREAMED_SCRIPT_TO_OBJECT = 0x10929, + SET_PLAYER_CAN_BE_DAMAGED = 0x1092A, + GET_GROUP_MEMBER = 0x1092B, + GET_PLAYERS_GANG_IN_CAR_ACTIVE = 0x1092C, + SET_PLAYERS_GANG_IN_CAR_ACTIVE = 0x1092D, + GET_WATER_HEIGHT_AT_COORDS = 0x1092E, + CAMERA_PERSIST_TRACK = 0x1092F, + CAMERA_PERSIST_POS = 0x10930, + CAMERA_PERSIST_FOV = 0x10931, + CAMERA_IS_FOV_RUNNING = 0x10932, + CAMERA_IS_VECTOR_MOVE_RUNNING = 0x10933, + CAMERA_IS_VECTOR_TRACK_RUNNING = 0x10934, + CAMERA_IS_SHAKE_RUNNING = 0x10935, + CAMERA_SET_VECTOR_MOVE = 0x10936, + DRAW_WINDOW = 0x10937, + CLEAR_ALL_QUEUED_DIALOGUE = 0x10938, + ATTACH_CAR_TO_OBJECT = 0x10939, + SET_GARAGE_RESPRAY_FREE = 0x1093A, + SET_CHAR_BULLETPROOF_VEST = 0x1093B, + SET_ONSCREEN_COUNTER_COLOUR = 0x1093C, + SET_CINEMA_CAMERA = 0x1093D, + SET_CHAR_FIRE_DAMAGE_MULTIPLIER = 0x1093E, + IS_FIRE_BUTTON_PRESSED = 0x1093F, + SET_GROUP_FOLLOW_STATUS = 0x10940, + SET_SEARCHLIGHT_CLIP_IF_COLLIDING = 0x10941, + HAS_PLAYER_BOUGHT_ITEM = 0x10942, + SET_CAMERA_BEHIND_CHAR = 0x10943, + SET_CAMERA_IN_FRONT_OF_CHAR = 0x10944, + GET_PLAYER_MAX_ARMOUR = 0x10945, + SET_CHAR_USES_UPPERBODY_DAMAGE_ANIMS_ONLY = 0x10946, + SET_CHAR_SAY_CONTEXT = 0x10947, + ADD_EXPLOSION_VARIABLE_SHAKE = 0x10948, + ATTACH_MISSION_AUDIO_TO_CHAR = 0x10949, + UPDATE_PICKUP_MONEY_PER_DAY = 0x1094A, + GET_NAME_OF_ENTRY_EXIT_CHAR_USED = 0x1094B, + GET_POSITION_OF_ENTRY_EXIT_CHAR_USED = 0x1094C, + IS_CHAR_TALKING = 0x1094D, + DISABLE_CHAR_SPEECH = 0x1094E, + ENABLE_CHAR_SPEECH = 0x1094F, + SET_UP_SKIP = 0x10950, + CLEAR_SKIP = 0x10951, + PRELOAD_BEAT_TRACK = 0x10952, + GET_BEAT_TRACK_STATUS = 0x10953, + PLAY_BEAT_TRACK = 0x10954, + STOP_BEAT_TRACK = 0x10955, + FIND_MAX_NUMBER_OF_GROUP_MEMBERS = 0x10956, + VEHICLE_DOES_PROVIDE_COVER = 0x10957, + CREATE_SNAPSHOT_PICKUP = 0x10958, + CREATE_HORSESHOE_PICKUP = 0x10959, + CREATE_OYSTER_PICKUP = 0x1095A, + HAS_OBJECT_BEEN_UPROOTED = 0x1095B, + ADD_SMOKE_PARTICLE = 0x1095C, + IS_CHAR_STUCK_UNDER_CAR = 0x1095D, + CONTROL_CAR_DOOR = 0x1095E, + GET_DOOR_ANGLE_RATIO = 0x1095F, + SET_PLAYER_DISPLAY_VITAL_STATS_BUTTON = 0x10960, + SET_CHAR_KEEP_TASK = 0x10961, + DOES_CAR_HAVE_ROOF = 0x10962, + SET_BLIP_FADE = 0x10963, + CREATE_MENU_GRID = 0x10964, + IS_CHAR_SWIMMING = 0x10965, + GET_CHAR_SWIM_STATE = 0x10966, + START_CHAR_FACIAL_TALK = 0x10967, + STOP_CHAR_FACIAL_TALK = 0x10968, + IS_BIG_VEHICLE = 0x10969, + SWITCH_POLICE_HELIS = 0x1096A, + STORE_CAR_MOD_STATE = 0x1096B, + RESTORE_CAR_MOD_STATE = 0x1096C, + GET_CURRENT_CAR_MOD = 0x1096D, + IS_CAR_LOW_RIDER = 0x1096E, + IS_CAR_STREET_RACER = 0x1096F, + FORCE_DEATH_RESTART = 0x10970, + SYNC_WATER = 0x10971, + SET_CHAR_COORDINATES_NO_OFFSET = 0x10972, + DOES_SCRIPT_FIRE_EXIST = 0x10973, + RESET_STUFF_UPON_RESURRECTION = 0x10974, + IS_EMERGENCY_SERVICES_VEHICLE = 0x10975, + KILL_FX_SYSTEM_NOW = 0x10976, + IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE = 0x10977, + COPY_SHARED_CHAR_DECISION_MAKER = 0x10978, + LOAD_SHARED_CHAR_DECISION_MAKER = 0x10979, + REPORT_MISSION_AUDIO_EVENT_AT_POSITION = 0x1097A, + REPORT_MISSION_AUDIO_EVENT_AT_OBJECT = 0x1097B, + ATTACH_MISSION_AUDIO_TO_OBJECT = 0x1097C, + GET_NUM_CAR_COLOURS = 0x1097D, + IS_POLICE_VEHICLE_IN_PURSUIT = 0x1097E, + GET_CAR_COLOUR_FROM_MENU_INDEX = 0x1097F, + EXTINGUISH_FIRE_AT_POINT = 0x10980, + HAS_TRAIN_DERAILED = 0x10981, + SET_CHAR_FORCE_DIE_IN_CAR = 0x10982, + SET_ONLY_CREATE_GANG_MEMBERS = 0x10983, + GET_OBJECT_MODEL = 0x10984, + SET_CHAR_USES_COLLISION_CLOSEST_OBJECT_OF_TYPE = 0x10985, + CLEAR_ALL_SCRIPT_FIRE_FLAGS = 0x10986, + GET_CAR_BLOCKING_CAR = 0x10987, + GET_CURRENT_VEHICLE_PAINTJOB = 0x10988, + SET_HELP_MESSAGE_BOX_SIZE = 0x10989, + SET_GUNSHOT_SENSE_RANGE_FOR_RIOT2 = 0x1098A, + STRING_CAT16 = 0x1098B, + STRING_CAT8 = 0x1098C, + GET_CAR_MOVING_COMPONENT_OFFSET = 0x1098D, + SET_NAMED_ENTRY_EXIT_FLAG = 0x1098E, + RADIANS_TO_DEGREES = 0x1098F, + DEGREES_TO_RADIANS = 0x10990, + PAUSE_CURRENT_BEAT_TRACK = 0x10991, + SET_PLAYER_CYCLE_WEAPON_BUTTON = 0x10992, + SET_CHAR_AIR_RESISTANCE_MULTIPLIER = 0x10993, + MARK_ROAD_NODE_AS_DONT_WANDER = 0x10994, + UNMARK_ALL_ROAD_NODES_AS_DONT_WANDER = 0x10995, + SET_CHECKPOINT_HEADING = 0x10996, + SET_MISSION_RESPECT_TOTAL = 0x10997, + AWARD_PLAYER_MISSION_RESPECT = 0x10998, + SET_PLAYER_FIRE_WITH_SHOULDER_BUTTON = 0x10999, + SET_CAR_COLLISION = 0x1099A, + CHANGE_PLAYBACK_TO_USE_AI = 0x1099B, + CAMERA_SET_SHAKE_SIMULATION_SIMPLE = 0x1099C, + IS_NIGHT_VISION_ACTIVE = 0x1099D, + SET_CREATE_RANDOM_COPS = 0x1099E, + TASK_SET_IGNORE_WEAPON_RANGE_FLAG = 0x1099F, + TASK_PICK_UP_SECOND_OBJECT = 0x109A0, + DROP_SECOND_OBJECT = 0x109A1, + REMOVE_OBJECT_ELEGANTLY = 0x109A2, + DRAW_CROSSHAIR = 0x109A3, + SET_UP_CONVERSATION_NODE_WITH_SPEECH = 0x109A4, + SET_CCTV_EFFECT = 0x109A5, + SHOW_BLIPS_ON_ALL_LEVELS = 0x109A6, + SET_CHAR_DRUGGED_UP = 0x109A7, + IS_CHAR_HEAD_MISSING = 0x109A8, + GET_HASH_KEY = 0x109A9, + SET_UP_CONVERSATION_END_NODE_WITH_SPEECH = 0x109AA, + RANDOM_PASSENGER_SAY = 0x109AB, + HIDE_ALL_FRONTEND_BLIPS = 0x109AC, + SET_PLAYER_IN_CAR_CAMERA_MODE = 0x109AD, + IS_CHAR_IN_ANY_TRAIN = 0x109AE, + SET_UP_SKIP_AFTER_MISSION = 0x109AF, + SET_VEHICLE_IS_CONSIDERED_BY_PLAYER = 0x109B0, + GET_CPU_LEVEL = 0x109B1, + GET_RANDOM_CAR_MODEL_IN_MEMORY = 0x109B2, + GET_CAR_DOOR_LOCK_STATUS = 0x109B3, + SET_CLOSEST_ENTRY_EXIT_FLAG = 0x109B4, + SET_CHAR_SIGNAL_AFTER_KILL = 0x109B5, + SET_CHAR_WANTED_BY_POLICE = 0x109B6, + SET_ZONE_NO_COPS = 0x109B7, + ADD_BLOOD = 0x109B8, + DISPLAY_CAR_NAMES = 0x109B9, + DISPLAY_ZONE_NAMES = 0x109BA, + IS_CAR_DOOR_DAMAGED = 0x109BB, + SET_CHAR_COORDINATES_DONT_WARP_GANG_NO_OFFSET = 0x109BC, + SET_MINIGAME_IN_PROGRESS = 0x109BD, + IS_MINIGAME_IN_PROGRESS = 0x109BE, + SET_FORCE_RANDOM_CAR_MODEL = 0x109BF, + GET_RANDOM_CAR_OF_TYPE_IN_ANGLED_AREA_NO_SAVE = 0x109C0, + ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS = 0x109C1, + FAIL_KILL_FRENZY = 0x109C2, + IS_COP_VEHICLE_IN_AREA_3D_NO_SAVE = 0x109C3, + SET_PETROL_TANK_WEAKPOINT = 0x109C4, + IS_CHAR_USING_MAP_ATTRACTOR = 0x109C5, + SET_ALL_CARS_IN_AREA_VISIBLE = 0x109C6, + SET_PLAYER_MODEL = 0x109C7, + ARE_SUBTITLES_SWITCHED_ON = 0x109C8, + REMOVE_CHAR_FROM_CAR_MAINTAIN_POSITION = 0x109C9, + SET_OBJECT_PROOFS = 0x109CA, + IS_CAR_TOUCHING_CAR = 0x109CB, + DOES_OBJECT_HAVE_THIS_MODEL = 0x109CC, + IS_ITALIAN_GAME = 0x109CD, + IS_SPANISH_GAME = 0x109CE, + SET_TRAIN_FORCED_TO_SLOW_DOWN = 0x109CF, + IS_VEHICLE_ON_ALL_WHEELS = 0x109D0, + DOES_PICKUP_EXIST = 0x109D1, + ENABLE_AMBIENT_CRIME = 0x109D2, + IS_AMBIENT_CRIME_ENABLED = 0x109D3, + CLEAR_WANTED_LEVEL_IN_GARAGE = 0x109D4, + SET_CHAR_SAY_CONTEXT_IMPORTANT = 0x109D5, + SET_CHAR_SAY_SCRIPT = 0x109D6, + FORCE_INTERIOR_LIGHTING_FOR_PLAYER = 0x109D7, + DISABLE_2ND_PAD_FOR_DEBUG = 0x109D8, + USE_DETONATOR = 0x109D9, + IS_MONEY_PICKUP_AT_COORDS = 0x109DA, + SET_MENU_COLUMN_WIDTH = 0x109DB, + SET_CHAR_CAN_CLIMB_OUT_WATER = 0x109DC, + MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS = 0x109DD, + IS_CHAR_GETTING_IN_TO_A_CAR = 0x109DE, + RESTORE_PLAYER_AFTER_2P_GAME = 0x109DF, + SET_UP_SKIP_FOR_SPECIFIC_VEHICLE = 0x109E0, + GET_CAR_MODEL_VALUE = 0x109E1, + CREATE_CAR_GENERATOR_WITH_PLATE = 0x109E2, + FIND_TRAIN_DIRECTION = 0x109E3, + SET_AIRCRAFT_CARRIER_SAM_SITE = 0x109E4, + DRAW_LIGHT_WITH_RANGE = 0x109E5, + ENABLE_BURGLARY_HOUSES = 0x109E6, + IS_PLAYER_CONTROL_ON = 0x109E7, + GET_CHAR_AREA_VISIBLE = 0x109E8, + GIVE_NON_PLAYER_CAR_NITRO = 0x109E9, + PLAYER_PUT_ON_GOGGLES = 0x109EA, + PLAYER_TAKE_OFF_GOGGLES = 0x109EB, + ALLOW_FIXED_CAMERA_COLLISION = 0x109EC, + HAS_CHAR_SPOTTED_CHAR_IN_FRONT = 0x109ED, + FORCE_BIG_MESSAGE_AND_COUNTER = 0x109EE, + SET_VEHICLE_CAMERA_TWEAK = 0x109EF, + RESET_VEHICLE_CAMERA_TWEAK = 0x109F0, + REPORT_MISSION_AUDIO_EVENT_AT_CHAR = 0x109F1, + DOES_DECISION_MAKER_EXIST = 0x109F2, + GET_RANDOM_TRAIN_IN_SPHERE_NO_SAVE = 0x109F3, + IGNORE_HEIGHT_DIFFERENCE_FOLLOWING_NODES = 0x109F4, + SHUT_ALL_CHARS_UP = 0x109F5, + SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR = 0x109F6, + REPORT_MISSION_AUDIO_EVENT_AT_CAR = 0x109F7, + DO_WEAPON_STUFF_AT_START_OF_2P_GAME = 0x109F8, + SET_MENU_HEADER_ORIENTATION = 0x109F9, + HAS_GAME_JUST_RETURNED_FROM_FRONTEND = 0x109FA, + GET_CURRENT_LANGUAGE = 0x109FB, + IS_OBJECT_INTERSECTING_WORLD = 0x109FC, + GET_STRING_WIDTH = 0x109FD, + RESET_VEHICLE_HYDRAULICS = 0x109FE, + SET_RESPAWN_POINT_FOR_DURATION_OF_MISSION = 0x109FF, + IS_THIS_MODEL_A_BIKE = 0x10A00, + IS_THIS_MODEL_A_CAR = 0x10A01, + SWITCH_ON_GROUND_SEARCHLIGHT = 0x10A02, + IS_GANG_WAR_FIGHTING_GOING_ON = 0x10A03, + SET_VEHICLE_FIRING_RATE_MULTIPLIER = 0x10A04, + GET_VEHICLE_FIRING_RATE_MULTIPLIER = 0x10A05, + IS_NEXT_STATION_ALLOWED = 0x10A06, + SKIP_TO_NEXT_ALLOWED_STATION = 0x10A07, + GET_STRING_WIDTH_WITH_NUMBER = 0x10A08, + SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH = 0x10A09, + ENABLE_DISABLED_ATTRACTORS_ON_OBJECT = 0x10A0A, + LOAD_SCENE_IN_DIRECTION = 0x10A0B, + IS_PLAYER_USING_JETPACK = 0x10A0C, + BLOCK_VEHICLE_MODEL = 0x10A0D, + CLEAR_THIS_PRINT_BIG_NOW = 0x10A0E, + HAS_LANGUAGE_CHANGED = 0x10A0F, + INCREMENT_INT_STAT_NO_MESSAGE = 0x10A10, + SET_EXTRA_CAR_COLOURS = 0x10A11, + GET_EXTRA_CAR_COLOURS = 0x10A12, + MANAGE_ALL_POPULATION = 0x10A13, + SET_NO_RESPRAYS = 0x10A14, + HAS_CAR_BEEN_RESPRAYED = 0x10A15, + ATTACH_MISSION_AUDIO_TO_CAR = 0x10A16, + SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR = 0x10A17, + SET_UP_CONVERSATION_NODE_WITH_SCRIPTED_SPEECH = 0x10A18, + SET_AREA_NAME = 0x10A19, + TASK_PLAY_ANIM_SECONDARY = 0x10A1A, + IS_CHAR_TOUCHING_CHAR = 0x10A1B, + DISABLE_HELI_AUDIO = 0x10A1C, + TASK_HAND_GESTURE = 0x10A1D, + TAKE_PHOTO = 0x10A1E, + INCREMENT_FLOAT_STAT_NO_MESSAGE = 0x10A1F, + SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS = 0x10A20, + IMPROVE_CAR_BY_CHEATING = 0x10A21, + CHANGE_CAR_COLOUR_FROM_MENU = 0x10A22, + HIGHLIGHT_MENU_ITEM = 0x10A23, + SET_DISABLE_MILITARY_ZONES = 0x10A24, + SET_CAMERA_POSITION_UNFIXED = 0x10A25, + SET_RADIO_TO_PLAYERS_FAVOURITE_STATION = 0x10A26, + SET_DEATH_WEAPONS_PERSIST = 0x10A27, + SET_SWIM_SPEED = 0x10A28, + IS_PLAYER_CLIMBING = 0x10A29, + IS_THIS_HELP_MESSAGE_BEING_DISPLAYED = 0x10A2A, + IS_WIDESCREEN_ON_IN_OPTIONS = 0x10A2B, + DRAW_SUBTITLES_BEFORE_FADE = 0x10A2C, + DRAW_ODDJOB_TITLE_BEFORE_FADE = 0x10A2D, + TASK_FOLLOW_PATH_NODES_TO_COORD_WITH_RADIUS = 0x10A2E, + SET_PHOTO_CAMERA_EFFECT = 0x10A2F, + FIX_CAR = 0x10A30, + SET_PLAYER_GROUP_TO_FOLLOW_NEVER = 0x10A31, + IS_CHAR_ATTACHED_TO_ANY_CAR = 0x10A32, + STORE_CAR_CHAR_IS_ATTACHED_TO_NO_SAVE = 0x10A33, + SET_UP_SKIP_TO_BE_FINISHED_BY_SCRIPT = 0x10A34, + SET_UP_SKIP_FOR_VEHICLE_FINISHED_BY_SCRIPT = 0x10A35, + IS_SKIP_WAITING_FOR_SCRIPT_TO_FADE_IN = 0x10A36, + FORCE_ALL_VEHICLE_LIGHTS_OFF = 0x10A37, + SET_RENDER_PLAYER_WEAPON = 0x10A38, + GET_PLAYER_IN_CAR_CAMERA_MODE = 0x10A39, + IS_LAST_BUILDING_MODEL_SHOT_BY_PLAYER = 0x10A3A, + CLEAR_LAST_BUILDING_MODEL_SHOT_BY_PLAYER = 0x10A3B, + SET_UP_CONVERSATION_END_NODE_WITH_SCRIPTED_SPEECH = 0x10A3C, + ACTIVATE_PIMP_CHEAT = 0x10A3D, + GET_RANDOM_CHAR_IN_AREA_OFFSET_NO_SAVE = 0x10A3E, + SET_SCRIPT_COOP_GAME = 0x10A3F, + CREATE_USER_3D_MARKER = 0x10A40, + REMOVE_USER_3D_MARKER = 0x10A41, + REMOVE_ALLUSER_3D_MARKERS = 0x10A42, + GET_RID_OF_PLAYER_PROSTITUTE = 0x10A43, + DISPLAY_NON_MINIGAME_HELP_MESSAGES = 0x10A44, + SET_RAILTRACK_RESISTANCE_MULT = 0x10A45, + SWITCH_OBJECT_BRAINS = 0x10A46, + FINISH_SETTING_UP_CONVERSATION_NO_SUBTITLES = 0x10A47, + ALLOW_PAUSE_IN_WIDESCREEN = 0x10A48, + IS_XBOX_VERSION = 0x10A49, + GET_PC_MOUSE_MOVEMENT = 0x10A4A, + IS_PC_USING_JOYPAD = 0x10A4B, + IS_MOUSE_USING_VERTICAL_INVERSION = 0x10A4C, + IS_JAPANESE_VERSION = 0x10A4D, + IS_XBOX_PLAYER2_PRESSING_START = 0x10A4E, + FINISHED_WITH_XBOX_PLAYER2 = 0x10A4F, + DO_DEBUG_STUFF = 0x10A50 +#else + NOP = 0x10000, + WAIT = 0x10001, + GOTO = 0x10002, + SHAKE_CAM = 0x10003, + SET_VAR_INT = 0x10004, + SET_VAR_FLOAT = 0x10005, + SET_LVAR_INT = 0x10006, + SET_LVAR_FLOAT = 0x10007, + ADD_VAL_TO_INT_VAR = 0x10008, + ADD_VAL_TO_FLOAT_VAR = 0x10009, + ADD_VAL_TO_INT_LVAR = 0x1000A, + ADD_VAL_TO_FLOAT_LVAR = 0x1000B, + SUB_VAL_FROM_INT_VAR = 0x1000C, + SUB_VAL_FROM_FLOAT_VAR = 0x1000D, + SUB_VAL_FROM_INT_LVAR = 0x1000E, + SUB_VAL_FROM_FLOAT_LVAR = 0x1000F, + MULT_INT_VAR_BY_VAL = 0x10010, + MULT_FLOAT_VAR_BY_VAL = 0x10011, + MULT_INT_LVAR_BY_VAL = 0x10012, + MULT_FLOAT_LVAR_BY_VAL = 0x10013, + DIV_INT_VAR_BY_VAL = 0x10014, + DIV_FLOAT_VAR_BY_VAL = 0x10015, + DIV_INT_LVAR_BY_VAL = 0x10016, + DIV_FLOAT_LVAR_BY_VAL = 0x10017, + IS_INT_VAR_GREATER_THAN_NUMBER = 0x10018, + IS_INT_LVAR_GREATER_THAN_NUMBER = 0x10019, + IS_NUMBER_GREATER_THAN_INT_VAR = 0x1001A, + IS_NUMBER_GREATER_THAN_INT_LVAR = 0x1001B, + IS_INT_VAR_GREATER_THAN_INT_VAR = 0x1001C, + IS_INT_LVAR_GREATER_THAN_INT_LVAR = 0x1001D, + IS_INT_VAR_GREATER_THAN_INT_LVAR = 0x1001E, + IS_INT_LVAR_GREATER_THAN_INT_VAR = 0x1001F, + IS_FLOAT_VAR_GREATER_THAN_NUMBER = 0x10020, + IS_FLOAT_LVAR_GREATER_THAN_NUMBER = 0x10021, + IS_NUMBER_GREATER_THAN_FLOAT_VAR = 0x10022, + IS_NUMBER_GREATER_THAN_FLOAT_LVAR = 0x10023, + IS_FLOAT_VAR_GREATER_THAN_FLOAT_VAR = 0x10024, + IS_FLOAT_LVAR_GREATER_THAN_FLOAT_LVAR = 0x10025, + IS_FLOAT_VAR_GREATER_THAN_FLOAT_LVAR = 0x10026, + IS_FLOAT_LVAR_GREATER_THAN_FLOAT_VAR = 0x10027, + IS_INT_VAR_GREATER_OR_EQUAL_TO_NUMBER = 0x10028, + IS_INT_LVAR_GREATER_OR_EQUAL_TO_NUMBER = 0x10029, + IS_NUMBER_GREATER_OR_EQUAL_TO_INT_VAR = 0x1002A, + IS_NUMBER_GREATER_OR_EQUAL_TO_INT_LVAR = 0x1002B, + IS_INT_VAR_GREATER_OR_EQUAL_TO_INT_VAR = 0x1002C, + IS_INT_LVAR_GREATER_OR_EQUAL_TO_INT_LVAR = 0x1002D, + IS_INT_VAR_GREATER_OR_EQUAL_TO_INT_LVAR = 0x1002E, + IS_INT_LVAR_GREATER_OR_EQUAL_TO_INT_VAR = 0x1002F, + IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_NUMBER = 0x10030, + IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_NUMBER = 0x10031, + IS_NUMBER_GREATER_OR_EQUAL_TO_FLOAT_VAR = 0x10032, + IS_NUMBER_GREATER_OR_EQUAL_TO_FLOAT_LVAR = 0x10033, + IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_FLOAT_VAR = 0x10034, + IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_FLOAT_LVAR = 0x10035, + IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_FLOAT_LVAR = 0x10036, + IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_FLOAT_VAR = 0x10037, + IS_INT_VAR_EQUAL_TO_NUMBER = 0x10038, + IS_INT_LVAR_EQUAL_TO_NUMBER = 0x10039, + IS_INT_VAR_EQUAL_TO_INT_VAR = 0x1003A, + IS_INT_LVAR_EQUAL_TO_INT_LVAR = 0x1003B, + IS_INT_VAR_EQUAL_TO_INT_LVAR = 0x1003C, + IS_INT_VAR_NOT_EQUAL_TO_NUMBER = 0x1003D, + IS_INT_LVAR_NOT_EQUAL_TO_NUMBER = 0x1003E, + IS_INT_VAR_NOT_EQUAL_TO_INT_VAR = 0x1003F, + IS_INT_LVAR_NOT_EQUAL_TO_INT_LVAR = 0x10040, + IS_INT_VAR_NOT_EQUAL_TO_INT_LVAR = 0x10041, + IS_FLOAT_VAR_EQUAL_TO_NUMBER = 0x10042, + IS_FLOAT_LVAR_EQUAL_TO_NUMBER = 0x10043, + IS_FLOAT_VAR_EQUAL_TO_FLOAT_VAR = 0x10044, + IS_FLOAT_LVAR_EQUAL_TO_FLOAT_LVAR = 0x10045, + IS_FLOAT_VAR_EQUAL_TO_FLOAT_LVAR = 0x10046, + IS_FLOAT_VAR_NOT_EQUAL_TO_NUMBER = 0x10047, + IS_FLOAT_LVAR_NOT_EQUAL_TO_NUMBER = 0x10048, + IS_FLOAT_VAR_NOT_EQUAL_TO_FLOAT_VAR = 0x10049, + IS_FLOAT_LVAR_NOT_EQUAL_TO_FLOAT_LVAR = 0x1004A, + IS_FLOAT_VAR_NOT_EQUAL_TO_FLOAT_LVAR = 0x1004B, + GOTO_IF_TRUE = 0x1004C, + GOTO_IF_FALSE = 0x1004D, + TERMINATE_THIS_SCRIPT = 0x1004E, + START_NEW_SCRIPT = 0x1004F, + GOSUB = 0x10050, + RETURN = 0x10051, + LINE = 0x10052, + CREATE_PLAYER = 0x10053, + GET_PLAYER_COORDINATES = 0x10054, + SET_PLAYER_COORDINATES = 0x10055, + IS_PLAYER_IN_AREA_2D = 0x10056, + IS_PLAYER_IN_AREA_3D = 0x10057, + ADD_INT_VAR_TO_INT_VAR = 0x10058, + ADD_FLOAT_VAR_TO_FLOAT_VAR = 0x10059, + ADD_INT_LVAR_TO_INT_LVAR = 0x1005A, + ADD_FLOAT_LVAR_TO_FLOAT_LVAR = 0x1005B, + ADD_INT_VAR_TO_INT_LVAR = 0x1005C, + ADD_FLOAT_VAR_TO_FLOAT_LVAR = 0x1005D, + ADD_INT_LVAR_TO_INT_VAR = 0x1005E, + ADD_FLOAT_LVAR_TO_FLOAT_VAR = 0x1005F, + SUB_INT_VAR_FROM_INT_VAR = 0x10060, + SUB_FLOAT_VAR_FROM_FLOAT_VAR = 0x10061, + SUB_INT_LVAR_FROM_INT_LVAR = 0x10062, + SUB_FLOAT_LVAR_FROM_FLOAT_LVAR = 0x10063, + SUB_INT_VAR_FROM_INT_LVAR = 0x10064, + SUB_FLOAT_VAR_FROM_FLOAT_LVAR = 0x10065, + SUB_INT_LVAR_FROM_INT_VAR = 0x10066, + SUB_FLOAT_LVAR_FROM_FLOAT_VAR = 0x10067, + MULT_INT_VAR_BY_INT_VAR = 0x10068, + MULT_FLOAT_VAR_BY_FLOAT_VAR = 0x10069, + MULT_INT_LVAR_BY_INT_LVAR = 0x1006A, + MULT_FLOAT_LVAR_BY_FLOAT_LVAR = 0x1006B, + MULT_INT_VAR_BY_INT_LVAR = 0x1006C, + MULT_FLOAT_VAR_BY_FLOAT_LVAR = 0x1006D, + MULT_INT_LVAR_BY_INT_VAR = 0x1006E, + MULT_FLOAT_LVAR_BY_FLOAT_VAR = 0x1006F, + DIV_INT_VAR_BY_INT_VAR = 0x10070, + DIV_FLOAT_VAR_BY_FLOAT_VAR = 0x10071, + DIV_INT_LVAR_BY_INT_LVAR = 0x10072, + DIV_FLOAT_LVAR_BY_FLOAT_LVAR = 0x10073, + DIV_INT_VAR_BY_INT_LVAR = 0x10074, + DIV_FLOAT_VAR_BY_FLOAT_LVAR = 0x10075, + DIV_INT_LVAR_BY_INT_VAR = 0x10076, + DIV_FLOAT_LVAR_BY_FLOAT_VAR = 0x10077, + ADD_TIMED_VAL_TO_FLOAT_VAR = 0x10078, + ADD_TIMED_VAL_TO_FLOAT_LVAR = 0x10079, + ADD_TIMED_FLOAT_VAR_TO_FLOAT_VAR = 0x1007A, + ADD_TIMED_FLOAT_LVAR_TO_FLOAT_LVAR = 0x1007B, + ADD_TIMED_FLOAT_LVAR_TO_FLOAT_VAR = 0x1007C, + ADD_TIMED_FLOAT_VAR_TO_FLOAT_LVAR = 0x1007D, + SUB_TIMED_VAL_FROM_FLOAT_VAR = 0x1007E, + SUB_TIMED_VAL_FROM_FLOAT_LVAR = 0x1007F, + SUB_TIMED_FLOAT_VAR_FROM_FLOAT_VAR = 0x10080, + SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_LVAR = 0x10081, + SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_VAR = 0x10082, + SUB_TIMED_FLOAT_VAR_FROM_FLOAT_LVAR = 0x10083, + SET_VAR_INT_TO_VAR_INT = 0x10084, + SET_LVAR_INT_TO_LVAR_INT = 0x10085, + SET_VAR_FLOAT_TO_VAR_FLOAT = 0x10086, + SET_LVAR_FLOAT_TO_LVAR_FLOAT = 0x10087, + SET_VAR_FLOAT_TO_LVAR_FLOAT = 0x10088, + SET_LVAR_FLOAT_TO_VAR_FLOAT = 0x10089, + SET_VAR_INT_TO_LVAR_INT = 0x1008A, + SET_LVAR_INT_TO_VAR_INT = 0x1008B, + CSET_VAR_INT_TO_VAR_FLOAT = 0x1008C, + CSET_VAR_FLOAT_TO_VAR_INT = 0x1008D, + CSET_LVAR_INT_TO_VAR_FLOAT = 0x1008E, + CSET_LVAR_FLOAT_TO_VAR_INT = 0x1008F, + CSET_VAR_INT_TO_LVAR_FLOAT = 0x10090, + CSET_VAR_FLOAT_TO_LVAR_INT = 0x10091, + CSET_LVAR_INT_TO_LVAR_FLOAT = 0x10092, + CSET_LVAR_FLOAT_TO_LVAR_INT = 0x10093, + ABS_VAR_INT = 0x10094, + ABS_LVAR_INT = 0x10095, + ABS_VAR_FLOAT = 0x10096, + ABS_LVAR_FLOAT = 0x10097, + GENERATE_RANDOM_FLOAT = 0x10098, + GENERATE_RANDOM_INT = 0x10099, + CREATE_CHAR = 0x1009A, + DELETE_CHAR = 0x1009B, + CHAR_WANDER_DIR = 0x1009C, + CHAR_WANDER_RANGE = 0x1009D, + CHAR_FOLLOW_PATH = 0x1009E, + CHAR_SET_IDLE = 0x1009F, + GET_CHAR_COORDINATES = 0x100A0, + SET_CHAR_COORDINATES = 0x100A1, + IS_CHAR_STILL_ALIVE = 0x100A2, + IS_CHAR_IN_AREA_2D = 0x100A3, + IS_CHAR_IN_AREA_3D = 0x100A4, + CREATE_CAR = 0x100A5, + DELETE_CAR = 0x100A6, + CAR_GOTO_COORDINATES = 0x100A7, + CAR_WANDER_RANDOMLY = 0x100A8, + CAR_SET_IDLE = 0x100A9, + GET_CAR_COORDINATES = 0x100AA, + SET_CAR_COORDINATES = 0x100AB, + IS_CAR_STILL_ALIVE = 0x100AC, + SET_CAR_CRUISE_SPEED = 0x100AD, + SET_CAR_DRIVING_STYLE = 0x100AE, + SET_CAR_MISSION = 0x100AF, + IS_CAR_IN_AREA_2D = 0x100B0, + IS_CAR_IN_AREA_3D = 0x100B1, + SPECIAL_0 = 0x100B2, + SPECIAL_1 = 0x100B3, + SPECIAL_2 = 0x100B4, + SPECIAL_3 = 0x100B5, + SPECIAL_4 = 0x100B6, + SPECIAL_5 = 0x100B7, + SPECIAL_6 = 0x100B8, + SPECIAL_7 = 0x100B9, + PRINT_BIG = 0x100BA, + PRINT = 0x100BB, + PRINT_NOW = 0x100BC, + PRINT_SOON = 0x100BD, + CLEAR_PRINTS = 0x100BE, + GET_TIME_OF_DAY = 0x100BF, + SET_TIME_OF_DAY = 0x100C0, + GET_MINUTES_TO_TIME_OF_DAY = 0x100C1, + IS_POINT_ON_SCREEN = 0x100C2, + DEBUG_ON = 0x100C3, + DEBUG_OFF = 0x100C4, + RETURN_TRUE = 0x100C5, + RETURN_FALSE = 0x100C6, + VAR_INT = 0x100C7, + VAR_FLOAT = 0x100C8, + LVAR_INT = 0x100C9, + LVAR_FLOAT = 0x100CA, + LOCAL_SCOPE_OPEN = 0x100CB, + LOCAL_SCOPE_CLOSE = 0x100CC, + REPEAT = 0x100CD, + ENDREPEAT = 0x100CE, + IF = 0x100CF, + IFNOT = 0x100D0, + ELSE = 0x100D1, + ENDIF = 0x100D2, + WHILE = 0x100D3, + WHILENOT = 0x100D4, + ENDWHILE = 0x100D5, + ANDOR = 0x100D6, + LAUNCH_MISSION = 0x100D7, + MISSION_HAS_FINISHED = 0x100D8, + STORE_CAR_CHAR_IS_IN = 0x100D9, + STORE_CAR_PLAYER_IS_IN = 0x100DA, + IS_CHAR_IN_CAR = 0x100DB, + IS_PLAYER_IN_CAR = 0x100DC, + IS_CHAR_IN_MODEL = 0x100DD, + IS_PLAYER_IN_MODEL = 0x100DE, + IS_CHAR_IN_ANY_CAR = 0x100DF, + IS_PLAYER_IN_ANY_CAR = 0x100E0, + IS_BUTTON_PRESSED = 0x100E1, + GET_PAD_STATE = 0x100E2, + LOCATE_PLAYER_ANY_MEANS_2D = 0x100E3, + LOCATE_PLAYER_ON_FOOT_2D = 0x100E4, + LOCATE_PLAYER_IN_CAR_2D = 0x100E5, + LOCATE_STOPPED_PLAYER_ANY_MEANS_2D = 0x100E6, + LOCATE_STOPPED_PLAYER_ON_FOOT_2D = 0x100E7, + LOCATE_STOPPED_PLAYER_IN_CAR_2D = 0x100E8, + LOCATE_PLAYER_ANY_MEANS_CHAR_2D = 0x100E9, + LOCATE_PLAYER_ON_FOOT_CHAR_2D = 0x100EA, + LOCATE_PLAYER_IN_CAR_CHAR_2D = 0x100EB, + LOCATE_CHAR_ANY_MEANS_2D = 0x100EC, + LOCATE_CHAR_ON_FOOT_2D = 0x100ED, + LOCATE_CHAR_IN_CAR_2D = 0x100EE, + LOCATE_STOPPED_CHAR_ANY_MEANS_2D = 0x100EF, + LOCATE_STOPPED_CHAR_ON_FOOT_2D = 0x100F0, + LOCATE_STOPPED_CHAR_IN_CAR_2D = 0x100F1, + LOCATE_CHAR_ANY_MEANS_CHAR_2D = 0x100F2, + LOCATE_CHAR_ON_FOOT_CHAR_2D = 0x100F3, + LOCATE_CHAR_IN_CAR_CHAR_2D = 0x100F4, + LOCATE_PLAYER_ANY_MEANS_3D = 0x100F5, + LOCATE_PLAYER_ON_FOOT_3D = 0x100F6, + LOCATE_PLAYER_IN_CAR_3D = 0x100F7, + LOCATE_STOPPED_PLAYER_ANY_MEANS_3D = 0x100F8, + LOCATE_STOPPED_PLAYER_ON_FOOT_3D = 0x100F9, + LOCATE_STOPPED_PLAYER_IN_CAR_3D = 0x100FA, + LOCATE_PLAYER_ANY_MEANS_CHAR_3D = 0x100FB, + LOCATE_PLAYER_ON_FOOT_CHAR_3D = 0x100FC, + LOCATE_PLAYER_IN_CAR_CHAR_3D = 0x100FD, + LOCATE_CHAR_ANY_MEANS_3D = 0x100FE, + LOCATE_CHAR_ON_FOOT_3D = 0x100FF, + LOCATE_CHAR_IN_CAR_3D = 0x10100, + LOCATE_STOPPED_CHAR_ANY_MEANS_3D = 0x10101, + LOCATE_STOPPED_CHAR_ON_FOOT_3D = 0x10102, + LOCATE_STOPPED_CHAR_IN_CAR_3D = 0x10103, + LOCATE_CHAR_ANY_MEANS_CHAR_3D = 0x10104, + LOCATE_CHAR_ON_FOOT_CHAR_3D = 0x10105, + LOCATE_CHAR_IN_CAR_CHAR_3D = 0x10106, + CREATE_OBJECT = 0x10107, + DELETE_OBJECT = 0x10108, + ADD_SCORE = 0x10109, + IS_SCORE_GREATER = 0x1010A, + STORE_SCORE = 0x1010B, + GIVE_REMOTE_CONTROLLED_CAR_TO_PLAYER = 0x1010C, + ALTER_WANTED_LEVEL = 0x1010D, + ALTER_WANTED_LEVEL_NO_DROP = 0x1010E, + IS_WANTED_LEVEL_GREATER = 0x1010F, + CLEAR_WANTED_LEVEL = 0x10110, + SET_DEATHARREST_STATE = 0x10111, + HAS_DEATHARREST_BEEN_EXECUTED = 0x10112, + ADD_AMMO_TO_PLAYER = 0x10113, + ADD_AMMO_TO_CHAR = 0x10114, + ADD_AMMO_TO_CAR = 0x10115, + IS_PLAYER_STILL_ALIVE = 0x10116, + IS_PLAYER_DEAD = 0x10117, + IS_CHAR_DEAD = 0x10118, + IS_CAR_DEAD = 0x10119, + SET_CHAR_THREAT_SEARCH = 0x1011A, + SET_CHAR_THREAT_REACTION = 0x1011B, + SET_CHAR_OBJ_NO_OBJ = 0x1011C, + ORDER_DRIVER_OUT_OF_CAR = 0x1011D, + ORDER_CHAR_TO_DRIVE_CAR = 0x1011E, + ADD_PATROL_POINT = 0x1011F, + IS_PLAYER_IN_GANGZONE = 0x10120, + IS_PLAYER_IN_ZONE = 0x10121, + IS_PLAYER_PRESSING_HORN = 0x10122, + HAS_CHAR_SPOTTED_PLAYER = 0x10123, + ORDER_CHAR_TO_BACKDOOR = 0x10124, + ADD_CHAR_TO_GANG = 0x10125, + IS_CHAR_OBJECTIVE_PASSED = 0x10126, + SET_CHAR_DRIVE_AGGRESSION = 0x10127, + SET_CHAR_MAX_DRIVESPEED = 0x10128, + CREATE_CHAR_INSIDE_CAR = 0x10129, + WARP_PLAYER_FROM_CAR_TO_COORD = 0x1012A, + MAKE_CHAR_DO_NOTHING = 0x1012B, + SET_CHAR_INVINCIBLE = 0x1012C, + SET_PLAYER_INVINCIBLE = 0x1012D, + SET_CHAR_GRAPHIC_TYPE = 0x1012E, + SET_PLAYER_GRAPHIC_TYPE = 0x1012F, + HAS_PLAYER_BEEN_ARRESTED = 0x10130, + STOP_CHAR_DRIVING = 0x10131, + KILL_CHAR = 0x10132, + SET_FAVOURITE_CAR_MODEL_FOR_CHAR = 0x10133, + SET_CHAR_OCCUPATION = 0x10134, + CHANGE_CAR_LOCK = 0x10135, + SHAKE_CAM_WITH_POINT = 0x10136, + IS_CAR_MODEL = 0x10137, + IS_CAR_REMAP = 0x10138, + HAS_CAR_JUST_SUNK = 0x10139, + SET_CAR_NO_COLLIDE = 0x1013A, + IS_CAR_DEAD_IN_AREA_2D = 0x1013B, + IS_CAR_DEAD_IN_AREA_3D = 0x1013C, + IS_TRAILER_ATTACHED = 0x1013D, + IS_CAR_ON_TRAILER = 0x1013E, + HAS_CAR_GOT_WEAPON = 0x1013F, + PARK = 0x10140, + HAS_PARK_FINISHED = 0x10141, + KILL_ALL_PASSENGERS = 0x10142, + SET_CAR_BULLETPROOF = 0x10143, + SET_CAR_FLAMEPROOF = 0x10144, + SET_CAR_ROCKETPROOF = 0x10145, + IS_CARBOMB_ACTIVE = 0x10146, + GIVE_CAR_ALARM = 0x10147, + PUT_CAR_ON_TRAILER = 0x10148, + IS_CAR_CRUSHED = 0x10149, + CREATE_GANG_CAR = 0x1014A, + CREATE_CAR_GENERATOR = 0x1014B, + SWITCH_CAR_GENERATOR = 0x1014C, + ADD_PAGER_MESSAGE = 0x1014D, + DISPLAY_ONSCREEN_TIMER = 0x1014E, + CLEAR_ONSCREEN_TIMER = 0x1014F, + DISPLAY_ONSCREEN_COUNTER = 0x10150, + CLEAR_ONSCREEN_COUNTER = 0x10151, + SET_ZONE_CAR_INFO = 0x10152, + IS_CHAR_IN_GANG_ZONE = 0x10153, + IS_CHAR_IN_ZONE = 0x10154, + SET_CAR_DENSITY = 0x10155, + SET_PED_DENSITY = 0x10156, + POINT_CAMERA_AT_PLAYER = 0x10157, + POINT_CAMERA_AT_CAR = 0x10158, + POINT_CAMERA_AT_CHAR = 0x10159, + RESTORE_CAMERA = 0x1015A, + SHAKE_PAD = 0x1015B, + SET_ZONE_PED_INFO = 0x1015C, + SET_TIME_SCALE = 0x1015D, + IS_CAR_IN_AIR = 0x1015E, + SET_FIXED_CAMERA_POSITION = 0x1015F, + POINT_CAMERA_AT_POINT = 0x10160, + ADD_BLIP_FOR_CAR_OLD = 0x10161, + ADD_BLIP_FOR_CHAR_OLD = 0x10162, + ADD_BLIP_FOR_OBJECT_OLD = 0x10163, + REMOVE_BLIP = 0x10164, + CHANGE_BLIP_COLOUR = 0x10165, + DIM_BLIP = 0x10166, + ADD_BLIP_FOR_COORD_OLD = 0x10167, + CHANGE_BLIP_SCALE = 0x10168, + SET_FADING_COLOUR = 0x10169, + DO_FADE = 0x1016A, + GET_FADING_STATUS = 0x1016B, + ADD_HOSPITAL_RESTART = 0x1016C, + ADD_POLICE_RESTART = 0x1016D, + OVERRIDE_NEXT_RESTART = 0x1016E, + DRAW_SHADOW = 0x1016F, + GET_PLAYER_HEADING = 0x10170, + SET_PLAYER_HEADING = 0x10171, + GET_CHAR_HEADING = 0x10172, + SET_CHAR_HEADING = 0x10173, + GET_CAR_HEADING = 0x10174, + SET_CAR_HEADING = 0x10175, + GET_OBJECT_HEADING = 0x10176, + SET_OBJECT_HEADING = 0x10177, + IS_PLAYER_TOUCHING_OBJECT = 0x10178, + IS_CHAR_TOUCHING_OBJECT = 0x10179, + SET_PLAYER_AMMO = 0x1017A, + SET_CHAR_AMMO = 0x1017B, + SET_CAR_AMMO = 0x1017C, + LOAD_CAMERA_SPLINE = 0x1017D, + MOVE_CAMERA_ALONG_SPLINE = 0x1017E, + GET_CAMERA_POSITION_ALONG_SPLINE = 0x1017F, + DECLARE_MISSION_FLAG = 0x10180, + DECLARE_MISSION_FLAG_FOR_CONTACT = 0x10181, + DECLARE_BASE_BRIEF_ID_FOR_CONTACT = 0x10182, + IS_PLAYER_HEALTH_GREATER = 0x10183, + IS_CHAR_HEALTH_GREATER = 0x10184, + IS_CAR_HEALTH_GREATER = 0x10185, + ADD_BLIP_FOR_CAR = 0x10186, + ADD_BLIP_FOR_CHAR = 0x10187, + ADD_BLIP_FOR_OBJECT = 0x10188, + ADD_BLIP_FOR_CONTACT_POINT = 0x10189, + ADD_BLIP_FOR_COORD = 0x1018A, + CHANGE_BLIP_DISPLAY = 0x1018B, + ADD_ONE_OFF_SOUND = 0x1018C, + ADD_CONTINUOUS_SOUND = 0x1018D, + REMOVE_SOUND = 0x1018E, + IS_CAR_STUCK_ON_ROOF = 0x1018F, + ADD_UPSIDEDOWN_CAR_CHECK = 0x10190, + REMOVE_UPSIDEDOWN_CAR_CHECK = 0x10191, + SET_CHAR_OBJ_WAIT_ON_FOOT = 0x10192, + SET_CHAR_OBJ_FLEE_ON_FOOT_TILL_SAFE = 0x10193, + SET_CHAR_OBJ_GUARD_SPOT = 0x10194, + SET_CHAR_OBJ_GUARD_AREA = 0x10195, + SET_CHAR_OBJ_WAIT_IN_CAR = 0x10196, + IS_PLAYER_IN_AREA_ON_FOOT_2D = 0x10197, + IS_PLAYER_IN_AREA_IN_CAR_2D = 0x10198, + IS_PLAYER_STOPPED_IN_AREA_2D = 0x10199, + IS_PLAYER_STOPPED_IN_AREA_ON_FOOT_2D = 0x1019A, + IS_PLAYER_STOPPED_IN_AREA_IN_CAR_2D = 0x1019B, + IS_PLAYER_IN_AREA_ON_FOOT_3D = 0x1019C, + IS_PLAYER_IN_AREA_IN_CAR_3D = 0x1019D, + IS_PLAYER_STOPPED_IN_AREA_3D = 0x1019E, + IS_PLAYER_STOPPED_IN_AREA_ON_FOOT_3D = 0x1019F, + IS_PLAYER_STOPPED_IN_AREA_IN_CAR_3D = 0x101A0, + IS_CHAR_IN_AREA_ON_FOOT_2D = 0x101A1, + IS_CHAR_IN_AREA_IN_CAR_2D = 0x101A2, + IS_CHAR_STOPPED_IN_AREA_2D = 0x101A3, + IS_CHAR_STOPPED_IN_AREA_ON_FOOT_2D = 0x101A4, + IS_CHAR_STOPPED_IN_AREA_IN_CAR_2D = 0x101A5, + IS_CHAR_IN_AREA_ON_FOOT_3D = 0x101A6, + IS_CHAR_IN_AREA_IN_CAR_3D = 0x101A7, + IS_CHAR_STOPPED_IN_AREA_3D = 0x101A8, + IS_CHAR_STOPPED_IN_AREA_ON_FOOT_3D = 0x101A9, + IS_CHAR_STOPPED_IN_AREA_IN_CAR_3D = 0x101AA, + IS_CAR_STOPPED_IN_AREA_2D = 0x101AB, + IS_CAR_STOPPED_IN_AREA_3D = 0x101AC, + LOCATE_CAR_2D = 0x101AD, + LOCATE_STOPPED_CAR_2D = 0x101AE, + LOCATE_CAR_3D = 0x101AF, + LOCATE_STOPPED_CAR_3D = 0x101B0, + GIVE_WEAPON_TO_PLAYER = 0x101B1, + GIVE_WEAPON_TO_CHAR = 0x101B2, + GIVE_WEAPON_TO_CAR = 0x101B3, + SET_PLAYER_CONTROL = 0x101B4, + FORCE_WEATHER = 0x101B5, + FORCE_WEATHER_NOW = 0x101B6, + RELEASE_WEATHER = 0x101B7, + SET_CURRENT_PLAYER_WEAPON = 0x101B8, + SET_CURRENT_CHAR_WEAPON = 0x101B9, + SET_CURRENT_CAR_WEAPON = 0x101BA, + GET_OBJECT_COORDINATES = 0x101BB, + SET_OBJECT_COORDINATES = 0x101BC, + GET_GAME_TIMER = 0x101BD, + TURN_CHAR_TO_FACE_COORD = 0x101BE, + TURN_PLAYER_TO_FACE_COORD = 0x101BF, + STORE_WANTED_LEVEL = 0x101C0, + IS_CAR_STOPPED = 0x101C1, + MARK_CHAR_AS_NO_LONGER_NEEDED = 0x101C2, + MARK_CAR_AS_NO_LONGER_NEEDED = 0x101C3, + MARK_OBJECT_AS_NO_LONGER_NEEDED = 0x101C4, + DONT_REMOVE_CHAR = 0x101C5, + DONT_REMOVE_CAR = 0x101C6, + DONT_REMOVE_OBJECT = 0x101C7, + CREATE_CHAR_AS_PASSENGER = 0x101C8, + SET_CHAR_OBJ_KILL_CHAR_ON_FOOT = 0x101C9, + SET_CHAR_OBJ_KILL_PLAYER_ON_FOOT = 0x101CA, + SET_CHAR_OBJ_KILL_CHAR_ANY_MEANS = 0x101CB, + SET_CHAR_OBJ_KILL_PLAYER_ANY_MEANS = 0x101CC, + SET_CHAR_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE = 0x101CD, + SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE = 0x101CE, + SET_CHAR_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS = 0x101CF, + SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS = 0x101D0, + SET_CHAR_OBJ_GOTO_CHAR_ON_FOOT = 0x101D1, + SET_CHAR_OBJ_GOTO_PLAYER_ON_FOOT = 0x101D2, + SET_CHAR_OBJ_LEAVE_CAR = 0x101D3, + SET_CHAR_OBJ_ENTER_CAR_AS_PASSENGER = 0x101D4, + SET_CHAR_OBJ_ENTER_CAR_AS_DRIVER = 0x101D5, + SET_CHAR_OBJ_FOLLOW_CAR_IN_CAR = 0x101D6, + SET_CHAR_OBJ_FIRE_AT_OBJECT_FROM_VEHICLE = 0x101D7, + SET_CHAR_OBJ_DESTROY_OBJECT = 0x101D8, + SET_CHAR_OBJ_DESTROY_CAR = 0x101D9, + SET_CHAR_OBJ_GOTO_AREA_ON_FOOT = 0x101DA, + SET_CHAR_OBJ_GOTO_AREA_IN_CAR = 0x101DB, + SET_CHAR_OBJ_FOLLOW_CAR_ON_FOOT_WITH_OFFSET = 0x101DC, + SET_CHAR_OBJ_GUARD_ATTACK = 0x101DD, + SET_CHAR_AS_LEADER = 0x101DE, + SET_PLAYER_AS_LEADER = 0x101DF, + LEAVE_GROUP = 0x101E0, + SET_CHAR_OBJ_FOLLOW_ROUTE = 0x101E1, + ADD_ROUTE_POINT = 0x101E2, + PRINT_WITH_NUMBER_BIG = 0x101E3, + PRINT_WITH_NUMBER = 0x101E4, + PRINT_WITH_NUMBER_NOW = 0x101E5, + PRINT_WITH_NUMBER_SOON = 0x101E6, + SWITCH_ROADS_ON = 0x101E7, + SWITCH_ROADS_OFF = 0x101E8, + GET_NUMBER_OF_PASSENGERS = 0x101E9, + GET_MAXIMUM_NUMBER_OF_PASSENGERS = 0x101EA, + SET_CAR_DENSITY_MULTIPLIER = 0x101EB, + SET_CAR_HEAVY = 0x101EC, + CLEAR_CHAR_THREAT_SEARCH = 0x101ED, + ACTIVATE_CRANE = 0x101EE, + DEACTIVATE_CRANE = 0x101EF, + SET_MAX_WANTED_LEVEL = 0x101F0, + SAVE_VAR_INT = 0x101F1, + SAVE_VAR_FLOAT = 0x101F2, + IS_CAR_IN_AIR_PROPER = 0x101F3, + IS_CAR_UPSIDEDOWN = 0x101F4, + GET_PLAYER_CHAR = 0x101F5, + CANCEL_OVERRIDE_RESTART = 0x101F6, + SET_POLICE_IGNORE_PLAYER = 0x101F7, + ADD_PAGER_MESSAGE_WITH_NUMBER = 0x101F8, + START_KILL_FRENZY = 0x101F9, + READ_KILL_FRENZY_STATUS = 0x101FA, + SQRT = 0x101FB, + LOCATE_PLAYER_ANY_MEANS_CAR_2D = 0x101FC, + LOCATE_PLAYER_ON_FOOT_CAR_2D = 0x101FD, + LOCATE_PLAYER_IN_CAR_CAR_2D = 0x101FE, + LOCATE_PLAYER_ANY_MEANS_CAR_3D = 0x101FF, + LOCATE_PLAYER_ON_FOOT_CAR_3D = 0x10200, + LOCATE_PLAYER_IN_CAR_CAR_3D = 0x10201, + LOCATE_CHAR_ANY_MEANS_CAR_2D = 0x10202, + LOCATE_CHAR_ON_FOOT_CAR_2D = 0x10203, + LOCATE_CHAR_IN_CAR_CAR_2D = 0x10204, + LOCATE_CHAR_ANY_MEANS_CAR_3D = 0x10205, + LOCATE_CHAR_ON_FOOT_CAR_3D = 0x10206, + LOCATE_CHAR_IN_CAR_CAR_3D = 0x10207, + GENERATE_RANDOM_FLOAT_IN_RANGE = 0x10208, + GENERATE_RANDOM_INT_IN_RANGE = 0x10209, + LOCK_CAR_DOORS = 0x1020A, + EXPLODE_CAR = 0x1020B, + ADD_EXPLOSION = 0x1020C, + IS_CAR_UPRIGHT = 0x1020D, + TURN_CHAR_TO_FACE_CHAR = 0x1020E, + TURN_CHAR_TO_FACE_PLAYER = 0x1020F, + TURN_PLAYER_TO_FACE_CHAR = 0x10210, + SET_CHAR_OBJ_GOTO_COORD_ON_FOOT = 0x10211, + SET_CHAR_OBJ_GOTO_COORD_IN_CAR = 0x10212, + CREATE_PICKUP = 0x10213, + HAS_PICKUP_BEEN_COLLECTED = 0x10214, + REMOVE_PICKUP = 0x10215, + SET_TAXI_LIGHTS = 0x10216, + PRINT_BIG_Q = 0x10217, + PRINT_WITH_NUMBER_BIG_Q = 0x10218, + SET_GARAGE = 0x10219, + SET_GARAGE_WITH_CAR_MODEL = 0x1021A, + SET_TARGET_CAR_FOR_MISSION_GARAGE = 0x1021B, + IS_CAR_IN_MISSION_GARAGE = 0x1021C, + SET_FREE_BOMBS = 0x1021D, + SET_POWERPOINT = 0x1021E, + SET_ALL_TAXI_LIGHTS = 0x1021F, + IS_CAR_ARMED_WITH_ANY_BOMB = 0x10220, + APPLY_BRAKES_TO_PLAYERS_CAR = 0x10221, + SET_PLAYER_HEALTH = 0x10222, + SET_CHAR_HEALTH = 0x10223, + SET_CAR_HEALTH = 0x10224, + GET_PLAYER_HEALTH = 0x10225, + GET_CHAR_HEALTH = 0x10226, + GET_CAR_HEALTH = 0x10227, + IS_CAR_ARMED_WITH_BOMB = 0x10228, + CHANGE_CAR_COLOUR = 0x10229, + SWITCH_PED_ROADS_ON = 0x1022A, + SWITCH_PED_ROADS_OFF = 0x1022B, + CHAR_LOOK_AT_CHAR_ALWAYS = 0x1022C, + CHAR_LOOK_AT_PLAYER_ALWAYS = 0x1022D, + PLAYER_LOOK_AT_CHAR_ALWAYS = 0x1022E, + STOP_CHAR_LOOKING = 0x1022F, + STOP_PLAYER_LOOKING = 0x10230, + SWITCH_HELICOPTER = 0x10231, + SET_GANG_ATTITUDE = 0x10232, + SET_GANG_GANG_ATTITUDE = 0x10233, + SET_GANG_PLAYER_ATTITUDE = 0x10234, + SET_GANG_PED_MODELS = 0x10235, + SET_GANG_CAR_MODEL = 0x10236, + SET_GANG_WEAPONS = 0x10237, + SET_CHAR_OBJ_RUN_TO_AREA = 0x10238, + SET_CHAR_OBJ_RUN_TO_COORD = 0x10239, + IS_PLAYER_TOUCHING_OBJECT_ON_FOOT = 0x1023A, + IS_CHAR_TOUCHING_OBJECT_ON_FOOT = 0x1023B, + LOAD_SPECIAL_CHARACTER = 0x1023C, + HAS_SPECIAL_CHARACTER_LOADED = 0x1023D, + FLASH_CAR = 0x1023E, + FLASH_CHAR = 0x1023F, + FLASH_OBJECT = 0x10240, + IS_PLAYER_IN_REMOTE_MODE = 0x10241, + ARM_CAR_WITH_BOMB = 0x10242, + SET_CHAR_PERSONALITY = 0x10243, + SET_CUTSCENE_OFFSET = 0x10244, + SET_ANIM_GROUP_FOR_CHAR = 0x10245, + SET_ANIM_GROUP_FOR_PLAYER = 0x10246, + REQUEST_MODEL = 0x10247, + HAS_MODEL_LOADED = 0x10248, + MARK_MODEL_AS_NO_LONGER_NEEDED = 0x10249, + GRAB_PHONE = 0x1024A, + SET_REPEATED_PHONE_MESSAGE = 0x1024B, + SET_PHONE_MESSAGE = 0x1024C, + HAS_PHONE_DISPLAYED_MESSAGE = 0x1024D, + TURN_PHONE_OFF = 0x1024E, + DRAW_CORONA = 0x1024F, + DRAW_LIGHT = 0x10250, + STORE_WEATHER = 0x10251, + RESTORE_WEATHER = 0x10252, + STORE_CLOCK = 0x10253, + RESTORE_CLOCK = 0x10254, + RESTART_CRITICAL_MISSION = 0x10255, + IS_PLAYER_PLAYING = 0x10256, + SET_COLL_OBJ_NO_OBJ = 0x10257, + SET_COLL_OBJ_WAIT_ON_FOOT = 0x10258, + SET_COLL_OBJ_FLEE_ON_FOOT_TILL_SAFE = 0x10259, + SET_COLL_OBJ_GUARD_SPOT = 0x1025A, + SET_COLL_OBJ_GUARD_AREA = 0x1025B, + SET_COLL_OBJ_WAIT_IN_CAR = 0x1025C, + SET_COLL_OBJ_KILL_CHAR_ON_FOOT = 0x1025D, + SET_COLL_OBJ_KILL_PLAYER_ON_FOOT = 0x1025E, + SET_COLL_OBJ_KILL_CHAR_ANY_MEANS = 0x1025F, + SET_COLL_OBJ_KILL_PLAYER_ANY_MEANS = 0x10260, + SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE = 0x10261, + SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE = 0x10262, + SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS = 0x10263, + SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS = 0x10264, + SET_COLL_OBJ_GOTO_CHAR_ON_FOOT = 0x10265, + SET_COLL_OBJ_GOTO_PLAYER_ON_FOOT = 0x10266, + SET_COLL_OBJ_LEAVE_CAR = 0x10267, + SET_COLL_OBJ_ENTER_CAR_AS_PASSENGER = 0x10268, + SET_COLL_OBJ_ENTER_CAR_AS_DRIVER = 0x10269, + SET_COLL_OBJ_FOLLOW_CAR_IN_CAR = 0x1026A, + SET_COLL_OBJ_FIRE_AT_OBJECT_FROM_VEHICLE = 0x1026B, + SET_COLL_OBJ_DESTROY_OBJECT = 0x1026C, + SET_COLL_OBJ_DESTROY_CAR = 0x1026D, + SET_COLL_OBJ_GOTO_AREA_ON_FOOT = 0x1026E, + SET_COLL_OBJ_GOTO_AREA_IN_CAR = 0x1026F, + SET_COLL_OBJ_FOLLOW_CAR_ON_FOOT_WITH_OFFSET = 0x10270, + SET_COLL_OBJ_GUARD_ATTACK = 0x10271, + SET_COLL_OBJ_FOLLOW_ROUTE = 0x10272, + SET_COLL_OBJ_GOTO_COORD_ON_FOOT = 0x10273, + SET_COLL_OBJ_GOTO_COORD_IN_CAR = 0x10274, + SET_COLL_OBJ_RUN_TO_AREA = 0x10275, + SET_COLL_OBJ_RUN_TO_COORD = 0x10276, + ADD_PEDS_IN_AREA_TO_COLL = 0x10277, + ADD_PEDS_IN_VEHICLE_TO_COLL = 0x10278, + CLEAR_COLL = 0x10279, + IS_COLL_IN_CARS = 0x1027A, + LOCATE_COLL_ANY_MEANS_2D = 0x1027B, + LOCATE_COLL_ON_FOOT_2D = 0x1027C, + LOCATE_COLL_IN_CAR_2D = 0x1027D, + LOCATE_STOPPED_COLL_ANY_MEANS_2D = 0x1027E, + LOCATE_STOPPED_COLL_ON_FOOT_2D = 0x1027F, + LOCATE_STOPPED_COLL_IN_CAR_2D = 0x10280, + LOCATE_COLL_ANY_MEANS_CHAR_2D = 0x10281, + LOCATE_COLL_ON_FOOT_CHAR_2D = 0x10282, + LOCATE_COLL_IN_CAR_CHAR_2D = 0x10283, + LOCATE_COLL_ANY_MEANS_CAR_2D = 0x10284, + LOCATE_COLL_ON_FOOT_CAR_2D = 0x10285, + LOCATE_COLL_IN_CAR_CAR_2D = 0x10286, + LOCATE_COLL_ANY_MEANS_PLAYER_2D = 0x10287, + LOCATE_COLL_ON_FOOT_PLAYER_2D = 0x10288, + LOCATE_COLL_IN_CAR_PLAYER_2D = 0x10289, + IS_COLL_IN_AREA_2D = 0x1028A, + IS_COLL_IN_AREA_ON_FOOT_2D = 0x1028B, + IS_COLL_IN_AREA_IN_CAR_2D = 0x1028C, + IS_COLL_STOPPED_IN_AREA_2D = 0x1028D, + IS_COLL_STOPPED_IN_AREA_ON_FOOT_2D = 0x1028E, + IS_COLL_STOPPED_IN_AREA_IN_CAR_2D = 0x1028F, + GET_NUMBER_OF_PEDS_IN_COLL = 0x10290, + SET_CHAR_HEED_THREATS = 0x10291, + SET_PLAYER_HEED_THREATS = 0x10292, + GET_CONTROLLER_MODE = 0x10293, + SET_CAN_RESPRAY_CAR = 0x10294, + IS_TAXI = 0x10295, + UNLOAD_SPECIAL_CHARACTER = 0x10296, + RESET_NUM_OF_MODELS_KILLED_BY_PLAYER = 0x10297, + GET_NUM_OF_MODELS_KILLED_BY_PLAYER = 0x10298, + ACTIVATE_GARAGE = 0x10299, + SWITCH_TAXI_TIMER = 0x1029A, + CREATE_OBJECT_NO_OFFSET = 0x1029B, + IS_BOAT = 0x1029C, + SET_CHAR_OBJ_GOTO_AREA_ANY_MEANS = 0x1029D, + SET_COLL_OBJ_GOTO_AREA_ANY_MEANS = 0x1029E, + IS_PLAYER_STOPPED = 0x1029F, + IS_CHAR_STOPPED = 0x102A0, + MESSAGE_WAIT = 0x102A1, + ADD_PARTICLE_EFFECT = 0x102A2, + SWITCH_WIDESCREEN = 0x102A3, + ADD_SPRITE_BLIP_FOR_CAR = 0x102A4, + ADD_SPRITE_BLIP_FOR_CHAR = 0x102A5, + ADD_SPRITE_BLIP_FOR_OBJECT = 0x102A6, + ADD_SPRITE_BLIP_FOR_CONTACT_POINT = 0x102A7, + ADD_SPRITE_BLIP_FOR_COORD = 0x102A8, + SET_CHAR_ONLY_DAMAGED_BY_PLAYER = 0x102A9, + SET_CAR_ONLY_DAMAGED_BY_PLAYER = 0x102AA, + SET_CHAR_PROOFS = 0x102AB, + SET_CAR_PROOFS = 0x102AC, + IS_PLAYER_IN_ANGLED_AREA_2D = 0x102AD, + IS_PLAYER_IN_ANGLED_AREA_ON_FOOT_2D = 0x102AE, + IS_PLAYER_IN_ANGLED_AREA_IN_CAR_2D = 0x102AF, + IS_PLAYER_STOPPED_IN_ANGLED_AREA_2D = 0x102B0, + IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_2D = 0x102B1, + IS_PLAYER_STOPPED_IN_ANGLED_AREA_IN_CAR_2D = 0x102B2, + IS_PLAYER_IN_ANGLED_AREA_3D = 0x102B3, + IS_PLAYER_IN_ANGLED_AREA_ON_FOOT_3D = 0x102B4, + IS_PLAYER_IN_ANGLED_AREA_IN_CAR_3D = 0x102B5, + IS_PLAYER_STOPPED_IN_ANGLED_AREA_3D = 0x102B6, + IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_3D = 0x102B7, + IS_PLAYER_STOPPED_IN_ANGLED_AREA_IN_CAR_3D = 0x102B8, + DEACTIVATE_GARAGE = 0x102B9, + GET_NUMBER_OF_CARS_COLLECTED_BY_GARAGE = 0x102BA, + HAS_CAR_BEEN_TAKEN_TO_GARAGE = 0x102BB, + SET_SWAT_REQUIRED = 0x102BC, + SET_FBI_REQUIRED = 0x102BD, + SET_ARMY_REQUIRED = 0x102BE, + IS_CAR_IN_WATER = 0x102BF, + GET_CLOSEST_CHAR_NODE = 0x102C0, + GET_CLOSEST_CAR_NODE = 0x102C1, + CAR_GOTO_COORDINATES_ACCURATE = 0x102C2, + START_PACMAN_RACE = 0x102C3, + START_PACMAN_RECORD = 0x102C4, + GET_NUMBER_OF_POWER_PILLS_EATEN = 0x102C5, + CLEAR_PACMAN = 0x102C6, + START_PACMAN_SCRAMBLE = 0x102C7, + GET_NUMBER_OF_POWER_PILLS_CARRIED = 0x102C8, + CLEAR_NUMBER_OF_POWER_PILLS_CARRIED = 0x102C9, + IS_CAR_ON_SCREEN = 0x102CA, + IS_CHAR_ON_SCREEN = 0x102CB, + IS_OBJECT_ON_SCREEN = 0x102CC, + GOSUB_FILE = 0x102CD, + GET_GROUND_Z_FOR_3D_COORD = 0x102CE, + START_SCRIPT_FIRE = 0x102CF, + IS_SCRIPT_FIRE_EXTINGUISHED = 0x102D0, + REMOVE_SCRIPT_FIRE = 0x102D1, + SET_COMEDY_CONTROLS = 0x102D2, + BOAT_GOTO_COORDS = 0x102D3, + BOAT_STOP = 0x102D4, + IS_PLAYER_SHOOTING_IN_AREA = 0x102D5, + IS_CHAR_SHOOTING_IN_AREA = 0x102D6, + IS_CURRENT_PLAYER_WEAPON = 0x102D7, + IS_CURRENT_CHAR_WEAPON = 0x102D8, + CLEAR_NUMBER_OF_POWER_PILLS_EATEN = 0x102D9, + ADD_POWER_PILL = 0x102DA, + SET_BOAT_CRUISE_SPEED = 0x102DB, + GET_RANDOM_CHAR_IN_AREA = 0x102DC, + GET_RANDOM_CHAR_IN_ZONE = 0x102DD, + IS_PLAYER_IN_TAXI = 0x102DE, + IS_PLAYER_SHOOTING = 0x102DF, + IS_CHAR_SHOOTING = 0x102E0, + CREATE_MONEY_PICKUP = 0x102E1, + SET_CHAR_ACCURACY = 0x102E2, + GET_CAR_SPEED = 0x102E3, + LOAD_CUTSCENE = 0x102E4, + CREATE_CUTSCENE_OBJECT = 0x102E5, + SET_CUTSCENE_ANIM = 0x102E6, + START_CUTSCENE = 0x102E7, + GET_CUTSCENE_TIME = 0x102E8, + HAS_CUTSCENE_FINISHED = 0x102E9, + CLEAR_CUTSCENE = 0x102EA, + RESTORE_CAMERA_JUMPCUT = 0x102EB, + CREATE_COLLECTABLE1 = 0x102EC, + SET_COLLECTABLE1_TOTAL = 0x102ED, + IS_PROJECTILE_IN_AREA = 0x102EE, + DESTROY_PROJECTILES_IN_AREA = 0x102EF, + DROP_MINE = 0x102F0, + DROP_NAUTICAL_MINE = 0x102F1, + IS_CHAR_MODEL = 0x102F2, + LOAD_SPECIAL_MODEL = 0x102F3, + CREATE_CUTSCENE_HEAD = 0x102F4, + SET_CUTSCENE_HEAD_ANIM = 0x102F5, + SIN = 0x102F6, + COS = 0x102F7, + GET_CAR_FORWARD_X = 0x102F8, + GET_CAR_FORWARD_Y = 0x102F9, + CHANGE_GARAGE_TYPE = 0x102FA, + ACTIVATE_CRUSHER_CRANE = 0x102FB, + PRINT_WITH_2_NUMBERS = 0x102FC, + PRINT_WITH_2_NUMBERS_NOW = 0x102FD, + PRINT_WITH_2_NUMBERS_SOON = 0x102FE, + PRINT_WITH_3_NUMBERS = 0x102FF, + PRINT_WITH_3_NUMBERS_NOW = 0x10300, + PRINT_WITH_3_NUMBERS_SOON = 0x10301, + PRINT_WITH_4_NUMBERS = 0x10302, + PRINT_WITH_4_NUMBERS_NOW = 0x10303, + PRINT_WITH_4_NUMBERS_SOON = 0x10304, + PRINT_WITH_5_NUMBERS = 0x10305, + PRINT_WITH_5_NUMBERS_NOW = 0x10306, + PRINT_WITH_5_NUMBERS_SOON = 0x10307, + PRINT_WITH_6_NUMBERS = 0x10308, + PRINT_WITH_6_NUMBERS_NOW = 0x10309, + PRINT_WITH_6_NUMBERS_SOON = 0x1030A, + SET_CHAR_OBJ_FOLLOW_CHAR_IN_FORMATION = 0x1030B, + PLAYER_MADE_PROGRESS = 0x1030C, + SET_PROGRESS_TOTAL = 0x1030D, + REGISTER_JUMP_DISTANCE = 0x1030E, + REGISTER_JUMP_HEIGHT = 0x1030F, + REGISTER_JUMP_FLIPS = 0x10310, + REGISTER_JUMP_SPINS = 0x10311, + REGISTER_JUMP_STUNT = 0x10312, + REGISTER_UNIQUE_JUMP_FOUND = 0x10313, + SET_UNIQUE_JUMPS_TOTAL = 0x10314, + REGISTER_PASSENGER_DROPPED_OFF_TAXI = 0x10315, + REGISTER_MONEY_MADE_TAXI = 0x10316, + REGISTER_MISSION_GIVEN = 0x10317, + REGISTER_MISSION_PASSED = 0x10318, + SET_CHAR_RUNNING = 0x10319, + REMOVE_ALL_SCRIPT_FIRES = 0x1031A, + IS_FIRST_CAR_COLOUR = 0x1031B, + IS_SECOND_CAR_COLOUR = 0x1031C, + HAS_CHAR_BEEN_DAMAGED_BY_WEAPON = 0x1031D, + HAS_CAR_BEEN_DAMAGED_BY_WEAPON = 0x1031E, + IS_CHAR_IN_CHARS_GROUP = 0x1031F, + IS_CHAR_IN_PLAYERS_GROUP = 0x10320, + EXPLODE_CHAR_HEAD = 0x10321, + EXPLODE_PLAYER_HEAD = 0x10322, + ANCHOR_BOAT = 0x10323, + SET_ZONE_GROUP = 0x10324, + START_CAR_FIRE = 0x10325, + START_CHAR_FIRE = 0x10326, + GET_RANDOM_CAR_OF_TYPE_IN_AREA = 0x10327, + GET_RANDOM_CAR_OF_TYPE_IN_ZONE = 0x10328, + HAS_RESPRAY_HAPPENED = 0x10329, + SET_CAMERA_ZOOM = 0x1032A, + CREATE_PICKUP_WITH_AMMO = 0x1032B, + SET_CAR_RAM_CAR = 0x1032C, + SET_CAR_BLOCK_CAR = 0x1032D, + SET_CHAR_OBJ_CATCH_TRAIN = 0x1032E, + SET_COLL_OBJ_CATCH_TRAIN = 0x1032F, + SET_PLAYER_NEVER_GETS_TIRED = 0x10330, + SET_PLAYER_FAST_RELOAD = 0x10331, + SET_CHAR_BLEEDING = 0x10332, + SET_CAR_FUNNY_SUSPENSION = 0x10333, + SET_CAR_BIG_WHEELS = 0x10334, + SET_FREE_RESPRAYS = 0x10335, + SET_PLAYER_VISIBLE = 0x10336, + SET_CHAR_VISIBLE = 0x10337, + SET_CAR_VISIBLE = 0x10338, + IS_AREA_OCCUPIED = 0x10339, + START_DRUG_RUN = 0x1033A, + HAS_DRUG_RUN_BEEN_COMPLETED = 0x1033B, + HAS_DRUG_PLANE_BEEN_SHOT_DOWN = 0x1033C, + SAVE_PLAYER_FROM_FIRES = 0x1033D, + DISPLAY_TEXT = 0x1033E, + SET_TEXT_SCALE = 0x1033F, + SET_TEXT_COLOUR = 0x10340, + SET_TEXT_JUSTIFY = 0x10341, + SET_TEXT_CENTRE = 0x10342, + SET_TEXT_WRAPX = 0x10343, + SET_TEXT_CENTRE_SIZE = 0x10344, + SET_TEXT_BACKGROUND = 0x10345, + SET_TEXT_BACKGROUND_COLOUR = 0x10346, + SET_TEXT_BACKGROUND_ONLY_TEXT = 0x10347, + SET_TEXT_PROPORTIONAL = 0x10348, + SET_TEXT_FONT = 0x10349, + INDUSTRIAL_PASSED = 0x1034A, + COMMERCIAL_PASSED = 0x1034B, + SUBURBAN_PASSED = 0x1034C, + ROTATE_OBJECT = 0x1034D, + SLIDE_OBJECT = 0x1034E, + REMOVE_CHAR_ELEGANTLY = 0x1034F, + SET_CHAR_STAY_IN_SAME_PLACE = 0x10350, + IS_NASTY_GAME = 0x10351, + UNDRESS_CHAR = 0x10352, + DRESS_CHAR = 0x10353, + START_CHASE_SCENE = 0x10354, + STOP_CHASE_SCENE = 0x10355, + IS_EXPLOSION_IN_AREA = 0x10356, + IS_EXPLOSION_IN_ZONE = 0x10357, + START_DRUG_DROP_OFF = 0x10358, + HAS_DROP_OFF_PLANE_BEEN_SHOT_DOWN = 0x10359, + FIND_DROP_OFF_PLANE_COORDINATES = 0x1035A, + CREATE_FLOATING_PACKAGE = 0x1035B, + PLACE_OBJECT_RELATIVE_TO_CAR = 0x1035C, + MAKE_OBJECT_TARGETTABLE = 0x1035D, + ADD_ARMOUR_TO_PLAYER = 0x1035E, + ADD_ARMOUR_TO_CHAR = 0x1035F, + OPEN_GARAGE = 0x10360, + CLOSE_GARAGE = 0x10361, + WARP_CHAR_FROM_CAR_TO_COORD = 0x10362, + SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE = 0x10363, + HAS_CHAR_SPOTTED_CHAR = 0x10364, + SET_CHAR_OBJ_HAIL_TAXI = 0x10365, + HAS_OBJECT_BEEN_DAMAGED = 0x10366, + START_KILL_FRENZY_HEADSHOT = 0x10367, + ACTIVATE_MILITARY_CRANE = 0x10368, + WARP_PLAYER_INTO_CAR = 0x10369, + WARP_CHAR_INTO_CAR = 0x1036A, + SWITCH_CAR_RADIO = 0x1036B, + SET_AUDIO_STREAM = 0x1036C, + PRINT_WITH_2_NUMBERS_BIG = 0x1036D, + PRINT_WITH_3_NUMBERS_BIG = 0x1036E, + PRINT_WITH_4_NUMBERS_BIG = 0x1036F, + PRINT_WITH_5_NUMBERS_BIG = 0x10370, + PRINT_WITH_6_NUMBERS_BIG = 0x10371, + SET_CHAR_WAIT_STATE = 0x10372, + SET_CAMERA_BEHIND_PLAYER = 0x10373, + SET_MOTION_BLUR = 0x10374, + PRINT_STRING_IN_STRING = 0x10375, + CREATE_RANDOM_CHAR = 0x10376, + SET_CHAR_OBJ_STEAL_ANY_CAR = 0x10377, + SET_2_REPEATED_PHONE_MESSAGES = 0x10378, + SET_2_PHONE_MESSAGES = 0x10379, + SET_3_REPEATED_PHONE_MESSAGES = 0x1037A, + SET_3_PHONE_MESSAGES = 0x1037B, + SET_4_REPEATED_PHONE_MESSAGES = 0x1037C, + SET_4_PHONE_MESSAGES = 0x1037D, + IS_SNIPER_BULLET_IN_AREA = 0x1037E, + GIVE_PLAYER_DETONATOR = 0x1037F, + SET_COLL_OBJ_STEAL_ANY_CAR = 0x10380, + SET_OBJECT_VELOCITY = 0x10381, + SET_OBJECT_COLLISION = 0x10382, + IS_ICECREAM_JINGLE_ON = 0x10383, + PRINT_STRING_IN_STRING_NOW = 0x10384, + PRINT_STRING_IN_STRING_SOON = 0x10385, + SET_5_REPEATED_PHONE_MESSAGES = 0x10386, + SET_5_PHONE_MESSAGES = 0x10387, + SET_6_REPEATED_PHONE_MESSAGES = 0x10388, + SET_6_PHONE_MESSAGES = 0x10389, + IS_POINT_OBSCURED_BY_A_MISSION_ENTITY = 0x1038A, + LOAD_ALL_MODELS_NOW = 0x1038B, + ADD_TO_OBJECT_VELOCITY = 0x1038C, + DRAW_SPRITE = 0x1038D, + DRAW_RECT = 0x1038E, + LOAD_SPRITE = 0x1038F, + LOAD_TEXTURE_DICTIONARY = 0x10390, + REMOVE_TEXTURE_DICTIONARY = 0x10391, + SET_OBJECT_DYNAMIC = 0x10392, + SET_CHAR_ANIM_SPEED = 0x10393, + PLAY_MISSION_PASSED_TUNE = 0x10394, + CLEAR_AREA = 0x10395, + FREEZE_ONSCREEN_TIMER = 0x10396, + SWITCH_CAR_SIREN = 0x10397, + SWITCH_PED_ROADS_ON_ANGLED = 0x10398, + SWITCH_PED_ROADS_OFF_ANGLED = 0x10399, + SWITCH_ROADS_ON_ANGLED = 0x1039A, + SWITCH_ROADS_OFF_ANGLED = 0x1039B, + SET_CAR_WATERTIGHT = 0x1039C, + ADD_MOVING_PARTICLE_EFFECT = 0x1039D, + SET_CHAR_CANT_BE_DRAGGED_OUT = 0x1039E, + TURN_CAR_TO_FACE_COORD = 0x1039F, + IS_CRANE_LIFTING_CAR = 0x103A0, + DRAW_SPHERE = 0x103A1, + SET_CAR_STATUS = 0x103A2, + IS_CHAR_MALE = 0x103A3, + SCRIPT_NAME = 0x103A4, + CHANGE_GARAGE_TYPE_WITH_CAR_MODEL = 0x103A5, + FIND_DRUG_PLANE_COORDINATES = 0x103A6, + SAVE_INT_TO_DEBUG_FILE = 0x103A7, + SAVE_FLOAT_TO_DEBUG_FILE = 0x103A8, + SAVE_NEWLINE_TO_DEBUG_FILE = 0x103A9, + POLICE_RADIO_MESSAGE = 0x103AA, + SET_CAR_STRONG = 0x103AB, + REMOVE_ROUTE = 0x103AC, + SWITCH_RUBBISH = 0x103AD, + REMOVE_PARTICLE_EFFECTS_IN_AREA = 0x103AE, + SWITCH_STREAMING = 0x103AF, + IS_GARAGE_OPEN = 0x103B0, + IS_GARAGE_CLOSED = 0x103B1, + START_CATALINA_HELI = 0x103B2, + CATALINA_HELI_TAKE_OFF = 0x103B3, + REMOVE_CATALINA_HELI = 0x103B4, + HAS_CATALINA_HELI_BEEN_SHOT_DOWN = 0x103B5, + SWAP_NEAREST_BUILDING_MODEL = 0x103B6, + SWITCH_WORLD_PROCESSING = 0x103B7, + REMOVE_ALL_PLAYER_WEAPONS = 0x103B8, + GRAB_CATALINA_HELI = 0x103B9, + CLEAR_AREA_OF_CARS = 0x103BA, + SET_ROTATING_GARAGE_DOOR = 0x103BB, + ADD_SPHERE = 0x103BC, + REMOVE_SPHERE = 0x103BD, + CATALINA_HELI_FLY_AWAY = 0x103BE, + SET_EVERYONE_IGNORE_PLAYER = 0x103BF, + STORE_CAR_CHAR_IS_IN_NO_SAVE = 0x103C0, + STORE_CAR_PLAYER_IS_IN_NO_SAVE = 0x103C1, + IS_PHONE_DISPLAYING_MESSAGE = 0x103C2, + DISPLAY_ONSCREEN_TIMER_WITH_STRING = 0x103C3, + DISPLAY_ONSCREEN_COUNTER_WITH_STRING = 0x103C4, + CREATE_RANDOM_CAR_FOR_CAR_PARK = 0x103C5, + IS_COLLISION_IN_MEMORY = 0x103C6, + SET_WANTED_MULTIPLIER = 0x103C7, + SET_CAMERA_IN_FRONT_OF_PLAYER = 0x103C8, + IS_CAR_VISIBLY_DAMAGED = 0x103C9, + DOES_OBJECT_EXIST = 0x103CA, + LOAD_SCENE = 0x103CB, + ADD_STUCK_CAR_CHECK = 0x103CC, + REMOVE_STUCK_CAR_CHECK = 0x103CD, + IS_CAR_STUCK = 0x103CE, + LOAD_MISSION_AUDIO = 0x103CF, + HAS_MISSION_AUDIO_LOADED = 0x103D0, + PLAY_MISSION_AUDIO = 0x103D1, + HAS_MISSION_AUDIO_FINISHED = 0x103D2, + GET_CLOSEST_CAR_NODE_WITH_HEADING = 0x103D3, + HAS_IMPORT_GARAGE_SLOT_BEEN_FILLED = 0x103D4, + CLEAR_THIS_PRINT = 0x103D5, + CLEAR_THIS_BIG_PRINT = 0x103D6, + SET_MISSION_AUDIO_POSITION = 0x103D7, + ACTIVATE_SAVE_MENU = 0x103D8, + HAS_SAVE_GAME_FINISHED = 0x103D9, + NO_SPECIAL_CAMERA_FOR_THIS_GARAGE = 0x103DA, + ADD_BLIP_FOR_PICKUP_OLD = 0x103DB, + ADD_BLIP_FOR_PICKUP = 0x103DC, + ADD_SPRITE_BLIP_FOR_PICKUP = 0x103DD, + SET_PED_DENSITY_MULTIPLIER = 0x103DE, + FORCE_RANDOM_PED_TYPE = 0x103DF, + SET_TEXT_DRAW_BEFORE_FADE = 0x103E0, + GET_COLLECTABLE1S_COLLECTED = 0x103E1, + SET_CHAR_OBJ_LEAVE_ANY_CAR = 0x103E2, + SET_SPRITES_DRAW_BEFORE_FADE = 0x103E3, + SET_TEXT_RIGHT_JUSTIFY = 0x103E4, + PRINT_HELP = 0x103E5, + CLEAR_HELP = 0x103E6, + FLASH_HUD_OBJECT = 0x103E7, + FLASH_RADAR_BLIP = 0x103E8, + IS_CHAR_IN_CONTROL = 0x103E9, + SET_GENERATE_CARS_AROUND_CAMERA = 0x103EA, + CLEAR_SMALL_PRINTS = 0x103EB, + HAS_MILITARY_CRANE_COLLECTED_ALL_CARS = 0x103EC, + SET_UPSIDEDOWN_CAR_NOT_DAMAGED = 0x103ED, + CAN_PLAYER_START_MISSION = 0x103EE, + MAKE_PLAYER_SAFE_FOR_CUTSCENE = 0x103EF, + USE_TEXT_COMMANDS = 0x103F0, + SET_THREAT_FOR_PED_TYPE = 0x103F1, + CLEAR_THREAT_FOR_PED_TYPE = 0x103F2, + GET_CAR_COLOURS = 0x103F3, + SET_ALL_CARS_CAN_BE_DAMAGED = 0x103F4, + SET_CAR_CAN_BE_DAMAGED = 0x103F5, + MAKE_PLAYER_UNSAFE = 0x103F6, + LOAD_COLLISION = 0x103F7, + GET_BODY_CAST_HEALTH = 0x103F8, + SET_CHARS_CHATTING = 0x103F9, + MAKE_PLAYER_SAFE = 0x103FA, + SET_CAR_STAYS_IN_CURRENT_LEVEL = 0x103FB, + SET_CHAR_STAYS_IN_CURRENT_LEVEL = 0x103FC, + SET_DRUNK_INPUT_DELAY = 0x103FD, + SET_CHAR_MONEY = 0x103FE, + INCREASE_CHAR_MONEY = 0x103FF, + GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS = 0x10400, + REGISTER_LIFE_SAVED = 0x10401, + REGISTER_CRIMINAL_CAUGHT = 0x10402, + REGISTER_AMBULANCE_LEVEL = 0x10403, + REGISTER_FIRE_EXTINGUISHED = 0x10404, + TURN_PHONE_ON = 0x10405, + REGISTER_LONGEST_DODO_FLIGHT = 0x10406, + GET_OFFSET_FROM_CAR_IN_WORLD_COORDS = 0x10407, + SET_TOTAL_NUMBER_OF_KILL_FRENZIES = 0x10408, + BLOW_UP_RC_BUGGY = 0x10409, + REMOVE_CAR_FROM_CHASE = 0x1040A, + IS_FRENCH_GAME = 0x1040B, + IS_GERMAN_GAME = 0x1040C, + CLEAR_MISSION_AUDIO = 0x1040D, + SET_FADE_IN_AFTER_NEXT_ARREST = 0x1040E, + SET_FADE_IN_AFTER_NEXT_DEATH = 0x1040F, + SET_GANG_PED_MODEL_PREFERENCE = 0x10410, + SET_CHAR_USE_PEDNODE_SEEK = 0x10411, + SWITCH_VEHICLE_WEAPONS = 0x10412, + SET_GET_OUT_OF_JAIL_FREE = 0x10413, + SET_FREE_HEALTH_CARE = 0x10414, + IS_CAR_DOOR_CLOSED = 0x10415, + LOAD_AND_LAUNCH_MISSION = 0x10416, + LOAD_AND_LAUNCH_MISSION_INTERNAL = 0x10417, + SET_OBJECT_DRAW_LAST = 0x10418, + GET_AMMO_IN_PLAYER_WEAPON = 0x10419, + GET_AMMO_IN_CHAR_WEAPON = 0x1041A, + REGISTER_KILL_FRENZY_PASSED = 0x1041B, + SET_CHAR_SAY = 0x1041C, + SET_NEAR_CLIP = 0x1041D, + SET_RADIO_CHANNEL = 0x1041E, + OVERRIDE_HOSPITAL_LEVEL = 0x1041F, + OVERRIDE_POLICE_STATION_LEVEL = 0x10420, + FORCE_RAIN = 0x10421, + DOES_GARAGE_CONTAIN_CAR = 0x10422, + SET_CAR_TRACTION = 0x10423, + ARE_MEASUREMENTS_IN_METRES = 0x10424, + CONVERT_METRES_TO_FEET = 0x10425, + MARK_ROADS_BETWEEN_LEVELS = 0x10426, + MARK_PED_ROADS_BETWEEN_LEVELS = 0x10427, + SET_CAR_AVOID_LEVEL_TRANSITIONS = 0x10428, + SET_CHAR_AVOID_LEVEL_TRANSITIONS = 0x10429, + IS_THREAT_FOR_PED_TYPE = 0x1042A, + CLEAR_AREA_OF_CHARS = 0x1042B, + SET_TOTAL_NUMBER_OF_MISSIONS = 0x1042C, + CONVERT_METRES_TO_FEET_INT = 0x1042D, + REGISTER_FASTEST_TIME = 0x1042E, + REGISTER_HIGHEST_SCORE = 0x1042F, + WARP_CHAR_INTO_CAR_AS_PASSENGER = 0x10430, + IS_CAR_PASSENGER_SEAT_FREE = 0x10431, + GET_CHAR_IN_CAR_PASSENGER_SEAT = 0x10432, + SET_CHAR_IS_CHRIS_CRIMINAL = 0x10433, + START_CREDITS = 0x10434, + STOP_CREDITS = 0x10435, + ARE_CREDITS_FINISHED = 0x10436, + CREATE_SINGLE_PARTICLE = 0x10437, + SET_CHAR_IGNORE_LEVEL_TRANSITIONS = 0x10438, + GET_CHASE_CAR = 0x10439, + START_BOAT_FOAM_ANIMATION = 0x1043A, + UPDATE_BOAT_FOAM_ANIMATION = 0x1043B, + SET_MUSIC_DOES_FADE = 0x1043C, + SET_INTRO_IS_PLAYING = 0x1043D, + SET_PLAYER_HOOKER = 0x1043E, + PLAY_END_OF_GAME_TUNE = 0x1043F, + STOP_END_OF_GAME_TUNE = 0x10440, + GET_CAR_MODEL = 0x10441, + IS_PLAYER_SITTING_IN_CAR = 0x10442, + IS_PLAYER_SITTING_IN_ANY_CAR = 0x10443, + SET_SCRIPT_FIRE_AUDIO = 0x10444, + ARE_ANY_CAR_CHEATS_ACTIVATED = 0x10445, + SET_CHAR_SUFFERS_CRITICAL_HITS = 0x10446, + IS_PLAYER_LIFTING_A_PHONE = 0x10447, + IS_CHAR_SITTING_IN_CAR = 0x10448, + IS_CHAR_SITTING_IN_ANY_CAR = 0x10449, + IS_PLAYER_ON_FOOT = 0x1044A, + IS_CHAR_ON_FOOT = 0x1044B, + LOAD_COLLISION_WITH_SCREEN = 0x1044C, + LOAD_SPLASH_SCREEN = 0x1044D, + SET_CAR_IGNORE_LEVEL_TRANSITIONS = 0x1044E, + MAKE_CRAIGS_CAR_A_BIT_STRONGER = 0x1044F, + SET_JAMES_CAR_ON_PATH_TO_PLAYER = 0x10450, + LOAD_END_OF_GAME_TUNE = 0x10451, + ENABLE_PLAYER_CONTROL_CAMERA = 0x10452, + SET_OBJECT_ROTATION = 0x10453, + GET_DEBUG_CAMERA_COORDINATES = 0x10454, + GET_DEBUG_CAMERA_FRONT_VECTOR = 0x10455, + IS_PLAYER_TARGETTING_ANY_CHAR = 0x10456, + IS_PLAYER_TARGETTING_CHAR = 0x10457, + IS_PLAYER_TARGETTING_OBJECT = 0x10458, + TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME = 0x10459, + DISPLAY_TEXT_WITH_NUMBER = 0x1045A, + DISPLAY_TEXT_WITH_2_NUMBERS = 0x1045B, + FAIL_CURRENT_MISSION = 0x1045C, + GET_CLOSEST_OBJECT_OF_TYPE = 0x1045D, + PLACE_OBJECT_RELATIVE_TO_OBJECT = 0x1045E, + SET_ALL_OCCUPANTS_OF_CAR_LEAVE_CAR = 0x1045F, + SET_INTERPOLATION_PARAMETERS = 0x10460, + GET_CLOSEST_CAR_NODE_WITH_HEADING_TOWARDS_POINT = 0x10461, + GET_CLOSEST_CAR_NODE_WITH_HEADING_AWAY_POINT = 0x10462, + GET_DEBUG_CAMERA_POINT_AT = 0x10463, + ATTACH_CHAR_TO_CAR = 0x10464, + DETACH_CHAR_FROM_CAR = 0x10465, + SET_CAR_CHANGE_LANE = 0x10466, + CLEAR_CHAR_LAST_WEAPON_DAMAGE = 0x10467, + CLEAR_CAR_LAST_WEAPON_DAMAGE = 0x10468, + GET_RANDOM_COP_IN_AREA = 0x10469, + GET_RANDOM_COP_IN_ZONE = 0x1046A, + SET_CHAR_OBJ_FLEE_CAR = 0x1046B, + GET_DRIVER_OF_CAR = 0x1046C, + GET_NUMBER_OF_FOLLOWERS = 0x1046D, + GIVE_REMOTE_CONTROLLED_MODEL_TO_PLAYER = 0x1046E, + GET_CURRENT_PLAYER_WEAPON = 0x1046F, + GET_CURRENT_CHAR_WEAPON = 0x10470, + LOCATE_CHAR_ANY_MEANS_OBJECT_2D = 0x10471, + LOCATE_CHAR_ON_FOOT_OBJECT_2D = 0x10472, + LOCATE_CHAR_IN_CAR_OBJECT_2D = 0x10473, + LOCATE_CHAR_ANY_MEANS_OBJECT_3D = 0x10474, + LOCATE_CHAR_ON_FOOT_OBJECT_3D = 0x10475, + LOCATE_CHAR_IN_CAR_OBJECT_3D = 0x10476, + SET_CAR_TEMP_ACTION = 0x10477, + SET_CAR_HANDBRAKE_TURN_RIGHT = 0x10478, + SET_CAR_HANDBRAKE_STOP = 0x10479, + IS_CHAR_ON_ANY_BIKE = 0x1047A, + LOCATE_SNIPER_BULLET_2D = 0x1047B, + LOCATE_SNIPER_BULLET_3D = 0x1047C, + GET_NUMBER_OF_SEATS_IN_MODEL = 0x1047D, + IS_PLAYER_ON_ANY_BIKE = 0x1047E, + IS_CHAR_LYING_DOWN = 0x1047F, + CAN_CHAR_SEE_DEAD_CHAR = 0x10480, + SET_ENTER_CAR_RANGE_MULTIPLIER = 0x10481, + SET_THREAT_REACTION_RANGE_MULTIPLIER = 0x10482, + SET_CHAR_CEASE_ATTACK_TIMER = 0x10483, + GET_REMOTE_CONTROLLED_CAR = 0x10484, + IS_PC_VERSION = 0x10485, + REPLAY = 0x10486, + IS_REPLAY_PLAYING = 0x10487, + IS_MODEL_AVAILABLE = 0x10488, + SHUT_CHAR_UP = 0x10489, + SET_ENABLE_RC_DETONATE = 0x1048A, + SET_CAR_RANDOM_ROUTE_SEED = 0x1048B, + IS_ANY_PICKUP_AT_COORDS = 0x1048C, + GET_FIRST_PICKUP_COORDS = 0x1048D, + GET_NEXT_PICKUP_COORDS = 0x1048E, + REMOVE_ALL_CHAR_WEAPONS = 0x1048F, + HAS_PLAYER_GOT_WEAPON = 0x10490, + HAS_CHAR_GOT_WEAPON = 0x10491, + IS_PLAYER_FACING_CHAR = 0x10492, + SET_TANK_DETONATE_CARS = 0x10493, + GET_POSITION_OF_ANALOGUE_STICKS = 0x10494, + IS_CAR_ON_FIRE = 0x10495, + IS_CAR_TYRE_BURST = 0x10496, + SET_CAR_DRIVE_STRAIGHT_AHEAD = 0x10497, + SET_CAR_WAIT = 0x10498, + IS_PLAYER_STANDING_ON_A_VEHICLE = 0x10499, + IS_PLAYER_FOOT_DOWN = 0x1049A, + IS_CHAR_FOOT_DOWN = 0x1049B, + INITIALISE_OBJECT_PATH = 0x1049C, + START_OBJECT_ON_PATH = 0x1049D, + SET_OBJECT_PATH_SPEED = 0x1049E, + SET_OBJECT_PATH_POSITION = 0x1049F, + GET_OBJECT_DISTANCE_ALONG_PATH = 0x104A0, + CLEAR_OBJECT_PATH = 0x104A1, + HELI_GOTO_COORDS = 0x104A2, + IS_INT_VAR_EQUAL_TO_CONSTANT = 0x104A3, + IS_INT_LVAR_EQUAL_TO_CONSTANT = 0x104A4, + GET_DEAD_CHAR_PICKUP_COORDS = 0x104A5, + CREATE_PROTECTION_PICKUP = 0x104A6, + IS_CHAR_IN_ANY_BOAT = 0x104A7, + IS_PLAYER_IN_ANY_BOAT = 0x104A8, + IS_CHAR_IN_ANY_HELI = 0x104A9, + IS_PLAYER_IN_ANY_HELI = 0x104AA, + IS_CHAR_IN_ANY_PLANE = 0x104AB, + IS_PLAYER_IN_ANY_PLANE = 0x104AC, + IS_CHAR_IN_WATER = 0x104AD, + SET_VAR_INT_TO_CONSTANT = 0x104AE, + SET_LVAR_INT_TO_CONSTANT = 0x104AF, + IS_INT_VAR_GREATER_THAN_CONSTANT = 0x104B0, + IS_INT_LVAR_GREATER_THAN_CONSTANT = 0x104B1, + IS_CONSTANT_GREATER_THAN_INT_VAR = 0x104B2, + IS_CONSTANT_GREATER_THAN_INT_LVAR = 0x104B3, + IS_INT_VAR_GREATER_OR_EQUAL_TO_CONSTANT = 0x104B4, + IS_INT_LVAR_GREATER_OR_EQUAL_TO_CONSTANT = 0x104B5, + IS_CONSTANT_GREATER_OR_EQUAL_TO_INT_VAR = 0x104B6, + IS_CONSTANT_GREATER_OR_EQUAL_TO_INT_LVAR = 0x104B7, + GET_CHAR_WEAPON_IN_SLOT = 0x104B8, + GET_CLOSEST_STRAIGHT_ROAD = 0x104B9, + SET_CAR_FORWARD_SPEED = 0x104BA, + SET_AREA_VISIBLE = 0x104BB, + SET_CUTSCENE_ANIM_TO_LOOP = 0x104BC, + MARK_CAR_AS_CONVOY_CAR = 0x104BD, + RESET_HAVOC_CAUSED_BY_PLAYER = 0x104BE, + GET_HAVOC_CAUSED_BY_PLAYER = 0x104BF, + CREATE_SCRIPT_ROADBLOCK = 0x104C0, + CLEAR_ALL_SCRIPT_ROADBLOCKS = 0x104C1, + SET_CHAR_OBJ_WALK_TO_CHAR = 0x104C2, + IS_PICKUP_IN_ZONE = 0x104C3, + GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS = 0x104C4, + HAS_CHAR_BEEN_PHOTOGRAPHED = 0x104C5, + SET_CHAR_OBJ_AIM_GUN_AT_CHAR = 0x104C6, + SWITCH_SECURITY_CAMERA = 0x104C7, + IS_CHAR_IN_FLYING_VEHICLE = 0x104C8, + IS_PLAYER_IN_FLYING_VEHICLE = 0x104C9, + HAS_SONY_CD_BEEN_READ = 0x104CA, + GET_NUMBER_OF_SONY_CDS_READ = 0x104CB, + ADD_SHORT_RANGE_BLIP_FOR_COORD_OLD = 0x104CC, + ADD_SHORT_RANGE_BLIP_FOR_COORD = 0x104CD, + ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD = 0x104CE, + ADD_MONEY_SPENT_ON_CLOTHES = 0x104CF, + SET_HELI_ORIENTATION = 0x104D0, + CLEAR_HELI_ORIENTATION = 0x104D1, + PLANE_GOTO_COORDS = 0x104D2, + GET_NTH_CLOSEST_CAR_NODE = 0x104D3, + GET_NTH_CLOSEST_CHAR_NODE = 0x104D4, + DRAW_WEAPONSHOP_CORONA = 0x104D5, + SET_ENABLE_RC_DETONATE_ON_CONTACT = 0x104D6, + FREEZE_CHAR_POSITION = 0x104D7, + SET_CHAR_DROWNS_IN_WATER = 0x104D8, + SET_OBJECT_RECORDS_COLLISIONS = 0x104D9, + HAS_OBJECT_COLLIDED_WITH_ANYTHING = 0x104DA, + REMOVE_RC_BUGGY = 0x104DB, + HAS_PHOTOGRAPH_BEEN_TAKEN = 0x104DC, + GET_CHAR_ARMOUR = 0x104DD, + SET_CHAR_ARMOUR = 0x104DE, + SET_HELI_STABILISER = 0x104DF, + SET_CAR_STRAIGHT_LINE_DISTANCE = 0x104E0, + POP_CAR_BOOT = 0x104E1, + SHUT_PLAYER_UP = 0x104E2, + SET_PLAYER_MOOD = 0x104E3, + REQUEST_COLLISION = 0x104E4, + LOCATE_OBJECT_2D = 0x104E5, + LOCATE_OBJECT_3D = 0x104E6, + IS_OBJECT_IN_WATER = 0x104E7, + SET_CHAR_OBJ_STEAL_ANY_CAR_EVEN_MISSION_CAR = 0x104E8, + IS_OBJECT_IN_AREA_2D = 0x104E9, + IS_OBJECT_IN_AREA_3D = 0x104EA, + SET_CHAR_CROUCH = 0x104EB, + SET_ZONE_CIVILIAN_CAR_INFO = 0x104EC, + REQUEST_ANIMATION = 0x104ED, + HAS_ANIMATION_LOADED = 0x104EE, + REMOVE_ANIMATION = 0x104EF, + IS_CHAR_WAITING_FOR_WORLD_COLLISION = 0x104F0, + IS_CAR_WAITING_FOR_WORLD_COLLISION = 0x104F1, + IS_OBJECT_WAITING_FOR_WORLD_COLLISION = 0x104F2, + SET_CHAR_SHUFFLE_INTO_DRIVERS_SEAT = 0x104F3, + ATTACH_CHAR_TO_OBJECT = 0x104F4, + SET_CHAR_AS_PLAYER_FRIEND = 0x104F5, + DISPLAY_NTH_ONSCREEN_COUNTER = 0x104F6, + DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING = 0x104F7, + ADD_SET_PIECE = 0x104F8, + SET_EXTRA_COLOURS = 0x104F9, + CLEAR_EXTRA_COLOURS = 0x104FA, + CLOSE_CAR_BOOT = 0x104FB, + GET_WHEELIE_STATS = 0x104FC, + DISARM_CHAR = 0x104FD, + BURST_CAR_TYRE = 0x104FE, + IS_CHAR_OBJ_NO_OBJ = 0x104FF, + IS_PLAYER_WEARING = 0x10500, + SET_PLAYER_CAN_DO_DRIVE_BY = 0x10501, + SET_CHAR_OBJ_SPRINT_TO_COORD = 0x10502, + CREATE_SWAT_ROPE = 0x10503, + SET_FIRST_PERSON_CONTROL_CAMERA = 0x10504, + GET_NEAREST_TYRE_TO_POINT = 0x10505, + SET_CAR_MODEL_COMPONENTS = 0x10506, + SWITCH_LIFT_CAMERA = 0x10507, + CLOSE_ALL_CAR_DOORS = 0x10508, + GET_DISTANCE_BETWEEN_COORDS_2D = 0x10509, + GET_DISTANCE_BETWEEN_COORDS_3D = 0x1050A, + POP_CAR_BOOT_USING_PHYSICS = 0x1050B, + SET_FIRST_PERSON_WEAPON_CAMERA = 0x1050C, + IS_CHAR_LEAVING_VEHICLE_TO_DIE = 0x1050D, + SORT_OUT_OBJECT_COLLISION_WITH_CAR = 0x1050E, + GET_MAX_WANTED_LEVEL = 0x1050F, + IS_CHAR_WANDER_PATH_CLEAR = 0x10510, + PRINT_HELP_WITH_NUMBER = 0x10511, + PRINT_HELP_FOREVER = 0x10512, + PRINT_HELP_FOREVER_WITH_NUMBER = 0x10513, + SET_CHAR_CAN_BE_DAMAGED_BY_MEMBERS_OF_GANG = 0x10514, + LOAD_AND_LAUNCH_MISSION_EXCLUSIVE = 0x10515, + IS_MISSION_AUDIO_PLAYING = 0x10516, + CREATE_LOCKED_PROPERTY_PICKUP = 0x10517, + CREATE_FORSALE_PROPERTY_PICKUP = 0x10518, + FREEZE_CAR_POSITION = 0x10519, + HAS_CHAR_BEEN_DAMAGED_BY_CHAR = 0x1051A, + HAS_CHAR_BEEN_DAMAGED_BY_CAR = 0x1051B, + HAS_CAR_BEEN_DAMAGED_BY_CHAR = 0x1051C, + HAS_CAR_BEEN_DAMAGED_BY_CAR = 0x1051D, + GET_RADIO_CHANNEL = 0x1051E, + DISPLAY_TEXT_WITH_3_NUMBERS = 0x1051F, + IS_CAR_DROWNING_IN_WATER = 0x10520, + IS_CHAR_DROWNING_IN_WATER = 0x10521, + DISABLE_CUTSCENE_SHADOWS = 0x10522, + HAS_GLASS_BEEN_SHATTERED_NEARBY = 0x10523, + ATTACH_CUTSCENE_OBJECT_TO_BONE = 0x10524, + ATTACH_CUTSCENE_OBJECT_TO_COMPONENT = 0x10525, + SET_CHAR_STAY_IN_CAR_WHEN_JACKED = 0x10526, + IS_MISSION_AUDIO_LOADING = 0x10527, + ADD_MONEY_SPENT_ON_WEAPONS = 0x10528, + ADD_MONEY_SPENT_ON_PROPERTY = 0x10529, + ADD_MONEY_SPENT_ON_AUTO_PAINTING = 0x1052A, + SET_CHAR_ANSWERING_MOBILE = 0x1052B, + SET_PLAYER_DRUNKENNESS = 0x1052C, + GET_PLAYER_DRUNKENNESS = 0x1052D, + SET_PLAYER_DRUG_LEVEL = 0x1052E, + GET_PLAYER_DRUG_LEVEL = 0x1052F, + ADD_LOAN_SHARK_VISITS = 0x10530, + ADD_STORES_KNOCKED_OFF = 0x10531, + ADD_MOVIE_STUNTS = 0x10532, + ADD_NUMBER_OF_ASSASSINATIONS = 0x10533, + ADD_PIZZAS_DELIVERED = 0x10534, + ADD_GARBAGE_PICKUPS = 0x10535, + ADD_ICE_CREAMS_SOLD = 0x10536, + SET_TOP_SHOOTING_RANGE_SCORE = 0x10537, + ADD_SHOOTING_RANGE_RANK = 0x10538, + ADD_MONEY_SPENT_ON_GAMBLING = 0x10539, + ADD_MONEY_WON_ON_GAMBLING = 0x1053A, + SET_LARGEST_GAMBLING_WIN = 0x1053B, + SET_CHAR_IN_PLAYERS_GROUP_CAN_FIGHT = 0x1053C, + CLEAR_CHAR_WAIT_STATE = 0x1053D, + GET_RANDOM_CAR_OF_TYPE_IN_AREA_NO_SAVE = 0x1053E, + SET_CAN_BURST_CAR_TYRES = 0x1053F, + SET_PLAYER_AUTO_AIM = 0x10540, + FIRE_HUNTER_GUN = 0x10541, + SET_PROPERTY_AS_OWNED = 0x10542, + ADD_BLOOD_RING_KILLS = 0x10543, + SET_LONGEST_TIME_IN_BLOOD_RING = 0x10544, + REMOVE_EVERYTHING_FOR_HUGE_CUTSCENE = 0x10545, + IS_PLAYER_TOUCHING_VEHICLE = 0x10546, + IS_CHAR_TOUCHING_VEHICLE = 0x10547, + CHECK_FOR_PED_MODEL_AROUND_PLAYER = 0x10548, + CLEAR_CHAR_FOLLOW_PATH = 0x10549, + SET_CHAR_CAN_BE_SHOT_IN_VEHICLE = 0x1054A, + ATTACH_CUTSCENE_OBJECT_TO_VEHICLE = 0x1054B, + LOAD_MISSION_TEXT = 0x1054C, + SET_TONIGHTS_EVENT = 0x1054D, + CLEAR_CHAR_LAST_DAMAGE_ENTITY = 0x1054E, + CLEAR_CAR_LAST_DAMAGE_ENTITY = 0x1054F, + FREEZE_OBJECT_POSITION = 0x10550, + SET_PLAYER_HAS_MET_DEBBIE_HARRY = 0x10551, + SET_RIOT_INTENSITY = 0x10552, + IS_CAR_IN_ANGLED_AREA_2D = 0x10553, + IS_CAR_IN_ANGLED_AREA_3D = 0x10554, + REMOVE_WEAPON_FROM_CHAR = 0x10555, + SET_UP_TAXI_SHORTCUT = 0x10556, + CLEAR_TAXI_SHORTCUT = 0x10557, + SET_CHAR_OBJ_GOTO_CAR_ON_FOOT = 0x10558, + GET_CLOSEST_WATER_NODE = 0x10559, + ADD_PORN_LEAFLET_TO_RUBBISH = 0x1055A, + CREATE_CLOTHES_PICKUP = 0x1055B, + CHANGE_BLIP_THRESHOLD = 0x1055C, + MAKE_PLAYER_FIRE_PROOF = 0x1055D, + INCREASE_PLAYER_MAX_HEALTH = 0x1055E, + INCREASE_PLAYER_MAX_ARMOUR = 0x1055F, + CREATE_RANDOM_CHAR_AS_DRIVER = 0x10560, + CREATE_RANDOM_CHAR_AS_PASSENGER = 0x10561, + SET_CHAR_IGNORE_THREATS_BEHIND_OBJECTS = 0x10562, + ENSURE_PLAYER_HAS_DRIVE_BY_WEAPON = 0x10563, + MAKE_HELI_COME_CRASHING_DOWN = 0x10564, + ADD_EXPLOSION_NO_SOUND = 0x10565, + SET_OBJECT_AREA_VISIBLE = 0x10566, + WAS_VEHICLE_EVER_POLICE = 0x10567, + SET_CHAR_NEVER_TARGETTED = 0x10568, + LOAD_UNCOMPRESSED_ANIM = 0x10569, + WAS_CUTSCENE_SKIPPED = 0x1056A, + SET_CHAR_CROUCH_WHEN_THREATENED = 0x1056B, + IS_CHAR_IN_ANY_POLICE_VEHICLE = 0x1056C, + DOES_CHAR_EXIST = 0x1056D, + DOES_VEHICLE_EXIST = 0x1056E, + ADD_SHORT_RANGE_BLIP_FOR_CONTACT_POINT = 0x1056F, + ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT = 0x10570, + IS_CHAR_STUCK = 0x10571, + SET_ALL_TAXIS_HAVE_NITRO = 0x10572, + SET_CHAR_STOP_SHOOT_DONT_SEEK_ENTITY = 0x10573, + FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION = 0x10574, + FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION = 0x10575, + FREEZE_OBJECT_POSITION_AND_DONT_LOAD_COLLISION = 0x10576, + SET_FADE_AND_JUMPCUT_AFTER_RC_EXPLOSION = 0x10577, + REGISTER_VIGILANTE_LEVEL = 0x10578, + CLEAR_ALL_CHAR_ANIMS = 0x10579, + SET_MAXIMUM_NUMBER_OF_CARS_IN_GARAGE = 0x1057A, + WANTED_STARS_ARE_FLASHING = 0x1057B, + SET_ALLOW_HURRICANES = 0x1057C, + PLAY_ANNOUNCEMENT = 0x1057D, + SET_PLAYER_IS_IN_STADIUM = 0x1057E, + GET_BUS_FARES_COLLECTED_BY_PLAYER = 0x1057F, + SET_CHAR_OBJ_BUY_ICE_CREAM = 0x10580, + DISPLAY_RADAR = 0x10581, + REGISTER_BEST_POSITION = 0x10582, + IS_PLAYER_IN_INFO_ZONE = 0x10583, + CLEAR_CHAR_ICE_CREAM_PURCHASE = 0x10584, + IS_IN_CAR_FIRE_BUTTON_PRESSED = 0x10585, + HAS_CHAR_ATTEMPTED_ATTRACTOR = 0x10586, + SET_LOAD_COLLISION_FOR_CAR_FLAG = 0x10587, + SET_LOAD_COLLISION_FOR_CHAR_FLAG = 0x10588, + SET_LOAD_COLLISION_FOR_OBJECT_FLAG = 0x10589, + ADD_BIG_GUN_FLASH = 0x1058A, + HAS_CHAR_BOUGHT_ICE_CREAM = 0x1058B, + GET_PROGRESS_PERCENTAGE = 0x1058C, + SET_SHORTCUT_PICKUP_POINT = 0x1058D, + SET_SHORTCUT_DROPOFF_POINT_FOR_MISSION = 0x1058E, + GET_RANDOM_ICE_CREAM_CUSTOMER_IN_AREA = 0x1058F, + GET_RANDOM_ICE_CREAM_CUSTOMER_IN_ZONE = 0x10590, + UNLOCK_ALL_CAR_DOORS_IN_AREA = 0x10591, + SET_GANG_ATTACK_PLAYER_WITH_COPS = 0x10592, + SET_CHAR_FRIGHTENED_IN_JACKED_CAR = 0x10593, + SET_VEHICLE_TO_FADE_IN = 0x10594, + REGISTER_ODDJOB_MISSION_PASSED = 0x10595, + IS_PLAYER_IN_SHORTCUT_TAXI = 0x10596, + IS_CHAR_DUCKING = 0x10597, + CREATE_DUST_EFFECT_FOR_CUTSCENE_HELI = 0x10598, + REGISTER_FIRE_LEVEL = 0x10599, + IS_AUSTRALIAN_GAME = 0x1059A, + DISARM_CAR_BOMB = 0x1059B, + SET_ONSCREEN_COUNTER_FLASH_WHEN_FIRST_DISPLAYED = 0x1059C, + SHUFFLE_CARD_DECKS = 0x1059D, + FETCH_NEXT_CARD = 0x1059E, + GET_OBJECT_VELOCITY = 0x1059F, + IS_DEBUG_CAMERA_ON = 0x105A0, + ADD_TO_OBJECT_ROTATION_VELOCITY = 0x105A1, + SET_OBJECT_ROTATION_VELOCITY = 0x105A2, + IS_OBJECT_STATIC = 0x105A3, + GET_ANGLE_BETWEEN_2D_VECTORS = 0x105A4, + DO_2D_RECTANGLES_COLLIDE = 0x105A5, + GET_OBJECT_ROTATION_VELOCITY = 0x105A6, + ADD_VELOCITY_RELATIVE_TO_OBJECT_VELOCITY = 0x105A7, + GET_OBJECT_SPEED = 0x105A8, + IS_MISSION_SKIP = 0x105A9, + SET_IN_AMMUNATION = 0x105AA, + DO_SAVE_GAME = 0x105AB, + IS_RETRY = 0x105AC, + DUMMY = 0x105AD, + MARK_CUTSCENE_START = 0x105AE, + MARK_CUTSCENE_END = 0x105AF, + CUTSCENE_SCROLL = 0x105B0, + SET_LVAR_TEXT_LABEL_TO_LVAR_TEXT_LABEL = 0x105B1, + SET_VAR_TEXT_LABEL_TO_LVAR_TEXT_LABEL = 0x105B2, + SET_LVAR_TEXT_LABEL_TO_VAR_TEXT_LABEL = 0x105B3, + VAR_TEXT_LABEL = 0x105B4, + LVAR_TEXT_LABEL = 0x105B5, + IS_TEXT_LABEL_VAR_EQUAL_TO_TEXT_LABEL = 0x105B6, + IS_TEXT_LABEL_LVAR_EQUAL_TO_TEXT_LABEL = 0x105B7, + IS_TEXT_LABEL_VAR_EQUAL_TO_TEXT_LABEL_VAR = 0x105B8, + IS_TEXT_LABEL_LVAR_EQUAL_TO_TEXT_LABEL_LVAR = 0x105B9, + IS_TEXT_LABEL_VAR_EQUAL_TO_TEXT_LABEL_LVAR = 0x105BA, + DO_2D_LINES_INTERSECT = 0x105BB, + GET_2D_LINES_INTERSECT_POINT = 0x105BC, + IS_2D_POINT_IN_TRIANGLE = 0x105BD, + IS_2D_POINT_IN_RECTANGLE_ON_LEFT_SIDE_OF_LINE = 0x105BE, + IS_2D_POINT_ON_LEFT_SIDE_OF_2D_LINE = 0x105BF, + CHAR_LOOK_AT_OBJECT_ALWAYS = 0x105C0, + APPLY_COLLISION_ON_OBJECT = 0x105C1, + SAVE_STRING_TO_DEBUG_FILE = 0x105C2 +#endif +}; + +} diff --git a/third-party/plugin-sdk/shared/game/CRGBA.cpp b/third-party/plugin-sdk/shared/game/CRGBA.cpp new file mode 100644 index 00000000..641753a5 --- /dev/null +++ b/third-party/plugin-sdk/shared/game/CRGBA.cpp @@ -0,0 +1,115 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#include "CRGBA.h" +#ifndef GTA2 +#include "RenderWare.h" +#endif + +CRGBA::CRGBA(unsigned char red, unsigned char green, unsigned char blue) { + Set(red, green, blue, 255); +} + +CRGBA::CRGBA(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha) { + Set(red, green, blue, alpha); +} + +CRGBA::CRGBA(CRGBA const &rhs) { + Set(rhs); +} + +CRGBA::CRGBA(unsigned int intValue) { + Set(intValue); +} + +#ifndef GTA2 +CRGBA::CRGBA(RwRGBA const &rhs) { + Set(rhs); +} +#endif + +CRGBA::CRGBA() {} + +void CRGBA::Set(unsigned char red, unsigned char green, unsigned char blue) { + r = red; + g = green; + b = blue; +} + +void CRGBA::Set(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha) { + Set(red, green, blue); + a = alpha; +} + +void CRGBA::Set(unsigned int intValue) { + r = (intValue >> 24) & 0xFF; + g = (intValue >> 16) & 0xFF; + b = (intValue >> 8) & 0xFF; + a = intValue & 0xFF; +} + +void CRGBA::Set(CRGBA const &rhs) { + Set(rhs.r, rhs.g, rhs.b, rhs.a); +} + +void CRGBA::Set(CRGBA const &rhs, unsigned char alpha) { + Set(rhs.r, rhs.g, rhs.b, alpha); +} + +#ifndef GTA2 +void CRGBA::Set(RwRGBA const &rwcolor) { + Set(rwcolor.red, rwcolor.green, rwcolor.blue, rwcolor.alpha); +} +#endif + +unsigned int CRGBA::ToInt() const { + return a | (b << 8) | (g << 16) | (r << 24); +} + +unsigned int CRGBA::ToIntARGB() const { + return b | (g << 8) | (r << 16) | (a << 24); +} + + +#ifndef GTA2 +RwRGBA CRGBA::ToRwRGBA() const { + return { r, g, b, a }; +} + +void CRGBA::FromRwRGBA(RwRGBA const &rwcolor) { + Set(rwcolor); +} +#endif + +void CRGBA::FromARGB(unsigned int intValue) { + a = (intValue >> 24) & 0xFF; + r = (intValue >> 16) & 0xFF; + g = (intValue >> 8) & 0xFF; + b = intValue & 0xFF; +} + +void CRGBA::Invert() { + Set(255 - r, 255 - g, 255 - b); +} + +CRGBA CRGBA::Inverted() const { + CRGBA invertedColor = *this; + invertedColor.Invert(); + return invertedColor; +} + +bool CRGBA::operator==(CRGBA const &rhs) const { + return r == rhs.r && g == rhs.g && b == rhs.b && a == rhs.a; +} + +CRGBA &CRGBA::operator=(CRGBA const &rhs) { + Set(rhs); + return *this; +} + +CRGBA CRGBA::ToRGB() const { + return CRGBA(r, g, b, 255); +} diff --git a/third-party/plugin-sdk/shared/game/CRGBA.h b/third-party/plugin-sdk/shared/game/CRGBA.h new file mode 100644 index 00000000..1aa6a68a --- /dev/null +++ b/third-party/plugin-sdk/shared/game/CRGBA.h @@ -0,0 +1,58 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +#ifndef GTA2 +struct RwRGBA; +#endif + +class CRGBA { +public: + unsigned char r; + unsigned char g; + unsigned char b; + unsigned char a; + + CRGBA(unsigned char red, unsigned char green, unsigned char blue); + CRGBA(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha); + CRGBA(CRGBA const &rhs); + CRGBA(unsigned int intValue); + +#ifndef GTA2 + CRGBA(RwRGBA const &rhs); +#endif + CRGBA(); + + void Set(unsigned char red, unsigned char green, unsigned char blue); + void Set(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha); + void Set(unsigned int intValue); + void Set(CRGBA const &rhs); + void Set(CRGBA const &rhs, unsigned char alpha); + +#ifndef GTA2 + void Set(RwRGBA const &rwcolor); +#endif + + CRGBA ToRGB() const; + unsigned int ToInt() const; + unsigned int ToIntARGB() const; + +#ifndef GTA2 + RwRGBA ToRwRGBA() const; + + void FromRwRGBA(RwRGBA const &rwcolor); +#endif + void FromARGB(unsigned int intValue); + + void Invert(); + CRGBA Inverted() const; + + bool operator==(CRGBA const &rhs) const; + CRGBA &operator=(CRGBA const &rhs); +}; diff --git a/third-party/plugin-sdk/shared/game/CompressedVector.cpp b/third-party/plugin-sdk/shared/game/CompressedVector.cpp new file mode 100644 index 00000000..e0500161 --- /dev/null +++ b/third-party/plugin-sdk/shared/game/CompressedVector.cpp @@ -0,0 +1,101 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "CompressedVector.h" +#include "CompressedVector2D.h" + +#ifndef GTA2 +#include "RenderWare.h" +#include "CVector.h" +#endif + +CompressedVector::CompressedVector() { + Set(0, 0, 0); +} + +CompressedVector::CompressedVector(short X, short Y, short Z) { + Set(X, Y, Z); +} + +CompressedVector::CompressedVector(CompressedVector const & rhs) { + Set(rhs); +} + +CompressedVector::CompressedVector(CompressedVector2D const & rhs) { + Set(rhs); +} + +#ifndef GTA2 +CompressedVector::CompressedVector(CVector const & rhs) { + Set(rhs); +} + +CompressedVector::CompressedVector(RwV3d const & rhs) { + Set(rhs); +} +#endif + +void CompressedVector::Set(short X, short Y, short Z) { + x = X; + y = Y; + z = Z; +} + +void CompressedVector::Set(CompressedVector const & rhs) { + x = rhs.x; + y = rhs.y; + z = rhs.z; +} + +void CompressedVector::Set(CompressedVector2D const & rhs) { + x = rhs.x; + y = rhs.y; + z = 0; +} + +#ifndef GTA2 +void CompressedVector::Set(CVector const & rhs) { + x = static_cast(rhs.x * 8.0f); + y = static_cast(rhs.y * 8.0f); + z = static_cast(rhs.z * 8.0f); +} + +void CompressedVector::Set(RwV3d const & rhs) { + x = static_cast(rhs.x * 8.0f); + y = static_cast(rhs.y * 8.0f); + z = static_cast(rhs.z * 8.0f); +} + +CVector CompressedVector::Uncompressed() const { + return CVector(static_cast(x) / 8.0f, static_cast(y) / 8.0f, static_cast(z) / 8.0f); +} + +RwV3d CompressedVector::ToRwV3d() const { + RwV3d result; + result.x = static_cast(x) / 8.0f; + result.y = static_cast(y) / 8.0f; + result.z = static_cast(z) / 8.0f; + return result; +} +#endif + +CompressedVector2D CompressedVector::To2D() const { + return CompressedVector2D(x, y); +} + +#ifndef GTA2 +void CompressedVector::Uncompress(CVector &out) const { + out = Uncompressed(); +} +#endif + +bool CompressedVector::operator==(CompressedVector const &rhs) const { + return x == rhs.x && y == rhs.y && z == rhs.z; +} +bool CompressedVector::operator!=(CompressedVector const &rhs) const { + return x != rhs.x || y != rhs.y || z != rhs.z; +} diff --git a/third-party/plugin-sdk/shared/game/CompressedVector.h b/third-party/plugin-sdk/shared/game/CompressedVector.h new file mode 100644 index 00000000..05c49ef1 --- /dev/null +++ b/third-party/plugin-sdk/shared/game/CompressedVector.h @@ -0,0 +1,53 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class CVector; +struct RwV3d; +class CompressedVector2D; + +class PLUGIN_API CompressedVector { +public: + short x; + short y; + short z; + + CompressedVector(); + CompressedVector(short X, short Y, short Z); + CompressedVector(CompressedVector const &rhs); + CompressedVector(CompressedVector2D const &rhs); + +#ifndef GTA2 + CompressedVector(CVector const &rhs); + CompressedVector(RwV3d const &rhs); +#endif + + void Set(short X, short Y, short Z); + void Set(CompressedVector const &rhs); + void Set(CompressedVector2D const &rhs); + +#ifndef GTA2 + void Set(CVector const &rhs); + void Set(RwV3d const &rhs); + + CVector Uncompressed() const; + RwV3d ToRwV3d() const; +#endif + + CompressedVector2D To2D() const; + +#ifndef GTA2 + void Uncompress(CVector &out) const; +#endif + + bool operator==(CompressedVector const &rhs) const; + bool operator!=(CompressedVector const &rhs) const; +}; + +VALIDATE_SIZE(CompressedVector, 0x6); diff --git a/third-party/plugin-sdk/shared/game/CompressedVector2D.cpp b/third-party/plugin-sdk/shared/game/CompressedVector2D.cpp new file mode 100644 index 00000000..fcb1f191 --- /dev/null +++ b/third-party/plugin-sdk/shared/game/CompressedVector2D.cpp @@ -0,0 +1,95 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED source file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once +#include "CompressedVector2D.h" +#include "CompressedVector.h" + +#ifndef GTA2 +#include "RenderWare.h" +#include "CVector2D.h" +#endif + +CompressedVector2D::CompressedVector2D() { + Set(0, 0); +} + +CompressedVector2D::CompressedVector2D(short X, short Y) { + Set(X, Y); +} + +CompressedVector2D::CompressedVector2D(CompressedVector2D const & rhs) { + Set(rhs); +} + +CompressedVector2D::CompressedVector2D(CompressedVector const & rhs) { + Set(rhs); +} + +#ifndef GTA2 +CompressedVector2D::CompressedVector2D(CVector2D const & rhs) { + Set(rhs); +} + +CompressedVector2D::CompressedVector2D(RwV2d const & rhs) { + Set(rhs); +} +#endif + +void CompressedVector2D::Set(short X, short Y) { + x = X; + y = Y; +} + +void CompressedVector2D::Set(CompressedVector2D const & rhs) { + x = rhs.x; + y = rhs.y; +} + +void CompressedVector2D::Set(CompressedVector const & rhs) { + x = rhs.x; + y = rhs.y; +} + +#ifndef GTA2 +void CompressedVector2D::Set(CVector2D const & rhs) { + x = static_cast(rhs.x * 8.0f); + y = static_cast(rhs.y * 8.0f); +} + +void CompressedVector2D::Set(RwV2d const & rhs) { + x = static_cast(rhs.x * 8.0f); + y = static_cast(rhs.y * 8.0f); +} + +CVector2D CompressedVector2D::Uncompressed() const { + return CVector2D(static_cast(x) / 8.0f, static_cast(y) / 8.0f); +} + +RwV2d CompressedVector2D::ToRwV2d() const { + RwV2d result; + result.x = static_cast(x) / 8.0f; + result.y = static_cast(y) / 8.0f; + return result; +} +#endif + +CompressedVector CompressedVector2D::To3D() const { + return CompressedVector(x, y, 0); +} + +#ifndef GTA2 +void CompressedVector2D::Uncompress(CVector2D &out) const { + out = Uncompressed(); +} +#endif + +bool CompressedVector2D::operator==(CompressedVector2D const &rhs) const { + return x == rhs.x && y == rhs.y; +} +bool CompressedVector2D::operator!=(CompressedVector2D const &rhs) const { + return x != rhs.x || y != rhs.y; +} diff --git a/third-party/plugin-sdk/shared/game/CompressedVector2D.h b/third-party/plugin-sdk/shared/game/CompressedVector2D.h new file mode 100644 index 00000000..64bfce7f --- /dev/null +++ b/third-party/plugin-sdk/shared/game/CompressedVector2D.h @@ -0,0 +1,52 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" + +class CVector2D; +struct RwV2d; +class CompressedVector; + +class PLUGIN_API CompressedVector2D { +public: + short x; + short y; + + CompressedVector2D(); + CompressedVector2D(short X, short Y); + CompressedVector2D(CompressedVector2D const &rhs); + CompressedVector2D(CompressedVector const &rhs); + +#ifndef GTA2 + CompressedVector2D(CVector2D const &rhs); + CompressedVector2D(RwV2d const &rhs); +#endif + + void Set(short X, short Y); + void Set(CompressedVector2D const &rhs); + void Set(CompressedVector const &rhs); + +#ifndef GTA2 + void Set(CVector2D const &rhs); + void Set(RwV2d const &rhs); + + CVector2D Uncompressed() const; + RwV2d ToRwV2d() const; +#endif + + CompressedVector To3D() const; + +#ifndef GTA2 + void Uncompress(CVector2D &out) const; +#endif + + bool operator==(CompressedVector2D const &rhs) const; + bool operator!=(CompressedVector2D const &rhs) const; +}; + +VALIDATE_SIZE(CompressedVector2D, 0x4); diff --git a/third-party/plugin-sdk/shared/plugin.h b/third-party/plugin-sdk/shared/plugin.h new file mode 100644 index 00000000..557fec4b --- /dev/null +++ b/third-party/plugin-sdk/shared/plugin.h @@ -0,0 +1,25 @@ +/* + Plugin-SDK (Grand Theft Auto) SHARED header file + Authors: GTA Community. See more here + https://github.com/DK22Pac/plugin-sdk + Do not delete this comment block. Respect others' work! +*/ +#pragma once + +#include "PluginBase.h" +#include "Events.h" +#include "GameVersionMessage.h" +#include "extender/PedExtender.h" +#include "extender/VehicleExtender.h" +#include "extender/ObjectExtender.h" +#include "Color.h" +#include "Error.h" +#include "Other.h" +#include "Patch.h" +#include "extensions/Paths.h" +#include "extensions/Screen.h" +#include "extensions/Config.h" +#include "extensions/PoolIterator.h" +#include "extensions/FontPrint.h" +#include "comp/PluginsCompatibility.h" +#include "common_sdk.h" diff --git a/third-party/plugin-sdk/shared/plugin.rc b/third-party/plugin-sdk/shared/plugin.rc new file mode 100644 index 00000000..81e29f86 Binary files /dev/null and b/third-party/plugin-sdk/shared/plugin.rc differ diff --git a/third-party/plugin-sdk/shared/resource.h b/third-party/plugin-sdk/shared/resource.h new file mode 100644 index 00000000..402c9031 --- /dev/null +++ b/third-party/plugin-sdk/shared/resource.h @@ -0,0 +1,15 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by plugin.rc +// + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif